Ethereum este prima implementare pe blockchain a contractelor smart. Din păcate, are un cazier cam prost când vine vorba de siguranța datelor. Toate detaliile despre contractele smart sunt publice pe blockchainul ethereum, și sunt stocate în memoria nodurilor pline. Toți expeditorii și destinatarii de fonduri, toate datele de tranzacții, toate codurile executate și starea fiecărei variabile de contract sunt date publice, accesibile oricui.
Contractele făcute pe ethreum care au nevoie să mențină securitatea datelor se bazează pe angajamente sigure. Aceste scheme simple permit utilizatorului să facă un angajament pentru o valoare secretă, publicând hash-ul pe blockchain. Mai târziu poate să dezvăluie secretul, fie pe blockchain sau în afara sa.
Din păcate, în sine, aceste construcții de dezvăluirea hash-ului sunt incredibil de limitate. Au fost folosite în jocurile de noroc și în schimburile de bunuri digitale simple. Nu sunt însă suficient de expresive ca să permită folosirea la scară mai mare a datelor private.
În următorul upgrade de protocol, Metropolis, dezvoltatorii de contracte smart vor avea acces la o unealtă de anonimitate, și anume posibilitatea de a face verificări zk-SNARKs în mod eficient direct pe blockchain.
Ce putem să facem cu o rețea ethereum care dispune de SNARKs? Anumite variabile de contracte vor putea să fie private. În loc să stochezi informațiile secrete pe blockchain, acestea pot să fie stocate de utilizatori, care pot să demonstreze că respectă regulile impuse de contract folosind SNARKs. Fiecare dintre acești utilizatori va avea nevoie de propriul setup de încredere. Partea bună este că odată ce există un astfel de circuit, el poate foarte ușor să fie clonat.
Să ne imaginăm un jeton de genul ERC20, care nu publică balanțele individuale ale deținătorilor, dar menține totuși o rezervă publică și previzibilă de monede; sau o platformă de împrumuturi care are termenii împrumutului privați.
Atâta timp cât datele din contract au o corespondență de unu-la-unu cu un utilizator din contract, iar utilizatorilor li se poate încredința secretul, zk-SNARKs este o abordare grozavă.
Pe ethereum însă nu poți să obți anonimitate autonomă folosind SNARKs, adică fără să ai un utilizator. SNARKs pe ethereum se bazează pe o parte din afara blockchainului principal care să păstreze secretul.
Fără această partidă, nu ai cum să urmărești secretul, ceea ce înseamnă că dovada este inutilă.
Anonimitate fără utilizatori
Pentru multe aplicații scoase pe piață, anonimitatea fără utilizatori este o problemă serioasă. În definitiv, o mare parte din spațiul public de pe blockchain îi dă utilizatorului controlul asupra informațiilor private.
Mai sunt și alte utilizări valoroase pentru datele anonime pe ethereum, atât pentru consumatori cât și pentru întreprinderi. Câteva idei ar fi imposibil de implementat pe ethereum:
Guvernanța avansată descentralizată. Organizațiile autonome nu pot să stocheze informații private fără să delege păstrarea secretului către un utilizator.
Tranzacțiile autonome la anumite schimburi pe blockchain, inclusiv proiectul 0x.
Contracte care mențin întreaga custodie a bunurilor din afara blockchainului. Gândiți-vă la un contract ethereum care are nevoie de custodie a unui portofel bitcoin, de exemplu.
Acces delegat la identitate, la documente medicale sau la alte informații personale pe care utilizatorul vrea să le păstreze secrete. SNARKs nu permite accesul și controlul la datele private. Utilizatorii trebuie să facă schimb de informații personale în afara blockchainului.
Anonimitatea pe blockchainurile publice, mai ales anonimitatea autonomă, este greoaie. În următoarea postare vom discuta despre blockchainurile private și permisive, dar și despre alte abordări care mențin securitatea datelor.