Написах подробна статия, която обяснява преди няколко години. Този проект беше първата ми истинска среща с технологията с нулеви познания и ми помогна да разбера вътрешното й функциониране. В тази нова статия ще представя концепция, която се основава на Tornado Cash – по същество zCash-подобен „вграден блокчейн“. Това не е истинско решение Layer 2, тъй като цялата дейност се извършва изцяло на веригата. Как работи Tornado Cash Как работи Tornado Cash? Тъй като вече съм написал подробна статия по темата, ще дам обобщение тук.Ако се интересувате от техническото дълбоко гмуркане, препоръчвам да прочетете предишните ми статии: Магията на доказателствата за нулеви знания чрез изходния код на Tornado Cash JavaScript Tutorial for Zero-Knowledge Proofs Използване на snarkjs и цирк Как изградих анонимна система за гласуване върху блокчейна на Ethereum, използвайки доказателство за нулеви знания Накратко, Tornado Cash работи, като има потребителски депозит ETH или друг токен в интелигентния договор Tornado Cash, заедно с Всяка организация има асоцииран , което е известно само на потребителя. Умният договор съхранява ангажимента в Merkle дърво. По-късно потребителят може да изтегли средствата от различен адрес, като разкрие нулиращия. commitment nullifier Тъй като само потребителят знае обезсилвателя, никой не може да свърже изтеглянето с първоначалния депозит. Въпреки това, интелигентният договор все още трябва да провери, че обезсилвателят е свързан с валиден ангажимент. Това показва: zero-knowledge proof Ангажиментът е част от Merkle дървото (потребителят наистина е депозиран в договора), и Нивото на обезщетение произтича от този ангажимент. Всеки анулиращ може да се използва само веднъж, като се гарантира, че средствата не могат да бъдат изтеглени повече от веднъж. В Tornado Cash хашите за ангажимент и нулиране се изчисляват, както следва: commitment_hash = HASH(nullifier, secret) nullifier_hash = HASH(nullifier) Тъй като криптографските хаши са еднопосочни функции (не можете да определите първоначалния вход от хаша без брутна сила), е невъзможно да свържете и на Въпреки това, връзката им може да бъде доказана с помощта на доказателство за нулево знание. commitment_hash nullifier_hash Основното ограничение на тази система е, че прехвърлената сума може да изтича информация. Например, ако депозирате 12.34 ETH и по-късно изтеглите точно 12.34 ETH, някой може разумно да предположи, че двете са свързани. Концепцията, която ще опиша в следващия раздел, се занимава с това ограничение, като черпи вдъхновение от това как zCash решава проблема. Решаване на проблема с фиксираното наименование Ограничението на фиксираните суми за депозит може да бъде преодоляно чрез въвеждане на два допълнителни метода заедно с депозит и теглене: и . split merge на Функцията работи подобно на теглене, но вместо да посочи адрес на Ethereum, потребителят предоставя два нови ангажимента. разделянето позволява на потребителя да раздели съхранената сума на две части - и важното е, че това се случва, без да разкрива новите суми на всеки, който наблюдава блокчейна. split В актуализираната система ангажиментът е структуриран по следния начин: commitment_hash = HASH(amount, nullifier, secret) Тази структура е от съществено значение, защото по време на разделяне потребителят трябва да докаже, че двата нови ангажимента съдържат суми, които се добавят точно към сумата на първоначалния ангажимент. Лесно е да се види как този механизъм се справя с проблема с фиксираната деноминация в Tornado Cash. Например, потребителят може да депозира произволна сума като 100 ETH, да я раздели на части (например 60 ETH и 40 ETH) и по-късно да ги изтегли на различни адреси. Тъй като стойностите са скрити в ангажиментите, никой не може да свърже изтеглянето с първоначалния депозит въз основа само на сумата. Също така не е необходимо незабавно да се изтеглят средства. , функционира като вид виртуален портфейл. Операция, която позволява два съхранени ангажимента (препратени чрез техните нулификатори) да бъдат комбинирани в един нов ангажимент. store value in the smart contract itself merge За да извърши сливане, потребителят трябва да докаже, че общата сума в двата входящи ангажимента съответства на сумата в новия ангажимент. Това поражда един вид , където всеки потребител има частен баланс и може свободно да изпраща средства на други. Изтеглянията са необходими само когато някой иска да излезе от системата и да похарчи активите си извън този частен слой. embedded ledger Защита на неприкосновеността на личния живот в Ethereum Нека да разгледаме един пример, за да видим как този слой за поверителност работи на практика: Алис създава 100 ETH на интелигентния договор, като депозира 100 ETH заедно с ангажимент. Боб прави същото, създавайки басейн от 10 ETH със собствен ангажимент. Алис иска да изпрати 10 ETH на Боб. Тя използва функцията за разделяне, която консумира нейния нулифьор и разделя оригиналните 100 ETH на две нови ангажименти: едно за 10 ETH и едно за 90 ETH. Алис криптира 10 ETH нулиращия с помощта на публичния ключ на Боб и го записва в блокчейна. Боб дешифрира съобщението с помощта на своя частен ключ и получава нулевият ключ. Сега той може да изтегли 10 ETH или да го обедини със съществуващия си баланс. Боб избира да запази средствата в системата, така че използва операцията за сливане. Той осигурява нулевият от собствения си ангажимент от 10 ETH и този, получен от Алис, след което създава нов ангажимент за 20 ETH. След приключване на сделката: Алис има остатъчен баланс от 90 ETH, Боб сега контролира 20 ETH в слоя за поверителност. Тъй като нулификаторите и ангажиментите не носят публично видима информация, а съобщенията между потребителите са криптирани, всички тези транзакции се случват. . completely anonymously Тъй като потребителите могат свободно да прехвърлят стойност в системата, без да разкриват суми или идентичности, често няма нужда да се изтеглят. С една ключова разлика: . Layer 2 blockchain everything happens on-chain Conclusion Заключението С помощта на две прости процедури - и — можем значително да подобрим оригиналната концепция Tornado Cash и да я превърнем в пълноценна За разлика от традиционните миксери, ограничени до фиксирани деноминации, този подобрен модел поддържа , което позволява на потребителите да разделят, сливат и прехвърлят стойност гъвкаво и анонимно. split merge privacy-preserving transaction layer arbitrary amounts В основата си системата разчита на , и Чрез вграждане на сумата директно в ангажимента, потребителите могат да докажат коректността на операциите за запазване на стойността като разделяне и сливане, без да разкриват действителните суми или участниците. zero-knowledge proofs commitments nullifiers Резултатът е един вид Това функционира изцяло Потребителите могат да съхраняват средства частно, да изпращат активи един на друг с помощта на криптирани съобщения и да се оттеглят само когато трябва да си взаимодействат с обществения слой на Ethereum. С това на Създаване на мощна рамка за анонимен, програмируем трансфер на стойност. embedded blockchain on-chain privacy features of zCash smart contract capabilities of Ethereum Най-важното е, че този модел е съвместим с , което го прави практична и мащабируема основа за приложения за защита на неприкосновеността на личния живот в по-широката екосистема на Ethereum. any EVM-based blockchain