Acas─â
Articole
├Ämbun─ât─â╚Ťirea transparen╚Ťei cripto cu dovezi Zero-Knowledge

├Ämbun─ât─â╚Ťirea transparen╚Ťei cripto cu dovezi Zero-Knowledge

Intermediar
Publicat Feb 10, 2023Actualizat Jan 5, 2024
10m

TL;DR

Dovezile Zero-Knowledge permit unei p─âr╚Ťi (un verificator) s─â determine validitatea unei instruc╚Ťiuni date de o alt─â parte (doveditorul) f─âr─â a cunoa╚Öte con╚Ťinutul instruc╚Ťiunii. De exemplu, Binance poate dori s─â demonstreze c─â de╚Ťine ├«n totalitate fondurile utilizatorilor s─âi ├«n rezerve f─âr─â a dezv─âlui soldurile individuale ale utilizatorilor.

O ÔÇ×Dovad─â a rezervelorÔÇŁ ar putea fi construit─â cu un arbore Merkle care protejeaz─â ├«mpotriva falsific─ârii datelor sale interne, ├«n acest caz, soldurile totale nete ale clien╚Ťilor fiind pasive ale bursei fa╚Ť─â de utilizatorii s─âi. Acest lucru poate fi apoi combinat cu un zk-SNARK (un protocol de dovezi Zero-Knowledge), care asigur─â c─â utilizatorii pot verifica faptul c─â soldul lor face parte din soldul total net al activelor utilizatorilor f─âr─â a cunoa╚Öte soldurile individuale.

Introducere

├Än lumina evenimentelor de pe pia╚Ť─â, securitatea activelor cripto ├«n custodie a devenit un subiect foarte important. Utilizatorii blockchain apreciaz─â foarte mult transparen╚Ťa ╚Öi deschiderea, dar ╚Öi confiden╚Ťialitatea ╚Öi secretizarea. Acest lucru creeaz─â o dilem─â atunci c├ónd vine vorba de dovedirea rezervelor fondurilor de╚Ťinute de custozi. Adesea, exist─â un compromis ├«ntre transparen╚Ť─â, ├«ncredere ╚Öi confiden╚Ťialitatea datelor.

Cu toate acestea, lucrurile nu trebuie s─â stea astfel. Prin combinarea protocoalelor de dovezi Zero-Knowledge, cum ar fi zk-SNARKs cu arbori Merkle, putem g─âsi o solu╚Ťie eficient─â pentru toate p─âr╚Ťile.

Ce sunt dovezile Zero-Knowledge?

Dovezile Zero-Knowledge permit unei p─âr╚Ťi (un verificator) s─â determine validitatea unei instruc╚Ťiuni date de o alt─â parte (doveditorul) f─âr─â a cunoa╚Öte con╚Ťinutul instruc╚Ťiunii. S─â lu─âm un exemplu simplu.

Ave╚Ťi un seif blocat al c─ârui cod ├«l cunoa╚Öte╚Ťi doar dvs. Seiful, de dragul exemplului, nu poate fi deblocat, for╚Ťat sau deschis ├«n alt mod dec├ót prin cunoa╚Öterea combina╚Ťiei. Acest lucru este confirmat, verificat ╚Öi cunoscut ╚Öi de prietenul dvs. care particip─â la experiment.

├Äi spune╚Ťi prietenului c─â ╚Öti╚Ťi combina╚Ťia, dar nu dori╚Ťi s─â o dezv─âlui╚Ťi sau s─â deschide╚Ťi seiful ├«n prezen╚Ťa sa. ├Än partea de sus a seifului exist─â un orificiu prin care prietenul dvs. poate introduce un bilet. Pentru ca aceast─â situa╚Ťie s─â reprezinte o dovad─â Zero-Knowledge, prietenul dvs. nu ar trebui s─â aib─â informa╚Ťii suplimentare despre proces, ├«n afar─â de instruc╚Ťiunea dat─â.

├Äi pute╚Ťi dovedi prietenului dvs. c─â ╚Öti╚Ťi combina╚Ťia deschiz├ónd seiful, spun├óndu-i ce este scris pe bilet ╚Öi ├«nchiz├óndu-l din nou. ├Än niciun moment nu a╚Ťi dezv─âluit, ├«ns─â, combina╚Ťia.

Pentru un exemplu mai avansat, consulta╚Ťi articolul Ce sunt dovezile Zero-Knowledge ╚Öi cum afecteaz─â blockchainul?

De ce folosim dovezile Zero-Knowledge?

Dovezile Zero-Knowledge sunt potrivite pentru a dovedi ceva f─âr─â a dezv─âlui informa╚Ťii sau detalii sensibile. Ar putea fi utile dac─â nu dori╚Ťi s─â dezv─âlui╚Ťi informa╚Ťiile dvs. financiare sau personale care ar putea fi utilizate ├«n mod necorespunz─âtor.

├Än cripto, pute╚Ťi dovedi c─â de╚Ťine╚Ťi o cheie privat─â f─âr─â a o dezv─âlui sau a semna digital ceva. O burs─â de criptomonede poate dori, de asemenea, s─â dovedeasc─â starea rezervelor sale f─âr─â a dezv─âlui informa╚Ťii confiden╚Ťiale despre utilizatorii s─âi, inclusiv soldurile conturilor lor individuale.┬á

Pentru aceste exemple (╚Öi multe altele), dovezile Zero-Knowledge ar folosi algoritmi care preiau o intrare de date ╚Öi returneaz─â ÔÇ×adev─âratÔÇŁ sau ÔÇ×falsÔÇŁ ca rezultat.┬á

Definirea dovezilor Zero-Knowledge în termeni tehnici

Dovezile Zero-Knowledge, în termeni tehnici, urmează o structură specifică cu anumite criterii. Am acoperit deja rolurile doveditorului și verificatorului, dar mai există încă trei criterii pe care ar trebui să le acopere o dovadă Zero-Knowledge:

  1. Completitudine. Dac─â afirma╚Ťia este adev─ârat─â, un verificator va fi convins de dovada furnizat─â, f─âr─â a fi necesare alte informa╚Ťii sau verific─âri.

  2. Soliditate. Dac─â instruc╚Ťiunea este fals─â, un verificator nu va fi convins de adev─ârul unei instruc╚Ťiuni prin dovada furnizat─â.

  3. Zero-knowledge. Dac─â instruc╚Ťiunea este adev─ârat─â, verificatorul nu afl─â alte informa╚Ťii dec├ót c─â instruc╚Ťiunea este adev─ârat─â.

Ce este zk-SNARK?

Un zk-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) este un protocol de demonstrare care urmeaz─â principiile zero-knowledge subliniate anterior. Cu un zk-SNARK, pute╚Ťi dovedi c─â cunoa╚Öte╚Ťi valoarea hashed ini╚Ťial─â (despre care vom discuta mai jos) f─âr─â a dezv─âlui care este aceasta. De asemenea, pute╚Ťi dovedi validitatea unei tranzac╚Ťii f─âr─â a dezv─âlui informa╚Ťii despre sumele, valorile sau adresele specifice implicate.

zk-SNARKs sunt utilizate ╚Öi discutate frecvent ├«n lumea blockchain ╚Öi a criptomonedelor. Dar s-ar putea s─â v─â ├«ntreba╚Ťi de ce s-ar deranja cineva s─â foloseasc─â un zk-SNARK c├ónd ar putea folosi o metod─â simpl─â de pereche de chei publice ╚Öi private pentru a securiza informa╚Ťiile. ├Än acest caz, nu am putea implementa demonstra╚Ťia matematic─â pentru a ne asigura c─â nu sunt incluse solduri negative ╚Öi suma arborelui Merkle.┬á

├Än cazul rezervelor unei burse, dorim s─â dovedim c─â de╚Ťinem soldurile clien╚Ťilor ├«ntr-un raport de 1:1 f─âr─â ca identificatorii ╚Öi soldurile fiec─ârui cont s─â fie f─âcute publice. ├Än plus, tehnologia zk-SNARK face falsificarea datelor ╚Öi mai pu╚Ťin probabil─â.

Ce este un arbore Merkle?

Prezentarea fondurilor ├«nsumate ale conturilor utilizatorilor Binance necesit─â lucrul cu un set mare de date. O modalitate de a prezenta criptografic aceast─â cantitate mare de date este prin utilizarea unui arbore Merkle. O cantitate mare de informa╚Ťii poate fi stocat─â eficient ├«n acesta, iar natura sa criptografic─â face ca integritatea sa s─â fie u╚Öor de verificat.

Func╚Ťii hash

Pentru a codifica succint o intrare, un arbore Merkle depinde de utilizarea func╚Ťiilor hash. Hashingul se refer─â la procesul de generare a unei ie╚Öiri de dimensiune fix─â dintr-o intrare de dimensiune variabil─â. Cu alte cuvinte, atunci c├ónd o intrare de orice lungime este supus─â hashingului printr-un algoritm, va produce o ie╚Öire criptat─â cu lungime fix─â.

At├ót timp c├ót intrarea r─âm├óne aceea╚Öi, ie╚Öirea va fi identic─â. Aceasta ├«nseamn─â c─â putem prelua cantit─â╚Ťi uria╚Öe de date tranzac╚Ťionale ╚Öi le putem transforma ├«ntr-o ie╚Öire care poate fi gestionat─â. Ie╚Öirea va fi radical diferit─â dac─â orice informa╚Ťie este modificat─â ├«n intrare.

De exemplu, am putea lua con╚Ťinutul a 100 de c─âr╚Ťi ╚Öi l-am introduce ├«n func╚Ťia hash SHA-256. Acest lucru ar avea un rezultat de genul:

801a9be154c78caa032a37b4a4f0747f1e1addb397b64fa8581d749d704c12ea

Dac─â am schimba apoi un singur caracter al intr─ârii (cele 100 de c─âr╚Ťi), hash-ul ar fi complet diferit, astfel:

abc5d230121d93a93a25bf7cf54ab71e8617114ccb57385a87ff12872bfda410

Aceasta este o proprietate important─â a func╚Ťiilor hash, deoarece permite verificarea u╚Öoar─â a acurate╚Ťei datelor. Dac─â cineva repet─â procesul de hashing al acelora╚Öi 100 de c─âr╚Ťi folosind algoritmul SHA-256, va ob╚Ťine exact acela╚Öi hash ca rezultatul. Dac─â rezultatul este diferit, putem afirma cu certitudine c─â intrarea a fost modificat─â. Acest lucru ├«nseamn─â c─â nu este necesar s─â verifica╚Ťi individual sau manual diferen╚Ťele dintre intr─âri, ceea ce poate necesita mult─â munc─â.

Arborii Merkle în lumea criptomonedelor

La stocarea datelor tranzac╚Ťiilor pe un blockchain, fiecare nou─â tranzac╚Ťie este transmis─â printr-o func╚Ťie hash, care genereaz─â valori hash unice. Imagina╚Ťi-v─â c─â avem opt tranzac╚Ťii (de la A la H) pe care le supunem individual hashingului pentru a ob╚Ťine ie╚Öirile hashed. Acestea sunt ceea ce se numesc nodurile frunzelor Merkle. ├Än imaginea de mai jos, pute╚Ťi vedea valoarea hash unic─â a fiec─ârei litere: hA pentru A, hB pentru B, hC pentru C etc.

Apoi putem lua perechi de ie╚Öiri hashed, le putem combina ╚Öi ob╚Ťine o nou─â ie╚Öire hashed. Hash-urile hA ╚Öi hB supuse hashingului ├«mpreun─â, de exemplu, ne-ar oferi o nou─â ie╚Öire hashed hAB cunoscut─â sub numele de ramur─â Merkle. Re╚Ťine╚Ťi c─â de fiecare dat─â c├ónd este generat─â o nou─â ie╚Öire, aceasta are o lungime ╚Öi o dimensiune fix─â, care depinde de func╚Ťia hash utilizat─â.

Acum, avem datele a dou─â tranzac╚Ťii (de exemplu, A ╚Öi B) combinate ├«ntr-un singur hash (hAB). Re╚Ťine╚Ťi c─â, dac─â schimb─âm orice informa╚Ťie din A sau B ╚Öi repet─âm procesul, rezultatul nostru hashed hAB ar fi complet diferit.

Procesul continu─â at├ót timp c├ót combin─âm noi perechi de hash-uri pentru a le supune hashingului din nou (vede╚Ťi imaginea de mai jos). Supunem hAB ╚Öi hCD hashingului pentru a ob╚Ťine un hash hABCD unic ╚Öi facem acela╚Öi lucru cu hEF ╚Öi hGH pentru a ob╚Ťine hEFGH. ├Än cele din urm─â, primim un singur hash reprezent├ónd ie╚Öirile hashed ale tuturor hash-urilor tranzac╚Ťiilor anterioare. Cu alte cuvinte, ie╚Öirea hashed hABCDEFGH reprezint─â toate informa╚Ťiile anterioare acesteia.

Graficul afi╚Öat mai sus se nume╚Öte arbore Merkle, iar rezultatul hashed hABCDEFGH este r─âd─âcina Merkle. Folosim r─âd─âcinile Merkle ├«n anteturile blocurilor, deoarece acestea rezum─â criptografic toate datele tranzac╚Ťiei ├«ntr-un bloc ├«ntr-un mod succint. De asemenea, putem verifica rapid dac─â datele au fost modificate sau schimbate ├«n cadrul blocului.

Limit─ârile arborilor Merkle

S─â revenim la exemplul nostru de rezerve CEX. Un CEX dore╚Öte s─â demonstreze c─â de╚Ťine 1:1 toate activele clien╚Ťilor s─âi ╚Öi construie╚Öte un arbore Merkle care supune hashingului UID-urile clien╚Ťilor s─âi cu de╚Ťinerile lor nete de active (compensarea activelor ╚Öi pasivelor) la nivel de token. Dup─â lansare (╚Öi semnare pentru a dovedi proprietatea asupra r─âd─âcinii Merkle furnizate), un utilizator individual nu ar avea cum s─â verifice dac─â arborele Merkle este valid f─âr─â a accesa toate intr─ârile sale.

Este posibil ca o burs─â s─â fi omis s─â includ─â unele intr─âri. De asemenea, ar putea crea conturi false cu solduri negative pentru a modifica pasivul total. De exemplu, de╚Öi activele clien╚Ťilor pot totaliza 1.000.000 USD, ar putea fi ad─âugat un cont fals cu un sold de -500.000 USD. Acest lucru ar crea o ╚Ťint─â de rezerve de doar 500.000 USD.

Cazul pentru dovada rezervelor este diferit de r─âd─âcina Merkle a unui bloc, deoarece utilizatorii pot vedea toate tranzac╚Ťiile pe care le con╚Ťine un bloc ├«ntr-un explorator blockchain. Cu toate acestea, un CEX nu va dori s─â dezv─âluie soldul fiec─ârui cont din motive de securitate ╚Öi de confiden╚Ťialitate a datelor. Nici clien╚Ťii nu ar fi mul╚Ťumi╚Ťi c─â soldurile contului lor sunt f─âcute publice. ├Än acest caz, CEX nu poate dovedi c─â soldurile utilizatorilor ├«nsumeaz─â totalul corect f─âr─â a face vizibile soldurile altor utilizatori.

O solu╚Ťie pe care bursele o pot lua ├«n considerare este utilizarea unui auditor ter╚Ť de ├«ncredere. Auditorul poate verifica conturile individuale ╚Öi rezervele ├«nainte de a atesta ├«n final validitatea r─âd─âcinii Merkle furnizate. Cu toate acestea, pentru utilizatori, aceast─â metod─â necesit─â ├«ncredere ├«n auditor ╚Öi ├«n datele utilizate pentru audit. Nu trebuie s─â v─â baza╚Ťi pe o ter╚Ť─â parte atunci c├ónd pute╚Ťi avea ├«ncredere ├«n date.

Combinarea zk-SNARKs cu arborii Merkle

Problema de mai sus este un caz perfect pentru utilizarea zk-SNARKs. Dorim s─â demonstr─âm c─â rezervele acoper─â ├«n totalitate pasivele utilizatorilor ╚Öi nu sunt falsificate. Cu toate acestea, din motive de confiden╚Ťialitate ╚Öi securitate, nu dorim s─â ar─ât─âm verificatorului componen╚Ťa exact─â a soldurilor ╚Öi rezervelor utilizatorilor.┬á

Folosind un zk-SNARK, o burs─â cripto poate dovedi c─â toate seturile de solduri ale nodurilor de frunze ale arborelui Merkle (adic─â soldurile conturilor de utilizator) contribuie la soldul total al activelor utilizatorului pe care bursa sus╚Ťine c─â ├«l de╚Ťine. Fiecare utilizator poate verifica cu u╚Öurin╚Ť─â c─â nodul frunzei sale a fost inclus ├«n proces. zk-SNARK asigur─â, de asemenea, c─â orice arbore Merkle generat nu con╚Ťine utilizatori cu un sold total negativ al activelor nete (ceea ce ar implica falsificarea datelor, deoarece toate ├«mprumuturile sunt supragarantate). De asemenea, este utilizat un calcul al st─ârii globale a Binance, adic─â o list─â a soldului net total al fiec─ârui activ pe care fiecare client Binance ├«l de╚Ťine.

S─â vedem cum abordeaz─â Binance aceast─â situa╚Ťie. Pentru ├«nceput, Binance define╚Öte constr├óngerile calculului pe care dore╚Öte s─â-l demonstreze ╚Öi le define╚Öte sub forma unui circuit programabil. Mai jos este setul de trei constr├óngeri pe care Binance le folose╚Öte ├«n modelul s─âu.┬á

Pentru setul soldului fiec─ârui utilizator (nodul frunzelor arborelui Merkle), circuitul nostru asigur─â c─â:

  1. Soldurile activelor unui utilizator sunt incluse în calculul sumei soldurilor totale nete ale utilizatorilor pe Binance.

  2. Soldul net total al utilizatorului este mai mare decât sau egal cu zero.

  3. Modificarea r─âd─âcinii arborelui Merkle este valid─â (adic─â, nu se utilizeaz─â informa╚Ťii falsificate) dup─â actualizarea informa╚Ťiilor unui utilizator la hash-ul nodului frunz─â.

Binance poate genera apoi o dovad─â zk-SNARK pentru construc╚Ťia arborelui Merkle conform circuitului. Acest lucru presupune ca bursa s─â execute calculul laborios al hashingului ID-urilor ╚Öi soldurilor utilizatorilor, asigur├óndu-se ├«n acela╚Öi timp c─â dovada trece de constr├óngeri.

Un verificator va examina dovada (╚Öi codul s─âu open source lansat public) pentru a se convinge c─â calculul este executat cu toate constr├óngerile ├«ndeplinite. Calculul de verificare dureaz─â foarte pu╚Ťin ├«n compara╚Ťie cu durata demonstra╚Ťiei.

La fiecare lansare a Proof of Reserves, bursa va publica:

1. Dovada Merkle pentru fiecare utilizator.

2. Dovada zk-SNARK ╚Öi intrarea public─â (un hash al listei soldului net total al fiec─ârui activ ╚Öi r─âd─âcina Merkle) a circuitului pentru to╚Ťi utilizatorii.

P─âr╚Ťile interesate pot verifica dovada Merkle, asigur├óndu-se c─â soldurile lor individuale au contribuit la r─âd─âcina arborelui Merkle. Ele pot verifica, de asemenea, dovada zk-SNARK pentru a se asigura c─â construc╚Ťia arborelui Merkle ├«ndepline╚Öte constr├óngerile definite ├«n circuit. Pentru o explica╚Ťie mai detaliat─â a solu╚Ťiei zk-SNARK ╚Öi a performan╚Ťei acesteia, consulta╚Ťi blogul nostru Cum ├«mbun─ât─â╚Ťesc zk-SNARKs sistemul de dovezi ale rezervelor Binance.

Gânduri de încheiere

Zk-SNARKs ofer─â tehnologia necesar─â pentru a asigura at├ót integritatea datelor, c├ót ╚Öi confiden╚Ťialitatea ├«n acela╚Öi timp. Aplica╚Ťia sa pentru dovedirea rezervelor ╚Öi cre╚Öterea transparen╚Ťei CEX ar trebui s─â contribuie la construirea ├«ncrederii ├«n industria blockchain. Mul╚Ťi oameni a╚Öteptau de mult timp o astfel de dezvoltare ╚Öi aceasta vine ├«ntr-un moment crucial pentru CEX-uri.

Aceasta este prima noastr─â versiune de zk-SNARK ╚Öi a╚Ötept─âm cu ner─âbdare s─â primim feedbackul comunit─â╚Ťii, astfel ├«nc├ót s─â putem continua s─â ├«mbun─ât─â╚Ťim sistemul.

Materiale suplimentare