Hvad er zkSNARKs? Den omfattende Spooky Moon Math Guide

Hvad er zkSNARKs: Spooky Moon Math. Når ethereum går ind i Metropolis-fasen, vil det introducere forskellige ændringer, der vil gøre det mere abstraktion og privatlivsvenligt. En af disse ændringer er introduktionen af ​​”Zero-Knowledge Succinct Non-Interactive Argument of Knowledge” aka Zk-Snarks. Zk-Snarks kører på ideen om nul vidensbeviser.

I denne artikel vil vi gennemgå ideen om nul vidensbeviser og dens anvendelse i blockchain-teknologien.

Hvad er zkSNARKs: Spooky Moon Math

Zero Knowledge proofs opstod i 1980’erne takket være MIT-forskernes arbejde Shafi Goldwasser, Silvio Micali og Charles Rackoff. De arbejdede på problemer relateret til interaktive proof-systemer, hvor en Prover udveksler meddelelser med en Verifier (mere om provers og verifiers senere) for at overbevise dem om, at de har kendskab til et bestemt bevis uden at erklære, hvad denne viden er.

Før de foretog deres milepælsopdagelse, var de fleste proof-systemer baseret på proof-systems egenskaber. Det blev altid antaget, at “bevismanden” kunne være den ondsindede i ethvert scenarie, hvor de vil prøve at narre verifikatoren. Disse 3 forskere vendte ideen på hovedet ved at stille spørgsmålstegn ved verifikatorens moral i stedet for bevismanden. Spørgsmålet, de stillede, var, hvordan kan nogen med sikkerhed vide, at verifikatoren ikke lækker viden, og der blev også rejst bekymringer med hensyn til mængden af ​​viden om beviseren, som verifikatoren lærer at kende under verificeringsprocessen.

Der er forskellige virkelige verdens konsekvenser af dette gåde, og en af ​​de mest berømte har at gøre med adgangskodebeskyttelse. Antag at du vil logge ind på et websted ved hjælp af en adgangskode. Standardprotokollen er, at klienten (dig) skriver i sin adgangskode og sender den til serveren, serveren hash derefter adgangskoden og sidestiller den med den hash, som de har gemt i deres system. Hvis værdierne stemmer overens, kan du gå ind i systemet.

Kan du se den enorme fejl i dette system rigtigt? 

Serveren har almindelig tekstversion af din adgangskode, og dit privatliv er underlagt serverens nåde (verifikatoren i dette scenarie). Hvis serveren bliver kompromitteret eller angrebet, vil din adgangskode være hos den ondsindede part, og konsekvenserne kan være alvorlige. For at imødegå disse scenarier er nul vidnesbyrd absolut nødvendigt og banebrydende i enhver forstand.

Der er to parter, når det kommer til nul vidensbevis (som nævnt ovenfor), bevismanden og verifikatoren. Nul viden siger, at en beviser kan bevise over for verifikatoren, at de besidder en vis viden uden at fortælle dem, hvad den viden faktisk er

Egenskaber ved nul vidensbevis

For at en ZKP skal fungere, skal den opfylde visse parametre:

  • Fuldstændighed: Hvis udsagnet er sandt, kan en ærlig verifikator overbevises om det af en ærlig beviser.
  • Sundhed: Hvis beviseren er uærlig, kan de ikke overbevise verifikatoren om udsagnets sundhed ved at lyve.
  • Nul-viden: Hvis erklæringen er sand, vil verifikatoren ikke have nogen idé om, hvad udsagnet faktisk er.

Så nu hvor vi har en grundlæggende idé om, hvad et nul-videns bevis er, lad os se nogle eksempler på det, før vi dykker dybt ned i zk-snarks og dets anvendelse i blockchain.

Sag nr. 1 Alibaba’s Cave

I dette eksempel siger prover (P) til verifikatoren (V), at de kender adgangskoden til den hemmelige dør bag på hulen, og de vil bevise det for verifikatoren uden faktisk at fortælle dem adgangskoden.

Så sådan ser det ud:

Hvad er zkSNARKs: Funny Moon Math

Billede med tilladelse: Scott Twombly (YouTube-kanal)

Beviseren går ned ad en af ​​stierne A og B, formoder, at de oprindeligt beslutter at gå gennem sti A og nå den hemmelige dør bagpå. Når de gør det, kommer verifikator V ind ved indgangen uden kendskab til, hvilken vej bevægeren faktisk har taget, og erklærer, at de ønsker at se bevægeren vises fra sti B.

I diagrammet, som du kan se, vises beviseren faktisk i sti B. Men hvad hvis dette var dumt held? Hvad hvis beviseren ikke kendte adgangskoden og tog stien B, sad fast ved døren og af ren formue fortalte verifikatoren ham at dukke op fra sti B, den de oprindeligt var på alligevel?

Så for at teste gyldigheden udføres eksperimentet flere gange. Hvis beviseren kan vises på den rigtige sti hver eneste gang, viser det for verifikatoren, at beviseren faktisk kender adgangskoden, selvom verifikatoren ikke ved, hvad adgangskoden faktisk er.

Lad os se, hvordan de tre egenskaber ved nul viden er opfyldt i dette eksempel:

  • Fuldstændighed: Da udsagnet var sandt, overbeviste den ærlige beviser den ærlige verifikator.
  • Sundhed: Hvis beviseren var uærlig, kunne de ikke have narret verifikatoren, fordi testen blev udført flere gange. Til sidst måtte bevægelsens held løbe ud.
  • Nul-viden: Verifikatoren vidste aldrig, hvad adgangskoden var, men var overbevist om, at bevismanden havde det.

Sag nr. 2 Find Waldo

Husk at finde Waldo?

Selvfølgelig gør du det, du må have set det et eller andet sted, enten i det virkelige liv eller online. For dem der ikke ved det, Finding Waldo er et spil, hvor du skal finde “Waldo” blandt et hav af mennesker. Det er et simpelt ”Spot the guy” -spil. Bare for at give dig en grundlæggende idé, sådan ser spillet ud:

Hvad er zkSNARKs: Funny Moon Math

Billede med tilladelse: Youtube (IntoConnection)

Og ideen er at finde Waldo, der ser sådan ud:

Hvad er zkSNARKs: Funny Moon Math

Billede med tilladelse: Pinterest

Virker ret ligetil, ikke? Find denne fyr blandt havet af andre mennesker, som du ser i spillet. Ok, så hvor kommer begrebet Zero Knowledge ind her? Forestil dig, at der er to personer Anna og Carl. Anna fortæller Carl, at hun ved, hvor Wally er, men hun ønsker ikke at vise ham, hvor han er nøjagtigt. Så hvordan kan hun bevise for ham, at hun har fundet Wally uden at vise hans nøjagtige position?

Der var et interessant papir af Naor, Naor og Reingold, der viser to Zero Knowledge-løsninger på dette problem. Der er en “Mid-Tech-løsning” og en “Low-Tech-løsning”. Lad os diskutere dem begge.

Mid-Tech løsning

Årsagen til, at denne løsning er “midteknologisk”, er, at vores beviser og verifikator har brug for adgang til en fotokopimaskine for at få dette til at fungere. Så det er sådan det går. Først ville Anna og Carl lave en fotokopi af det originale spil. Så mens Anna sørger for, at Carl ikke ser ud, vil Waldo skære ud af fotokopien og derefter ødelægge resterne. Derefter kan hun vise Waldo skåret ud til Carl og bevise, at hun trods alt vidste, hvor Waldo var uden at præcisere hans nøjagtige placering til Carl.

Der er problemer med denne løsning. Selvom det opfylder kriterierne “Zero Knowledge”, opfylder det ikke kriterierne “Soundness”. Der er mange måder, som Anna kunne have snydt her. Hun kunne have haft en tilfældig Waldo skåret ud med sig lige fra starten og kunne bare have vist det til Carl uden faktisk at vide, hvor Waldo var. Så hvad er løsningen på dette?

Løsningen på dette er omhyggelig og omhyggelig test. For det første tager Anna og Carl en fotokopi af spillet. Derefter tegner Carl et markant mønster bag på fotokopien. Derefter eskorterer Anna Anna til et rum, hvor hun vil være isoleret og ikke har nogen chance for at snyde overhovedet. Hvis Anna kommer ud med en udskæring af Waldo, kan Carl være overbevist om, at hun faktisk vidste, hvor Waldo var uden at afsløre løsningen. De kan gentage dette eksperiment flere gange, og Carl kan sammenligne de forskellige udskæringer af Waldo for at være endnu mere sikker på gyldigheden af ​​Annas påstand..

Lavteknologisk løsning

Denne løsning krævede meget grundlæggende udstyr. Ideen er enkel. Få et stort pap, der er dobbelt så stort som spillet, og skar et lille rektangel ud på det. Nu, når Carl ikke ser, kan Anna flytte pap på spillet på en sådan måde, at rektanglet er direkte oven på Waldo. Nu kan hun bede Carl om at kigge, og det er det, han vil se:

Hvad er zkSNARKs: Funny Moon Math

Image Courtesy: Applied Kid Cryptography af Naor And Reingold

Så mens Carl måske får en meget grundlæggende idé om, hvor Waldo faktisk kan være, ved han ikke den nøjagtige placering. Anna har derfor bevist over for Carl, at hun ved, hvor Waldo er uden at identificere hans nøjagtige placering.

Sag nr. 3: Sudoku

En anden god anvendelse af nul viden er i Sudoku. For dem der ikke ved det, er Sudoku et japansk puslespil, hvor du får et 9X9 bord, der ser sådan ud:

Hvad er zkSNARKs: Spooky Moon Math

Billede med tilladelse: Computational Complexity Blog.

Ideen er at udfylde hver række, hver kolonne og hver 3X3-blok med tal fra 1-9, og intet tal skal gentage sig selv. Så løsningen på ovenstående puslespil ser sådan ud:

Hvad er zkSNARKs: Spooky Moon Math

Billede med tilladelse: Computational Complexity Blog.

Som du kan se, er hver række, kolonne og 3X3-blok unik, og ikke et enkelt nummer er gentaget. Lad os gå tilbage til vores gamle venner Anna og Carl. Anna har fundet løsningen på Sudoku-puslespillet, og Carl er skeptisk over for, at han ikke tror på hende og ønsker, at Anna skal bevise, at hun virkelig kender løsningen. Anna vil bevise sin ærlighed, men samtidig vil hun ikke have Carl til at kende den nøjagtige løsning af gåden. Hvordan vil hun klare det? Anna vil bruge Zero Knowledge til at bevise gyldigheden af ​​sit krav.

For det første vil Carl køre Sudoku-løsningen gennem et computerprogram, der er verificeret, for at være ærlig, og programmet kører tallene gennem en tilfældigt valgt erstatningskryptering. Sig, for dette særlige problem er den chiffer, som programmet har valgt, dette:

Hvad er zkSNARKs: Spooky Moon Math

Det valgte program og chiffer er sådan, at hver ciffer har samme chance for at blive transmitteret til dets erstatning som ethvert andet nummer. Dybest set har 1 lige så stor chance for at blive transmuteret som 3 og 4 har lige så stor chance for at blive transmuteret som 9 og så videre og så videre. Så ved at bruge denne chiffer giver os følgende løsning på ovenstående puslespil:

Hvad er zkSNARKs: Spooky Moon Math

Billede med tilladelse: Computational Complexity Blog.

Anna får den transmuterede løsning nu, husk at Carl stadig ikke ved, hvad den oprindelige løsning var, og at han heller ikke har den transmuterede løsning. Så hvad Anna gør nu er, at hun skjuler alle numrene i puslespillet ved hjælp af en “lockbox-mekanisme”, grundlæggende vil Carl ikke kunne se nogen af ​​tallene og vil se et tomt 9X9 gitter foran ham.

Carl har nu 28 valg foran sig:

  • Afslør en række.
  • Afslør en kolonne.
  • Afslør en 3X3 kasse.
  • Afslør den transmuterede version af det originale puslespil.

Antag at Carl vil vide, hvordan den tredje række ser ud:

Hvad er zkSNARKs: Spooky Moon Math

Billede med tilladelse: Computational Complexity Blog.

Dette er hvad han vil se. Carl vil se, at hvert nummer i rækken er unikt, og da hvert muligt nummer i den originale løsning havde samme sandsynlighed for at blive transmitteret via chifferet, vil Carl ikke have nogen anelse om, hvad den originale løsning er

Antag nu, at Carl beslutter at tage den sidste mulighed og vil se, hvordan det originale puslespil ser ud, når det transmuteres:

Hvad er zkSNARKs: Spooky Moon Math

Billede med tilladelse: Computational Complexity Blog.

Igen, da chifferet blev valgt tilfældigt, og alle numrene har samme sandsynlighed for at blive transmuteret, vil Carl ikke have nogen idé om, hvad den originale løsning er. Carl kan nu gennemgå alle 28 valg, og til sidst vil han være tilfreds med gyldigheden af ​​Annas erklæring.

Hvorfor?

For hvis Anna faktisk snyder, er der ingen måde, at hun kunne have fundet en chiffer til at give unikke løsninger til alle 28 af Carls valg. Hvis Carl bare valgte en mulighed, er Annas chancer for at komme væk med snyd 27/28. MEN hvis Carl valgte at foretage tilfældig test flere gange, antag at han vælger at teste det 150 gange, falder Annas valg af at komme væk med snyd ned til (27/28) ^ 150 hvilket er < 0,5%.

Så lad os tjekke nul-vidensegenskaberne i dette scenarie:

  • Fuldstændighed: Det krypteringsprogram, der bruges, er verificeret, for at være ærlig, og både Anna og Carl følger protokollen.
  • Sundhed: Hvis Carl foretager stikprøver 150 gange, er Annas chancer for at komme væk med snyd < 0,5%.
  • Nul-viden: Anna måtte aldrig afsløre for Carl, hvad den oprindelige løsning var.

Bevis vs Bevis for udsagn

Nu hvor vi kender de teoretiske aspekter af nul vidensbeviser og dets anvendelse i forskellige eksempler, hvad er dens praktiske anvendelse i blockchain? Hvorfor er alle begejstrede for Zcash for implementering ZKP (nul vidnesbyrd) og hvorfor er alle begejstrede for, at ethereum gør det samme? Før vi uddyber det, er det vigtigt at kende et mere vigtigt teoretisk koncept.

Hvad viser vi nøjagtigt ved hjælp af ZKP? I et bredt spektrum er der to udsagn, som du kan bevise ved hjælp af ZKP. Bevis aka fakta og bevis for viden.

  • Beviser: Dette er de iboende sandheder om universet, som du måske vil bevise via ZKP. For eksempel. “Nummer X tilhører en gruppe Y”.
  • Bevis for viden: Det kan også være en god idé at bevise, at du har kendskab til en bestemt idé uden at afsløre, hvad den særlige viden er. Som det kan ses i eksemplerne på Sudoku, Waldo og Alibabas hule givet ovenfor.

Det er vigtigt at bemærke forskellen mellem disse to, fordi de er helt forskellige. I kryptokurrencyverdenen er vi mest fokuseret på ”bevis for viden”. Et af de vigtigste gennembrud for at bevise bevis for viden via nul vidensbevis kom, da Claus-Peter Schnorr i 1980’erne kom med Schnorr-identifikationsprotokollen. Denne protokol lægger det grundlæggende i moderne nøglesignatur-kryptografi og viser, hvordan nul-viden kan integreres problemfrit i moderne kryptografisk praksis.

Schnorr-identifikationsprotokollen

For at forstå hvad Schnorr-identifikationen handler om, lad os bringe vores gamle venner Anna og Carl tilbage. Anna har meddelt verden, at hun har en offentlig nøgle og kan acceptere og modtage information gennem den. Carl, altid skeptiker, tror, ​​at Anna lyver. Den eneste måde, hvorpå Anna kan bevise sin ærlighed, er ved at vise sin private nøgle til Carl, men hun ønsker ikke at afsløre sin private nøgle.

Så hvordan vil Anna afsløre sin viden om sin private nøgle uden at afsløre den? Det er her Schnorr-protokollen kommer ind. Før vi endda begynder at forstå, hvordan protokollen fungerer, er der visse parametre, som du har brug for at vide:

  • p = Ethvert primtal.
  • q = faktor for p-1.
  • “A” sådan at a ^ q = 1 mod p.

Husk nu, i Schnorr-protokollen er disse 3 variabler globale. Det betyder, at enhver har viden om, hvad disse 3 variabler for et bestemt scenario er.

Nu kommer vi til de to nøgler, den hemmelige private nøgle, som vi vil kalde “s” og den offentlige nøgle, som vi vil kalde “v”.

s kan være en hvilken som helst værdi så længe som 0

v = a ^ -s mod q.

Den offentlige nøgle “v” vil være global og offentlig viden sammen med p, q og a. Imidlertid vil KUN Anna have viden om, hvad “s” er, for det er hendes private nøgle.

Så nu, hvor vi har defineret variablen, skal vi se, hvordan informationsudvekslingen og gyldigheden af ​​Annas erklæring kan fungere UDEN at hun afslører, hvad den private nøgle er.

Anna underskriver og sender en krypteret besked

Antag, at Anna vil sende en besked “M” til Carl kodet med sin private nøgle. Hvordan vil hun gøre det, hvis hun følger Schnorrs protokol?

For det første vælger hun et tilfældigt tal “r” således at 0

Nu vil hun beregne en værdi x sådan, at:

X = a ^ r mod p.

Nu hvor hun har beregnet værdien af ​​X, sammenkæder hun dette med den originale besked. Hvad er sammenkædning? Antag, at vi har to strenge “hej” og “verden”. Hvis vi sammenkæder disse to, får vi “hej verden”. Sammenkædning betyder grundlæggende at tilføje to strenge og gøre det til en.

Så hun vil sammenkæde M og X for at få M || X. og hun vil gemme hash af denne værdi i e.

Grundlæggende er e = H (M || X) hvor H () er hash-funktionen.

Endelig, når alt dette er gjort, foretager hun en endelig beregning. Hun vil få en værdi “y” sådan, at:

y = (r + s * e) mod q

Nu hvor alle beregningerne er forbi, sender hun følgende informationer til Carl:

  • Meddelelsen “M”.
  • Underskrifterne e og y.

Carl modtager beskeden og verificerer Annas bevis for viden

Nu har Carl modtaget følgende informationer fra Anna: Beskeden (M) og underskrifterne (e og y).

Sammen med det har han følgende informationer, der er kendt offentligt for alle:

  • Annas offentlige nøgle “v”.
  • Primtallet, som Anna valgte “p”.
  • “Q” som er den faktor af “p-1” som Anna valgte.
  • Og “a” sådan at a ^ q = 1 mod p, også dette valgte Anna.

Nu bliver Carl nødt til at beregne X ‘sådan, at:

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

Lad os nu lave nogle enkle erstatninger:

Vi ved, at v = a ^ -s, lad os erstatte det i ligningen ovenfor, og vi får:

  • X ’= a ^ y * a ^ -se = a ^ (y-s * e).
  • Nu ved vi også, at y = r + s * e.
  • Hvilket betyder: r = y-s * e.

Lad os erstatte denne værdi i ligningen ovenfor:

  • Vi får: X ’= a ^ r.
  • Som vi allerede har set ovenfor: X = a ^ r.
  • Så teknisk set: X = X ’.

Men Carl kender ikke værdien af ​​”X”, fordi han aldrig modtog den værdi. Alt, hvad han modtog, er følgende: Beskeden M, underskrifterne (e og y) og værten af ​​offentlige variabler (offentlig nøgle “v”, p, q og a).

Han modtog aldrig “X”, men han ved, at hvis Anna taler sandheden, skal X ‘være lig med X. Men han kender værdien af ​​e og meddelelsen M.

Så han vil løse for e ved at gøre følgende:

e = H (M || X ’).

Bemærk, at vi tidligere løste for e ved at gøre: H (M || X).

Så efter den logik, hvis de to værdier af e kommer til at være de samme, betyder det X = X ‘.

Dette betyder også, at Anna faktisk havde den private nøgle hele tiden, og at hun ikke lyver.

Så lad os køre hele dette scenarie gennem de tre egenskaber ved nul vidensbeviser:

  • Fuldstændighed: Carl var overbevist om Annas ærlighed, for i slutningen X = X ‘.
  • Sundhed: Planen var sund, fordi den eneste måde, Anna kunne have bevist sin ærlighed på, var ved at bruge sin private nøgle. Hun kunne ikke have løjet om at have den private nøgle.
  • Nul viden: Carl fandt aldrig ud af, hvad Annas private nøgle var.

Schnorrs protokol giver en meget reel kryptografisk anvendelse af nul vidensbeviser.

Hvordan man laver nul vidnesbyrd ikke-interaktivt?

Med tidligere nul-viden-verifikationssystemer var der et stort problem. For at det kunne fungere, måtte prover og verifier være online på samme tid. Med andre ord var processen “interaktiv”. Dette gjorde hele systemet ineffektivt og næsten umuligt at skalere op. Verifikatorerne kunne muligvis ikke være online på samme tid som provers hele tiden? Der skulle være et system for at gøre dette mere effektivt.

I 1986 opfandt Fiat og Shamir Fiat-Shamir heuristikken og ændrede med succes det interaktive nul-videns bevis til ikke-interaktivt nul videns bevis. Dette hjalp hele protokollen med at arbejde uden interaktion. Proceduren bag det er meget enkel.

Så for at give dig et eksempel er det sådan, at nul vidnesbyrd fungerede før Fiat og Shamir.

Lad os bevise dette ved hjælp af enkle diskrete logaritmer.

  • Anna vil bevise for Carl, at hun kender en værdi x sådan, at y = g ^ x til en base g.
  • Anna vælger en tilfældig værdi v fra et sæt værdier Z og beregner t = g ^ v og sender t til Carl.
  • Carl vælger en tilfældig værdi c fra sættet Z og sender den til Anna.
  • Anna beregner r = v-c * x og returnerer r til Carl.
  • Carl kontrollerer, om t = g ^ r * y ^ c holder eller ikke (da r = vc * x, y = g ^ x og ved simpel erstatning, g ^ (vc * x) * g ^ c * x = g ^ v = t).
  • Carl kender ikke værdien af ​​x ved blot at kontrollere, om t = g ^ r * y ^ c kan verificere, at Anna virkelig kender værdien af ​​x.

Nu mens ovenstående interaktion er nul-viden, er problemet med dette, at Anna og Carl skal være online og udveksle værdier for at det skal fungere.

Hvordan kan Anna bevise for Carl, at hun har kendskab til noget, uden at Carl er online? Hun kan gøre det ved hjælp af en simpel kryptografisk hash-funktion, som Fiat og Shamir teoretiserede.

Lad os se, hvordan eksemplet ovenfor fungerer på en ikke-interaktiv måde:

  • Anna vil bevise for Carl, at hun kender en værdi x sådan, at y = g ^ x til en base g.
  • Anna vælger en tilfældig værdi v fra et sæt værdier Z og beregner t = g ^ v.
  • Anna beregner c = H (g, y, t) hvor H () er en hash-funktion.
  • Anna beregner r = v – c * x.
  • Carl eller nogen kan derefter kontrollere, om t = g ^ r * y ^ c.

Så som du kan se, blev nul vidensbeviser gjort ikke-interaktive. Og det var det, der lagde grunden til Zk-Snarks.

Hvad er brugen af ​​Zk-Snarks?

Zk-Snarks står for “Zero-Knowledge Succinct Non-Interactive Argument of Knowledge”. Dens anvendelse i moderne blockchain-teknologi er enorm. For at forstå dets anvendelse er det vigtigt at vide, hvordan en smart kontrakt fungerer. En smart kontrakt er dybest set en spærring af midler, der aktiveres, når en bestemt funktion er udført.

For eksempel. Anna sætter 100 ETH i en smart kontrakt, som hun indgår med Carl. Carl er nødt til at udføre en bestemt opgave, hvoraf færdiggørelse, Carl får 100 ETH fra den smarte kontrakt.

Dette bliver kompliceret, når de opgaver, Carl skal gøre, er flerlags og fortrolige. Antag at du har indgået en smart kontrakt med Anna. Nu får du kun betalingen, hvis du foretager A, B og C. Hvad hvis du ikke vil afsløre detaljerne i A, B og C, fordi de er fortrolige over for din virksomhed, og du ikke vil have nogen konkurrenter at vide, hvad du skal gøre?

Hvad Zk-Snarks gør er, at det beviser, at disse skridt er taget i den smarte kontrakt uden at afsløre, hvad disse trin faktisk er. Det er meget nyttigt at beskytte dig og din virksomheds privatliv. Det kan bare afsløre en del af processen uden at vise hele selve processen og bevise, at du er ærlig over for dine påstande.

Hvordan fungerer ZkSnarks?

En Zk-Snark består af 3 algoritmer: G, P og V.

G er en nøglegenerator, der tager et input “lambda” (som skal holdes fortroligt og under ingen omstændigheder skal afsløres) og et program C. Det fortsætter derefter med at generere to offentligt tilgængelige nøgler, en bevisnøgle pk og en verifikation nøgle vk. Disse nøgler er både offentlige og tilgængelige for enhver af de berørte parter.

P er beviseren, der skal bruge 3 poster som input. Den bevisende nøgle pk, det tilfældige input x, som er offentligt tilgængeligt, og den private erklæring, som de vil bevise viden om uden at afsløre, hvad det faktisk er. Lad os kalde den private erklæring “w”. P-algoritmen genererer et bevis prf således, at: prf = P (pk, x, w).

Verifikationsalgoritmen V har grundlæggende returneret en boolsk variabel. En boolsk variabel har kun to valg, den kan være SAND eller den kan være FALSK. Så tager verifikatoren bekræftelsesnøglen, offentlig input x og proof prf som input såsom:

V (vk, x, prf)

..og returnerer SAND, hvis beviseren er korrekt og falsk ellers.

Nu, om parameteren lambda. Værdien af ​​”Lambda” skal holdes fortrolig, for så kan enhver bruge den til at generere falske beviser. Disse falske beviser vil returnere værdien SAND uanset om beviseren faktisk har kendskab til privat erklæring “w” eller ej.

Funktionalitet af ZkSnarks

For at vise funktionaliteten af ​​en Zk-Snark skal vi bruge den samme eksempelfunktion som Christian Lundkvist brugte i sin artikel til Consensys. Sådan ser eksempelprogrammet ud:

funktion C (x, w)

{

returnere (sha256 (w) == x);

}

Grundlæggende tager funktionen C 2 værdier som input, en offentlig hashværdi “x” og den hemmelige sætning, der skal verificeres “w”. Hvis SHA-256 hash-værdien på w er lig med “x”, returnerer funktionen SAND, ellers returnerer den FALSK. (SHA-256 er hash-funktionen, der bruges i bitcoin).

Lad os bringe vores gamle venner Anna og Carl tilbage til dette eksempel. Anna er beviser og Carl skeptikeren er verifikator.

Den første ting, som Carl, som verifikator, skal gøre er at generere bevis- og verificeringsnøglen ved hjælp af generatoren G. Til dette er Carl nødt til at generere den tilfældige værdi “lambda”. Som nævnt ovenfor skal han dog være super forsigtig med Lambda, fordi han ikke kan lade Anna vide dets værdi for at forhindre hende i at skabe falske beviser.

Alligevel er det sådan, det vil se ud:

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

Nu hvor de to nøgler er genereret, skal Anna bevise erklæringens gyldighed ved at generere beviset. Hun vil generere beviset ved hjælp af bevisingsalgoritmen P. Hun vil bevise, at hun kender den hemmelige værdi “w”, som hashes (ved parsing gennem SHA-256) for at give output x. Så den bevisende algoritme til bevisgenerering ser sådan ud:

prf = P (pk, x, w).

Nu hvor hun har genereret beviset “prf”, vil hun give værdien til Carl, som endelig vil køre verifikationsalgoritmen for Zk-Snarks:

Sådan ser det ud:

V (vk, x, prf).

Her er vk verificeringsnøglen, og x er den kendte hashværdi, og prf er beviset på, at han har fået fra Anna. Hvis denne algoritme returnerer SAND, betyder det, at Anna var ærlig, og at hun faktisk havde den hemmelige værdi “w”. Hvis det returnerer FALSK, betyder det, at Anna løj om at vide, hvad “w” er.

Brug af ZkSnarks i kryptokurrency

Hvad er zkSNARKs: Spooky Moon Math

Billede med tilladelse: Zcash

Zcash er en kryptokurrency, der blev lanceret af Zerocoin Electic Coin Company den 9. september 2016 og er det første eksempel på en kryptokurrency, der gifter sig med begreberne blockchain-teknologi med ZkSnarks. Det sigter mod at give helt sikre og afskærmede transaktionsrum for sine brugere uden at afsløre detaljer (såsom deres adresser) til nogen.

Ethereum ønsker at integrere ZkSnarks, når det går ind i sin Metropolis-fase, og den måde, de planlægger at gøre på, er ved at skabe en alliance med Zcash, der inkluderer gensidig udveksling af værdi. Den vigtigste udvikler af Zcash, Zooko Wilcox, holdt en præsentation i DevCon2 i Shanghai, der udforskede fremtiden for en sådan alliance. Ifølge ham er der 3 måder, hvorpå Z-Cash og i forlængelse, zk-snarks kunne integreres med ethereum.

Første metode kaldes Baby Zoe (Zoe = Zcash on ethereum). Det tilføjer en zk-snark pre-compiler på Ethereum og laver en mini Zcash smart kontrakt på Ethereum. Ideen er at se, om Ethereum-systemet kan oprette en ZAP-aktiveret DAPP oven på sin blockchain.

Den anden metode er at integrere beregningen af ​​Ethereum i Zcash blockchain. Som Wilcox udtrykker er, er eterums største aktiv dets beregningsevne, og folk vil se, om de kan integrere det i en zk-snark-baseret blockchain som Zcash. Kan folk oprette DAPPS på en blockchain lavet på nul vidensbeviser? Det er noget, de venter på at se.

Det tredje og mest spændende aspekt er Project Alchemy. Dette er dybest set forbindelsen og interoperationen af ​​de to blockchains, så man problemfrit kan bevæge sig mellem de to. Den måde, som Zcash planlægger at gøre det på, er ved at klone BTC-relæet. Det er et Ethereum-script, der blev skrevet for at oprette en Bitcoin-lysklient inde i Ethereum. Zcash-klonen bruger det samme koncept til at oprette en Zcash-lysklient inde i Ethereum.

Hvis dette fungerer, vil vi have det første decentrale valutasystem i verden, der letter oprettelsen af ​​DAPPS med nul viden indgroet i det.

Ser frem til

Der er ingen tvivl om, at introduktionen af ​​nul vidensbeviser vil være en enorm spilændring for Ethereum. I en stadig mere åben, forbundet og overvåget verden er enhver form for privatliv velkommen. Hvordan integrationen sker, skal stadig ses, men ved at følge de teoretiske begreber kan man ikke lade være med at blive ophidset.

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