tradingview

zk-SNARK

zk-SNARK (zero-knowledge Succinct Non-interactive ARgument of Knowledge) to rodzaj dowodu kryptograficznego, który pozwala udowodnić, że znasz pewną informację albo że obliczenia zostały wykonane poprawnie, bez ujawniania samych danych. Do tego taki dowód jest bardzo krótki i można go sprawdzić w ułamku sekundy, niezależnie od tego, jak skomplikowane było udowadniane obliczenie.

To jedna z najważniejszych technologii w kryptowalutach ostatniej dekady. Stoi za prywatnymi transakcjami w Zcashu, za rollupami skalującymi Ethereum i coraz częściej za mostami między blockchainami.

Co oznacza każda litera

  • zk (zero-knowledge, wiedza zerowa): weryfikujący dowiaduje się tylko tego, że twierdzenie jest prawdziwe. Nic więcej.
  • S (succinct, zwięzły): dowód jest mały, zwykle kilkaset bajtów, a jego sprawdzenie trwa milisekundy.
  • N (non-interactive, nieinteraktywny): wystarczy jedna wiadomość. Nie potrzeba wymiany pytań i odpowiedzi między stronami.
  • ARK (argument of knowledge, argument wiedzy): dowodzący musi naprawdę znać dane, na których opiera się twierdzenie. Nie da się tego sfingować bez tej wiedzy, przynajmniej przy rozsądnych założeniach obliczeniowych.

Intuicja na przykładzie

Wyobraź sobie, że chcesz udowodnić bankowi, że masz ukończone 18 lat, ale nie chcesz pokazywać dowodu osobistego z datą urodzenia, adresem i numerem PESEL. zk-SNARK pozwala zbudować dowód twierdzenia „data urodzenia zapisana w podpisanym przez państwo dokumencie jest wcześniejsza niż 18 lat temu”. Bank sprawdza dowód i dowiaduje się tylko jednego: że jesteś pełnoletni. Nie wie, ile masz lat, jak się nazywasz ani gdzie mieszkasz.

W blockchainie twierdzenie brzmi zwykle tak: „ta transakcja wydaje monety, które naprawdę istnieją i należą do nadawcy, a suma wejść równa się sumie wyjść”. Ale nie ujawnia, kto, komu i ile.

Kto jest kim: obwód, świadek, dowodzący, weryfikujący

Żeby zrozumieć, gdzie w zk-SNARK-ach może coś pójść nie tak, trzeba znać cztery role.

Obwód (circuit) to zapis problemu w postaci równań matematycznych. Programista tłumaczy regułę typu „suma wejść równa się sumie wyjść, a podpis jest prawidłowy” na tysiące albo miliony prostych równań. To najbardziej żmudna i najbardziej podatna na błędy część pracy.

Świadek (witness) to tajne dane, które spełniają te równania: klucz prywatny, kwoty, adresy. Nigdy nie opuszczają dowodzącego.

Dowodzący (prover) bierze obwód i świadka, i generuje dowód. To ciężka praca obliczeniowa. W dużych systemach, takich jak zk-rollupy, wymaga mocnych serwerów z kartami graficznymi, a coraz częściej specjalizowanego sprzętu.

Weryfikujący (verifier) dostaje tylko dowód i publiczne dane wejściowe, na przykład nowy stan rollupu, i w milisekundach sprawdza, czy wszystko się zgadza. W blockchainie rolę weryfikującego pełni smart kontrakt.

Ta asymetria jest kluczowa: dowód jest drogi do wygenerowania i tani do sprawdzenia. Dlatego pasuje do blockchaina, gdzie jedna strona może się napracować, a tysiące węzłów muszą tylko szybko sprawdzić wynik. Ma jednak skutek uboczny: generowanie dowodów wymaga drogiego sprzętu, więc w wielu rollupach robi to dziś jeden operator albo niewielka grupa. To kolejne miejsce, w którym decentralizacja jest bardziej obietnicą niż faktem.

Dlaczego „zwięzły” zmienia wszystko: liczby

Najpopularniejszy wariant, Groth16, daje dowód o stałej wielkości rzędu kilkuset bajtów, niezależnie od tego, czy udowadniasz jedną transakcję, czy tysiące. Weryfikacja takiego dowodu w kontrakcie na Ethereum kosztuje rzędu 200–250 tys. jednostek gas.

Weźmy rollup, który pakuje 5000 transakcji w jedną partię i publikuje dla niej jeden dowód:

  • weryfikacja dowodu: około 230 000 gas,
  • na jedną transakcję w partii przypada 230 000 / 5000 = 46 gas,
  • dla porównania zwykły przelew ETH na Ethereum kosztuje 21 000 gas.

Przy cenie gas 2 gwei weryfikacja całej partii to 0,00046 ETH, czyli przy ETH po około 2700 dolarów nieco ponad dolar za tysiące transakcji. Do tego dochodzi koszt publikacji danych, ale sama kontrola poprawności staje się praktycznie darmowa. Na tym opiera się idea zk-rollupów: Ethereum nie wykonuje transakcji ponownie, tylko sprawdza krótki dowód, że zostały wykonane poprawnie.

Gdzie używa się zk-SNARK-ów

  • Zcash (od 2016 roku): prywatne transakcje, w których ukryte są nadawca, odbiorca i kwota.
  • zk-rollupy na Ethereum, takie jak zkSync, Scroll czy Linea: skalowanie, a nie prywatność.
  • Tornado Cash: mikser oparty na dowodach Groth16.
  • Mosty i lekkie klienty: dowód, że w innej sieci zaszło jakieś zdarzenie, bez ufania grupie sygnatariuszy.
  • Tożsamość: dowód wieku, obywatelstwa czy przejścia KYC bez ujawniania dokumentów.

Zaufana konfiguracja: słaby punkt SNARK-ów

Wiele systemów SNARK, w tym Groth16, wymaga jednorazowej zaufanej konfiguracji (trusted setup). Podczas niej generuje się parametry systemu, a przy okazji powstaje sekret nazywany „toksycznym odpadem” (toxic waste). Kto go zna, może tworzyć fałszywe dowody, które przejdą weryfikację. W systemie takim jak Zcash oznaczałoby to możliwość niewykrywalnego dodruku monet.

Dlatego konfigurację przeprowadza się jako ceremonię wielu uczestników. Każdy dokłada swoją losowość i niszczy swoją część sekretu. System jest bezpieczny, jeśli choć jeden uczestnik był uczciwy. Brzmi rozsądnie, ale to wciąż zaufanie, a nie matematyka.

Historia Zcasha pokazuje, że ryzyko nie jest teoretyczne. W 2018 roku jeden z kryptografów projektu znalazł błąd w pierwotnym systemie dowodów, który pozwalał fałszować monety. Zespół po cichu naprawił go przy aktualizacji Sapling, a publicznie ujawnił w 2019 roku. Zcash poinformował, że nie ma dowodów na wykorzystanie błędu, ale przy prywatnych transakcjach nie da się tego sprawdzić ze stuprocentową pewnością. To świetna lekcja: im bardziej coś jest prywatne, tym trudniej wykryć, że coś poszło nie tak.

Nowsze systemy, takie jak PLONK, używają uniwersalnej konfiguracji, którą robi się raz dla wielu zastosowań. Całkowicie eliminują ją dopiero STARK-i.

zk-SNARK a zk-STARK

zk-STARK (Scalable Transparent ARgument of Knowledge) to rodzina dowodów rozwijana głównie przez StarkWare. Różnice:

zk-SNARK (np. Groth16) zk-STARK
Zaufana konfiguracja tak (lub uniwersalna w PLONK) nie, system jest przejrzysty
Wielkość dowodu setki bajtów dziesiątki do setek kilobajtów
Koszt weryfikacji on-chain niski wyższy
Podstawa kryptograficzna krzywe eliptyczne funkcje skrótu
Odporność na komputery kwantowe nie uważane za odporne
Przykłady Zcash, zkSync, Scroll Starknet, StarkEx

W skrócie: SNARK jest mniejszy i tańszy w weryfikacji, STARK nie wymaga zaufania i lepiej zniesie przyszłość kwantową. W praktyce coraz częściej łączy się oba: obliczenia dowodzi się STARK-iem, a na końcu opakowuje w mały SNARK, żeby tanio zweryfikować go na Ethereum.

Najczęstsze nieporozumienia

„zk oznacza prywatność.” Nie zawsze. zk-rollupy używają SNARK-ów głównie dla zwięzłości. Transakcje na zkSync czy Scrollu są publiczne i widać je w eksploratorze tak samo jak na Ethereum.

„Dowód matematyczny gwarantuje, że system jest bezbłędny.” Dowód gwarantuje, że obliczenie zgadza się z opisem, czyli z tzw. obwodem. Jeśli obwód jest źle napisany, na przykład czegoś nie sprawdza, to dowód poprawnie potwierdzi błędne obliczenie. Błędy w obwodach to jedna z głównych kategorii podatności w projektach zk.

„zk-rollup jest tak bezpieczny jak Ethereum.” Dowód chroni przed fałszywym stanem, ale nie przed operatorem, który ma klucz do aktualizacji kontraktów albo cenzuruje transakcje. Sprawdzaj, kto może zmienić kod rollupu i ile czasu masz na wycofanie środków.

Co ja o tym myślę

zk-SNARK-i to jedna z niewielu technologii w krypto, która robi dokładnie to, co obiecuje, i przy okazji rozwiązuje prawdziwe problemy: skalowanie i prywatność. Nie ma tu marketingowej mgły. Jest matematyka, która działa.

Ale warto pamiętać, gdzie kończy się matematyka, a zaczyna zaufanie. W ceremonii konfiguracji ufasz, że choć jeden uczestnik był uczciwy. W obwodzie ufasz programistom, że niczego nie przeoczyli. W rollupie ufasz zespołowi, który trzyma klucze do aktualizacji. Samo „zk” w nazwie projektu nie mówi Ci nic o tych trzech rzeczach.

Kiedy więc widzisz projekt, który sprzedaje się hasłem „zero-knowledge”, nie pytaj, czy technologia jest dobra, bo zwykle jest. Pytaj, co dokładnie jest dowodzone, kto napisał obwód i kto może to wszystko zmienić jednym podpisem.