Напишав детална статија објаснувајќи пред неколку години. Овој проект беше мојата прва вистинска средба со технологијата со нула знаење, и ми помогна да го разберам нејзиното внатрешно функционирање. Во оваа нова статија, ќе воведам концепт кој се базира на Tornado Cash – во суштина „вграден блокчејн“ како zCash. Тоа не е вистинско решение Layer 2, бидејќи целата активност се случува целосно на синџирот. Како работи Tornado Cash Како работи Tornado Cash? Бидејќи веќе напишав детален напис на оваа тема, ќе дадам резиме тука.Ако сте заинтересирани за техничкото длабоко нуркање, препорачувам да ги прочитате моите претходни статии: Магијата на нула знаење докази преку изворниот код на Tornado пари JavaScript Tutorial for Zero-Knowledge Proofs Користење на snarkjs и circom Како го изградив системот за анонимно гласање на блокчејнот на Ethereum со користење на доказ за нула знаење На кратко, Tornado Cash работи со тоа што корисникот има депозит ETH или друг токен во паметниот договор Tornado Cash, заедно со Секоја заедница има придружник , која е позната само на корисникот. Паметниот договор ја чува обврската во дрво на Меркл. Подоцна, корисникот може да ги повлече средствата од друга адреса со откривање на нулфиерот. commitment nullifier Бидејќи само корисникот го знае поништувачот, никој не може да го поврзе повлекувањето со оригиналниот депозит. Сепак, паметниот договор сè уште треба да провери дека поништувачот е поврзан со валидна обврска. Ова го покажува: zero-knowledge proof Обврската е дел од дрвото Меркл (корисник навистина депозиран во договорот), и Неуспехот произлегува од таа обврска. Секој анулирач може да се користи само еднаш, осигурувајќи дека средствата не можат да се повлечат повеќе од еднаш. Во 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 Најдобро од сè, овој модел е компатибилен со , што го прави практична и скалабилна основа за апликации за зачувување на приватноста во поширокиот Етереум екосистем. any EVM-based blockchain