TL;DR
Nulles zināšanu pierādījums ļauj vienai pusei (pārbaudītājam) noteikt otras puses (pierādītāja) sniegtā apgalvojuma derīgumu, nezinot paziņojuma saturu. Piemēram, uzņēmums Binance var vēlēties pierādīt, ka ir pilnībā nodrošinājis savu lietotāju līdzekļus rezervēs, neatklājot visus individuālo lietotāju atlikumus.
“Rezerves apliecinājumu” varētu izveidot ar Merkles koku, kas aizsargā pret tā iekšējo datu, šajā gadījumā kopējo neto klientu atlikumu viltošanu, kas ir biržas saistības pret tās lietotājiem. Pēc tam to var apvienot ar zk-SNARK (nulles zināšanu pārbaudes protokols), kas nodrošina, ka lietotāji var pārbaudīt savu bilanci, kas ir daļa no kopējā neto lietotāja aktīvu bilances, nezinot atsevišķus atlikumus.
Ievads
Ņemot vērā tirgus notikumus, glabāšanā esošo kriptovalūtu aktīvu drošība ir kļuvusi par kritisku tēmu. Blockchain lietotāji augstu vērtē caurspīdīgumu un atklātību, kā arī atbalsta privātumu un konfidencialitāti. Tas rada dilemmu, pierādot turētājbankas turēto līdzekļu rezerves. Bieži vien pastāv kompromiss starp pārredzamību, uzticēšanos un datu konfidencialitāti.
Tomēr tam tā nav jābūt. Apvienojot nulles zināšanu pierādījumu protokolus, piemēram, zk-SNARKs, ar Merkles kokiem, mēs varam atrast efektīvu risinājumu visām pusēm.
Kas ir nulles zināšanu pierādījums?
Nulles zināšanu pierādījums ļauj vienai pusei (pārbaudītājam) noteikt otras puses (pierādītāja) sniegtā apgalvojuma derīgumu, nezinot paziņojuma saturu. Apskatīsim vienkāršu piemēru.
Jums ir aizslēgts seifs, kuram tikai jūs zināt risinājumu. Seifu, piemēra labad, nevar paņemt, piespiest vai atvērt citādi, kā vien zinot kombināciju. Šo faktu konstatē, pārbauda un zina arī jūsu draugs, kas piedalās eksperimentā.
Jūs paziņojat, ka zināt šo kombināciju savam draugam, taču nevēlaties to atdot vai atvērt lodziņu viņa priekšā. Kastītes augšpusē ir caurums, kurā jūsu draugs var izlikt zīmīti. Lai padarītu to par nulles zināšanu pierādījumu, jūsu draugam nevajadzētu būt papildu informācijai par procesu, izņemot norādīto paziņojumu.
Jūs varat pierādīt savam draugam, ka zināt šo kombināciju, atverot lodziņu, pastāstot, kas bija rakstīts uz piezīmes, un vēlreiz to aizverot. Tomēr jūs nevienā brīdī neesat atklājis kombināciju.
Lai iegūtu detalizētāku piemēru, skatiet mūsu Kas ir nulles zināšanu pierādījums un kā tas ietekmē blokķēdi? rakstu.
Kāpēc mēs izmantojam nulles zināšanu pierādījumu?
Nulles zināšanu pierādījumi ir piemēroti, lai kaut ko pierādītu, neatklājot sensitīvu informāciju vai detaļas. Tas varētu būt gadījumā, ja nevēlaties nodot savu finanšu vai personisko informāciju, kas varētu tikt izmantota neatbilstoši.
Kriptogrāfijā jūs varētu pierādīt, ka jums pieder privāta atslēga, to neatklājot vai kaut ko digitāli neparakstot. Kriptovalūtas birža var arī vēlēties pierādīt savu rezervju statusu, neatklājot konfidenciālu informāciju par saviem lietotājiem, tostarp viņu individuālo kontu atlikumiem.
Šiem piemēriem (un daudziem citiem) nulles zināšanu pierādījums izmantotu algoritmus, kas izmanto datu ievadi un kā izvadi atgriež “true” vai “false”.
Nulles zināšanu pierādījumu definēšana tehniskajos terminos
Nulles zināšanu pierādījums tehniskā izteiksmē atbilst noteiktai struktūrai ar noteiktiem kritērijiem. Mēs jau esam apskatījuši pārbaudītāja un pārbaudītāja lomas, taču ir arī trīs kritēriji, kas jāaptver nulles zināšanu pierādījumam.
Pilnīgums. Ja apgalvojums ir patiess, pārbaudītāju pārliecinās sniegtie pierādījumi, bez jebkādas citas informācijas vai pārbaudes.
Spēcīgums. Ja apgalvojums ir nepatiess, pārbaudītājs nepārliecinās par apgalvojuma patiesumu, izmantojot sniegto pierādījumu.
Nulle-zināšanu. Ja apgalvojums ir patiess, verificētājs neuzzina citu informāciju, izņemot to, ka apgalvojums ir patiess.
Kas ir zk-SNARK?
Zk-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) ir pierādīšanas protokols, kas atbilst iepriekš izklāstītajiem nulles zināšanu principiem. Izmantojot zk-SNARK, jūs varētu pierādīt, ka zināt sākotnējo jaukto vērtību (par to tālāk), neatklājot, kas tā ir. Varat arī pierādīt darījuma derīgumu, neatklājot nekādu informāciju par konkrētajām summām, vērtībām vai adresēm.
zk-SNARK tiek plaši izmantoti un apspriesti blokķēdes un kriptovalūtu pasaulē. Taču jūs varētu brīnīties, kāpēc kāds varētu uztraukties, izmantojot zk-SNARK, ja informācijas aizsardzībai varētu izmantot vienkāršu publisko un privāto atslēgu pāra metodi. Tomēr mēs nevarētu ieviest matemātisko pierādījumu, lai nodrošinātu, ka nav iekļauti negatīvi atlikumi un Merkles koka summa.
Biržas rezervju gadījumā mēs vēlamies pierādīt klientu atlikumu nodrošinājumu 1:1, nepubliskojot katra konta identifikatorus un atlikumus. Turklāt zk-SNARK tehnoloģija padara datu viltošanu vēl mazāk ticamu.
Kas ir Merkles koks?
Lai uzrādītu Binance lietotāju kontu summētos līdzekļus, nepieciešams strādāt ar lielu datu kopu. Viens no veidiem, kā šo lielo datu apjomu parādīt kriptogrāfiski, ir izmantot Merkle koku. Tajā var efektīvi uzglabāt milzīgu informācijas daudzumu, un tās kriptogrāfiskais raksturs padara tās integritāti viegli pārbaudāmu.
Jaucējfunkcijas
Lai īsi kodētu ievadi, Merkle koks ir atkarīgs no jaucējfunkciju izmantošanas. Īsāk sakot, jaukšana ir fiksēta izmēra izvades ģenerēšanas process no mainīga izmēra ievades. Citiem vārdiem sakot, ja jebkura garuma ievade tiek sajaukta, izmantojot algoritmu, tā izveidos šifrētu fiksēta garuma izvadi.
Kamēr ievade paliek nemainīga, arī izvade paliks nemainīga. Tas nozīmē, ka mēs varam uzņemt milzīgus darījumu datu apjomus un sajaukt tos pārvaldāmā izvadā. Izvade būs radikāli atšķirīga, ja ievadē tiks mainīta kāda informācija.
Piemēram, mēs varētu ņemt 100 grāmatu saturu un ievadīt tos jaucējfunkcijā SHA-256. Pēc tam tas sniegtu kaut ko līdzīgu šim kā izvadi:
801a9be154c78caa032a37b4a4f0747f1e1addb397b64fa8581d749d704c12ea
Ja mēs pēc tam mainītu vienu ievades rakstzīmi (šīs 100 grāmatas), jaucējfunkcija būtu pilnīgi atšķirīga, piemēram:
abc5d230121d93a93a25bf7cf54ab71e8617114ccb57385a87ff12872bfda410
Tas ir svarīgs jaukšanas funkciju īpašums, jo tas ļauj viegli pārbaudīt datu precizitāti. Ja kāds atkārto to pašu 100 grāmatu jaukšanas procesu, izmantojot algoritmu SHA-256, viņš iegūs tieši tādu pašu jaukšanu kā izvade. Ja izvade atšķiras, mēs varam droši apstiprināt, ka ievade ir mainīta. Tas nozīmē, ka nav atsevišķi vai manuāli jāpārbauda ievades atšķirības, kas var būt darbietilpīgas.
Merkles koki kriptovalūtu pasaulē
Saglabājot darījumu datus blokķēdē, katrs jauns darījums tiek iesniegts, izmantojot jaucējfunkciju, kas ģenerē unikālas jaucējvērtības. Iedomājieties, ka mums ir astoņi darījumi (no A līdz H), kurus mēs atsevišķi sajaucam, lai iegūtu to jauktos rezultātus. Tos mēs saucam par Merkles lapu mezgliem. Tālāk esošajā attēlā varat redzēt katra burta unikālo jaucējvērtību: hA — A, hB — B, hC — C utt.
Pēc tam mēs varam ņemt jaukto izvadu pārus, apvienot tos un saņemt jaunu jaukto izvadi. Piemēram, jauktā hA un hB jaukšana mums dotu jaunu hAB jaukto izvadi, kas pazīstama kā Merkle filiāle. Ņemiet vērā, ka katru reizi, kad tiek ģenerēta jauna izvade, tai ir noteikts garums un izmērs atbilstoši izmantotajai jaucējfunkcijai.
Tagad mums ir divu darījumu dati (piemēram, A un B), kas apvienoti vienā hashā (hAB). Ņemiet vērā, ka, mainot jebkuru informāciju no A vai B un atkārtojot procesu, mūsu jauktā izvade hAB būtu pilnīgi atšķirīga.
Process turpinās, kad mēs apvienojam jaunus jaucējpunktu pārus, lai tos vēlreiz sajauktu (skatiet attēlu zemāk). Mēs sajaucam hAB ar hCD, lai iegūtu unikālu hash hABCD, un darām to pašu ar hEF un hGH, lai iegūtu hEFGH. Galu galā mēs saņemam vienu jaucējkodu, kas atspoguļo visu iepriekšējo darījumu jauktās izejas. Citiem vārdiem sakot, jauktā izvade hABCDEFGH atspoguļo visu informāciju, kas bija pirms tās.
Iepriekš parādīto grafiku sauc par Merkles koku, un jauktā izvade hABCDEFGH ir Merkles sakne. Mēs izmantojam Merkle saknes bloku galvenēs, jo tās kriptogrāfiski īsi apkopo visus darījumu datus blokā. Mēs varam arī ātri pārbaudīt, vai blokā ir bojāti vai mainīti dati.
Merkles koku ierobežojumi
Atgriezīsimies pie mūsu CEX rezervju piemēra. CEX vēlas pierādīt visu savu klientu aktīvu 1:1 atbalstu un izveido Merkle koku, kas apvieno klientu UID ar viņu neto aktīvu turējumu (līdzekļi un saistības) simboliskā līmenī. Pēc izlaišanas (un parakstīšanas, lai pierādītu īpašumtiesības uz nodrošināto Merkle sakni), atsevišķam lietotājam nebūs iespējas pārbaudīt, vai Merkle koks ir derīgs, nepiekļūstot visiem tā ievades datiem.
Iespējams, ka ir notikusi apmaiņa ar dažiem ievades datiem. Tas varētu arī izveidot viltotus kontus ar negatīvu atlikumu, lai mainītu kopējo saistību apjomu. Piemēram, lai gan klientu aktīvu kopsumma var būt USD 1 000 000, var tikt pievienots viltots konts ar atlikumu - USD 500 000. Tas radītu rezervju mērķi tikai 500 000 USD apmērā.
Rezervju pierādīšanas gadījums atšķiras no bloka Merkles saknes, jo lietotāji blokķēdes pārlūkā var redzēt visus blokā ietvertos darījumus. Tomēr CEX nevēlas izpaust katra konta atlikumu drošības un datu konfidencialitātes apsvērumu dēļ. Arī klienti nebūtu apmierināti, ja viņu kontu atlikumi tiktu publiskoti. Šādā gadījumā CEX nevar pierādīt, ka lietotāju atlikumi veido pareizo kopējo summu, nepadarot redzamus citus lietotāju atlikumus.
Viens no risinājumiem, ko biržas varētu apsvērt, ir izmantot uzticamu trešās puses auditoru. Revidents var pārbaudīt individuālos kontus un rezerves, pirms beidzot apliecina sniegtās Merkles saknes derīgumu. Tomēr lietotājiem šī metode prasa uzticību auditoram un revīzijā izmantotajiem datiem. Jums nav jāpaļaujas uz trešo pusi, ja varat uzticēties datiem.
Apvienojot zk-SNARK ar Merkles kokiem
Iepriekš minētā problēma ir ideāls gadījums zk-SNARK lietošanai. Mēs vēlamies pierādīt, ka rezerves pilnībā sedz lietotāja saistības un nav viltotas. Tomēr privātuma un drošības apsvērumu dēļ mēs nevēlamies rādīt pārbaudītājam precīzu lietotāju atlikumu un rezervju struktūru.
Izmantojot zk-SNARK, kriptovalūtu birža var pierādīt, ka visas Merkle koka lapu mezglu bilances kopas (t.i., lietotāja kontu atlikumi) veicina biržas pieprasīto kopējo lietotāju aktīvu bilanci. Katrs lietotājs var viegli piekļūt savam lapas mezglam, jo tas ir iekļauts procesā. Zk-SNARK arī nodrošina, ka ģenerētajā Merkle kokā nav lietotāju ar negatīvu kopējo neto aktīvu bilanci (kas nozīmētu datu viltošanu, jo visiem aizdevumiem ir pārmērīgs nodrošinājums). Tiek izmantots arī Binance globālā stāvokļa aprēķins, t.i., katra Binance klienta rīcībā esošā katra aktīva kopējā neto bilances saraksts.
Apskatīsim, kā Binance tuvojas situācijai. Sākumā Binance definē aprēķina ierobežojumus, kurus tā vēlas pierādīt, un definē tos kā programmējamu ķēdi. Tālāk ir norādīta trīs ierobežojumu kopa, ko Binance izmanto savā modelī.
Katram lietotāja bilances komplektam (Merkle koka lapu mezglam) mūsu shēma nodrošina, ka:
Lietotāja līdzekļu atlikumi tiek iekļauti kopējā neto lietotāja atlikuma summas aprēķinā ar Binance.
Lietotāja kopējais neto atlikums ir lielāks par nulli vai vienāds ar to.
Merkles koka saknes maiņa ir spēkā (t.i., neizmantojot viltotu informāciju) pēc lietotāja informācijas atjaunināšanas lapas mezgla jaucējkodā.
Pēc tam Binance var ģenerēt zk-SNARK pierādījumu Merkles koka konstrukcijai saskaņā ar shēmu. Tas nozīmē, ka apmaiņa veic intensīvu lietotāju ID un atlikumu jaukšanas aprēķinu, vienlaikus nodrošinot, ka pierādījums iztur ierobežojumus.
Verificētājs pārbaudīs pierādījumu (un tā publiski izlaisto atvērtā pirmkoda kodu), lai pārliecinātos, ka aprēķins tiek izpildīts, ievērojot visus ierobežojumus. Verifikācijas aprēķins aizņem ārkārtīgi īsu laiku, salīdzinot ar pierādīšanas laiku.
Katrā rezervju apliecinājuma izlaišanas reizē birža publicēs:
1. Merkles pierādījums katram lietotājam.
2. Zk-SNARK pierādījums un publiska ievade (katra aktīva kopējā tīrā bilances saraksta un Merkles saknes sajaukums) ķēdē visiem lietotājiem.
Ieinteresētās puses var pārbaudīt Merkles pierādījumu, nodrošinot viņu individuālo līdzsvaru, kas ir saistīts ar Merkles koka sakni. Viņi var arī pārbaudīt zk-SNARK pierādījumu, lai nodrošinātu, ka Merkles koka konstrukcija atbilst ķēdē noteiktajiem ierobežojumiem. Sīkāku skaidrojumu par zk-SNARK risinājumu un tā veiktspēju skatiet mūsu emuārā Kā zk-SNARKs uzlabo Binance rezervju pārbaudes sistēmu.
Noslēguma domas
zk-SNARK nodrošina tehnoloģiju, kas nepieciešama, lai vienlaikus nodrošinātu gan datu integritāti, gan privātumu. Tās izmantošanai rezervju pierādīšanai un CEX pārredzamības palielināšanai vajadzētu palīdzēt veidot uzticību blokķēdes nozarei. Daudziem šāda attīstība ir ilgi gaidīta, un tā notiek CEX izšķirošajā laikā.
Šī ir mūsu zk-SNARK pirmā versija, un mēs ar nepacietību gaidām atsauksmes no kopienas, lai varētu turpināt sistēmas uzlabošanu.
Tālāka lasīšana
(emuārs) Kā zk-SNARKs uzlabo Binance rezervju pierādīšanas sistēmu
(Akadēmija) Rezervju apliecinājums (PoR)
(Akadēmija) Kas ir rezervju pierādījums un kā tas darbojas vietnē Binance
(Paziņojums)Binance izlaiž rezervju apliecinājuma sistēmu


