Vaig escriure un article que explicava Fa uns anys. Aquest projecte va ser el meu primer contacte real amb la tecnologia de prova de coneixement zero, i em va ajudar a entendre el seu funcionament intern. En aquest nou article, introduiré un concepte que es basa en Tornado Cash - essencialment una "blockchain embedded" com zCash. No és una veritable solució Layer 2, ja que tota l'activitat es produeix completament en cadena. Com funciona Tornado Cash Com funciona Tornado Cash? Atès que ja he escrit un article detallat sobre el tema, donaré un resum aquí. Si esteu interessats en el submarinisme tècnic, us recomano llegir els meus articles anteriors: La màgia de les proves de coneixement zero a través del codi font de Tornado Cash Tutorial de JavaScript per a proves de coneixement zero utilitzant snarkjs i circom Com vaig construir un sistema de votació anònim sobre la Blockchain d'Ethereum utilitzant la prova de coneixement zero En resum, Tornado Cash funciona tenint un dipòsit d'usuari ETH o un altre token en el contracte intel·ligent Tornado Cash, juntament amb un Cada empresa té un associat , que només és conegut a l'usuari. El contracte intel·ligent emmagatzema el compromís en un arbre Merkle. Més tard, l'usuari pot retirar els fons des d'una adreça diferent revelant el nul·litzador. commitment nullifier Com que només l'usuari coneix el nul·litzador, ningú pot vincular la retirada al dipòsit original. No obstant això, el contracte intel·ligent encara necessita verificar que el nul·litzador està vinculat a un compromís vàlid. Això mostra: zero-knowledge proof El compromís forma part de l'arbre Merkle (l'usuari realment dipositat en el contracte), i La nul·lització es va derivar d'aquest compromís. Cada anul·lador només es pot utilitzar una vegada, garantint que els fons no es puguin retirar més d'una vegada. En Tornado Cash, els hash de compromís i nul·lització es calculen de la següent manera: commitment_hash = HASH(nullifier, secret) nullifier_hash = HASH(nullifier) Atès que els hash criptogràfics són funcions unidireccionals (no es pot determinar l'entrada original de l'hash sense força bruta), és impossible enllaçar el hash. I el No obstant això, la seva relació pot ser demostrada mitjançant la prova de coneixement zero. commitment_hash nullifier_hash La principal limitació d'aquest sistema és que la quantitat transferida pot filtrar informació. Per exemple, si dipositeu 12,34 ETH i després retireu exactament 12,34 ETH, algú podria raonablement endevinar que els dos estan lligats. El concepte que descriuré en la següent secció aborda aquesta limitació, inspirant-se en com zCash resol el problema. Resoldre el problema de la denominació fixa La limitació dels imports fixos de dipòsit es pot superar introduint dos mètodes addicionals al costat del dipòsit i la retirada: i . split merge El La funció funciona de manera similar a una retirada, però en comptes d'especificar una adreça Ethereum, l'usuari proporciona dos nous compromisos. Una divisió permet a l'usuari dividir la quantitat emmagatzemada en dues parts - i el més important, això passa sense revelar les noves quantitats a ningú que observi la blockchain. split En el sistema actualitzat, el compromís està estructurat de la manera següent: commitment_hash = HASH(amount, nullifier, secret) Aquesta estructura és essencial perquè, durant una divisió, l'usuari ha de demostrar que els dos nous compromisos contenen quantitats que sumen exactament a l'import del compromís original. És fàcil veure com aquest mecanisme aborda el problema de denominació fixa en Tornado Cash. Per exemple, un usuari podria dipositar una quantitat arbitrària com 100 ETH, dividir-la en parts (per exemple, 60 ETH i 40 ETH), i després retirar-les a diferents adreces. Atès que els valors estan amagats dins dels compromisos, ningú pot vincular la retirada al dipòsit original basat només en la quantitat. També no és necessari retirar fons immediatament. els usuaris poden efectiva , funcionant com una mena de cartera virtual. Això es permet per la operació, que permet combinar dos compromisos emmagatzemats (referenciats a través dels seus nullifiers) en un únic nou compromís. store value in the smart contract itself merge Per realitzar una fusió, l'usuari ha de demostrar que el total en els dos compromisos d'entrada coincideix amb l'import en el nou compromís. Això genera una mena de , on cada usuari té un saldo privat i pot enviar fons lliurement a altres. Retirats només són necessaris quan algú vol sortir del sistema i gastar els seus actius fora d'aquesta capa privada. embedded ledger Configuració de la privacitat a Ethereum Anem a través d'un exemple per veure com funciona aquesta capa de privacitat en la pràctica: Alice crea un pool de 100 ETH en el contracte intel·ligent mitjançant el dipòsit de 100 ETH juntament amb un compromís. Bob fa el mateix, creant una piscina de 10 ETH amb el seu propi compromís. Alice vol enviar 10 ETH a Bob. Utilitza la funció de divisió, que consumeix el seu nul·lificador i divideix el 100 ETH original en dos nous compromisos: un per a 10 ETH i un per a 90 ETH. Alice xifra la nul·lització de 10 ETH utilitzant la clau pública de Bob i l'escriu a la blockchain. Bob desxifra el missatge utilitzant la seva clau privada i obté el nul·litzador. ara pot retirar el 10 ETH o fusionar-lo amb el seu saldo existent. Bob decideix mantenir els fons en el sistema, de manera que utilitza l'operació de fusió. proporciona el nul·litzador del seu propi compromís de 10 ETH i el rebut d'Alice, després crea un nou compromís per 20 ETH. Després de la transacció: Alice té un saldo restant de 90 ETH, Bob ara controla 20 ETH a la capa de privacitat. Com que els anul·ladors i els compromisos no porten informació visible públicament, i els missatges entre usuaris són xifrats, totes aquestes transaccions es produeixen. . completely anonymously Atès que els usuaris poden transferir lliurement valor dins del sistema sense revelar quantitats o identitats, sovint no hi ha necessitat de retirar. Amb una diferència clau: . Layer 2 blockchain everything happens on-chain Conclusion Conclusió Amb la introducció de dues operacions simples - i — podem millorar significativament el concepte original de Tornado Cash i transformar-lo en un complet A diferència dels mixers tradicionals limitats a les denominacions fixes, aquest model actualitzat és compatible amb , permetent als usuaris dividir, fusionar i transferir valor de manera flexible i anònima. split merge privacy-preserving transaction layer arbitrary amounts En aquest sentit, el sistema es basa en , , i En incorporar la quantitat directament en el compromís, els usuaris poden demostrar la correcció de les operacions de conservació de valor com la divisió i la fusió, sense revelar mai els imports reals o els participants involucrats. zero-knowledge proofs commitments nullifiers El resultat és una mena de Això funciona totalment Els usuaris poden emmagatzemar fons en privat, enviar actius els uns als altres utilitzant missatges xifrats, i només retirar quan necessiten interactuar amb la capa pública d'Ethereum. Amb la Crear un marc poderós per a la transferència de valor anònima i programable. embedded blockchain on-chain privacy features of zCash smart contract capabilities of Ethereum El millor de tot, és compatible amb , convertint-se en una base pràctica i escalable per a aplicacions que preserven la privacitat en l'ecosistema més ampli d'Ethereum. any EVM-based blockchain