Írtam egy részletes cikket, amely elmagyarázza Néhány évvel ezelőtt ez a projekt volt az első valódi találkozásom a nulla tudásbiztos technológiával, és segített nekem megérteni annak belső működését. Ebben az új cikkben bemutatok egy olyan koncepciót, amely a Tornado Cash-ra épül – lényegében egy zCash-szerű „beágyazott blokklánc”. Ez nem igazi Layer 2 megoldás, mivel minden tevékenység teljesen láncon történik. De mielőtt feltárnánk a mechanikát, vegyünk egy pillanatot, hogy átnézzük az alapokat. Hogyan működik a Tornado Cash Hogyan működik a Tornado Cash? Mivel már írtam egy részletes cikket a témában, itt adok egy összefoglalót. Ha érdekli a technikai mély búvárkodás, javaslom, hogy olvassa el korábbi cikkeimet: A zéró tudás varázsa a Tornado Cash forráskódján keresztül JavaScript Tutorial for Zero-Knowledge Proofs Snarkjs és circom használatával Hogyan építettem egy névtelen szavazási rendszert az Ethereum Blockchain-en a nulla tudás bizonyításával Röviden, a Tornado Cash úgy működik, hogy a felhasználó letétbe helyezi az ETH-t vagy egy másik tokent a Tornado Cash okos szerződésbe, valamint egy Minden egyes vállalkozásnak van egy társult , amely csak a felhasználó számára ismert. Az intelligens szerződés a kötelezettségvállalást egy Merkle-fán tárolja. Később a felhasználó a visszafizetőt feltárva eltérő címről vonhatja vissza a pénzt. commitment nullifier Mivel csak a felhasználó ismeri a visszavonást, senki sem tudja összekapcsolni a visszavonást az eredeti letétbe helyezéssel. Az okos szerződésnek azonban még mindig ellenőriznie kell, hogy a visszavonást érvényes kötelezettségvállalással kötik-e össze. Ez azt mutatja: zero-knowledge proof A kötelezettségvállalás a Merkle fa része (a felhasználó ténylegesen letétbe helyezte a szerződést), és A nullázó ebből az elkötelezettségből származott. Minden visszafizető csak egyszer használható, biztosítva, hogy a pénzeszközöket nem lehet többször kivonni. A Tornado Cashben a kötelezettségvállalás és a nullázó hashek a következőképpen kerülnek kiszámításra: commitment_hash = HASH(nullifier, secret) nullifier_hash = HASH(nullifier) Mivel a kriptográfiai hashek egyirányú funkciók (bruttó erő nélkül nem lehet meghatározni az eredeti bemenetet a hashből), lehetetlen összekapcsolni a És a Azonban a kapcsolatuk a nulla tudás bizonyítékával bizonyítható. commitment_hash nullifier_hash Ennek a rendszernek a fő korlátozása az, hogy az átvitt összeg információkat szivároghat. Például, ha 12,34 ETH-t helyez el, és később pontosan 12,34 ETH-t von le, valaki ésszerűen feltételezheti, hogy a kettő összefügg. A következő szakaszban bemutatott koncepció foglalkozik ezzel a korlátozással, inspirálva arra, hogy a zCash hogyan oldja meg a problémát. A rögzített megnevezés problémájának megoldása A rögzített betéti összegek korlátozása legyőzhető két további módszer bevezetésével a betét és a visszavonás mellett: és . split merge A A funkció hasonlóan működik, mint egy visszavonás, de ahelyett, hogy egy Ethereum címet adna meg, a felhasználó két új kötelezettséget biztosít.A megosztás lehetővé teszi a felhasználó számára, hogy a tárolt összeget két részre osztsa - és ami a legfontosabb, ez anélkül történik, hogy feltárná az új összegeket bárki számára, aki megfigyeli a blokkláncot. split A frissített rendszerben a kötelezettségvállalás a következőképpen van felépítve: commitment_hash = HASH(amount, nullifier, secret) Ez a struktúra elengedhetetlen, mert egy felosztás során a felhasználónak bizonyítania kell, hogy a két új kötelezettségvállalás pontosan az eredeti kötelezettségvállalás összegét tartalmazza. Könnyű látni, hogy ez a mechanizmus hogyan kezeli a Tornado Cashben a rögzített denominációs problémát. Például egy felhasználó 100 ETH-hoz hasonló önkényes összeget helyezhet el, feloszthatja azt részekre (például 60 ETH és 40 ETH), majd később eltávolítja őket különböző címekre. Mivel az értékek el vannak rejtve a kötelezettségvállalásokban, senki sem tudja az eredeti betéthez kötni a kivonást az összeg alapján. Nincs szükség azonnali visszavonásra. a felhasználók hatékonyan Ez egy virtuális pénztárca, amely lehetővé teszi a egy olyan művelet, amely lehetővé teszi, hogy két tárolt kötelezettségvállalást (amelyeket visszavonójukon keresztül utalnak) egyetlen új kötelezettségvállalássá egyesítsenek. store value in the smart contract itself merge Az egyesülés végrehajtásához a felhasználónak bizonyítania kell, hogy a két bemeneti kötelezettségvállalás teljes összege megegyezik az új kötelezettségvállalás összegével. Ez egyfajta , ahol minden felhasználó privát egyenleggel rendelkezik, és szabadon küldhet pénzeszközöket másoknak. A kivonások csak akkor szükségesek, ha valaki ki akar lépni a rendszerből, és eszközeit ezen privát rétegen kívül akarja költeni. embedded ledger Privacy-Preserving Layer az Ethereum-on Nézzünk egy példát, hogy lássuk, hogyan működik ez az adatvédelmi réteg a gyakorlatban: Alice 100 ETH-t hoz létre az intelligens szerződésben, ha 100 ETH-t helyez el egy kötelezettségvállalással együtt. Bob ugyanezt teszi, és 10 ETH-t hoz létre saját elkötelezettségével. Alice 10 ETH-t akar küldeni Bobnak.A split funkciót használja, amely elfogyasztja a nullázót, és az eredeti 100 ETH-t két új kötelezettségvállalásra osztja: egy 10 ETH-ra és egy 90 ETH-ra. Alice titkosítja a 10 ETH nullázót Bob nyilvános kulcsával, és írja le a blokkláncra. Bob titkosítja az üzenetet a privát kulccsal, és megkapja a nullázót. Mostantól akár visszavonhatja a 10 ETH-t, vagy összeolvadhat a meglévő egyenlegével. Bob úgy dönt, hogy megtartja az alapokat a rendszerben, így a fúziós műveletet használja. a saját 10 ETH kötelezettségvállalásából és az Alice-től kapott kötelezettségvállalásból adja meg a nullát, majd létrehoz egy új kötelezettséget 20 ETH-ra. A tranzakció után: Alice 90 ETH egyenleggel rendelkezik, Bob most 20 ETH-t irányít az adatvédelmi rétegben. Mivel a visszafordítók és a kötelezettségvállalások nem hordoznak nyilvánosan látható információkat, és a felhasználók közötti üzenetek titkosítva vannak, mindezek a tranzakciók megtörténnek. . completely anonymously Mivel a felhasználók szabadon átadhatják az értéket a rendszerben anélkül, hogy feltárnák az összegeket vagy az identitásokat, gyakran nincs szükség visszavonásra. Egy kulcsfontosságú különbséggel: . Layer 2 blockchain everything happens on-chain Conclusion következtetés Két egyszerű művelet bevezetése - és - jelentősen javíthatjuk az eredeti Tornado Cash koncepciót, és teljes körűvé alakíthatjuk Az Ethereumon. A hagyományos keverőkkel ellentétben, amelyek rögzített jelölésekre korlátozódnak, ez a frissített modell támogatja Lehetővé teszi a felhasználók számára, hogy rugalmasan és névtelenül osztják, egyesítsék és átruházzák az értéket. split merge privacy-preserving transaction layer arbitrary amounts A rendszer lényegében a az , és Az összeg közvetlenül a kötelezettségvállalásba való beillesztésével a felhasználók bizonyítani tudják az értékmegőrző műveletek, például a szétválás és az egyesülés helyességét anélkül, hogy valaha is feltárnák a tényleges összegeket vagy a résztvevőket. zero-knowledge proofs commitments nullifiers Az eredmény egyfajta Teljesen működik A felhasználók magáncélúan tárolhatnak pénzeszközöket, eszközöket küldhetnek egymásnak titkosított üzenetek segítségével, és csak akkor vonhatnak vissza, ha kölcsönhatásba kell lépniük a nyilvános Ethereum réteggel. Azokkal a Erőteljes keretet hoz létre a névtelen, programozható értékátadáshoz. embedded blockchain on-chain privacy features of zCash smart contract capabilities of Ethereum A legfontosabb, hogy a rendszer kompatibilis a Ezáltal praktikus és skálázható alapot teremt a magánélet-megőrző alkalmazások számára a szélesebb Ethereum ökoszisztémában. any EVM-based blockchain