Când cineva din spațiul cripto vorbește despre zero-knowledge proofs, se referă de obicei la un anumit tip de dovadă – zk-SNARKs
Matematica din spatele zk-SNARKs este greu de priceput. Puteți să săriți peste partea matematică și să vă concentrați doar pe ce fac aceste semnături.
Să începem cu numele – zk vine de la zero-knowledge. (în mod uimitor, mai există și alți ”snarkși” în domeniu, inclusiv un tip de grafice și un sisteme care demonstrează teoreme automat).
Acest SNARK care ne interesează pe noi vine de la ”succint non-interactive adaptive argument of knowledge” (argument de cunoștințe adaptiv, succint și non-interactiv – într-o traducere aproximativă).
- Citeste si: Bitcoin Status Quo. Pastram sau modificam?
Succint în cazul de față înseamnă ”destul de eficient cât să poată să fie procesat într-o perioadă rezonabilă de timp”, aspect care e foarte important pentru verificarea noastră.
Non-interactiv înseamnă că SNARKs nu îi va cere verificatorului să îl interogheze pe cel obligat să facă dovada. În schimb, cel care trebuie să facă dovada poate să publice propria dovadă în avans, iar un verificator poate să se asigure că aceasta este corectă, într-un proces similar cu hash-ul unui fișier.
În cele din urmă, argument adaptiv al cunoașterii se referă la o dovadă de cunoștințe a unei anumite procesări. Imaginează-ți că profesoara de matematică din școala generală îți dă să rezolvi o problemă de aritmetică complexă. În loc să dai răspunsul și să arăți cum ai rezolvat problema, zk-SNARKs te lasă să dovedești că știi răspunsul, fără să trebuiască să îl dezvălui.
Asta e șmecheria, dar are și dezavantaje
SNARKs are nevoie de multe resurse. Așa cum vom vedea când vom discuta despre Zcash, unele procese pe care le implică folosirea criptomonedei sunt foarte dificile. De exemplu, folosirea de pe telefonul mobil sau de pe dispozitive cu alimentare mai slabă este aproape imposibilă. În fine… s-au făcut și ceva progrese în direcția asta, deci situația arată mai încurajator.
Mai avem de asemenea problema că pierdem accesul la un secret. SNARKs permite utilizatorului să dovedească faptul că are acces la un secret. Responsabilitatea este însă tot a utilizatorului să asigure integritatea și disponibilitatea secretului. Vom discuta mai în detaliu această restricție când ajungem la implementarea SNARKs în rețeaua Ethereum.
Faza de setup
Cel mai mare dezavantaj la SNARKs este ceea ce numim setup phase (faza de setup).
Pentru fiecare tip de problemă pe care vrei să o rezolvi cu SNARKs, ai un pas de comunicare premergător numit faza de setare. În această fază, se stabilește circuitul, sau procesul pe care vrei să îl dovedești. Din cauza acestei restricții, SNARKs nu este potrivit pentru a rula contracte smart arbitrare, Turing-complete. Fiecare contract nou în parte are nevoie de o fază nouă de setup.
Ca să explicăm mai concret, fiecare problemă pe care profesoara de matematică ți-o dă are nevoie de o fază de setup separată. S-ar putea să ai o fază de setup pentru adunare, încă una pentru înmulțire, alta pentru a pune parantezele. Odată ce ai făcut faza de setup între tine și profesoară pentru adunări, nu mai trebuie să o repeți de fiecare dată când faci o adunare. Când însă ai un tip nou de procedură, înmulțirea, trebuie să faci un nou setup.
Dezavantaje
Mai trebuie să mai spunem un lucru important despre faza de setup. În această fază, se generează un secret care permite publicarea de dovezi false, fără ca ele să fie detectate. În cazul în care sunt două părți implicate, e în regulă. Verificatorul (profesoara de matematică din exemplul nostru) generează un secret. Atâta timp cât verificatorul nu divulgă secretul celui care trebuie să facă dovada (elevului), se menține securitatea.
Dacă vrei să folosești un anumit circuit public, cu mai mult de un verificator, trebuie să ai un ”setup de încredere”. În loc ca un singur verificator să genereze (și de preferat să și distrugă la final) secretul care va crea în cele din urmă dovada, un grup de oameni poate să genereze un secret împreună. Atâta timp cât unul din acei oameni este corect și distruge partea sa de secret, securitatea este garantată.
Pentru o introducere mai detaliată, dar remarcabil de accesibilă, puteți să citiți ”Introducere în zk-SNARKs, cu exemple”, articolul lui Christian Lundkvist. Ca să înțelegeți mai bine partea de matematică, citiți explicațiile din lucrarea albă a Zcash, ”zkSNARKs pe scurt” sau seria lui Vitalik Buterin, ”Zk-SNARK – sub capotă”.