Ako konštrukcia zk-SNARK zlepšuje systém dôkazov o rezervách spoločnosti Binance

2023-02-09

Hlavné poznatky

  • V novembri 2022 spustila spoločnosť Binance svoj systém dôkazov o rezervách, ktorý využíva kryptografiu stromu merkle, aby si mohli používatelia overiť svoje držby.

  • Binance teraz vylepšila svoje riešenie implementáciou formy dôkazu s nulovou znalosťou zk-SNARKs.

  • Používatelia si teraz môžu súkromným a bezpečným spôsobom overiť, že celkový čistý zostatok každého účtu nie je záporný a všetky aktíva používateľov sú súčasťou celkového čistého zostatku aktív používateľov Binance.

Preskúmajte nové riešenie dôkazov o rezervách Binance. Kombináciou konštrukcie zk-SNARK a informácií o strome merkle získavajú používatelia nový a vylepšený spôsob overovania stavu rezerv Binance.

V posledných mesiacoch vývojový tím Binance usilovne pracoval na budovaní pokročilých riešení na overenie platobnej schopnosti. Tieto nástroje sa stali podstatnými pre centralizované kryptoburzy uprostred krízy dôvery, ktorá zachvátila priemysel v dôsledku kolapsu FTX. Prostriedky používateľov uložené na Binance sú zálohované v pomere 1:1 plus rezervy. Hľadanie spôsobu, ako to verejnosti bezproblémovo dokázať, sa stalo hlavnou súčasťou plánu Binance obnoviť dôveru v odvetvie. 

V novembri 2022 sme spustili náš systém dôkazov o rezervách využívajúci kryptografickú techniku stromu merkle, ktorá používateľom umožňuje overiť si svoje držby na Binance. Hoci došlo k pokroku v transparentnosti fondov používateľov spoločnosti Binance, pôvodný návrh tohto riešenia mal dva nedostatky:

  1. Na ochranu súkromia používateľov predstavovali uzly listov v dôkaze merkle haš držby používateľov a teda koreň merkle nedokázal reflektovať súčet informácií o zostatku jeho uzlov listov.

  1. Subjekt, ktorého rezervy boli overované, by mohol potenciálne pridať záporný zostatok pod falošný účet niekde v strome, aby sa celkové požadované rezervy zdali menšie. Nasledujúci diagram z blogu Vitalika Buterina ukazuje príklad takéhoto škodlivého stromu merkle (hoci v tomto prípade koreň odráža súčet zostatkov všetkých uzlov listov, čo môže spôsobiť problémy so súkromím).

Teraz už máme riešenie, ktoré môže tieto nedostatky napraviť a posilniť tak systém dôkazov o rezervách Binance. Tým, že sa spoľahneme na konštrukciu zk-SNARK, protokoly s nulovými znalosťami, môžeme dokázať, že:

  1. Všetky uzly listov stromu merkle prispeli k celkovému zostatku používateľov každého aktíva Binance.

  2. Strom merkle nezahŕňa žiadneho používateľa so záporným celkovým čistým zostatkom (celková hodnota všetkých aktív, ktoré používateľ vlastní v USD).

Záporné zostatky a výkonnosť

Keďže Binance ponúka maržu, krypto pôžičky a produkty obchodovania s futures, zostatok každého používateľa na každom krypto aktíve môže pozostávať z aktívpasív. Zostatok konkrétneho krypto aktíva používateľa môže byť záporný, ale jeho celkový čistý zostatok v rámci všetkých krypto aktív by nemal byť záporný (keďže všetky pôžičky sú úplne kolateralizované).

Čisto hypoteticky: Alica vložila 10 000 BUSD na Binance, potom použila 4 000 BUSD ako kolaterál na požičanie 2 BNB (pri sadzbe 1 BNB = 1 000 BUSD, za predpokladu, že Binance vždy všetko kolateralizuje). Nasledujúca tabuľka zobrazuje Alicinu súvahu.

BNB (cena: 1 000 BUSD)

BUSD (cena: 1 BUSD)

Celkový čistý zostatok (BUSD)

Aktíva

Záväzky

Aktíva

Záväzky

Alica

2

2

10 000

0

10 000

Ak Alica následne obchoduje s 1 BNB za 1 000 BUSD s Petrom, (ktorý tiež vložil 10 000 BUSD), ich súvaha by po spárovaní obchodu vyzerala takto:

BNB (cena: 1 000 BUSD)

BUSD (cena: 1 BUSD)

Celkový čistý zostatok (BUSD)

Aktíva

Záväzky

Aktíva

Záväzky

Alica

1

2

11 000

0

10 000

Peter

1

0

9 000

0

10 000

V tomto prípade bude Alicin zostatok BNB predstavovať -1, čo nie je platný uzol v strome merkle a pokrýva iba jedno aktívum: BNB. Ak sa však pozrieme na celkové čisté zostatky, Alica je stále na úrovni 10 000 BUSD.

Ďalšia výzva pochádza zo širokého rozsahu používateľskej základne Binance. Schodné riešenie musí generovať dôkaz pre používateľa a dôkaz zk-SNARK pre desiatky miliónov používateľov, z ktorých niektorí môžu mať na našej platforme viac ako 300 krypto aktív. 

V primeranom časovom období chceme poskytnúť dôkaz o nasledujúcich skutočnostiach:

  1. Aktíva každého používateľa Binance sú súčasťou nášho uplatneného celkového zostatku používateľov zobrazeného na snímke. Používatelia si môžu overiť náš uplatnený celkový zostatok používateľov oproti aktívam uloženým na adresách kontrolovaných spoločnosťou Binance pomocou blockchainového prieskumníka (napríklad Etherscan pre peňaženky Ethereum alebo BscScan pre peňaženky BNB Chain).

  2. Celkový čistý zostatok každého používateľa nie je záporný, čo znamená, že Binance nevytvorila fiktívne účty so záporným zostatkom, aby umelo znížila veľkosť našich overených rezerv.

Čo sú protokoly zk-SNARK?

Skôr, než si vysvetlíme podrobnosti nášho riešenia, je potrebný krátky prehľad mechanizmu dôkazov s nulovou znalosťou (ZKP). Protokoly s nulovou znalosťou ako zk-SNARK umožňujú jednej strane, preukazovateľovi, preukázať druhej strane, overovateľovi, že preukazovateľ vykonal určité výpočty presne s určitými vstupmi za určitých obmedzení, a to všetko bez zverejnenia vstupov. Výpočet môže byť časovo náročný, ale základný matematický mechanizmus môže overovateľovi pomôcť posúdiť dôkaz rýchlo a bezpečne.

Preukazovateľ (Binance) začína definovaním množiny obmedzení výpočtu, ktorú chce dokázať. Obmedzenia sú definované v obvodoch, ktoré môžu byť vyjadrené v programovacom jazyku vyššej úrovne (v našom prípade forková verzia knižnice gnark).

Preukazovateľ následne vykoná náročné výpočty, hashuje ID všetkých používateľov a súvahy a vytvorí dôkaz o tom, že výpočet spĺňa predtým stanovené obmedzenia. Na tento účel používa výpočtovú stopu (svedka) a verejné alebo súkromné vstupy. 

Overovateľ (používateľ) dostane dôkaz a overí ho verejným vstupom obvodu, aby sa uistil, že výpočet bol vykonaný presne so všetkými splnenými obmedzeniami. Overovací výpočet trvá veľmi krátky čas v porovnaní s časom dokazovania. Ak preukazovateľ nevygeneruje dôkaz na vopred definovaných obvodoch, nemôže predložiť platný dôkaz na úspešné overenie.

Ak chcete dôkladnejšie preskúmať zk-SNARKs, môžete si prečítať túto sériu článkov.

Naše riešenie

Základným stavebným kameňom modernizovaného riešenia dôkazov o rezervách je stále strom merkle. Vo vyššie uvedenom príklade by to vyzeralo takto:

Okrem stromu merkle udržiavame aj globálny stav, ktorý predstavuje zoznam celkových čistých zostatkov každého aktíva, ktoré vlastní každý zákazník Binance.

Na preukázanie našich rezerv vygenerujeme dôkaz zk-SNARK na vytvorenie stromu merkle. Pre každý set zostatkov používateľa, teda uzol listu stromu merkle, náš obvod zaistí, že:

  1. Zostatok každého aktíva tohto používateľa je zahrnutý do vyššie uvedeného zoznamu globálnych stavov.

  2. Celkový čistý zostatok používateľa nie je záporný. 

  3. Zmena koreňa stromu merkle je platná po aktualizácii informácií tohto používateľa na haš uzla listu.

Podrobnosti o implementácii nájdete v tejto technickej špecifikáciinašom zdrojovom kóde pre obvod (obmedzenia). 

V každom príklade preukazovania našich rezerv zverejníme:

1. Dôkaz merkle: haše pre každého používateľa (pre Alicu, modré uzly na obrázku vyššie).

2. dôkazy zk-SNARK a verejný vstup (haš zoznamu celkových čistých zostatkov každého aktíva a koreň merkle) obvodu pre všetkých používateľov. 

Overením dôkazu merkle sa používatelia môžu uistiť, že ich súvaha je zahrnutá v koreni stromu merkle. Overením dôkazu zk-SNARK sa používatelia môžu uistiť, že strom merkle spĺňa obmedzenia definované v obvode.

Bezpečnosť tohto riešenia závisí vo veľkej miere od nastavenia preukazovacieho kľúča a overovacieho kľúča. Pracujeme na decentralizovanom nastavení kľúčov. Pokiaľ ide o existujúce decentralizované dôveryhodné „obrady“ nastavenia, Ethereum ponúka dobrý príklad. Sme veľmi blízko k riešeniu MPC, aby bolo nastavenie bez dôverovania.

Výkonnosť

Vzhľadom na počet používateľov Binance, ktorých zostatky by mali byť zahrnuté, neexistuje spôsob, ako získať jediný dôkaz stromu merkle, ktorý by pokrýval všetkých používateľov naraz. Riešením tohto problému je rozdelenie používateľov do dávok po 864, aby bol k dispozícii obvod menšieho rozsahu a paralelné postupy preukazovania.

Pre dávku, ktorá obsahuje 864 používateľov, kde každý používateľ vlastní 350 rôznych aktív, predpokladajme, že každý zostatok aktív je v rozsahu [0, 2^64-1]. Pri 32-jadrovom serveri 128 GB je čas generovania dôkazu zk približne 110 sekúnd a čas overenia dôkazu je kratší ako 1 milisekunda. 

Binance spustí 1 000 dôkazov súčasne, aby vygenerovala dôkaz pre všetky účty za 2 hodiny. Náklady na tento overovací server na jednu hodinu sú približne 0,56 USD, takže celkové náklady na generovanie všetkých dôkazov zk pokrývajúcich všetkých používateľov by boli približne 1 000 USD.

Záver

Prvú iteráciu dôkazu pre používateľov vygenerovaných týmto novým riešením poskytneme v následnom oznámení o dôkazoch o rezervách. Spracovateľ údajov o používateľoch, preukazovateľ, obvod a overovateľ sú taktiež open-source a každá centralizovaná burza, ktorá sa spolieha na rovnaký model ako my, môže jednoducho vytvárať dôkazy pre svojich používateľov a aktíva. 

Dúfame, že to pomôže posunúť transparentnosť odvetvia digitálnych aktív na novú úroveň.  Pracujeme tiež na implementácii riešenia spomínaného v blogu Vitalika, aby sme dosiahli lepšiu výkonnosť, čo nám umožní poskytovať dôkaz častejšie za nižšie náklady.

Keďže toto je prvá verzia nášho mechanizmu zk-SNARK, tešíme sa na spätnú väzbu od komunity, aby sme mohli pokračovať v zlepšovaní systému.

Kód a ďalšie čítanie

Vybralo si nás 300 112 236 používateľov. Zistite prečo ešte dnes.