Ce sunt zkSNARKs? Ghidul matematic cuprinzător de lună înfricoșătoare

Ce este zkSNARKs: Spooky Moon Math. Odată cu intrarea etereului în faza Metropolis, va introduce diverse modificări care îl vor face mai abstract și mai intim. Una dintre aceste schimbări este introducerea „Zero-Knowledge Succinct Non-Interactive Argument of Knowledge”, cunoscut și sub numele de Zk-Snarks. Zk-Snarks se bazează pe ideea de zero dovezi de cunoaștere.

În acest articol, vom trece prin ideea zero dovezi de cunoaștere și aplicarea sa în tehnologia blockchain.

Ce sunt zkSNARKs: Spooky Moon Math

Dovezile Zero Knowledge au apărut în anii 1980 datorită muncii cercetătorilor MIT Shafi Goldwasser, Silvio Micali și Charles Rackoff. Lucrau la probleme legate de sistemele interactive de probă, unde un Prover schimbă mesaje cu un verificator (mai multe despre verificatori și verificatori mai târziu) pentru a-i convinge că au cunoștințe despre o anumită dovadă fără a declara care este acea cunoaștere..

Înainte de a-și face descoperirea reperului, majoritatea sistemelor de probă se bazau pe proprietățile de „soliditate” ale sistemului de probe. S-a presupus întotdeauna că „proverul” ar putea fi cel rău intenționat în orice scenariu în care vor încerca să-l păcălească pe verificator. Acești 3 cercetători au răsturnat ideea, punând sub semnul întrebării moralitatea verificatorului în locul proverbului. Întrebarea pe care au pus-o a fost: cum poate cineva să știe cu siguranță că verificatorul nu va scurge cunoștințele și au existat, de asemenea, îngrijorări cu privire la cantitatea de cunoștințe despre verificatorul pe care verificatorul îl va cunoaște în timpul procesului de verificare.

Există diverse consecințe ale lumii reale ale acestei enigmă și una dintre cele mai faimoase au legătură cu protecția prin parolă. Să presupunem că doriți să vă conectați la un site web utilizând o parolă. Protocolul standard este că clientul (dvs.) va scrie parola și o va trimite la server, serverul va hash parola și o va echivala cu hash-ul pe care l-au stocat în sistemul lor. Dacă valorile se potrivesc, atunci puteți intra în sistem.

Puteți vedea corect defectul imens al acestui sistem? 

Serverul are versiunea în text clar a parolei dvs., iar confidențialitatea dvs. este la îndemâna serverului (verificatorul în acest scenariu). Dacă serverul este compromis sau atacat, atunci parola dvs. va fi însoțită de partea rău intenționată și consecințele ar putea fi grave. Pentru a contracara aceste scenarii, dovezile zero de cunoaștere sunt absolut esențiale și se deschid calea în orice sens.

Există două părți atunci când vine vorba de o dovadă de cunoaștere zero (așa cum sa menționat mai sus), prover și verificator. Cunoștințele zero afirmă că un prover poate dovedi verificatorului că posedă o anumită cunoaștere fără să le spună ce este de fapt acea cunoaștere

Proprietățile unei dovezi de cunoaștere zero

Pentru ca un ZKP să funcționeze, trebuie să îndeplinească anumiți parametri:

  • Completitudine: Dacă afirmația este adevărată, atunci un verificator onest poate fi convins de acesta de către un proverb onest.
  • Soliditate: Dacă proverbul este necinstit, nu poate convinge verificatorul de temeinicia afirmației prin minciună.
  • Cunoștințe zero: Dacă afirmația este adevărată, verificatorul nu va avea nici o idee despre ce este afirmația.

Deci, acum, când avem o idee de bază despre ceea ce este o dovadă de cunoaștere zero, să vedem câteva exemple ale acesteia înainte de a ne adânci în zk-snarks și aplicarea acesteia în blockchain.

Cazul nr. 1 Alibaba’s Cave

În acest exemplu, proverbul (P) spune verificatorului (V) că știe parola ușii secrete din spatele peșterii și vor să-i dovedească verificatorului fără să le spună de fapt parola.

Deci, așa arată:

Ce este zkSNARKs: Funny Moon Math

Imagine oferită de: Scott Twombly (canal YouTube)

Prover coboară pe oricare dintre căile A și B, să presupunem că inițial decid să treacă prin calea A și să ajungă la ușa secretă din spate. Când fac acest lucru, verificatorul V intră la intrare, fără să știe ce cale a luat efectiv proverul și declară că vor să vadă că proverul apare din calea B.

În diagramă, după cum puteți vedea, proverul apare într-adevăr în calea B. Dar dacă ar fi un noroc prost? Ce s-ar întâmpla dacă proverul nu știa codul de trecere și a luat calea B, a rămas blocat la ușă și, prin simpla avere, verificatorul i-a spus să apară din calea B, cea pe care se aflau inițial oricum?

Deci, pentru a testa validitatea, experimentul se face de mai multe ori. Dacă proverul poate apărea la calea corectă de fiecare dată, verificatorul verifică faptul că proverul într-adevăr cunoaște parola, chiar dacă verificatorul nu știe care este parola de fapt.

Să vedem cum sunt îndeplinite cele trei proprietăți ale cunoașterii zero în acest exemplu:

  • Completitudine: Întrucât afirmația era adevărată, cinstitul proverb a convins verificatorul onest.
  • Soliditate: Dacă proverbul a fost necinstit, nu l-ar fi putut păcăli pe verificator, deoarece testul a fost făcut de mai multe ori. În cele din urmă, norocul proverului a trebuit să se termine.
  • Cunoștințe zero: Verificatorul nu a știut niciodată care este parola, dar a fost convins că proverul a deținut-o.

Cazul nr. 2 Găsirea lui Waldo

Amintiți-vă că l-ați găsit pe Waldo?

Desigur, da, trebuie să fi văzut-o undeva, fie în viața reală, fie online. Pentru cei care nu știu, Finding Waldo este un joc în care trebuie să găsești „Waldo” printre o mare de oameni. Este un joc simplu „Spot the guy”. Doar pentru a vă oferi o idee de bază, așa arată jocul:

Ce este zkSNARKs: Funny Moon Math

Imagine oferită de Youtube (IntoConnection)

Iar ideea este să-l găsim pe Waldo care arată astfel:

Ce este zkSNARKs: Funny Moon Math

Imagine oferită de: Pinterest

Pare destul de simplu, nu? Găsiți acest tip printre marea altor oameni pe care îi vedeți în joc. Ok, deci, unde vine conceptul Zero Knowledge aici? Imaginați-vă că sunt doi oameni Anna și Carl. Anna îi spune lui Carl că știe unde este Wally, dar nu vrea să-i arate unde este exact. Deci, cum îi poate demonstra că l-a găsit pe Wally fără să-i arate poziția exactă?

A existat o lucrare interesantă a lui Naor, Naor și Reingold, care arată două soluții Zero Knowledge la această problemă. Există o „Soluție Mid-Tech” și o „Soluție Low-Tech”. Să le discutăm pe amândouă.

Soluție Mid-Tech

Motivul pentru care această soluție este „mid-tech” se datorează faptului că verificatorul și verificatorul nostru au nevoie de acces la o mașină de fotocopiere pentru ca acest lucru să funcționeze. Deci așa merge. În primul rând, Anna și Carl ar face o fotocopie a jocului original. Atunci Anna, asigurându-se că Carl nu se uită, îl va scoate pe Waldo din fotocopie și apoi va distruge resturile. După aceea, îi poate arăta lui Waldo decuparea lui Carl și poate dovedi că știa unde se află Waldo până la urmă, fără a-i indica locația exactă lui Carl..

Există probleme cu această soluție. Deși îndeplinește criteriile „Zero Knowledge”, nu îndeplinește criteriile „Soliditate”. Există multe modalități prin care Anna ar fi putut înșela aici. Ar fi putut avea un Waldo aleatoriu decupat cu ea de la bun început și ar fi putut să i-l arate lui Carl fără să știe de fapt unde este Waldo. Deci, care este soluția la acest lucru?

Soluția la acest lucru este testarea minuțioasă și atentă. În primul rând, Anna și Carl vor lua o fotocopie a jocului. Apoi Carl va desena un model distinctiv în spatele fotocopiei. După aceea, Carl o va însoți pe Anna într-o cameră în care va fi izolată și nu va avea nicio șansă să înșele. Dacă Anna iese cu un decupaj de Waldo, atunci Carl poate fi convins că știa de fapt unde se află Waldo fără a dezvălui soluția. Ei pot repeta acest experiment de mai multe ori, iar Carl poate compara diferitele decupaje ale lui Waldo pentru a fi și mai siguri de validitatea revendicării Anna..

Soluție low-tech

Această soluție necesita echipamente de bază. Ideea este simplă. Obțineți un carton imens, unul care este de două ori mai mare decât jocul și decupați un mic dreptunghi pe el. Acum, când Carl nu se uită, Anna poate muta cartonul pe joc în așa fel încât dreptunghiul să fie direct deasupra lui Waldo. Acum, ea îi poate spune lui Carl să arunce o privire și asta va vedea el:

Ce este zkSNARKs: Funny Moon Math

Image Courtesy: Applied Kid Cryptography de Naor And Reingold

Deci, deși Carl poate avea o idee foarte simplă despre locul în care poate fi de fapt Waldo, el nu știe exact locația. Prin urmare, Anna i-a dovedit lui Carl că știe unde se află Waldo fără a-i arăta exact locația.

Cazul nr. 3: Sudoku

O altă aplicație excelentă a cunoașterii zero este în Sudoku. Pentru cei care nu știu, Sudoku este un puzzle japonez în care obțineți o masă 9X9 care arată așa:

Ce este zkSNARKs: Spooky Moon Math

Imagine oferită de: Computational Complexity Blog.

Ideea este să umpleți fiecare rând, fiecare coloană și fiecare bloc 3X3 cu numere de la 1 la 9 și niciun număr nu ar trebui să se repete. Deci, soluția pentru puzzle-ul de mai sus arată astfel:

Ce este zkSNARKs: Spooky Moon Math

Imagine oferită de: Computational Complexity Blog.

După cum puteți vedea, fiecare rând, coloană și bloc 3X3 sunt unice și nu a fost repetat niciun număr. Să ne întoarcem la vechii noștri prieteni Anna și Carl. Anna a găsit soluția la puzzle-ul Sudoku și Carl, sceptic că el nu o crede și vrea ca Anna să demonstreze că știe cu adevărat soluția. Anna vrea să-și demonstreze onestitatea, dar, în același timp, nu vrea ca Carl să știe exact soluția puzzle-ului. Cum se va descurca? Anna va folosi Zero Knowledge pentru a dovedi validitatea cererii sale.

În primul rând, Carl va rula soluția Sudoku printr-un program de computer care a fost verificat, pentru a fi sincer, iar programul va rula numerele printr-un cifru de substituție ales aleatoriu. Spuneți, pentru această problemă specială, cifrul ales de program este:

Ce este zkSNARKs: Spooky Moon Math

Programul și cifrul ales sunt astfel încât fiecare cifră are aceeași șansă de a fi transmutat în substituția sa ca orice alt număr. Practic, 1 are șanse de a fi transmutat ca 3 și 4 au la fel de multe șanse de a fi transmutat ca 9 și așa mai departe și așa mai departe. Deci, utilizarea acestui cifru ne oferă următoarea soluție la puzzle-ul de mai sus:

Ce este zkSNARKs: Spooky Moon Math

Imagine oferită de: Computational Complexity Blog.

Anna primește acum soluția transmutată, rețineți că Carl încă nu știe care a fost soluția originală și nici nu are soluția transmutată. Deci, ceea ce face Anna este că ascunde toate numerele din puzzle folosind un „mecanism de blocare”, practic Carl nu va putea vedea niciunul dintre numere și va vedea o grilă 9X9 goală în fața lui.

Carl are acum 28 de opțiuni în față:

  • Dezvăluie un rând.
  • Dezvăluie o coloană.
  • Dezvăluie o cutie 3X3.
  • Dezvăluie versiunea transmutată a puzzle-ului original.

Să presupunem că Carl vrea să știe cum arată al treilea rând:

Ce este zkSNARKs: Spooky Moon Math

Imagine oferită de: Computational Complexity Blog.

Iată ce va vedea. Carl va vedea că fiecare număr din rând este unic și din moment ce fiecare număr posibil din soluția originală a avut aceeași probabilitate de a fi transmutat prin intermediul cifrului, Carl nu va avea nici o idee despre ce este soluția originală

Să presupunem că Carl decide să ia ultima opțiune și vrea să vadă cum arată puzzle-ul original atunci când este transmutat:

Ce este zkSNARKs: Spooky Moon Math

Imagine oferită de: Computational Complexity Blog.

Încă o dată, deoarece cifrul a fost ales la întâmplare și toate numerele au aceeași probabilitate de a fi transmutate, Carl nu va avea nicio idee care este soluția originală. Carl poate acum să treacă prin toate cele 28 de alegeri și, în cele din urmă, va fi mulțumit de validitatea declarației Anei.

De ce?

Pentru că, dacă Anna a înșelat într-adevăr, nu există nicio modalitate prin care ar fi putut găsi un cifru care să ofere soluții unice pentru toate cele 28 de alegeri ale lui Carl. Dacă Carl tocmai a ales o opțiune, șansele Anna de a scăpa de înșelăciune sunt 27/28. DAR, dacă Carl a ales să facă test aleatoriu de mai multe ori, să presupunem că alege să-l testeze de 150 de ori, alegerea Anna de a scăpa de înșelăciune scade la (27/28) ^ 150, care este < 0,5%.

Deci, să verificăm proprietățile zero de cunoaștere ale acestui scenariu:

  • Completitudine: Programul de cifrare utilizat a fost verificat, pentru a fi sincer, și atât Anna, cât și Carl respectă protocolul.
  • Soliditate: Dacă Carl face teste aleatorii de 150 de ori, șansele Anei de a scăpa de trișare sunt < 0,5%.
  • Cunoștințe zero: Anna nu a trebuit niciodată să-i dezvăluie lui Carl care a fost soluția inițială.

Dovada vs Dovada declarațiilor

Acum că cunoaștem aspectele teoretice ale dovezilor de cunoaștere zero și aplicarea acesteia în diferite exemple, care este aplicația sa practică în blockchain? De ce toată lumea încearcă să pună în aplicare Zcash ZKP (zero dovezi de cunoaștere) și de ce toată lumea este încântată de ethereum să facă același lucru? Înainte de a ne extinde, este important să cunoaștem un concept teoretic mai important.

Ce anume dovedim folosind ZKP? Într-un spectru larg, există două afirmații pe care le puteți dovedi folosind ZKP. Dovezi și fapte și dovezi ale cunoștințelor.

  • Dovezi: Acestea sunt adevărurile intrinseci despre univers pe care poate doriți să le demonstrați prin ZKP. De exemplu. „Numărul X aparține unui grup Y”.
  • Dovada cunoștințelor: S-ar putea să doriți, de asemenea, să demonstrați că aveți cunoștințe despre o anumită idee, fără a dezvălui care sunt aceste cunoștințe. Așa cum se poate vedea în exemplele de peșteră ale lui Sudoku, Waldo și Alibaba date mai sus.

Este important de observat diferența dintre aceste două, deoarece acestea sunt complet diferite. În lumea criptomonedelor, ne concentrăm în principal pe „dovada cunoașterii”. Una dintre cele mai importante descoperiri în dovedirea dovezii cunoașterii prin dovezi de cunoaștere zero a venit atunci când Claus-Peter Schnorr în anii 1980 a venit cu protocolul de identificare Schnorr. Acest protocol stabilește elementele de bază ale criptografiei semnăturii cheii moderne și afișează modul în care cunoașterea zero poate fi integrată perfect în practicile criptografice moderne.

Protocolul de identificare Schnorr

Pentru a înțelege despre ce este identificarea Schnorr, să-i readucem pe vechii noștri prieteni Anna și Carl. Anna a anunțat lumii că are o cheie publică și că poate accepta și primi informații prin intermediul ei. Carl, întotdeauna sceptic, crede că Anna minte. Singura modalitate prin care Anna își poate dovedi onestitatea este prin a-și arăta cheia privată către Carl, dar nu vrea să-și dezvăluie cheia privată.

Deci, cum își va dezvălui Anna cunoștințele despre cheia ei privată fără să o dezvăluie? Aici intervine protocolul Schnorr. Înainte chiar să începem să înțelegem cum funcționează protocolul, există anumiți parametri pe care trebuie să îi cunoașteți:

  • p = Orice număr prim.
  • q = factorul lui p-1.
  • „A” astfel încât a ^ q = 1 mod p.

Acum rețineți, în protocolul Schnorr, aceste 3 variabile sunt globale. Adică oricine are cunoștință despre ceea ce sunt aceste 3 variabile pentru un anumit scenariu.

Acum ajungem la cele două chei, cheia privată secretă pe care o vom numi „s” și cheia publică pe care o vom numi „v”.

s poate avea orice valoare atâta timp cât 0

v = a ^ -s mod q.

Cheia publică „v” va fi cunoașterea globală și publică împreună cu p, q și a. Cu toate acestea, DOAR Anna va avea cunoștința a ceea ce este „s”, deoarece aceasta este cheia ei privată.

Deci, acum că am definit variabila, să vedem cum pot funcționa schimbul de informații și validitatea declarației Anei FĂRĂ ca ea să dezvăluie care este cheia privată.

Anna semnează și trimite un mesaj criptat

Să presupunem că Anna dorește să îi trimită un mesaj „M” lui Carl codificat cu cheia ei privată. Cum o va face dacă ar urma protocolul Schnorr?

În primul rând, ea va alege un număr aleatoriu „r” astfel încât 0

Acum va calcula o valoare x astfel încât:

X = a ^ r mod p.

Acum că a calculat valoarea lui X, ea va concatena acest lucru cu mesajul original. Ce este concatenarea? Să presupunem că avem două șiruri „salut” și „lume”. Dacă le concatenăm pe acestea două, atunci vom obține „hello world”. Concatenarea înseamnă practic adăugarea a două șiruri și transformarea în una.

Deci, ea va concatena M și X pentru a obține M || X. iar ea va stoca hashul acestei valori în e.

Practic, e = H (M || X) unde H () este funcția hash.

În cele din urmă, când toate acestea vor fi făcute, ea va face un ultim calcul. Va obține o valoare „y” astfel încât:

y = (r + s * e) mod q

Acum că toate calculele s-au încheiat, ea îi va trimite următoarele informații lui Carl:

  • Mesajul „M”.
  • Semnăturile e și y.

Carl primește mesajul și verifică dovada de cunoaștere a Anei

Acum Carl a primit următoarele informații de la Anna: Mesajul (M) și semnăturile (e și y).

Împreună cu acesta, are următoarele informații care sunt cunoscute public tuturor:

  • Cheia publică a Annei „v”.
  • Numărul prim care Anna a ales „p”.
  • „Q” care este factorul „p-1” ales de Anna.
  • Și „a” astfel încât a ^ q = 1 mod p, acest lucru l-a ales și Anna.

Acum, Carl va trebui să calculeze X ‘astfel încât:

X ’= a ^ y * v ^ e mod p.

Acum să facem o substituție simplă:

Știm că v = a ^ -s, să o substituim în ecuația de mai sus și obținem:

  • X ’= a ^ y * a ^ -se = a ^ (y-s * e).
  • Acum știm și că y = r + s * e.
  • Ceea ce înseamnă: r = y-s * e.

Să înlocuim această valoare în ecuația de mai sus:

  • Obținem: X ’= a ^ r.
  • După cum am văzut deja mai sus: X = a ^ r.
  • Deci din punct de vedere tehnic: X = X ’.

Dar Carl nu cunoaște valoarea „X”, deoarece nu a primit niciodată această valoare. Tot ceea ce a primit este următorul: Mesajul M, semnăturile (e și y) și gazda variabilelor publice (cheia publică „v”, p, q și a).

El nu a primit niciodată „X”, dar știe că dacă Anna spune adevărul, atunci X ’trebuie să fie egal cu X. Dar el știe valoarea lui e și mesajul M.

Deci, el va rezolva e făcând următoarele:

e = H (M || X ’).

Rețineți că mai devreme am rezolvat pentru e făcând: H (M || X).

Deci, după această logică, dacă cele două valori ale lui e ajung să fie aceleași, atunci înseamnă X = X ‘.

Acest lucru înseamnă, de asemenea, că Anna a avut într-adevăr cheia privată tot timpul și nu a mințit.

Deci, haideți să rulăm acest întreg scenariu prin cele trei proprietăți ale probelor de cunoaștere zero:

  • Completitudine: Carl a fost convins de onestitatea Annei, deoarece la final X = X ’.
  • Sănătate: Planul era sănătos, deoarece singurul mod prin care Anna și-ar fi putut dovedi onestitatea era folosind cheia privată. Nu ar fi putut minți că are cheia privată.
  • Cunoștințe zero: Carl nu a aflat niciodată care este cheia privată a Anei.

Protocolul Schnorr oferă o aplicație criptografică din lumea foarte reală a zero dovezi de cunoaștere.

Cum să faceți dovezi de cunoaștere zero neinteractive?

Cu sistemele anterioare de verificare a cunoștințelor zero, a existat o mare problemă. Pentru ca acesta să funcționeze, verificatorul și verificatorul trebuiau să fie online în același timp. Cu alte cuvinte, procesul a fost „interactiv”. Acest lucru a făcut întregul sistem ineficient și aproape imposibil de extins. Verificatorii nu ar putea fi online, în același timp cu provers, tot timpul? Trebuia să existe un sistem care să facă acest lucru mai eficient.

În 1986, Fiat și Shamir au inventat euristica Fiat-Shamir și au schimbat cu succes dovada interactivă de cunoaștere zero în dovadă de cunoștințe zero interactivă. Acest lucru a ajutat întregul protocol să funcționeze fără nicio interacțiune. Procedura din spatele acesteia este foarte simplă.

Deci, pentru a vă oferi un exemplu, așa funcționau dovezile zero de cunoștințe înainte de Fiat și Shamir.

Să dovedim acest lucru folosind logaritmi discreți simpli.

  • Anna vrea să-i demonstreze lui Carl că știe o valoare x astfel încât y = g ^ x la o bază g.
  • Anna alege o valoare aleatorie v dintr-un set de valori Z și calculează t = g ^ v și trimite t lui Carl.
  • Carl alege o valoare aleatorie c din setul Z și o trimite lui Anna.
  • Anna calculează r = v-c * x și returnează r lui Carl.
  • Carl verifică dacă t = g ^ r * y ^ c se menține sau nu (din moment ce r = vc * x, y = g ^ x și prin substituire simplă, g ^ (vc * x) * g ^ c * x = g ^ v = t).
  • Carl nu cunoaște valoarea lui x, doar verificând dacă t = g ^ r * y ^ c poate verifica dacă Anna știe într-adevăr valoarea lui x.

Acum, deși interacțiunea de mai sus este zero-cunoștință, problema cu aceasta este că Anna și Carl trebuie să fie online și să facă schimb de valori pentru ca aceasta să funcționeze.

Cum îi poate dovedi Anna lui Carl că are cunoștințe despre ceva fără ca Carl să fie online? Ea poate face acest lucru folosind o funcție hash criptografică simplă, așa cum au teorizat Fiat și Shamir.

Să vedem cum ar funcționa exemplul de mai sus într-un mod non-interactiv:

  • Anna vrea să-i demonstreze lui Carl că știe o valoare x astfel încât y = g ^ x la o bază g.
  • Anna alege o valoare aleatorie v dintr-un set de valori Z și calculează t = g ^ v.
  • Anna calculează c = H (g, y, t) unde H () este o funcție hash.
  • Anna calculează r = v – c * x.
  • Carl sau oricine poate verifica apoi dacă t = g ^ r * y ^ c.

Deci, după cum puteți vedea, zero dovezi de cunoaștere au fost făcute neinteractive. Și acesta a fost cel care a pus bazele pentru Zk-Snarks.

La ce folosește Zk-Snarks?

Zk-Snarks înseamnă „Zero-Knowledge Succinct Non-Interactive Argument of Knowledge”. Utilizarea sa în tehnologia modernă blockchain este imensă. Pentru a înțelege aplicația sa, este important să știm cum funcționează un contract inteligent. Un contract inteligent este în esență un escrow de fonduri care se activează odată ce o anumită funcție este realizată.

De exemplu. Anna pune 100 ETH într-un contract inteligent pe care îl încheie cu Carl. Carl trebuie să facă o anumită sarcină, la finalizarea căreia, Carl va primi 100 ETH din contractul inteligent.

Acest lucru se complică atunci când sarcinile pe care Carl trebuie să le facă sunt multistratificate și confidențiale. Să presupunem că ați încheiat un contract inteligent cu Anna. Acum, veți primi plata numai dacă faceți A, B și C. Ce se întâmplă dacă nu doriți să dezvăluiți detaliile A, B și C, deoarece acestea sunt confidențiale pentru compania dvs. și nu doriți niciun concurent să știi ce trebuie să faci?

Ceea ce face Zk-Snarks este că demonstrează că acești pași au fost luați în contractul inteligent fără a dezvălui care sunt acești pași de fapt. Este foarte util pentru protejarea confidențialității dvs. și a companiei dvs. Poate dezvălui doar o parte a procesului fără a arăta întregul proces în sine și poate dovedi că sunteți sincer cu privire la revendicările dvs..

Cum funcționează ZkSnarks?

Un Zk-Snark este format din 3 algoritmi: G, P și V.

G este un generator de chei care primește o intrare „lambda” (care trebuie păstrată confidențială și nu ar trebui să fie dezvăluită în niciun caz) și un program C. Se procedează apoi la generarea a două chei accesibile publicului, o cheie doveditoare pk și o verificare cheie vk. Aceste chei sunt atât publice, cât și disponibile oricărei părți interesate.

P este proverul care va folosi 3 elemente ca intrare. Cheia de probă pk, intrarea aleatorie x, care este disponibilă publicului și declarația privată că vor să demonstreze cunoștințele fără a dezvălui ceea ce este de fapt. Să numim declarația privată „w”. Algoritmul P generează o dovadă prf astfel încât: prf = P (pk, x, w).

Algoritmul de verificare V a returnat practic o variabilă booleană. O variabilă booleană are doar două opțiuni, poate fi ADEVĂRATĂ sau poate fi FALSĂ. Deci, verificatorul ia cheia de verificare, intrarea publică x și dovada prf ca intrare, cum ar fi:

V (vk, x, prf)

..și returnează TRUE dacă prover este corect și fals în caz contrar.

Acum, despre parametrul lambda. Valoarea „Lambda” trebuie păstrată confidențială, deoarece oricine o poate folosi pentru a genera dovezi false. Aceste dovezi false vor returna o valoare de ADEVĂRAT indiferent dacă proverul are de fapt cunoștințe despre declarația privată „w” sau nu.

Funcționalitatea ZkSnarks

Pentru a arăta funcționalitatea unui Zk-Snark, vom folosi același exemplu de funcție pe care Christian Lundkvist l-a folosit în articolul său pentru Consensys. Iată cum arată programul de exemplu:

funcția C (x, w)

{

return (sha256 (w) == x);

}

Practic, funcția C ia 2 valori ca intrare, o valoare hash publică „x” și declarația secretă care trebuie verificată „w”. Dacă valoarea hash SHA-256 a lui este egală cu „x”, atunci funcția returnează TRUE în caz contrar, returnează FALSE. (SHA-256 este funcția hash care este utilizată în bitcoin).

Să ne readucem vechii prieteni Anna și Carl pentru acest exemplu. Anna fiind proverbul și Carl scepticul este verificatorul.

Primul lucru pe care Carl, ca verificator, trebuie să-l facă este să genereze cheia de verificare și verificare folosind generatorul G. Pentru aceasta, Carl trebuie să genereze valoarea aleatorie „lambda”. Așa cum s-a menționat mai sus, totuși, el trebuie să fie foarte atent cu Lambda, deoarece nu îi poate permite Anna să știe valoarea acesteia pentru a o împiedica să creeze dovezi false..

Oricum, așa va arăta:

G (C, lambda) = (pk, vk).

Acum că sunt generate cele două chei, Anna trebuie să demonstreze validitatea declarației prin generarea dovezii. Ea va genera dovada folosind algoritmul de probă P. Va demonstra că știe valoarea secretă „w” care hashează (la analizarea prin SHA-256) pentru a da ieșirea x. Deci, algoritmul de probă pentru generarea probelor arată astfel:

prf = P (pk, x, w).

Acum, că a generat dovada „prf”, ea va da valoarea lui Carl, care va rula în cele din urmă algoritmul de verificare al lui Zk-Snarks:

Așa va arăta:

V (vk, x, prf).

Aici, vk este cheia de verificare și x este valoarea hash cunoscută, iar prf este dovada că a primit de la Anna. Dacă acest algoritm revine ADEVĂRAT atunci înseamnă că Anna a fost sinceră și că într-adevăr a avut valoarea secretă „w”. Dacă se întoarce FALS, atunci aceasta înseamnă că Anna a mințit despre a ști ce este „w”.

Utilizarea ZkSnarks în criptomonedă

Ce este zkSNARKs: Spooky Moon Math

Amabilitatea imaginii: Zcash

Zcash este o criptomonedă lansată de Zerocoin Electic Coin Company pe 9 septembrie 2016 și este primul exemplu de criptomonedă care se căsătorește cu conceptele de tehnologie blockchain cu ZkSnarks. Acesta își propune să ofere utilizatorilor săi spații de tranzacții complet sigure și protejate, fără a dezvălui nimănui detalii (precum adresele lor).

Ethereum dorește să integreze ZkSnarks pe măsură ce intră în faza sa Metropolis și modul în care intenționează să facă acest lucru este prin crearea unei alianțe cu Zcash care va include schimbul reciproc de valoare. Dezvoltatorul șef al Zcash, Zooko Wilcox, a susținut o prezentare în DevCon2 din Shanghai, care a explorat viitorul unei astfel de alianțe. Potrivit acestuia, există 3 moduri în care Z-Cash și, prin extensie, zk-snarks ar putea fi integrate cu ethereum.

Prima metodă se numește Baby Zoe (Zoe = Zcash on ethereum). Acesta adaugă un pre-compilator zk-snark pe Ethereum și face un mini contract inteligent Zcash pe Ethereum. Ideea este să vedem dacă sistemul Ethereum poate crea un DAPP activat zk-snark deasupra blockchain-ului său.

A doua metodă este de a integra calculabilitatea Ethereum în cadrul blockchain-ului Zcash. După cum afirmă Wilcox, cel mai mare atu al etereului este calculabilitatea sa, iar oamenii vor să vadă dacă îl pot integra pe un blockchain bazat pe zk-snark precum Zcash. Pot oamenii să creeze DAPPS pe un blockchain făcut pe dovezi de cunoaștere zero? Asta așteaptă să vadă.

Al treilea și cel mai interesant aspect este Project Alchemy. Aceasta este practic conexiunea și interoperarea celor două blockchain-uri, astfel încât să se poată deplasa fără probleme între cele două. Modul în care Zcash intenționează să facă acest lucru este prin clonarea releului BTC. Este un script Ethereum care a fost scris pentru a crea un client Bitcoin light în Ethereum. Clona Zcash va folosi același concept pentru a crea un client Zcash light în Ethereum.

Dacă acest lucru funcționează, vom avea primul sistem valutar descentralizat din lume care facilitează crearea DAPPS cu zero cunoștințe înrădăcinate în el.

Privind înainte

Nu există nicio îndoială că introducerea unor dovezi de cunoaștere zero va fi un schimbător imens de jocuri pentru Ethereum. Într-o lume din ce în ce mai deschisă, conectată și supravegheată, orice fel de intimitate este binevenită. Cum se întâmplă integrarea rămâne de văzut, însă, luând în considerare conceptele teoretice în sine, nu ne putem abține să nu fim entuziasmați.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me