Què és zkSNARKs: Spooky Moon Math. Amb l’etereu entrant a la fase Metropolis, introduirà diversos canvis que faran que sigui més amigable amb l’abstracció i la privadesa. Un d’aquests canvis és la introducció de “Zero-Knowledge Succinct Non-Interactive Argument of Knowledge”, conegut també com Zk-Snarks. Zk-Snarks parteix de la idea de zero proves de coneixement.

En aquest article, passarem per la idea de zero proves de coneixement i la seva aplicació a la tecnologia blockchain.

Què són els zkSNARKs: Spooky Moon Math

Les proves de Zero Knowledge es van produir a la dècada de 1980 gràcies al treball dels investigadors del MIT Shafi Goldwasser, Silvio Micali i Charles Rackoff. Estaven treballant en problemes relacionats amb sistemes de proves interactius, on un Prover intercanvia missatges amb un verificador (més informació sobre verificadors i verificadors més endavant) per convèncer-los que tenen coneixement d’una determinada prova sense declarar què és aquest coneixement..

Abans de fer el seu descobriment emblemàtic, la majoria dels sistemes de prova es basaven en les propietats de “solidesa” del sistema de prova. Sempre es va suposar que el “prover” podia ser el malintencionat en qualsevol escenari en què intentessin enganyar el verificador. Aquests 3 investigadors van capgirar la idea qüestionant la moral del verificador en lloc del prover. La pregunta que van fer era: com algú pot saber amb certesa que el verificador no filtrarà el coneixement i també es van plantejar preocupacions sobre la quantitat de coneixements sobre el prover que el verificador coneixerà durant el procés de verificació.

Hi ha diverses conseqüències del món real d’aquest enigma i una de les més famoses té a veure amb la protecció amb contrasenya. Suposem que voleu iniciar la sessió a un lloc web mitjançant una contrasenya. El protocol estàndard és que el client (vosaltres) escriurà la seva contrasenya i l’enviarà al servidor; el servidor haurà de compondre la contrasenya i l’equipararà al hash que hagi emmagatzemat al seu sistema. Si els valors coincideixen, podeu entrar al sistema.

Es veu bé l’enorme defecte d’aquest sistema? 

El servidor té la versió de text complet de la vostra contrasenya i la vostra privadesa queda a mercè del servidor (el verificador en aquest cas). Si el servidor es veu compromès o atacat, la vostra contrasenya serà de la part malintencionada i les conseqüències poden ser greus. Per contrarestar aquests escenaris, les proves de coneixement zero són absolutament essencials i s’obren camins en tots els sentits.

Hi ha dues parts quan es tracta d’una prova de coneixement zero (com s’ha dit anteriorment), el prover i el verificador. El coneixement zero indica que un prover pot demostrar al verificador que posseeix un coneixement determinat sense dir-li què és realment aquest coneixement

Propietats d’una prova de coneixement zero

Perquè un ZKP funcioni, ha de satisfer certs paràmetres:

  • Completesa: Si l’afirmació és certa, un verificador honest el pot convèncer un prover honest.
  • Solidesa: Si el proverbis és deshonest, no poden convèncer el verificador de la solidesa de l’afirmació mentint.
  • Coneixement zero: Si l’enunciat és cert, el verificador no tindrà ni idea de què és en realitat l’enunciat.

Ara, doncs, que tenim una idea bàsica del que és una prova de coneixement nul, anem a veure alguns exemples d’ella abans d’endinsar-nos en els zk-snarks i la seva aplicació al blockchain.

Cas número 1 de la cova d’Alibaba

En aquest exemple, el prover (P) diu al verificador (V) que coneix la contrasenya de la porta secreta al fons de la cova i que volen demostrar-la al verificador sense dir-los la contrasenya..

Per tant, això és el que sembla:

Què és zkSNARKs: Funny Moon Math

Imatge cortesia: Scott Twombly (canal de YouTube)

El Prover baixa per qualsevol dels camins A i B, suposem que inicialment decideixen passar pel camí A i arribar a la porta secreta del darrere. Quan ho fan, el verificador V entra a l’entrada, sense saber quin camí realment va prendre el prover i declara que volen veure el prover apareixent del camí B.

Al diagrama, com podeu veure, el prover apareix efectivament al camí B. Però, què passaria si fos una sort ximple? Què passaria si el prover no sabia el codi d’accés i agafava el camí B, quedava atrapat a la porta i, per pura fortuna, el verificador li va dir que aparegués del camí B, el que originalment tenien de totes maneres?

Per tant, per provar la validesa, l’experiment es fa diverses vegades. Si el prover pot aparèixer al camí correcte cada vegada, demostra al verificador que el prover coneix la contrasenya tot i que el verificador no sap quina és la contrasenya en realitat.

Vegem com es compleixen les tres propietats del coneixement zero en aquest exemple:

  • Completesa: Com que l’afirmació era certa, el prover honest va convèncer el verificador honest.
  • Solidesa: Si el prover era deshonest, no haurien pogut enganyar el verificador perquè la prova es va fer diverses vegades. Finalment, la sort del prover es va haver d’esgotar.
  • Coneixement zero: El verificador mai no va saber quina era la contrasenya, però estava convençut que el prover en tenia la propietat.

Cas núm. 2 Trobant Waldo

Recordeu haver trobat Waldo?

Per descomptat, sí, ho heu d’haver vist en algun lloc, ja sigui a la vida real o en línia. Per a aquells que no ho saben, Finding Waldo és un joc on has de trobar “Waldo” entre un mar de gent. És un senzill joc de “Spot the guy”. Només per fer-vos una idea bàsica, aquest és el aspecte del joc:

Què és zkSNARKs: Funny Moon Math

Imatge cortesia: Youtube (IntoConnection)

I la idea és trobar Waldo que sigui així:

Què és zkSNARKs: Funny Moon Math

Imatge cortesia: Pinterest

Sembla bastant senzill oi? Troba a aquest noi entre el mar d’altres persones que veus al joc. D’acord, doncs, on entra el concepte Zero Knowledge aquí? Imagineu-vos que hi ha dues persones, Anna i Carl. L’Anna li diu a Carl que sap on és Wally però que no li vol mostrar on és exactament. Llavors, com li pot demostrar que ha trobat a Wally sense mostrar la seva posició exacta?

Hi va haver un interessant document de Naor, Naor i Reingold que mostra dues solucions Zero Knowledge a aquest problema. Hi ha una “Solució de tecnologia mitjana” i una “solució de tecnologia baixa”. Anem a parlar d’ambdós.

Solució de mitja tecnologia

El motiu pel qual aquesta solució és “de mitjana tecnologia” es deu al fet que el nostre verificador i verificador necessiten accedir a una fotocopiadora perquè això funcioni. Així és com funciona. Primer, l’Anna i el Carl farien una fotocòpia del joc original. Aleshores l’Anna, tot assegurant-se que Carl no ho mira, traurà Waldo de la fotocòpia i després destruirà les restes. Després d’això, pot mostrar el tall de Waldo a Carl i demostrar que sabia on era Waldo, al cap i a la fi, sense precisar la seva ubicació exacta..

Hi ha problemes amb aquesta solució. Tot i que compleix els criteris de “Coneixement zero”, no compleix els criteris de “solidesa”. Hi ha moltes maneres en què Anna podria haver enganyat aquí. Podria haver tingut un Waldo a l’atzar tallat amb ella des del principi i l’hauria pogut mostrar a Carl sense saber on era Waldo. Quina és la solució a això??

La solució a això és fer proves meticuloses i acurades. En primer lloc, l’Anna i el Carl s’emportaran una fotocòpia del joc. Llavors Carl dibuixarà un patró distintiu a la part posterior de la fotocòpia. Després d’això, Carl escortarà l’Anna a una habitació on estarà aïllada i sense possibilitat d’enganyar. Si Anna surt amb un retall de Waldo, llavors Carl pot estar convençut que sabia on era Waldo sense revelar la solució. Poden repetir aquest experiment diverses vegades i Carl pot comparar els diferents retalls de Waldo per estar encara més segurs de la validesa de la reclamació d’Anna..

Solució de baixa tecnologia

Aquesta solució requeria un equipament bàsic. La idea és senzilla. Obteniu un cartró enorme, que tingui el doble de mida que el joc i retalleu-hi un petit rectangle. Ara, quan Carl no mira, l’Anna pot moure el cartró del joc de manera que el rectangle quedi directament a sobre de Waldo. Ara pot dir a Carl que faci una ullada i això és el que veurà:

Què és zkSNARKs: Funny Moon Math

Cortesia de la imatge: criptografia aplicada per a nens de Naor And Reingold

Així, tot i que Carl pot tenir una idea molt bàsica d’on pot ser Waldo en realitat, no sap la ubicació exacta. Per tant, Anna li ha demostrat a Carl que sap on és Waldo sense precisar la seva ubicació exacta.

Cas # 3: Sudoku

Una altra gran aplicació del coneixement zero es troba al Sudoku. Per a aquells que no ho saben, el Sudoku és un trencaclosques japonès on s’obté una taula de 9X9 que té un aspecte semblant:

Què és zkSNARKs: Spooky Moon Math

Imatge cortesia: Bloc de complexitat computacional.

La idea és omplir cada fila, cada columna i cada bloc 3X3 amb números de l’1 al 9 i cap número s’hauria de repetir. Per tant, la solució per al trencaclosques anterior és la següent:

Què és zkSNARKs: Spooky Moon Math

Imatge cortesia: Bloc de complexitat computacional.

Com podeu veure, cada fila, columna i bloc 3X3 són únics i no s’ha repetit cap número. Tornem als nostres vells amics Anna i Carl. L’Anna ha trobat la solució al trencaclosques del Sudoku i Carl, escèptic que ell no la creu i vol que l’Anna demostri que realment coneix la solució. L’Anna vol demostrar la seva honestedat, però, al mateix temps, no vol que Carl sàpiga la solució exacta del trencaclosques. Com ho farà? Anna utilitzarà Zero Knowledge per demostrar la validesa de la seva reclamació.

En primer lloc, Carl executarà la solució Sudoku mitjançant un programa d’ordinador que s’ha verificat, per ser honest, i el programa executarà els números mitjançant un xifratge de substitució triat aleatòriament. Per exemple, per a aquest problema en concret, el xifratge que ha triat el programa és el següent:

Què és zkSNARKs: Spooky Moon Math

El programa i el xifratge elegits són tals que cadascun dígit té la mateixa possibilitat de ser transmutat en la seva substitució que qualsevol altre nombre. Bàsicament, 1 té tantes possibilitats de transmutació com 3 i 4 tenen tantes possibilitats de ser transmutat com 9 i així successivament. Per tant, l’ús d’aquest xifratge ens proporciona la següent solució al trencaclosques anterior:

Què és zkSNARKs: Spooky Moon Math

Imatge cortesia: Bloc de complexitat computacional.

L’Anna aconsegueix la solució transmutada ara, tingueu en compte que Carl encara no sap quina era la solució original i tampoc no posseeix la solució transmutada. Per tant, el que fa Anna ara és que amaga tots els números del trencaclosques mitjançant un “mecanisme de caixa de bloqueig”, bàsicament Carl no podrà veure cap dels números i veurà una quadrícula buida de 9X9 davant seu.

Carl ara té 28 opcions al davant:

  • Revela una fila.
  • Revela una columna.
  • Revela una caixa 3X3.
  • Revela la versió transmutada del trencaclosques original.

Suposem que Carl vol saber com és la tercera fila:

Què és zkSNARKs: Spooky Moon Math

Imatge cortesia: Bloc de complexitat computacional.

Això és el que veurà. Carl veurà que tots els números de la fila són únics i, atès que tots els números possibles de la solució original tenien la mateixa probabilitat de ser transmutats mitjançant el xifratge, Carl no tindrà ni idea de quina és la solució original

Ara suposem que Carl decideix prendre l’última opció i vol veure com és el trencaclosques original quan es transmuta:

Què és zkSNARKs: Spooky Moon Math

Imatge cortesia: Bloc de complexitat computacional.

Una vegada més, atès que el xifratge es va triar a l’atzar i tots els números tenen la mateixa probabilitat de ser transmutats, Carl no tindrà ni idea de quina és la solució original. Carl ara pot passar per les 28 opcions que fa i, finalment, quedarà satisfet amb la validesa de la declaració d’Anna.

Per què?

Perquè, si l’Anna feia trampes, no hi ha manera que hagi pogut trobar un xifratge per donar solucions úniques a les 28 opcions de Carl. Si Carl acaba d’escollir una opció, les possibilitats de l’Anna de sortir amb trampes són el 27/28. PER if, si Carl va escollir fer proves aleatòries diverses vegades, suposem que el vol provar 150 vegades, l’elecció d’Anna d’escapar amb trampes baixa fins a (27/28) ^ 150, que és < 0,5%.

Per tant, comprovem les propietats de coneixement zero d’aquest escenari:

  • Completesa: El programa de xifratge que s’utilitza s’ha verificat, per ser sincer, i tant l’Anna com el Carl segueixen el protocol.
  • Solidesa: Si Carl fa proves a l’atzar 150 vegades, les possibilitats de l’Anna de fugir d’enganys són < 0,5%.
  • Coneixement zero: L’Anna mai no va haver de revelar-li a Carl quina era la solució original.

Prova contra prova de declaracions

Ara que coneixem els aspectes teòrics de les proves de coneixement zero i la seva aplicació en diversos exemples, quina és la seva aplicació pràctica a blockchain? Per què tothom s’enamora d’aplicar Zcash ZKP (zero proves de coneixement) i per què tothom està entusiasmat amb que ethereum faci el mateix? Abans d’explicar-ho, és important conèixer un concepte teòric més important.

Què demostrem exactament mitjançant l’ús de ZKP? En un ampli espectre, hi ha dues afirmacions que podeu demostrar utilitzant ZKP. Proves conegudes com a fets i proves de coneixement.

  • Proves: Aquestes són les veritats intrínseces sobre l’univers que és possible que vulgueu demostrar mitjançant ZKP. Per exemple. “El número X pertany al grup Y”.
  • Prova del coneixement: També és possible que vulgueu demostrar que teniu coneixement d’una idea concreta sense revelar què és aquest coneixement en particular. Com es pot veure en els exemples de Sudoku, Waldo i la cova d’Alibaba esmentats anteriorment.

És important assenyalar la diferència entre aquests dos perquè són completament diferents. Al món de les criptomonedes, principalment ens centrem en la “prova del coneixement”. Un dels avenços més importants a l’hora de demostrar la prova del coneixement mitjançant la prova del coneixement zero es va produir quan Claus-Peter Schnorr, als anys vuitanta, va arribar al protocol d’identificació de Schnorr. Aquest protocol estableix els fonaments de la criptografia moderna de signatura de claus i mostra com es pot integrar perfectament el coneixement zero en les pràctiques criptogràfiques modernes..

El protocol d’identificació Schnorr

Per entendre de què tracta la identificació Schnorr, recuperem els nostres antics amics Anna i Carl. L’Anna ha anunciat al món que té una clau pública i que pot acceptar i rebre informació a través d’ella. Carl, sempre l’escèptic, pensa que l’Anna menteix. L’única manera que Anna pot demostrar la seva honestedat és mostrant la seva clau privada a Carl, però no vol revelar la seva clau privada.

Llavors, com revelarà Anna el seu coneixement de la seva clau privada sense revelar-ho? Aquí és on entra el protocol Schnorr. Abans de començar a entendre com funciona el protocol, hi ha alguns paràmetres que cal conèixer:

  • p = Qualsevol nombre primer.
  • q = factor de p-1.
  • “A” tal que a ^ q = 1 mod p.

Ara, tingueu en compte que, al protocol Schnorr, aquestes 3 variables són globals. És a dir, qualsevol persona té coneixement de quines són aquestes 3 variables per a un escenari concret.

Ara arribem a les dues claus, la clau privada secreta que anomenarem “s” i la clau pública que anomenarem “v”.

s pot tenir qualsevol valor sempre que 0

v = a ^ -s mod q.

La clau pública “v” serà el coneixement global i públic juntament amb p, q i a. Tot i això, NOMÉS l’Anna tindrà el coneixement de què és “s”, perquè aquesta és la seva clau privada.

Per tant, ara que hem definit la variable, vegem com pot funcionar l’intercanvi d’informació i la validesa de la declaració d’Anna SENSE que ella reveli quina és la clau privada.

Anna signa i envia un missatge xifrat

Suposem que l’Anna vol enviar un missatge “M” a Carl codificat amb la seva clau privada. Com ho farà si seguís el protocol de Schnorr?

En primer lloc, triarà un número aleatori “r” tal que 0

Ara calcularà un valor x tal que:

X = a ^ r mod p.

Ara que ha calculat el valor de X, ho concatenarà amb el missatge original. Què és la concatenació? Suposem que tenim dues cadenes “hola” i “món”. Si concatenem aquests dos, obtindrem “hola world”. La concatenació significa bàsicament afegir dues cadenes i convertir-la en una.

Per tant, concatenarà M i X per obtenir M || X. i emmagatzemarà el hash d’aquest valor a e.

Bàsicament, e = H (M || X) on H () és la funció hash.

Finalment, quan es faci tot això, farà un càlcul final. Va a obtenir un valor “y” tal que:

y = (r + s * e) mod q

Ara que han acabat tots els càlculs, enviarà a Carl les següents informacions:

  • El missatge “M”.
  • Les signatures e i y.

Carl rep el missatge i verifica la prova de coneixement de l’Anna

Ara Carl ha rebut la informació següent d’Anna: El missatge (M) i les signatures (e i).

Juntament amb això, té les següents informacions que tothom coneix públicament:

  • La clau pública “Anna” de l’Anna.
  • El número primer que Anna va escollir per “p”.
  • “Q” que és el factor de “p-1” que Anna va escollir.
  • I la “a” tal que a ^ q = 1 mod p, això també va triar Anna.

Ara, Carl haurà de calcular X ’de manera que:

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

Ara fem una substitució senzilla:

Sabem que v = a ^ -s, substituïm això a l’equació anterior i obtenim:

  • X ’= a ^ y * a ^ -se = a ^ (y-s * e).
  • Ara també sabem que y = r + s * e.
  • El que significa: r = y-s * e.

Substituïm aquest valor a l’equació anterior:

  • Obtenim: X ’= a ^ r.
  • Com ja hem vist anteriorment: X = a ^ r.
  • Per tant, tècnicament: X = X ’.

Però Carl no coneix el valor de “X” perquè mai no va rebre aquest valor. Tot el que va rebre és el següent: El missatge M, les signatures (e i) i l’amfitrió de variables públiques (clau pública “v”, p, q i a).

Mai no va rebre la “X”, però sap que si l’Anna diu la veritat, llavors X ‘ha de ser igual a X. Però sap el valor de e i el missatge M.

Així, doncs, resoldrà e fent el següent:

e = H (M || X ’).

Tingueu en compte que anteriorment vam resoldre per e fent: H (M || X).

Per tant, segons aquesta lògica, si els dos valors de e arriben a ser iguals, això vol dir X = X ’.

Això també significa que l’Anna va tenir la clau privada durant tot el temps i que no mentia.

Per tant, executem tot aquest escenari a través de les tres propietats de zero proves de coneixement:

  • Completesa: Carl estava convençut de l’honestedat de l’Anna perquè al final X = X ’.
  • Solidesa: El pla era sòlid perquè l’única manera que Anna podia demostrar la seva honestedat era mitjançant la seva clau privada. No hauria pogut mentir sobre tenir la clau privada.
  • Coneixement zero: Carl mai no va saber quina era la clau privada d’Anna.

El protocol de Schnorr proporciona una aplicació criptogràfica del món molt real de zero proves de coneixement.

Com fer que les proves de coneixement zero no siguin interactives?

Amb els sistemes de verificació de coneixement zero anteriors, hi havia un gran problema. Perquè funcionés, el verificador i el verificador havien d’estar en línia alhora. En altres paraules, el procés va ser “interactiu”. Això va fer que tot el sistema fos ineficient i gairebé impossible ampliar-se. Els verificadors no podrien estar en línia al mateix temps que els provers tot el temps? Calia que hi hagués un sistema per fer-ho més eficient.

El 1986, Fiat i Shamir van inventar la heurística Fiat-Shamir i van canviar amb èxit la prova interactiva de coneixement zero a prova de coneixement zero no interactiva. Això va ajudar a que tot el protocol funcionés sense cap interacció. El procediment darrere és molt senzill.

Per tant, per posar-ne un exemple, és així com funcionaven abans proves de coneixement zero abans que Fiat i Shamir.

Demostrem-ho mitjançant logaritmes discrets senzills.

  • L’Anna vol demostrar a Carl que coneix un valor x tal que y = g ^ x a una base g.
  • L’Anna selecciona un valor aleatori v d’un conjunt de valors Z i calcula t = g ^ v i envia t a Carl.
  • Carl tria un valor aleatori c del conjunt Z i l’envia a l’Anna.
  • L’Anna calcula r = v-c * x i retorna r a Carl.
  • Carl comprova si t = g ^ r * y ^ c manté o no (ja que r = vc * x, y = g ^ x i per simple substitució, g ^ (vc * x) * g ^ c * x = g ^ v = t).
  • Carl no coneix el valor de x, simplement comprovant si t = g ^ r * y ^ c pot verificar que l’Anna sí que sap el valor de x.

Ara bé, si bé la interacció anterior és zero coneixement, el problema és que Anna i Carl necessiten estar en línia i intercanviar valors perquè funcioni.

Com pot l’Anna demostrar a Carl que té coneixement d’alguna cosa sense que Carl estigui en línia? Ho pot fer mitjançant una simple funció de hash criptogràfic, tal com teoritzaven Fiat i Shamir.

Vegem com funcionaria l’exemple anterior d’una manera no interactiva:

  • L’Anna vol demostrar a Carl que coneix un valor x tal que y = g ^ x a una base g.
  • L’Anna tria un valor aleatori v d’un conjunt de valors Z i calcula t = g ^ v.
  • Anna calcula c = H (g, y, t) on H () és una funció hash.
  • Anna calcula r = v – c * x.
  • Carl o qualsevol persona pot comprovar si t = g ^ r * y ^ c.

Per tant, com podeu veure, les proves de coneixement zero es van fer sense interacció. I això va ser el que va establir les bases de Zk-Snarks.

Per a què serveix Zk-Snarks?

Zk-Snarks significa “Zero-Knowledge Succinct Non-Interactive Argument of Knowledge”. El seu ús en la moderna tecnologia blockchain és immens. Per entendre la seva aplicació, és important saber com funciona un contracte intel·ligent. Un contracte intel·ligent és bàsicament un dipòsit de fons que s’activa quan es fa una funció concreta.

Per exemple. L’Anna posa 100 ETH en un contracte intel·ligent que aconsegueix amb Carl. Carl ha de fer una tasca particular, en acabar-la, Carl obtindrà els 100 ETH del contracte intel·ligent.

Això es complica quan les tasques que ha de fer Carl són de múltiples capes i confidencials. Suposem que heu subscrit un contracte intel·ligent amb Anna. Ara, només obtindreu el pagament si feu A, B i C. Què passa si no voleu revelar els detalls d’A, B i C perquè són confidencials per a la vostra empresa i no voleu competidors per saber què has de fer?

El que fa Zk-Snarks és que demostra que aquests passos s’han pres en el contracte intel·ligent sense revelar quins són aquests passos. És molt útil per protegir la privadesa de la vostra empresa i de vosaltres. Només pot revelar part del procés sense mostrar tot el procés en si i demostrar que esteu sent honest sobre les vostres reclamacions.

Com funcionen ZkSnarks?

Un Zk-Snark consta de 3 algorismes: G, P i V.

G és un generador de claus que pren una entrada “lambda” (que s’ha de mantenir confidencial i que no s’hauria de revelar en cap cas) i un programa C. A continuació, es genera dos claus disponibles públicament, una clau de prova pk i una verificació clau vk. Aquestes claus són públiques i estan disponibles per a qualsevol de les parts interessades.

P és el prover que utilitzarà 3 elements com a entrada. La clau de prova pk, l’entrada aleatòria x, que està disponible públicament, i la declaració privada que volen demostrar el coneixement sense revelar el que és realment. Anomenem aquesta declaració privada “w”. L’algorisme P genera una prova prf tal que: prf = P (pk, x, w).

L’algorisme de verificació V ha retornat bàsicament una variable booleana. Una variable booleana només té dues opcions, pot ser TRUE o pot ser FALS. Per tant, el verificador inclou la clau de verificació, l’entrada pública x i la prova prf com a entrada, com ara:

V (vk, x, prf)

..i retorna TRUE si el prover és correcte i fals en cas contrari.

Ara, sobre el paràmetre lambda. El valor de la “Lambda” s’ha de mantenir confidencial perquè qualsevol persona el pot utilitzar per generar proves falses. Aquestes proves falses retornaran un valor de TRUE independentment de si el prover té coneixement de la declaració privada “w” o no.

Funcionalitat de ZkSnarks

Per mostrar la funcionalitat d’un Zk-Snark utilitzarem el mateix exemple de funció que Christian Lundkvist va utilitzar en el seu article per a Consensys. Així és el programa d’exemple:

funció C (x, w)

{

retorn (sha256 (w) == x);

}

Bàsicament, la funció C inclou 2 valors com a entrada, un valor de hash públic “x” i la declaració secreta que cal verificar “w”. Si el valor de hash SHA-256 de w és igual a “x”, la funció retorna TRUE en cas contrari, torna FALS. (SHA-256 és la funció de hash que s’utilitza a Bitcoin).

Tornem a les nostres velles amigues Anna i Carl per aquest exemple. L’Anna és el refranyer i l’escèptic Carl és el verificador.

El primer que ha de fer Carl, com a verificador, és generar la clau de comprovació i verificació mitjançant el generador G. Per a això, Carl ha de generar el valor aleatori “lambda”. Com s’ha dit anteriorment, però, ha de tenir molta cura amb Lambda perquè no pot fer saber a Anna el seu valor per evitar que creï proves falses..

De tota manera, això és el que semblarà:

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

Ara que es generen les dues claus, l’Anna ha de demostrar la validesa de la declaració generant la prova. Va a generar la prova utilitzant l’algorisme de demostració P. Va a demostrar que coneix el valor secret “w” que hash (en analitzar mitjançant SHA-256) per donar la sortida x. Per tant, l’algorisme de prova per a la generació de proves té aquest aspecte:

prf = P (pk, x, w).

Ara que ha generat la prova “prf”, donarà el valor a Carl, que finalment executarà l’algorisme de verificació de Zk-Snarks:

Això és el que semblarà:

V (vk, x, prf).

Aquí, vk és la clau de verificació i x és el valor de hash conegut i prf és la prova que ha obtingut de l’Anna. Si aquest algorisme torna a TRUE, significa que Anna va ser honesta i que de fet tenia el valor secret “w”. Si torna FALS, això vol dir que Anna mentia sobre saber què és “w”.

L’ús de ZkSnarks en criptomoneda

Què és zkSNARKs: Spooky Moon Math

Cortesia de la imatge: Zcash

Zcash és una criptomoneda llançada per Zerocoin Electic Coin Company el 9 de setembre de 2016 i és el primer exemple d’una criptomoneda que combina els conceptes de tecnologia blockchain amb ZkSnarks. El seu objectiu és proporcionar espais de transacció totalment segurs i protegits als seus usuaris sense revelar detalls (com ara les seves adreces) a ningú.

Ethereum vol integrar ZkSnarks quan entra en la seva fase Metropolis i la manera en què planeja fer-ho és creant una aliança amb Zcash que inclourà l’intercanvi de valor mutu. El principal desenvolupador de Zcash, Zooko Wilcox, va fer una presentació a DevCon2 a Xangai que va explorar el futur d’aquesta aliança. Segons ell, hi ha 3 maneres en què Z-Cash i, per extensió, zk-snarks es podrien integrar amb ethereum.

El primer mètode es diu Baby Zoe (Zoe = Zcash on ethereum). Afegeix un precompilador zk-snark a Ethereum i fa un mini contracte intel·ligent Zcash a Ethereum. La idea és veure si el sistema Ethereum pot crear un DAPP habilitat amb zk-snark a la part superior de la seva cadena de blocs.

El segon mètode és integrar la computabilitat Ethereum dins de la cadena de blocs Zcash. Tal com diu Wilcox, el principal actiu de l’etereu és la seva computabilitat i la gent vol veure si pot integrar-lo en una cadena de blocs basada en zk-snark com Zcash. La gent pot crear DAPPS en una cadena de blocs feta amb proves de coneixement zero? Això és una cosa que esperen veure.

El tercer aspecte i el més emocionant és Project Alchemy. Aquesta és bàsicament la connexió i la interoperació de les dues cadenes de blocs de manera que es pugui moure sense problemes entre les dues. La manera com Zcash planeja fer-ho és mitjançant la clonació del relé BTC. És un guió Ethereum que es va escriure per crear un client de llum Bitcoin dins d’Ethereum. El clon Zcash utilitzarà el mateix concepte per crear un client light Zcash dins d’Ethereum.

Si això funciona, tindrem el primer sistema de divises descentralitzat del món que facilita la creació de DAPPS amb zero coneixements arrelats en ell..

Mirant endavant

No hi ha dubte que la introducció de proves de coneixement zero serà un gran canvi de joc per a Ethereum. En un món cada vegada més obert, connectat i supervisat, qualsevol tipus de privadesa és benvinguda. Què cal veure com passa la integració, però, seguint els conceptes teòrics en si, no es pot evitar emocionar-se.

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