Objaśnienie tematyki zk-SNARKs i zk-STARKs
Zk-SNARK to skrót od angielskiego zero-knowledge succinct non-interactive argument of knowledge, co w dosłownym tłumaczeniu na język polski oznacza: zwięzły i nieinteraktywny dowód oparty o wiedzę zerową. Z kolei Zk-STARK oznacza zwięzły i transparentny dowód oparty o wiedzę zerową. Zk-SNARK jest już wykorzystywane m.in w Zcash, systemie płatności JP Morgan Chase opartym na technologii blockchain oraz jako sposób bezpiecznego uwierzytelniania klientów przez serwery danych. Podczas gdy dowody Zk-SNARK są już bardzo powszechnie wykorzystywane i implementowane w wielu systemach, Zk-STARK są obecnie reklamowane jako nowa i ulepszona wersja ich pierwowzoru, która jednocześnie rozwiązuje wiele istniejących wad w protokole Zk-SNARK.
Przypowieść o Jaskini Ali Baby
Wyobraźmy sobie jaskinię w kształcie pierścienia posiadającą jedynie jedno wejście oraz magiczną drzwi oddzielającą dwie boczne ścieżki przez nią biegnące. Aby przejść przez magiczne drzwi należy szepnąć w prawidłowej kolejności tajne hasło. Wyobraźmy sobie również, że Alicja (kolor żółty) chce udowodnić Piotrowi (kolor niebieski), że wie, jakie brzmi hasło - ale jednocześnie chce zachować je w tajemnicy przed nim. Aby to zrobić, Piotrek zgadza się zaczekać na zewnątrz, podczas gdy Alicja wejdzie do jaskini i pójdzie do końca jedną z dwóch możliwych ścieżek. W tym przykładzie postanawia przejść ścieżkę nr 1.
Po pewnym czasie Piotr wchodzi do jaskini i głośno krzyczy po której stronie jaskini chciałby aby pojawiła się Alicja (w tym przypadku Ścieżka nr. 2).
Jeśli Alicja naprawdę zna hasło otwierające drzwi, bez żadnego zająknięcia pojawi się na ścieżce na której chciałby ją zobaczyć Piotr.
Cały proces może zostać powtórzony kilka razy, aby potwierdzić, że Alicja nie wybiera właściwej ścieżki przez przypadek.
Przypowieść o Jaskini Ali Baby przedstawia koncepcję dowodów wiedzy zerowej, które są częścią protokołów ZK-SNARK i ZK-STARK. Dowody ZK mogą zostać użyte do udowodnienia posiadania pewnej wiedzy bez ujawniania jakichkolwiek informacji na jej temat.
Zk-SNARK
Dowody wiedzy zerowej umożliwiają jednej osobie udowodnić innej, że przesłane przez nią oświadczenie jest prawdziwe, bez ujawniania jakichkolwiek informacji wykraczających poza ważność samego oświadczenia. Strony zaangażowane w taką interakcję powszechnie nazywane są odpowiednio: osobą udowadniającą (ang. prover) oraz weryfikatorem (ang. verifier). Z kolei oświadczenie przechowywane przez obydwie strony interakcji w tajemnicy określa się angielskim witness. Głównym celem Zero-knowledge Proofs jest ujawnienie jak najmniejszej ilości danych obu stronom interakcji. Innymi słowy, z dowodów wiedzy zerowej korzysta się, aby udowodnić, że obie strony posiadają pewną wiedzę, ale jednocześnie nie ujawniając żadnych informacji o samej wiedzy.
Określenie “zwięzły” ze skrótu SNARK oznacza, że dowody te są krótkie (czyt. niewielkie) dzięki czemu można je szybko i łatwo zweryfikować. "Nieinteraktywny" z kolei oznacza, że pomiędzy samym udowadniającym, a weryfikującym odbywa się niewielka lub nawet żadna interakcja. Starsze wersje protokołów ZK zwykle wymagają, aby prover i verificator komunikowali się ze sobą w jedną i drugą stronę, a co za tym idzie uważane są za "interaktywne". Obecnie wykorzystywane wersje ZK wymagają wymiany zaledwie jednego dowodu między stroną udowadniającą, a weryfikującą.
Systemy korzystające z nowoczesnych rozwiązań zk-SNARK są zależne od początkowej i zaufanej konfiguracji, która tworzona jest pomiędzy udowadniającym i weryfikatorem. Oznacza to, że do skonstruowania dowodów zero-knowledge, a tym samym prywatnych transakcji wymagany jest zestaw publicznych parametrów. Parametry te można przyrównać do reguł gry komputerowej: są zakodowane w protokole i są jednym z niezbędnych czynników do udowodnienia, że wykonana właśnie interakcja była prawidłowa. Taka konstrukcja stwarza jednak potencjalną możliwość wystąpienia centralizacji, ponieważ parametry często są formułowane przez bardzo wąską grupę uczestników danego systemu.
Ostatnim elementem układanki z akronimu Zk-SNARK jest "Wiedza" (ang. Knowledge), co oznacza, że udowadniający nie jest w stanie skonstruować dowodu na poparcie swojego oświadczenia bez posiadania odpowiedniej wiedzy (lub świadectwa wiedzy).
zk-STARK
Zk-STARK został stworzony jako alternatywa dla Zk-SNARK i jest obecnie uważany za szybszą i tańszą implementację tej technologii. Co istotne, Zk-STARK nie wymaga przeprowadzenia początkowej konfiguracji (stąd litera "T" w nazwie, oznaczająca transparentność; ang. transparency).
Jednym z głównych powodów dla których ZK-STARK oferuje tańszą i szybszą implementację, jest fakt, iż liczba koniecznych do przeprowadzenia interakcji (czyt. komunikacji) między stroną udowadniającą, a weryfikującą pozostaje stała. Z kolei konstrukcja Zk-SNARK sprawia, że wraz ze wzrostem ilości wymaganych obliczeń, wzrasta również ilość koniecznych do przeprowadzenia pomiędzy stronami interakcji. To właśnie dlatego rozmiar danych (czyt. transakcji) zabezpieczanych przez Zk-SNARK jest znacznie większa od tych, które są zabezpieczane przy użyciu Zk-STARK.