TL;DR
Teadmise puudumise tõend võimaldab ühel osapoolel (tõendajal) määrata teise osapoole (tõestaja) esitatud väite tõesust ilma väite sisu teadmata. Näiteks võib Binance tahta tõestada, et tagab oma kasutajate rahalisi vahendeid täies ulatuses, ilma et avalikustaks kõiki üksikute kasutajate saldosid.
Merkle'i puud saab kasutada „reservide tõendi“ koostamiseks, mis kaitseb tema siseandmete, antud juhul kogu klientide netosaldo, mis on börsi kohustused kasutajate ees, võltsimise eest. Seda saab seejärel kombineerida zk-SNARK-iga (teadmiste puudumise tõendi protokoll), mis tagab, et kasutajad saavad kontrollida oma saldot, mis moodustab osa kasutaja kogu netovarade saldost, teadmata üksikuid saldosid.
Sissejuhatus
Krüptovarade turvalisus on turusündmuste valguses muutunud kriitiliseks teemaks. Plokiahela kasutajad hindavad kõrgelt läbipaistvust ja avatust, kuid toetavad ka privaatsust ning konfidentsiaalsust. See loob haldurite hoitavate vahendite reservide tõendamisel dilemma. Sageli tehakse läbipaistvuse, usalduse ja andmete konfidentsiaalsuse vahel kompromiss.
See ei pea aga tingimata nii olema. Kombineerides teadmiste puudumise tõendi protokolle nagu zk-SNARK-id Merkle'i puudega, leiame tõhusa lahenduse kõigile osapooltele.
Mis on teadmise puudumise tõend?
Teadmise puudumise tõend võimaldab ühel osapoolel (tõendajal) määrata teise osapoole (tõestaja) esitatud väite tõesust ilma väite sisu teadmata. Vaatame lihtsat näidet.
Sa oled lukustanud seifi, mille koodi tead ainult sina. Seifi ei saa näite huvides muukida, jõuga avada ega muul viisil avada kui kombinatsiooni teades. Sellest faktist saab aimu, seda kontrollib ja teab ka sinu katses osalev sõber.
Ütled oma sõbrale, et tead seda kombinatsiooni, kuid ei taha seda talle anda ega tema ees kasti avada. Seifi peal on avavus, millest sõber saab märkmeid läbi lasta. Et see oleks teadmiste puudumise tõend, ei tohiks sinu sõbral olla protsessi kohta muud teavet kui antud väide.
Saad oma sõbrale tõestada, et tead kombinatsiooni, avades seifi, öeldes talle, mis oli sedelil kirjutatud, ja sulgedes selle uuesti. Kuid sa pole kunagi kombinatsiooni kellelgi andnud.
Täpsema näite saamiseks vaata artiklit Mis on teadmise puudumise tõend ja kuidas see plokiahelat mõjutab?
Miks me kasutame teadmise puudumise tõendit?
Teadmise puudumise tõendid sobivad millegi tõestamiseks ilma tundlikku teavet või detaile paljastamata. See võib juhtuda juhul, kui sa ei soovi avaldada oma finants- või isiklikku teavet, mida võidakse sobimatult kasutada.
Krüptoraha puhul saad tõestada, et sul on privaatvõti, ilma seda avaldamata või midagi digitaalselt allkirjastamata. Krüptorahabörs võib samuti tahta tõestada oma reservide olemasolu, avaldamata oma kasutajate kohta konfidentsiaalset teavet, sealhulgas nende isiklikke kontojääke.
Nende (ja paljude teiste) näidete puhul kasutaks teadmise puudumise tõend algoritme, mis võtavad andmesisendi ja tagastavad väljundina „tõene“ või „väär“.
Teadmise puudumise tõendite määratlemine tehniliste terminitega
Tehnilises mõttes järgib teadmise puudumise tõend kindlat struktuuri ja teatud kriteeriume. Oleme juba käsitlenud tõestaja ja kontrollija rolle, kuid on ka kolm kriteeriumi, mida teadmise puudumise tõend peaks käsitlema:
Täielikkus. Kui väide vastab tõele, veenab tõendaja esitatud tõendeid, ilma et oleks vaja muud teavet või kontrolli teostada.
Mittevasturääkivus. Kui väide on vale, ei saa kontrollija esitatud tõend väite õigsuses veenda.
Teadmise puudumine. Kui väide on tõene, ei saa tõendaja teada muud teavet peale selle, et väide on tõene.
Mis on zk-SNARK?
Zk-SNARK (teadmise puudumise lühike mitteinteraktiivne argumentatsioon teadmiste kohta) on tõestusprotokoll, mis järgib eelnevalt kirjeldatud teadmise puudumise põhimõtteid. Zk-SNARK-i abil saad tõestada, et tead algset räsiväärtust (seda käsitletakse allpool), ilma et peaksid avaldama, mis see on. Samuti saad tõestada tehingu kehtivust ilma konkreetsete summade, väärtuste või aadresside kohta teavet avaldamata.
zk-SNARK-e kasutatakse ja nendest räägitakse tavaliselt plokiahela ja krüptoraha maailmas. Kuid võid küsida, miks keegi viitsib zk-SNARK-i kasutada, kui nad saavad teabe kaitsmiseks kasutada lihtsat avaliku ja privaatvõtme paari meetodit. Kuid me ei saaks rakendada matemaatilist tõestust tagamaks, et Merkle'i puu summas ei sisalduks negatiivseid saldosid.
Tahame börsi reservide puhul tõestada, et klientide saldod on üks ühele tagatud ilma iga konto identifikaatorit ja saldot avalikustamata.Lisaks muudab zk-SNARK tehnoloogia andmete võltsimise veelgi ebatõenäolisemaks.
Mis on Merkle'i puu?
Binance'i kasutajate kontode summeeritud rahaliste vahendite esitamine nõuab suure andmestikuga töötamist. Merkle'i puu kasutamine on üks võimalus selle suure andmehulga krüptograafiliseks esitamiseks. Sellesse saab tõhusalt salvestada tohutul hulgal teavet ja selle krüptograafiline olemus muudab selle terviklikkuse hõlpsasti kontrollitavaks.
Räsifunktsioonid
Sisendi lühidalt kodeerimiseks sõltub Merkle'i puu räsifunktsioonide kasutamisest. Lühidalt viitab räsimine protsessile, kus muutuva suurusega sisendist genereeritakse fikseeritud suurusega väljund. Teisisõnu, kui mis tahes pikkusega sisend räsitakse läbi algoritmi, annab see krüptitud fikseeritud pikkusega väljundi.
Kuni sisend jääb samaks, jääb ka väljund samaks. See tähendab, et saame võtta tohutul hulgal tehinguandmeid ja räsida need hallatavaks väljundiks. Kui sisendis mingit teavet muudetakse, on väljund on kardinaalselt erinev.
Näiteks võiksime võtta 100 raamatu sisu ja sisestada need SHA-256 räsifunktsiooni. Seejärel annaks see väljundina midagi sellist:
801a9be154c78caa032a37b4a4f0747f1e1addb397b64fa8581d749d704c12ea
Kui me seejärel muudaksime sisendis ühte märki (need 100 raamatut), oleks räsi täiesti erinev, näiteks:
abc5d230121d93a93a25bf7cf54ab71e8617114ccb57385a87ff12872bfda410
See on räsifunktsioonide oluline omadus, kuna see võimaldab andmete täpsust hõlpsalt kontrollida. Kui keegi kordab nende samade 100 raamatu räsimise protsessi kasutades SHA-256 algoritmi, saab ta väljundina täpselt sama räsi. Kui väljund on erinev, võime kindel olla, et sisendit muudeti. See tähendab, et pole vaja eraldi või käsitsi kontrollida sisendite erinevusi, mis võib olla töömahukas.
Merkle'i puud krüptoraha maailmas
Plokiahelasse tehinguandmete salvestamisel esitatakse iga uus tehing läbi räsifunktsiooni, mis genereerib kordumatud räsiväärtused. Kujuta ette, et meil on kaheksa tehingut (A kuni H), mida me nende räsiväljundi saamiseks eraldi räsime. Neid me nimetame Merkle'i puulehe sõlmedeks. Alloleval pildil on võimalik näha iga tähe ainulaadset räsiväärtust: hA tähistab A, hB on B, hC tähistab C jne.
Seejärel saame võtta räsiväljundite paarid, need kombineerida ja saada uue räsiväljundi. Näiteks hA ja hB koos räsituna annaksid meile uue hAB räsiväljundi, mida tuntakse Merkle'i puu haruna. Pea meeles, et iga kord, kui uus väljund genereeritakse, on sellel vastavalt kasutatud räsifunktsioonile fikseeritud pikkus ja suurus.
Nüüd on meil kahe tehingu (nt A ja B) andmed kombineeritud ühte räsisse (hAB). Pane tähele, et kui muudame A või B teavet ja kordame protsessi, oleks meie räsiväljund hAB täiesti erinev.
Protsess jätkub, kui ühendame uued räsipaarid, et neid uuesti räsida (vt allolevat pilti). Räsime hAB-i hCD-ga, et saada unikaalne räsi hABCD, ja teeme sama hEF-i ja hGH-ga, et saada hEFGH. Lõpuks saame ühe räsi, mis esindab kõigi eelmiste tehingute räsiväljundeid. Teisisõnu, räsiväljund hABCDEFGH esindab kogu teavet, mis oli enne seda.
Ülaltoodud graafikut nimetatakse räsipuuks ja räsiväljund hABCDEFGH on Merkle'i juur. Kasutame plokkide päistes Merkle'i juuri, kuna need võtavad plokis krüptograafiliselt kokku kõik tehinguandmed. Samuti saame kiiresti kontrollida, kas andmeid on blokis rikutud või muudetud.
Merkle'i puude puudused
Tuleme tagasi meie CEX-reservide näite juurde. CEX soovib tõestada kõigi oma klientide varade üks ühele tagamist ja loob Merkle'i puu, mis räsib tokeni tasemel kokku oma klientide UID-d nende netovarade osalusega (tasaarvestab varad ja kohustused). Pärast vabastamist (ja allkirjastatud Merkle'i juure omandiõiguse tõendamist) ei saa üksikkasutaja enam kontrollida, kas Merkle'i puu on kehtiv, ilma juurdepääsuta kõigile selle sisenditele.
Börs võis mõned sisendid vahele jätta. Samuti võib see kogukohustuse muutmiseks luua negatiivse saldoga võltskontosid. Näiteks kuigi klientide varade kogusumma võib olla 1 000 000 dollarit, võidakse lisada võltskonto, mille saldo on -500 000 dollarit. Selle tulemusena peab reserve olema vaid 500 000 dollarit.
Reservide olemasolu tõendamise juhtum erineb ploki Merkle'i juurtest, kuna kasutajad näevad plokiahela uurijas kõiki tehinguid, mida plokk sisaldab. Kuid CEX ei soovi turvalisuse ja andmete privaatsuse huvides iga konto saldot avaldada. Ka kliendid ei oleks oma kontojääkide avalikustamisega rahul. Sel juhul ei saa CEX tõestada, kas kasutajate saldod annavad kokku õige summa, ilma et muude kasutajate saldod nähtavad oleks.
Üks lahendus, mille kasutamist börsid võiksid kaaluda, on usaldusväärse kolmanda osapoole audiitori kasutamine. Audiitor saab kontrollida individuaalseid kontosid ja reserve, enne kui saab lõplikult kinnitada esitatud Merkle'i juure kehtivust. Selle meetodi puhul peavad kasutajad aga usaldama audiitorit ja auditis kasutatavaid andmeid. Kui saad andmeid usaldada, ei pea sa lootma kolmandale osapoolele.
Zk-SNAR-ide kombineerimine Merkle'i puudega
Ülaltoodud probleem sobib suurepäraselt zk-SNARK-ide kasutamiseks. Tahame tõestada, et reservid katavad täielikult kasutaja kohustused ega ole võltsitud. Me ei taha aga privaatsuse ja turvalisuse huvides tõendajale näidata kasutajate saldode ja reservide täpset koostist.
Kasutades zk-SNARK-i, saab krüptobörs tõestada, et kõik Merkle'i puulehtede sõlmede saldokomplektid (st kasutajakontode saldod) aitavad kaasa börsi väidetavale kogukasutaja varade saldole. Iga kasutaja pääseb hõlpsalt juurde oma lehe sõlmele, kuna see on protsessi kaasatud. Zk-SNARK tagab ka, et mis tahes loodud Merkle'i puu ei sisalda kasutajaid, kelle netovara kogusaldo on negatiivne (mis tähendaks andmete võltsimist, kuna kõik laenud on ületagatisega). Kasutatakse ka Binance'i globaalse oleku arvutust, st iga Binance'i kliendi iga vara kogu netosaldo loendit.
Vaatame, kuidas Binance olukorraga tegeleb. Alustuseks määratleb Binance arvutamise piirangud, mida ta soovib tõestada, ja määratleb need programmeeritava ahelana. Allpool on toodud kolm piirangut, mida Binance oma mudelis kasutab.
Iga kasutaja saldokomplekti (Merkle'i puulehtede sõlm) puhul tagab meie süsteem, et:
Kasutaja varade saldod kaasatakse Binance'i kasutaja netosaldode summa arvutamisse.
Kasutaja kogu netojääk on nullist suurem või sellega võrdne.
Merkle'i puu juure muutus kehtib (st ei kasuta võltsitud teavet) pärast kasutaja teabe värskendamist lehesõlme räsisse.
Binance saab seejärel genereerida vastavalt süsteemile zk-SNARK-i tõendi Merkle'i puu konstruktsioonile. See tähendab, et börs teostab kasutajate ID-de ja saldode räsimise suure arvutustehte, tagades samal ajal, et tõestus ületab piirangud.
Tõendaja uurib tõendit (ja selle avalikult avaldatud avatud lähtekoodiga koodi), et olla veendunud, et arvutus viiakse läbi samal ajal, kui kõik piirangud on täidetud. Tõendamise arvutamine võtab tõestamisajaga võrreldes väga lühikest aega.
Börs avaldab kõik reservide tõendid nende väljalaskmisel:
1. Merkle'i tõend igale kasutajale.
2. Süsteemi kõikide kasutajate zk-SNARK-i tõend ja avalik sisend (iga vara kogu netojäägi loendi räsi ja Merkle'i juur).
Huvitatud osapooled saavad Merkle'i tõestust kontrollida, tagades, et nende individuaalsed saldod sisalduvad Merkle'i puu juures. Samuti saavad nad kontrollida zk-SNARK-i tõendit, et Merkle'i puu konstruktsioon vastaks süsteemis määratletud piirangutele. Teavet zk-SNARK-i lahenduse kohta ja selle toimivuse üksikasjalikumat selgitust on võimalik leida meie blogi artiklist Kuidas zk-SNARK-id täiustavad Binance'i reservide tõendamise süsteemi .
Lõppmärkused
zk-SNARK-id pakuvad tehnoloogiat, mis on vajalik, et tagada samaaegselt nii andmete terviklikkus kui ka privaatsus. Plokiahelatööstuse vastu peaks aitama luua usaldust selle kasutamine reservide tõendamiseks ja CEX-i läbipaistvuse suurendamiseks. Paljud on sellist arengut kaua oodatud ja see saabub CEX-ide jaoks pöördelisel ajal.
See on meie zk-SNARK-i esimene versioon ja ootame kogukonna tagasisidet, et saaksime süsteemi täiustada.