paint-brush
EIP-7503: Červí diery s nulovými znalosťami pre transakcie Private Ethereumpodľa@2077research
Nová história

EIP-7503: Červí diery s nulovými znalosťami pre transakcie Private Ethereum

podľa 2077 Research44m2024/12/16
Read on Terminal Reader

Príliš dlho; Čítať

EIP-7503 je riešenie na vrstve protokolu na vytváranie súkromných prenosov v reťazci v sieti Ethereum. EIP-7503 sa líši od riešení ochrany osobných údajov na aplikačnej vrstve, ako je Tornado Cash, a ponúka lepšiu hodnovernú popierateľnosť, odolnosť voči cenzúre a skutočné súkromie pre používateľov Ethereum.
featured image - EIP-7503: Červí diery s nulovými znalosťami pre transakcie Private Ethereum
2077 Research HackerNoon profile picture

EIP-7503: Zero-Knowledge Wormholes je návrh na zlepšenie Etherea (EIP), ktorý zavádza mechanizmus na uskutočňovanie prenosov zachovávajúcich súkromie na Ethereum. Aj keď sme videli veľa snáh, aby sa prevody v reťazci stali súkromnými, vrátane mixérov kryptomien, ako je Tornado Cash, EIP-7503 je riešenie na vrstve protokolu, vďaka ktorému je Ethereum predvolene súkromné .


Toto je dôležitá úvaha: prístupy k ochrane súkromia na aplikačnej vrstve, ako je Tornado Cash, sú „voliteľné“, čo má často negatívne dôsledky pre používateľov. Aplikácie zamerané na ochranu súkromia sú tiež náchylnejšie na cenzúru; napríklad mnohí používatelia (najmä občania USA) neboli schopní komunikovať s Tornado Cash po tom, čo Úrad pre kontrolu zahraničných aktív (OFAC) v roku 2022 zaradil na čiernu listinu zmluvných adries protokolu .


Napriek sankciám OFAC, Tornado Cash stále beží z niekoľkých dôvodov:

  1. Základné zmluvy, ktoré implementujú funkciu zmiešavania aktív Tornado Cash, sú nemenné a trvalo uložené v reťazci. Od hlavného tornádo.hotovosť webová stránka prešla do režimu offline, nezávislé projekty opätovne použili kód zmluvy z pôvodnej implementácie Tornado Cash na vytvorenie nových variantov, napr Tornado Cash Nova .
  2. Protokol Tornado Cash je väčšinou „neovládateľný“. Zakladajúci tím Tornado Cash potom odstránil administratívne kontroly vykonanie núdzovej aktualizácie opraviť chybu, ktorá by útočníkom umožnila vytvoriť platné dôkazy o falošných vkladoch a odčerpať (legitímne uložené) finančné prostriedky. Zakladajúci tím teda nemohol jednostranne aktivovať killswitch a byť nútený „vypnúť“ protokol napriek ich zatknutie v roku 2023 .


Vyššie uvedené faktory znamenajú, že ľudia sú dnes stále schopní používať Tornado Cash, aj keď analytici naznačujú, že výrobcovia blokov na Ethereu upúšťajú od transakcií, ktoré interagujú so zmluvami protokolu . Avšak, rovnako ako v časoch pred sankciami OFAC, nie každá transakcia smerovaná cez protokol Tornado Cash mixer bola legitímna. Na ilustráciu, článok od Arkham Intelligence naznačuje, že najmenej dva významné útoky v roku 2023 (útoky Euler Finance v hodnote 197 miliónov dolárov a 60 miliónov dolárov Anubis DAO rug-pull) boli buď financované z prostriedkov stiahnutých z Tornado Cash, alebo boli použité mixéry na pranie ukradnutých vecí. prostriedky a skryť odchádzajúce prevody.


Vzhľadom na to, že Tornado Cash nevyriešil problém zlých hercov, ktorí zneužívajú súkromie na reťazci, prečo by sme chceli implementovať funkciu na vykonávanie súkromných prenosov na úrovni protokolu? Nie je to riskantné ? Prečo je vôbec potrebné mať v prvom rade súkromné transakcie? Nie sú blockchainy ako Ethereum už anonymné a „nevystopovateľné“?


To všetko sú legitímne otázky, o ktorých budeme diskutovať v tomto článku. Poskytneme prehľad na vysokej úrovni o dôležitosti finančného súkromia a preskúmame, prečo verejné blockchainy ako Ethereum nemôžu zaručiť súkromie bez vykonania zmien. Potom analyzujeme prístup EIP-7503 k umožneniu súkromných platieb na Ethereum a prediskutujeme potenciálne výhody a nevýhody prijatia EIP-7503.


Poďme sa ponoriť!

Príprava javiska: Prečo by sme sa mali starať o súkromie v reťazci?

Keď hovoríme o „súkromných transakciách“ alebo „anonymných transakciách“ v kontexte elektronických platieb typu peer-to-peer (P2P), opisujeme dve vlastnosti: nevysledovateľnosť a neprepojiteľnosť . Obe vlastnosti sú uvedené Nicolasom van Saberhagenom v dokumente CryptoNote :

  • Nevystopovateľné : Transakcia je nevysledovateľná, ak externý pozorovateľ nemôže spoľahlivo identifikovať odosielateľa. Predpokladajme, že Alice sa priatelí s Bobom a Carol a Alice dostane prevodom dva žetóny – nevysledovateľnosť znamená, že nikto nemôže povedať, kto (Bob alebo Carol) poslal žetóny Alici.

  • Unlinkable : Transakcia je neprepojiteľná, ak príjemcu nemôže spoľahlivo identifikovať externý pozorovateľ. Ak Bob a Carol pošlú tokeny Alici v samostatných transakciách, neprepojiteľnosť znamená, že nikto nemôže zistiť, či Bob a Carol poslali tokeny tej istej osobe.


Väčšinu (ak nie všetky) riešenia ochrany osobných údajov v reťazci možno kategorizovať na základe toho, ktoré z vyššie uvedených požiadaviek spĺňajú. Miešačky kryptomien , CoinJoin a kruhové podpisy sa primárne zaoberajú utajovaním informácií o odosielaní adries a zabezpečením nedohľadateľnosti finančných prostriedkov. Identita odosielateľa je chránená pomocou rôznych mechanizmov, ale ktokoľvek môže vidieť, kto peniaze dostal.


Na porovnanie, protokoly zamerané na súkromie ako Monero , Zcash , Liquid Network a Aztec v1 ponúkajú varianty „tienených“ alebo „dôverných“ transakcií a zaručujú neprepojiteľnosť transakcií. Tienenú alebo dôvernú transakciu je ťažké prepojiť s konkrétnym príjemcom, pretože podrobnosti o adrese príjemcu (ako aj o množstve a type preneseného tokenu) sú utajené. Stealth adresy sú ďalším prístupom k zachovaniu neprepojiteľnosti: používatelia generujú dočasnú (krátkodobú) adresu k vkladu, čím blokujú pokusy o prepojenie dvoch prevodov na rovnakú adresu.


Vyššie uvedené prístupy k zlepšeniu súkromia transakcií majú jedinečné silné a slabé stránky, ktoré stručne preskúmame neskôr. Teraz však upriamime svoju pozornosť na základnú otázku: „Prečo vôbec záleží na finančnom súkromí?“ Keďže venujeme čas a úsilie analyzovaniu návrhu na prinesenie súkromných a anonymných transakcií do Etherea, mohli by sme tiež uviesť dôvod na umožnenie súkromia transakcií na Ethereu.


Finančné súkromie je dôležité, pretože súkromie je základným ľudským právom . Právo na súkromie dáva každému jednotlivcovi právomoc rozhodnúť sa, aké informácie chce verejne zdieľať, a ponechať si kontrolu nad tým, ako, kedy a kde sa zdieľajú osobné údaje (PII). „Osobne identifikovateľné informácie“ je široká kategória, ktorá zahŕňa akékoľvek informácie, ktoré možno použiť na odhalenie identity jednotlivca – vrátane podrobností o finančných aktivitách (napr. história nákupov, elektronické prevody a zárobky).


Nižšie uvádzame niekoľko príkladov toho, ako môžu jednotlivci uplatniť svoje práva na (finančné) súkromie:

  • Nákup antikoncepcie online bez toho, aby sa vaša rodina pýtala, prečo nechcete zvýšiť počet zamestnancov na budúcoročnom Dni vďakyvzdania. Predstavte si, že banky zverejnili informácie o online transakciách, aby stará mama Beth vedela, že ju Cheryl aktívne pripravuje o vnúčatá. Aké nepríjemné by sa veci stali?
  • Darovanie charitatívnej organizácii bez zverejnenia podrobností o tom, koľko ste darovali alebo či ste vôbec darovali. Je to dôležité, ak prispievate na charitatívnu vec, ktorá môže v určitých kruhoch stále dvíhať obočie – alebo nenávidíte predvádzanie a upútavanie (zbytočnej) pozornosti na vaše filantropické aktivity.
  • Darovanie na politickú vec, s ktorou nechcete byť verejne spájaní. Vezmime si napríklad Vitalika Buterina (pôvodom z Ruska), ktorý daruje ukrajinským silám bojujúcim proti ruskej invázii – vzhľadom na Vitalikovu národnosť by verejný dar pravdepodobne vyvolal zbytočnú PR krízu, takže finančné prostriedky sa namiesto toho posielali prostredníctvom Tornado Cash .
  • Uskutočňovanie platieb bez odhalenia podrobností o vašej finančnej situácii zlým hráčom. Nechcete, aby niekto vedel, že ste minulý rok zarobili X $ hrubého príjmu, čo mu poskytne dostatok informácií na vytvorenie plánu na ukradnutie týchto peňazí (napr. pomocou podvodov a iných taktík sociálneho inžinierstva).
  • Platenie zamestnancov bez zverejnenia informácií o zárobkoch zamestnancov. Možno by ste radšej uchovali podrobnosti o finančných aktivitách vašej spoločnosti v súkromí alebo vaši zamestnanci chcú tieto informácie ponechať v súkromí.

Tieto príklady poskytujú praktické príklady použitia pre finančné súkromie, ale tiež zdôrazňujú detail, ktorý kritici práv na súkromie často neuznávajú: súkromie nie je niečo, o čom si myslíme, že potrebujeme, až keď bude príliš neskoro. Obvyklé "čo skrývaš?" odpoveď nezohľadňuje určité situácie, keď zúčastnené strany chcú o finančnej transakcii uniknúť málo alebo žiadne informácie. A aj keby ľudia chceli veci zo svojvoľných dôvodov skrývať, prečo ich obťažovať, ak ich túžba po utajení neohrozuje verejné zdravie a bezpečnosť?


Je lepšie mať a nepotrebovať, ako potrebovať a nemať. - Franz Kafka

Riešenie problému ochrany osobných údajov Etherea s EIP-7503

Na rozdiel od skorých popisov zástancov a kritikov, verejné blockchainy ako Ethereum a Bitcoin nie sú ani zďaleka anonymné alebo súkromné. Tieto dva pojmy sa často spájajú, ale znamenajú dve rôzne veci:

  • Súkromie znamená, že vaše tajné akcie sú vysledovateľné k vašej verejnej identite, ale podrobnosti o vašich akciách sú skryté. Predpokladajme, že posielate šifrovaný e-mail pomocou nástroja PGP ( Pretty Good Privacy ): poštové servery vedia, že ste poslali e-mail inej (identifikovateľnej) strane, ale nedokážu prečítať obsah e-mailu. Toto je tajná akcia, pretože nikto iný okrem príjemcu nevie, že ste poslali e-mail.

  • Anonymita znamená, že vaše verejné činy sú oddelené od vašej verejnej identity. Ak chcete použiť predchádzajúci príklad: hypotetická anonymná e-mailová služba typu peer-to-peer by mohla zahmliť pôvod a cieľ šifrovaného e-mailu a zároveň zachovať verejný záznam všetkých e-mailov smerovaných cez sieť. Toto je verejná akcia, pretože záznam o tom, že niekto poslal e-mail, je viditeľný pre každého účastníka v sieti, ale e-mailové adresy sú reťazce hash ( 0xdeadbeef ) a nie mená ( [email protected] ).


Ethereum nie je súkromné, pretože blockchain uchováva záznam o každej transakcii, vrátane toho, koľko bolo prevedené a aké akcie na reťazci transakcia vykonala. Ethereum tiež nie je anonymné, pretože informácie o účtoch vykonávajúcich transakcie na blockchaine (identifikované adresami ) sú verejné. Pre svoj účet Ethereum nemôžete použiť skutočné meno, ako napríklad „Alice Hopkins“, ale používanie rovnakej adresy pre každú transakciu umožňuje forenznej analýze blockchainu korelovať transakcie s vašou identitou v reálnom svete – pomocou techník, ako je monitorovanie adries IP , zoskupovanie adries a graf. analýza .


Zakladatelia projektu Bored Ape Yacht Club (BAYC) NFT boli doxxovaní spoločnosťou BuzzFeed v roku 2022.


Ethereum je teda presne opísané ako pseudonymné a nemôže zaručiť anonymitu ani súkromie. Čo je zlé pre platformu, od ktorej sa očakáva, že sa stane vyrovnávacou vrstvou pre budúci Internet hodnoty. Pre kontext banky už poskytujú používateľom určitú úroveň súkromia ukladaním finančných údajov v centralizovaných databázach s prísnymi mechanizmami kontroly prístupu, aby sa zabránilo neoprávnenému prístupu.


Ide o „pseudo-súkromie“, keďže banka a poskytovateľ databázovej infraštruktúry majú prístup k týmto informáciám a môžu si s nimi robiť, čo chcú (napr. zmraziť platby do určitých krajín, aby boli v súlade so sankciami na základe analýzy miesta určenia prevodu). Ale v klasickom prípade „vybrať si medzi diablom a hlbokým modrým morom“ si priemerný jednotlivec pravdepodobne vyberie trochu súkromia pred žiadnym súkromím, čo vylučuje otvorenie účtu Ethereum a viditeľnosť každej akcie v reťazci.


Mnohí si tento problém uvedomili, najmä preto, že odvádza používateľov od decentralizovaných technológií ako Ethereum k centralizovaným riešeniam, ktoré ponúkajú o niečo lepšie záruky súkromia na úkor odolnosti voči cenzúre a transparentnosti (okrem iného). Napríklad Vitalikovo Tri prechody poskytuje skvelý argument pre dôležitosť súkromia pre vyhliadky Etherea na masovú adopciu:


Bez tretieho [prechodu na prenosy zachovávajúce súkromie] Ethereum zlyhá, pretože mať všetky transakcie (a POAP atď.) verejne dostupné, aby ich mohol vidieť doslova každý, je pre mnohých používateľov príliš vysoká obeta na ochranu súkromia a každý prejde na centralizované riešenia, ktoré aspoň trochu skryť svoje údaje. — Vitalik Buterin


EIP-7503 je snaha napraviť niektoré z vyššie opísaných problémov, najmä nedostatok anonymity pre odosielateľov transakcií. Návrh zavádza spôsob, ako adresy úmyselne zničiť éter (ETH) odoslaním prostriedkov na nevyčerpateľnú adresu a vygenerovať dôkaz ZK-SNARK na overenie vkladu na nevyčerpateľnú adresu. Ak tento dôkaz prejde overením, množstvo tokenov ETH (rovnajúce sa zostatku nevyčerpateľnej adresy) sa vyrazí na novú adresu podľa výberu používateľa, čím sa preruší spojenie medzi odosielacou a prijímacou adresou zapojenou do prevodu finančných prostriedkov.


EIP-7503 si požičiava nápady z existujúcich protokolov ochrany osobných údajov na zabezpečenie transakcií zachovávajúcich súkromie v Ethereu. Návrh napríklad sťažuje sledovanie finančných prostriedkov prijatých v transakcii razenia ku konkrétnemu zdroju tým, že celý súbor adries Ethereum so zostatkom ETH a nulovými odchádzajúcimi transakciami zmení na súbor anonymity . Nemôžete ľahko identifikovať adresu A zodpovednú za spálenie ETH, ktorá bola znovu vyrazená v ďalšej transakcii: A môže byť jedna z miliónov adries, ktoré majú nenulový zostatok, ale neiniciovali transakciu Ethereum.


Je to podobné myšlienke zmiešať finančné prostriedky z rôznych zdrojov do jedného fondu a umožniť vkladateľom vybrať prostriedky z fondu pomocou inej adresy. EIP-7503 sa však priaznivo porovnáva s miešačmi kryptomien, ako je Tornado Cash, pretože poskytuje hodnoverné popieranie . Pravdepodobné popieranie je koncept, ktorý preskúmame neskôr, ale všetko, čo potrebujete vedieť, je, že vám (používateľovi, ktorý vykonáva súkromný prevod EIP-7503) umožňuje odmietnuť, aby ste niekedy vykonali súkromnú transakciu.


Dôležitou vlastnosťou EIP-7503 je hodnoverné popieranie, ktoré bráni externým pozorovateľom deanonymizovať odosielateľov súkromných transakcií. To môže zabrániť opakovaniu fiaska Tornado Cash, v ktorom boli niektoré adresy na čiernej listine a obmedzený prístup k dapps, exchanges a DeFi protokolom, pretože on-chain forenzná analýza odhalila historické interakcie s Tornado Cash – aj keď niektoré z týchto účtov interagovali s Tornado Cash. z benígnych dôvodov (napr. súkromné darcovstvo).


EIP-7503 si tiež požičiava z iných protokolov zameraných na súkromie, ako sú Zcash a Aztec v1, pomocou kryptografických dôkazov na overenie transakcií bez odhalenia podrobností o transakciách. Overovanie transakcií spôsobom zachovávajúcim súkromie zaisťuje, že Ethereum môže bezpečne podporovať súkromné prevody bez toho, aby sa podkopal existujúci bezpečnostný model, ktorý závisí od distribuovanej siete uzlov, ktoré znova vykonávajú každú transakciu, aby potvrdili jej správnosť. Podrobnosti o tom, ako EIP-7503 používa ZK-SNARKs pod kapotou na podporu bezpečného vykonávania súkromných prevodov na Ethereum, preskúmame v nasledujúcich častiach (okrem iného).


Upozornenie *: Napriek tomu, že rozlišujem súkromie od anonymity, v tomto článku budem zameniteľne používať výrazy „súkromné“ a „anonymné“, aby som veci zjednodušil a zabránil zmätku pre čitateľov, ktorí sú zvyknutí považovať tieto dva pojmy za jeden a ten istý. Okrem toho EIP-7503 obsahuje prvky anonymity (prerušenie spojení medzi odosielateľmi a príjemcami) a súkromia (navrhované rozšírenie súčasného návrhu umožní používateľom skryť sumy vkladov a výberov).*

Prehľad EIP-7503: Zero-Knowledge Wormholes

Pracovný tok súkromných prevodov definovaných v EIP-7503. (zdroj)


Na vysokej úrovni funguje EIP-7503 nasledovne:

1. Používatelia „spália“ ETH tak, že ho pošlú na adresu, ktorej zostatok je nevyčerpateľný

Adresa je nevyčerpateľná, ak nikto nemá prístup k súkromnému kľúču potrebnému na podpísanie (platnej) transakcie, ktorá sa minie zo zostatku. Je to podobné ako posielanie prostriedkov na nulovú adresu : účet nemá žiadny súkromný kľúč, vďaka čomu je akýkoľvek majetok, ktorý dostane, neodvolateľný alebo „spálený“.


Nulová adresa je najbohatším účtom v Ethereu s viac ako 280 miliónmi dolárov v tokenoch. Okrem niekoľkých nešťastných používateľov, ktorí náhodne posielajú prostriedky na nulovú adresu, veľká väčšina používateľov, ktorí posielajú tokeny odoslané na nulovú adresu, buď vytvára zmluvu (ktorá vyžaduje nastavenie nulovej adresy ako príjemcu), alebo si tieto tokeny zámerne berie. mimo obehu.


Pôvodný štandard tokenov ERC-20 nešpecifikuje funkcie na zníženie zásoby tokenu, čo znamená, že staršie tokeny ako WETH (zabalený éter) nemajú žiadny spôsob, ako zabezpečiť, aby používatelia stiahli zabalené aktíva z obehu pred výberom pôvodného vkladu. Odoslaním tokenov WETH na nulovú adresu sa však stanú nepoužiteľnými a simuluje zníženie cirkulujúcej zásoby WETH zakaždým, keď sa ETH stiahne zo zmluvy o obale WETH. Ak vás zaujíma, ako WETH udržiava pomer 1:1 s natívnym ETH, máte odpoveď.


EIP-7503 využíva podobný mechanizmus, ktorý umožňuje používateľom napaľovať ETH a raziť tokeny na inú adresu v Ethereu s malým otočením. Namiesto toho, aby používatelia žiadali o zaslanie prostriedkov na jedinú adresu na vypaľovanie, EIP-7503 vyžaduje, aby používatelia vygenerovali jedinečnú adresu na vypaľovanie pre každú transakciu pred razením ETH na inú adresu.

2. Používatelia si vytvoria súkromný dôkaz o spálení alebo „potvrdenie o spálení“, ktorý dokazuje, že v predchádzajúcej transakcii spálili určité množstvo ETH odoslaním na adresu spálenia

Posielanie prostriedkov na adresu na vypaľovanie (vytvorenú podľa špecifikácie EIP-7503) je ekvivalentom vyhodenia peňazí do červej diery – nikdy sa nedá získať späť. Ale môžete dokázať znalosť niečoho, čo bolo poslané do červej diery pomocou ZK-SNARK ( Z ero- Knowledge S uccinct A rgument of Knowledge ); odtiaľ pochádza výraz „červí diery s nulovými znalosťami“.


Dôkaz o vypálení je súkromný, pretože používateľ musí iba dokázať, že poslal tokeny na nepoužiteľnú adresu A bez toho, aby sa A objavilo v otvorenom texte. Generovanie proof-of-burn vyžaduje preukázanie, že adresa napálenia je skutočne nepoužiteľná. prečo? Požiadanie používateľov, aby spálili natívne ETH pred razením nových tokenov ETH na adresu príjemcu, zaisťuje paritu (v hodnote a zameniteľnosti) oboch typov aktív, ak používatelia môžu neskôr vybrať prostriedky z adresy na spaľovanie, 1:1 kolík medzi natívnym ETH a razeným ETH tokeny by prestali existovať.

3. Používatelia razia tokeny ETH odoslaním súkromného potvrdenia o spálení úplnému uzlu, ktorý používateľovi pripíše sumu zodpovedajúcu vkladu prevedenému na adresu spálenia

EIP-7503 predstavuje nový typ transakcie v EVM (Virtuálny stroj Ethereum), ktorý akceptuje proof-of-burn a príjemcu ako vstupy a razí nové ETH tokeny na odosielaciu adresu, ak je dôkaz úspešne overený. Aby sa predišlo dvojitému razeniu ETH pre tú istú transakciu napálenia, ku každému proof-of-burnu je pripojená špeciálna hodnota „nullifier“ na sledovanie používania adresy.


Ak je ETH odoslaný na nepoužiteľnú adresu úspešne vyrazený, nullifier bráni nepoctivému používateľovi vygenerovať nový platný proof-of-burn pre prostriedky odoslané predtým na adresu (tj útoky s dvojitým razením). Dôležité je, že nullifier identifikuje použitú adresu bez úniku informácií o adrese v otvorenom texte.


S týmto úvodom na vysokej úrovni sa teraz môžeme ponoriť do podrobností implementácie EIP-7503 na nízkej úrovni. Nasledujúce časti budú diskutovať o kľúčových detailoch implementácie EIP-7503, ako napríklad:

  • Generovanie nevyčerpateľnej adresy
  • Generovanie súkromných proof-of-burn
  • Overenie súkromných proof-of-burn
  • Razba ETH pre príjemcov súkromných prevodov

Generovanie nepoužiteľnej adresy

Bežná adresa Ethereum je prvých 20 bajtov hashu Keccak256 verejného kľúča vygenerovaného zo súkromného kľúča účtu (súkromný kľúč je celé číslo vygenerované z mnemotechnickej alebo počiatočnej frázy). Privátne aj verejné kľúče sa generujú pomocou algoritmu ECDSA (Eliptic Curve Digital Signature Algorithm ). ECDSA je zložitá téma („komplexný“ je môj preferovaný eufemizmus pre „má veľa matematiky“), ale tu je niekoľko zdrojov – od začiatočníkov po expertov na túto tému:



Verejný kľúč je odvodený vynásobením súkromného kľúča (skrátene nazývaného tajomstvo alebo s ) špeciálnou „generátorovou“ hodnotou G, čím vznikne nová hodnota v tvare pubKey = privKey * G . Adresa sa generuje spustením verejného kľúča cez hašovaciu funkciu Keccak256 a prijatím prvých 20 bajtov z hašovacieho reťazca. V pseudomatematickom zápise operácia vyzerá takto: A = K(s * G) , kde A je adresa, s je tajný alebo súkromný kľúč a G je bod generátora na eliptickej krivke.


Adresa, verejný kľúč a súkromný kľúč slúžia na veľmi odlišné účely:

  • Adresa je verejne zdieľaná a identifikuje účet prijímajúci prostriedky prevedené v rámci transakcie.
  • Súkromný kľúč sa používa na podpísanie správy, ktorá dáva pokyn sieti na prenos tokenov mimo zostatok adresy a musí byť uchovaný v tajnosti.
  • Verejný kľúč umožňuje overiť, či bol podpis transakcie vygenerovaný zodpovedajúcim súkromným kľúčom.


Posledná položka v zozname poukazuje na jemný detail: prostriedky zaslané na adresu je možné minúť len vtedy, ak ovládate súkromný kľúč – to znamená, že poznáte súkromný kľúč, ktorý bol použitý na vygenerovanie verejného kľúča, z ktorého adresa bola odvodená. Ak nepoznáte súkromný kľúč adresy alebo súkromný kľúč ovláda niekto iný, nemôžete z tejto adresy minúť prostriedky.


Ako vieme, či je zostatok adresy A nevyčerpateľný? Začať môžeme náhodným výberom náhodnej 20-bajtovej hodnoty pre A a využitím špeciálnej vlastnosti kryptografických hašovacích** funkcií známych ako odolnosť pred obrazom . Zjednodušene povedané, predobrazový odpor znamená, že nemôžeme nájsť hodnotu x takže H(x) (hash x ) je rovnaký ako A , ak A bolo vybrané náhodne. V pseudomatematickom zápise má tento nárok tvar: H(x) ≠ A .


A je obraz hašovacej funkcie (výstup hašovacej funkcie) a x je predobraz hašovacej funkcie (vstup hašovacej funkcie). Nájdenie hodnoty x pre H(x) = A je ťažké kvôli (a) obrovskému počtu možných celých čísel (b) spôsobu, akým sa vstupy manipulujú pomocou hašovacej funkcie, aby sa vytvoril výstup. Jediný spôsob, ako môžete „uhádnuť“ hodnotu pre x , ktorá vedie k A je, ak máte obrovské množstvo výpočtového výkonu a dostatok času na to, aby ste prešli obrovským množstvom výpočtov, aby ste našli H(x) = A .


Aj keď toto nie je vaša trieda Cryptography 101, predchádzajúce vysvetlenie zachytáva kľúčovú vlastnosť súčasných kryptografických systémov. V EIP-7503 hrá kľúčovú úlohu aj vlastnosť hashovacích funkcií pred obrazom: ak A je náhodná 20-bajtová hodnota, máme primeranú istotu, že používateľ nemôže odvodiť súkromný kľúč s nemá žiadny spôsob, ako minúť prostriedky z adresy. To znamená, že nie je možné vypočítať A = H(h(s * G) , kde A je adresa napálenia, s je súkromný kľúč alebo tajomstvo a G je bod generátora (malá poznámka: k(s * G) je ekvivalentné x z predchádzajúceho odseku).


Táto stratégia však nie je úplne spoľahlivá. Napríklad, ako môžeme určiť, že A je skutočne náhodné a nie je výsledkom výpočtu s * G ? Ak si používateľ vyberá A nezávisle, musíme používateľovi buď dôverovať, alebo vytvoriť zložité postupy na overenie, že A bolo vybrané náhodne; ak volíme A , nemusíme používateľovi dôverovať – existuje však nezanedbateľná pravdepodobnosť, že niekto môže mať šťastie a správne uhádne x . Keďže x = s * G , táto znalosť môže používateľovi umožniť odvodiť súkromný kľúč s a minúť z údajne nepoužiteľnej adresy.


To je samozrejme suboptimálne a zdôrazňuje potrebu bezpečnejšieho mechanizmu na generovanie nepoužiteľných adries. Našťastie, kryptografické hašovacie funkcie majú ďalšiu vlastnosť, ktorú môžeme využiť: odolnosť proti kolíziám . Jednoducho povedané, odolnosť proti kolíziám znamená, že nemôžete nájsť H(x) = H(y) , kde x a y sú rôzne vstupy – to znamená, že výpočet hashov pre rôzne vstupné hodnoty nemôže „kolíziť“ a priniesť rovnaký výsledok.


Odolnosť proti kolíziám je dôležitá na zabránenie falšovaniu (okrem iného): dvaja ľudia, ktorí hašujú dva rôzne vstupy, budú mať vždy rôzne hashovacie reťazce a jeden nemôže tvrdiť, že vlastní vstup, ktorý pozná iba druhá osoba. Ďalšou verziou odolnosti proti kolíziám je, že nemôžete nájsť H1(x) = H2(x) , kde H1 a H2 sú z rôznych rodín hašovacích funkcií. Inými slovami, výpočet hashu x pomocou rôznych hashovacích algoritmov nemôže „kolíziť“ a dospieť k rovnakému výstupu.


Aby sme pochopili, prečo je to možné, vytvoríme si vymyslený príklad, ktorý vysvetlí, ako ďalej fungujú hašovacie funkcie.

Medzihra: Kryptografické hašovacie funkcie pre noobov

Na vymyslenom príklade vysvetlíme, ako fungujú kryptografické hašovacie funkcie a ako sú zaručené dôležité vlastnosti, ako je odolnosť proti kolíziám a odolnosť voči útokom pred obrazom . Toto vysvetlenie však v záujme stručnosti a dostupnosti príliš zjednodušuje určité koncepty (ak ste ctižiadostivý kryptograf, prečítajte si článok o hašovacích funkciách):


Alice, Bob, Cheryl a Max patria k súperiacim politickým stranám: Alice a Bob sú členmi Modrej strany, zatiaľ čo Cheryl a Max patria do Červenej strany. Oddaní z Modrej strany a Oddaní z Červenej strany si chcú medzi sebou vymieňať informácie bez toho, aby prezradili citlivé detaily členom konkurenčnej strany a nezávisle vymýšľajú rôzne kódy na šifrovanie správ.


Kód Blue Party je známy ako algoritmus Double Letter, zatiaľ čo Red Party používa variant s názvom Triple Letter Algorithm. Kód je veľmi jednoduchý: pri písaní správ nahrádzame abecedy číslami – každé číslo v reťazci správy odkazuje na písmeno na určitej pozícii abecedy. „Šifrovací“ bit pochádza zo spôsobu, akým vyberáme čísla na reprezentáciu abecedy:

  • V kóde Blue Party “Double Letter” vydelíme každé číslo dvomi a pomocou výsledného čísla (n) nájdeme písmeno na n-tej pozícii abecedy. Napríklad „BOY“ môžeme zašifrovať ako 4-30-50 : 4/2 = 2 („B“ je 2. písmeno abecedy); 30/2 = 15 („O“ je 15. písmeno abecedy); 50/2 je 25 („Y“ je 25. písmeno abecedy).
  • V kóde Red Party „Triple Letter“ vydelíme každé číslo tromi a pomocou výsledného čísla (n) nájdeme písmeno na n-tej pozícii abecedy. Napríklad „BOY“ môžeme zašifrovať ako 6-45-=75 : 6/3 = 2 („B“ je 2. písmeno abecedy); 45/3 = 15 („O“ je 15. písmeno abecedy); 75/3 = 25 („Y“ je 25. písmeno abecedy).


Tento príklad používa šifrovanie pre rovnakú správu, ale môžeme očakávať, že ľudia z Modrej strany a Červenej strany si budú v praxi vymieňať rôzne správy (napr. „Max je blbec“ (Alice → Bob) a „Členovia Modrej strany sú porazení“ ( Cheryl → Max) atď.). Napriek tomu je šifrovanie tej istej správy rôznymi kódmi užitočné na vysvetlenie odolnosti proti kolíziám v kryptografických hašovacích funkciách:


Keď je „BOY“ zašifrované pomocou algoritmu „Double Letter“ od Blue Party a algoritmu „Triple Letter“ od Red Party, výsledky sú veľmi odlišné ( 4-30-50 a 6-45-75 , v tomto poradí). Člen Blue Party nemôže generovať 6-45-75 , okrem toho, že používa šifrovací algoritmus Red Party; ani člen Červenej strany nemôže vytvoriť 4-30-50 ako reťazec správy, okrem toho, že používa šifrovací algoritmus Blue Party. Keďže každá strana stráži podrobnosti o šifrovacom algoritme, vieme, že súperiaci člen skupiny nemôže dešifrovať správu, ktorá im nebola určená.



Kryptografické hašovacie funkcie sa líšia od šifrovacích algoritmov: hašovacie funkcie sú jednosmerné a nemajú žiadny spôsob, ako odvodiť vstupy z výstupu, zatiaľ čo šifrovacie algoritmy, ako sú tie z príkladu, majú kľúč na dešifrovanie vstupov do šifrovacej funkcie. Ale hašovacie funkcie a šifrovacie algoritmy majú podobnosti, najmä v oblasti odolnosti voči kolíziám. Rovnako ako sme nemohli nájsť rovnaký výstup (šifrovanú správu) pre jeden vstup pomocou rôznych šifrovacích algoritmov, nemôžeme nájsť rovnaký výstup (hash) pre jeden vstup pomocou rôznych hašovacích funkcií.


Môžeme využiť odolnosť hašovacích funkcií proti kolíziám na generovanie preukázateľne nepotrebných adries na napaľovanie aktív, ako to vyžaduje EIP-7503. Najprv žiadame používateľov, aby si vybrali tajnú hodnotu s (súkromný kľúč pre účet Ethereum), vypočítali hash Keccak256 s * G na odvodenie verejného kľúča a zahašovali verejný kľúč na odvodenie adresy A . Potom požiadame používateľa, aby vygeneroval novú adresu B hašovaním tajnej hodnoty s inou hašovacou funkciou označenou ako H a použitím prvých 20 bajtov výstupu ako adresy.


Náš cieľ? Chceme skončiť s K(x) ≠ H(x) , kde K predstavuje hašovaciu funkciu Keccak256 a H predstavuje hašovaciu funkciu z inej rodiny hašovacích funkcií. Z výkonnostných dôvodov chceme, aby bol H „priateľský k ZK“ (tj overenie výsledku H(x) v obvode by malo byť lacné a rýchle).


Nemôžeme poznať verejný kľúč pre B, pretože adresa bola vygenerovaná náhodne namiesto výpočtu hash Keccak256 s * G (súkromný kľúč vynásobený generátorom), čo znamená, že súkromný kľúč pre B je tiež neznámy. Ak nepoznáme súkromný kľúč pre B , nemôžeme vytvoriť platné podpisy pre správu, ktorá minie zostatok B. Vďaka dokázateľne náhodnému procesu generovania nepoužiteľných adries máme teraz pre používateľov spôsob, ako spáliť ETH pred opätovným razením aktív.

Generovanie súkromného dôkazu o spálení

Ako dokážeme, že konkrétny používateľ poslal ETH na nevyčerpateľnú adresu a nevyčerpateľnú adresu vytvoril tento používateľ? Prvá kontrola je potrebná, aby sa predišlo podvodnému razeniu ETH (nové tokeny ETH nerazíme, pokiaľ nemáme dôkaz, že používateľ predtým spálil ETH), ale druhá kontrola je tiež dôležitá: potrebujeme vedieť, že adresa bola vytvorená užívateľ — v opačnom prípade by sme potrebovali určitú informáciu (napr. hash spálenej transakcie), aby sme potvrdili, že sa užívateľ nesnaží žiadať o vklad inej osoby.


Keďže sa chceme vyhnúť úniku informácií o účasti používateľa v protokole ochrany osobných údajov, umožňujeme používateľom namiesto toho vytvoriť dôkaz s nulovými znalosťami, ktorý dokazuje znalosť s (tajná hodnota hashovaná na odvodenie adresy napálenia) bez zverejnenia s . Dôkaz s nulovými znalosťami potvrdzuje používateľskú znalosť adresy B , ktorá je odvodená z výsledku H(s) : keďže s bolo vybrané tajne, iná osoba nemôže vypočítať inú hodnotu H(x) tak, že H(s) = H(s) . Je to spôsobené vlastnosťou odolnosti proti kolíziám hašovacích funkcií opísaných vyššie.


Skrytie s zabraňuje zlomyseľným aktérom vyplatiť zálohu používateľa predložením dôkazu potvrdzujúceho znalosť tajomstva (používaného na vygenerovanie nepoužiteľnej adresy) overovateľovi EIP-7503. Táto časť vysvetľuje, prečo sme schopní vytvoriť dôkaz s nulovými znalosťami, ktorý dokáže H(s) = A bez toho, aby overovateľ musel nezávisle vypočítavať H(s) . Môžete si však prečítať Vitalikove kvadratické aritmetické programy: Zero To Hero a môj článok o ZK-EVM , kde nájdete informácie o používaní ZK-SNARK na preukázanie platnosti výpočtu bez odhalenia vstupov.


Dôkaz s nulovými znalosťami potvrdzujúci prevod prostriedkov používateľa na nepoužiteľnú adresu (známa ako adresa na vypálenie ) popisujeme ako „potvrdenie o spálení“ alebo „potvrdenie o vypálení“. Dôkaz o spálení dokazuje tieto tvrdenia:

  • Používateľ pozná adresu A a tajnú hodnotu s , ktorá bola hašovaná na odvodenie A (tj H(s) = A ). Toto je kontrola, že adresa je nespotrebiteľná, potvrdením, že A je výsledkom hašovania s hašovacou funkciou (priateľskou k ZK), ktorá sa líši od hašovacej funkcie Keccak256, ktorá sa používa na generovanie spotrebovateľných adries Ethereum.

  • Adresa A má kladný zostatok ETH rovný alebo väčší ako b ( b ≥ b' ). Týmto sa kontroluje, či sa suma, ktorú sa používateľ pokúša vytlačiť na prijímaciu adresu, zhoduje so sumou vloženou na nevyčerpateľnú adresu.


Zatiaľ čo dokazovanie č. 1 je relatívne jednoduché, dokazovanie č. 2 si vyžaduje tvrdenie určitých vecí o stave Etherea. Predovšetkým musíme dokázať, že (a) nevyčerpateľná adresa existuje v kanonickom stave Ethereum a (b) nárokovaný zostatok nevyčerpateľnej adresy sa zhoduje so zostatkom spojeným s adresou v stave trie. To si vyžaduje odovzdanie Merkleho dôkazu pre adresu A ako vstupu do obvodu, ktorý generuje dôkaz spálenia.


Merkle dôkaz pozostáva z listov Merkle Patricia Trie (MPT), ktoré sú potrebné na výpočet cesty od listu, ktorý sa pokúšame dokázať (adresa A ) ku koreňu Merkleho trie (koreň trie je tiež súčasťou Merkle dôkaz). Potrebujeme dôkaz, že koreň stavu – ktorý sa používa na overenie Merkleho dôkazu – je tiež kanonický, takže požadujeme, aby používateľ odovzdal hlavičku bloku B ako ďalší vstup do obvodu. Tento súbor informácií umožňuje overovateľovi s obmedzenými zdrojmi efektívne overiť, že zahrnutie adresy A do stavu skúša a overuje zostatok b v A .


Poznámka *: Špecifikácia EIP-7503 odporúča odvodiť Merkle dôkaz potrebný na preukázanie zahrnutia adresy napaľovania do stavu trie a overenie zostatku adresy pomocou* metódy eth_getProof JSON-RPC zavedenej v EIP-1186 .

Generovanie nullifier pre adresy

Ďalším vstupom do obvodu ZK-SNARK, ktorý generuje potvrdenie o vklade na nepoužiteľnú adresu, je nullifier . Nullifier je hodnota, ktorá bráni používateľovi použiť rovnaký proof-of-burn na razenie ETH dvakrát . Bez nullifier nič nezabráni dôvtipnému používateľovi v opakovanom použití proof-of-burn na výber ETH: z pohľadu uzla spracúvajúceho súkromné prevody EIP-7503 sú tieto výbery platné, pretože zostatok nevyčerpateľnej adresy sa nikdy nezníži ( môže sa len zvyšovať).


Nullifier je odovzdaný ako vstup do overovacieho obvodu ZK-SNARK, takže proof-of-burn sa stane neplatným po úspešnom overení. Túto vlastnosť dosiahneme extrakciou (použitého) nullifier z dôkazu a jeho uložením do Sparse Merkle Tree (SMT). Na rozdiel od bežných stromov Merkle, ktoré dokážu efektívne dokázať zahrnutie prvkov, stromy riedke Merkle sú účinné na dokázanie nezaradenia prvkov. Diskusia o SMT je mimo rozsah, ale predtým prepojený článok poskytuje skvelý prehľad pre zainteresovaných čitateľov.


SMT je v tomto prípade užitočná, pretože postup overovania ZK-SNARK musí kontrolovať iba to, že SMT vylučuje nulátor pripojený k novo predloženému dôkazu. Ak nullifier v strome Sparse Merkle chýba, vieme, že používateľ predtým nepoužil tento dôkaz spálenia a vyberá preukázateľne nový vklad. Použitý nullifier pridávame do SMT, aby sme sledovali adresu napálenia použitú na opätovné vytlačenie ETH bez verejného odhalenia adresy napálenia.


Čo by sa stalo, keby sme jednoducho uložili adresy prepaľovania do stromu Merkle a pri spracovaní nového výberu skontrolovali, či adresa z nového potvrdenia o prepálení nie je súčasťou stromu?


Použitie obyčajnej adresy napaľovania ako nullifier umožňuje externým pozorovateľom potenciálne odhaliť odosielateľa transakcie napaľovania krížovou kontrolou histórie transakcií adresy so zoznamom adries napaľovania uložených v reťazci. Keď sa adresa na vypálenie (nevyhnutne) objaví ako príjemca v jednej z transakcií iniciovaných odosielateľom, ktokoľvek môže dokázať, že osoba ovládajúca účet spálila a znova vytlačila ETH.


Používanie hash adresy spálenia (nevyčerpateľnej) sťažuje, ale nie je nemožné, poznať prevedené prostriedky súkromne. Vyžaduje si to brutálny útok, ktorý vypočítava hash každej Ethereum adresy, ktorá v súčasnosti existuje, kým sa jeden z hashov nezhoduje s nulovacím znakom uloženým v SMT. Akonáhle je objavený predobraz nullifier hash (t. j. nevyčerpateľná adresa), možno vykonať kroky opísané vyššie na sledovanie účtu, ktorý poslal prostriedky na príslušnú nevyčerpateľnú adresu.


Tento problém môžeme vyriešiť nájdením bezpečnejšieho mechanizmu na generovanie nullifier. Stratégia prijatá v aktuálnej špecifikácii EIP-7503 je použiť rovnakú hašovaciu funkciu (priateľskú pre ZK) na vygenerovanie nullifier N hašovaním adresy napálenia s tajnou hodnotou s . V pseudomatematickom zápise to vyzerá takto: N = H(A,s) , kde A je nevyčerpateľná adresa a s je tajná hodnota, ktorá pôvodne vygenerovala A.


Tajná hodnota s je v tomto prípade opísaná ako soľ . Táto hodnota soli v podstate zväčšuje náročnosť extrahovania informácií o adresách vypálenia z nullifier: ak by bolo známe s , pozorovateľ by mohol vykonať útok hrubou silou a spustiť všetky možné kombinácie hash(burnaddress,secret) , ktoré vytvárajú nulovací prvok N uložený na- reťaz. Používateľ však s uchováva v tajnosti, čím účinne eliminuje možnosť nájsť zodpovedajúcu adresu napálenia pre použitý nullifier.

Overenie súkromného dôkazu o spálení

Teraz, keď vieme, aké tvrdenia sa proof-of-burn snaží dokázať, máme reálnu predstavu o tom, ako funguje overovanie dôkazu. Pre prvé vyhlásenie ( h(s) = A ) musí overovateľ „pochopiť“ logiku hašovacej funkcie použitej na generovanie adresy A – aby vedel, že H(s) sa skutočne rovná A . Kódovanie logiky hašovacej funkcie v obvode overovača tiež presadzuje požiadavku, že A nemôže byť generované hašovacou funkciou Keccak256.


Pre druhé vyhlásenie ( A má kladný zostatok b ETH) musí overovateľ overiť Merkle dôkaz, ktorý dokazuje zahrnutie A do stavu Etherea a overuje údaje účtu. Overovač obvodu tiež skontroluje, či hlavička bloku B je z kanonického reťazca – pred extrahovaním koreňa stavu – volaním operačného kódu BLOCKHASH so vstupným block.blockHash(blockNumber) , kde blockNumber odkazuje na hlavičku bloku B . Ak je B súčasťou kanonického reťazca Ethereum, hash vrátený operačným kódom BLOCKHASH by sa mal zhodovať s hashom v hlavičke bloku B .


Okrem toho overovací obvod autentifikuje nullátor zahrnutý v užívateľskom dôkaze ZK-SNARK a potvrdí, že nullátor ešte nebol použitý. Odolnosť hašovacích funkcií proti kolíziám tu hrá podpornú úlohu tým, že bráni pokusom o generovanie dvoch rôznych nulovacích hašov N1 a N2 pre rovnakú kombináciu burn address <> secret value . Ak používateľ môže vygenerovať rôzne nullifier pre rovnakú adresu, môže dvakrát raziť ETH – bez ohľadu na to, či Sparse Merkle Tree ukladá nullifier pre túto adresu alebo nie.


Aby sa zabezpečilo, že navrhovatelia blokov budú môcť overiť nátlačky, EIP-7503 navrhuje úpravu EVM na implementáciu podporného overovania nátlačkov ZK-SNARK. Autori EIP-7503 testovali realizovateľnosť implementácie in-EVM overovania dôkazov o vypálení vytvorením verzie EVM s podporou EIP7503 pomocou rámca Polaris EVM . Môžete navštíviť úložisko GitHub venované projektu, kde nájdete ďalšie podrobnosti o návrhu protokolu.

Razba ETH na adresu príjemcu

EIP-7503 predstavuje nový typ transakcie, ktorý razí ETH pre používateľa, ktorý úspešne preukáže, že vložil určitú sumu na nepoužiteľnú adresu. Odosielateľ transakcie predloží dôkaz ZK-SNARK (spolu s nulátorom) a sieť vykoná prechod stavu, ktorý aktualizuje zostatok adresy výberu (po overení dôkazu o spálení).


Aj keď EIP-7503 poskytuje hodnoverné popieranie, používatelia sa vyzývajú, aby sa vyhli plateniu za transakcie razenia prostriedkami z rovnakej adresy, z ktorej bol odoslaný ETH na adresu vypálenia. Ak Alice pošle ETH na nevyčerpateľnú adresu 0xm00la a neskôr odošle transakciu zaplatenú za rovnakú sumu ETH, ktorá bude vyrazená na samostatný účet, Bob nemusí byť Jimmy Neutron, aby prepojil Alicu s pôvodnou transakciou napaľovania.


V predchádzajúcich častiach sa to nezmieňuje, ale potrebujeme, aby používatelia zahrnuli druhú adresu B (ktorá dostane ETH z transakcie razby) ako verejný vstup do overovacieho obvodu ZK-SNARK. Toto bráni potenciálnym hraničným prípadom od čestných používateľov, ktorí sa dostanú do popredia, zatiaľ čo transakcie razenia čakajú v mempoole.


Pripomeňme, že overovateľ nekontroluje identitu odosielacej adresy a zámerne sa vyhýba požiadavke vedieť, či tá istá adresa, na ktorej bolo spálené ETH, tiež uplatňuje ETH v transakcii razby. To je skvelé z hľadiska ochrany osobných údajov, pretože to znamená, že používatelia môžu znova raziť ETH s čerstvo vygenerovanou adresou – zvyšuje to však riziko útoku na frontrunning. Keďže dôkaz zakóduje všetky potrebné informácie potrebné na overenie (vrátane znalosti tajnej hodnoty s ), ktokoľvek môže poslať napodobeninu razby, ktorá má rovnaký dôkaz, ale inú adresu na príjem razeného ETH.


Našťastie môžeme požadovať, aby proof-of-burn odkazoval na adresu výberu B a presadzovať pravidlo vo formulári: „transakcia razby môže raziť ETH iba na adresu získanú z proof-of-burn“. Ekvivalenciu medzi adresou odovzdanou ako verejný vstup do obvodu ZK-SNARK a adresou uvedenou v transakcii razby kontroluje overovateľ. Každý používateľ si tak môže byť istý, že nikto si nemôže vyzdvihnúť svoju potvrdenú transakciu z mempoolu a ukradnúť ich výber.

Prečo EIP-7503? Prípad pre súkromné prevody na Ethereum

Súkromné prevody a platby

EIP-7503 poskytuje používateľom Etherea jednoduchý spôsob, ako presúvať finančné prostriedky bez (neúmyselného) vytvárania prepojenia medzi odosielajúcimi a prijímajúcimi adresami. Môžete poslať ETH z jednej peňaženky na novo vygenerovanú nepoužiteľnú adresu a stiahnuť do inej peňaženky poskytnutím dôkazu o spálení a nulovania na účely overenia. Pre vonkajšieho pozorovateľa existuje presne nulová korelácia medzi spálením účtu ETH a vytlačením ETH na účte.


Okrajový prípad sa môže objaviť, ak používateľ spáli ETH v jednej transakcii a okamžite vyrazí ETH na novú adresu: odborník na analýzu reťazcov môže rýchlo zistiť, že obe adresy musí ovládať tá istá osoba. EIP-7503 má však výkonnú funkciu na zabránenie deanonymizácie: hodnoverné popieranie . Tu je definícia hodnoverného popierania z politického slovníka :


Pravdepodobné popieranie je schopnosť poprieť akúkoľvek účasť na nezákonných alebo neetických činnostiach, pretože neexistujú žiadne jasné dôkazy, ktoré by dokazovali účasť. Nedostatok dôkazov robí odmietnutie dôveryhodným alebo vierohodným. — Politický slovník


Pravdepodobné popieranie pochádza z temného sveta operácií CIA, kde úradníci popierali informovanosť o akciách vykonávaných podriadenými. Chýbajúca papierová stopa – verejne prístupný záznam udalostí – znamenala, že vysokopostavení úradníci sa mohli zrieknuť pracovníkov v teréne a vyhnúť sa zodpovednosti za výsledky ich akcií (aby sa predišlo masívnym PR katastrofám).


Pravdepodobné popieranie má podobný význam v kontexte vykonávania súkromných prevodov pomocou EIP-7503. Predpokladajme, že vaša „hlavná peňaženka“ spáli 1,365 ETH a vaša „sekundárna peňaženka“ krátko potom vyrazí 1,365 ETH. Ak vaša operácia priťahuje pozornosť príliš horlivých detektívov na reťazi, môžete len tvrdiť, že niekto iný vytlačil 1,365 ETH, aby to vyzeralo, že ste dokončili súkromný prevod.


A čo keď dostanete otázku ako: „Prečo by ste posielali ETH na spaľovaciu adresu bez úmyslu previesť peniaze tajne?“ Môžete tvrdiť, že k transakcii došlo omylom – napokon, nikto nemôže poprieť, že ľudia, ktorí robia preklepy v adresách príjemcov, stratili strašné množstvo ETH (dokonca aj ja som urobil tú chybu). To prevráti celú konverzáciu na hlavu, pretože kto iný ako chladnokrvný jedinec by sa nevcítil do straty veľkého množstva ETH?



Toto je trochu triviálny príklad, ktorý vystihuje dôležitosť EIP-7503: hodnoverné popieranie zaisťuje, že bežní používatelia Etherea môžu vykonávať súkromné prevody bez zverejnenia akýchkoľvek konkrétnych informácií, ktoré by mohli naznačovať zapojenie do protokolu ochrany osobných údajov. Na rozdiel od protokolov ochrany osobných údajov na aplikačnej vrstve sa EIP-7503 vyhýba ukladaniu stôp transakcií v reťazci a sťažuje priradenie transakcií vypálenia a vytlačenia k identitám v reálnom svete.


EIP-7503 neposkytuje úplnú anonymitu a súkromie, pretože informácie o prevode finančných prostriedkov na adresu spaľovania – vrátane prevedených súm – sa zaznamenávajú v reťazci. Schopnosť prerušiť spojenie medzi odosielaním a prijímaním adries v transakcii je však dosť silná a znižuje obavy týkajúce sa opätovného použitia adresy.


Namiesto použitia rovnakej adresy na prijímanie platieb môže používateľ vygenerovať novú adresu na vypaľovanie a požiadať o zaslanie prostriedkov na túto adresu. Keďže používateľ pozná tajnú hodnotu s , môže vygenerovať platný proof-of-burn, ktorý preukáže kontrolu nad vytvorením adresy napálenia overovateľovi v reťazci a „vyberie“ zálohu razením ETH na inú adresu. . Je to dosť podobné konceptu generovania tajnej adresy na prijímanie prenosov a znižuje pravdepodobnosť korelácie rôznych transakcií s rovnakou entitou.


Môžeme vidieť, ako môžu byť súkromné prevody v štýle EIP7503 prospešné v iných scenároch:

  • Obchodníci : Prijímaním platieb na spálené adresy a neskorším razením ETH na neprepojiteľné adresy výberu sa obchodníci môžu vyhnúť odhaleniu finančných informácií. Funkcia súkromných transakcií EIP-7503 ďalej bráni externým pozorovateľom v žiarivých detailoch, napríklad koľko obchodník dostáva za produkty alebo veľkosť zákazníckej základne obchodníka.
  • Kupujúci : Uskutočňovaním platieb na adresu určenú obchodníkom (namiesto odoslania na verejne identifikovateľnú adresu obchodníka) sa kupujúci vyhnú úniku informácií súvisiacich s históriou nákupov. Adresu spálenia nemožno korelovať so „skutočným“ účtom obchodníka, čo bráni snahe zistiť, čo ste kúpili a od koho.
  • Filantropia : Charitatívne a politické organizácie môžu prijímať prostriedky bez toho, aby bola identita odosielateľa natrvalo zaznamenaná v reťazci. Jednotlivci môžu prispievať na určité účely bez toho, aby ohrozili svoju verejnú povesť.


EIP-7503 možno použiť aj z dôvodov nesúvisiacich s ochranou súkromia :

  1. V súčasnosti musia centralizované burzy (CEX) generovať jedinečnú adresu, aby mohli prijať vklad od používateľa, a musia odosielať transakcie, ktoré prenášajú zostatky každej adresy do jednej alebo viacerých studených peňaženiek ako súčasť procesov prevádzkovej bezpečnosti. S EIP-7503 môže operátor CEX vytvoriť jedinú adresu na napaľovanie, ktorá prijíma vklady od skupiny používateľov, a generovať dôkaz o spálení, ktorý stiahne všetky vklady nahromadené na adrese napaľovania do studenej peňaženky v jednej transakcii. Zníženie počtu transakcií potrebných na konsolidáciu vkladov CEX v studenej peňaženke prináša výhody operátorovi CEX (znížené prevádzkové náklady) a sieti (nižší počet transakcií v reťazci).
  2. Každý subjekt, ktorý spracováva značné množstvo platieb v reťazci, môže využiť EIP-7503 na zlepšenie prevádzkovej efektívnosti – takže CEX nie sú jedinými príjemcami. Obchodníci, charitatívne organizácie a krypto-natívne platobné koľajnice sú niektorými príkladmi organizácií, ktoré používajú EIP-7503 na zníženie prevádzkovej réžie agregovaním vkladov na výpalné adresy a rozdeľovaním transakčných nákladov na viacero vkladov. Tento aspekt EIP-7503 má požadovaný vedľajší účinok vo vytváraní finančných stimulov na pripojenie sa k súboru anonymity a zvyšuje celkové súkromie pre účty vykonávajúce súkromné prevody.

Vyváženie súkromia s verejnými službami a súladom s predpismi

EIP-7503 poskytuje jednoduchú cestu k zachovaniu súkromia transakcií na Ethereu bez nutnosti rozsiahlych úprav protokolu. Najmä EIP-7503 umožní Ethereu ponúkať súkromie transakcií bez toho, aby čelilo problémom s inými blockchainmi zameranými na súkromie, ako sú Zcash a Monero.


Hoci som už predtým písal na obranu mincí na ochranu osobných údajov , netreba veľa na to, aby som zistil, že mince na ochranu osobných údajov ako ZEC (Zcash) a MNR (Monero) nemôžu dosiahnuť cieľ zavedenia decentralizovaných, súkromných a použiteľných peňazí do globálnej ekonomiky. . S regulačnými tlakmi, ktoré nútia burzy odstraňovať mince na ochranu osobných údajov, bude pre vlastníkov stále ťažšie využívať výhody ochrany osobných údajov, ktoré ponúkajú protokoly Zcash, Monero a ďalšie protokoly, ktoré sú výslovne navrhnuté tak, aby skrývali informácie o transakciách v reálnych kontextoch. Tento výňatok z knihy Haseeb QureshiWhy Privacy Coins Haven't Take Off poskytuje dobrý úvod do výziev, ktorým dnes čelia „tvrdé“ projekty na ochranu súkromia:


Mince na ochranu osobných údajov boli vždy prvým cieľom regulačných inkvizícií. Keď majú regulátori povinnosť „nestojte tam, urobte niečo“, najjednoduchším strašiakom sú tienisté mince na ochranu súkromia. Pokiaľ ide o reguláciu, zaznamenali sme množstvo vyradení mincí na ochranu súkromia v Južnej Kórei , Japonsku a Spojenom kráľovstve . a USA . Vlády sa neustále snažia utiahnuť slučku na minciach na ochranu osobných údajov (pozri tu , tu a tu ).


Krypto lobby sa zväčšili; obrovské množstvo maloobchodu a mnoho inštitúcií teraz vlastní BTC a ETH. Len veľmi málo inštitúcií je však ochotných pristúpiť na obranu mincí na ochranu súkromia. Mnohí sa radšej uspokoja s tým, že nechajú mince na ochranu súkromia, aby sa stali obetným baránkom. — Haseeb Qureshi ( Prečo sa mince na ochranu osobných údajov nevzlietli )


Zdá sa, že EIP-7503 prišlo v ten správny moment vo vývoji Etherea: s väčším počtom používateľov ako ktorýkoľvek blockchain a veľkým množstvom inštitucionálnych investícií je menej pravdepodobné, že Ethereum postihne rovnaký osud ako iné projekty, ktoré sa snažili poskytovať funkcie súkromných platieb. v minulosti. Obmedzí niekoľko búrz obchodovanie s Etherom, ak začnú cirkulovať súkromne razené ETH tokeny? Možno. Ale tucet ďalších búrz by veľmi rád prevzal túto zodpovednosť – takto vyzerá silný sieťový efekt .


Prečo hovorím, že EIP-7503 prišiel v správnom čase? V histórii Etherea bolo obdobie, keď podpora súkromia na základnej vrstve bola niečím, čo si každý myslel, že by sa to malo urobiť okamžite . Ale iní v komunite (správne) poukázali na potenciálne okrajové prípady spojené s propagáciou Etherea ako „technológie na ochranu súkromia“. Tu sú úryvky zo starého vlákna na fóre Ethereum Magicians, kde sa diskutuje o potrebe zvýšeného súkromia na Ethereu:

Pôvodný príspevok Vitalika na fóre vyzývajúci na riešenia na zlepšenie súkromia pre používateľov Etherea. (zdroj)

Odpoveď Virgila Griffitha varujúca pred tým, ako sa Ethereum ponáhľa do hry na ochranu osobných údajov. (zdroj)


Griffithove intuície boli v nasledujúcich rokoch väčšinou správne, pričom mnohé kryptomeny s predvoleným nastavením súkromia čelili vyhliadke stať sa okrajovými menami, ktoré používajú iba cypherpunkeri s tvrdou líniou (skupina, ktorá tvorí menej ako 0,00001 % svetovej populácie). Na porovnanie, hodnota a všadeprítomnosť éteru (ETH) sa zvýšila len do bodu, keď „postrčenie k technológii ochrany súkromia“ prijatím EIP-7503 je menej riskantné ako pred piatimi rokmi.


Ak implementujete inováciu na podporu súkromných prenosov – možno preto, aby ste sa vyhli spätnému regulačnému zachyteniu alebo minimalizovali zložitosť základnej vrstvy. Vhodnou alternatívou je preniesť zodpovednosť za implementáciu EIP-7503 na Ethereum L2 a L3. Vzhľadom na súhrnný plán Ethereum má implementácia EIP-7503 v súhrne zmysel a stále zachováva cieľ ochrany súkromia v Ethereu (napr. podobne ako súhrny implementujúce ERC-4337 na abstrakciu natívnych účtov).


Tento prístup k implementácii EIP-7503 je jednoduchší, pretože každý reťazec L2 už má premosťovaciu zmluvu, ktorá razí ETH pre používateľov na L2. So zavedeným mechanizmom na razenie tokenov ETH je potrebné do súhrnov pridať iba komponenty na ukladanie nullifier on-chain a generovanie/overovanie proof-of-burn na podporu súkromných prenosov v štýle EIP7503. Príkladom reťazca vrstvy 2 (L2) s plánmi na integráciu EIP-7503 do svojej infraštruktúry je Taiko , ako je opísané v tejto žiadosti o komentár (RFC).


(zdroj)


Tu vidíme, že protokol ako Taiko môže ponúkať súkromie transakcií – bez toho, aby vykonával rozsiahle výmeny do svojej infraštruktúry – prijatím EIP-7503. To má kľúčovú výhodu pre protokolové tímy, ktoré nechcú vybudovať plnohodnotnú L2 zameranú na súkromie (a là Aztec v2 ), ale chcú používateľom poskytnúť základnú nevysledovateľnosť a neprepojiteľnosť. Návrh tímu Nethermind na implementáciu EIP-7503 na Taiko stojí za prečítanie, aby ste získali predstavu o tom, ako môže byť EIP-7503 implementovaný pomocou Etherea L2.


EIP-7503 tiež vyvažuje potrebu súkromia s regulačným súladom, čo je v súlade s cieľom hnutia Ethereum „privacy 2.0“: ochrana súkromia používateľov a zároveň zabezpečenie toho, aby zlí aktéri nemohli využívať infraštruktúru ochrany osobných údajov na škodlivé účely. Podľa implementácie EIP-7503 opísanej na Ethereum Research môžu súhrny, ktoré prijímajú EIP-7503, zabrániť opakovaniu problému Tornado Cash selektívnym zabránením známym hackerom a podvodníkom prať finančné prostriedky pomocou súkromných prevodov.


Na dosiahnutie tejto vlastnosti vyžadujeme, aby používatelia odovzdali zoznam adries na čiernej listine ( blacklist[] ) ako vstup do okruhu, ktorý generuje ZK-SNARK dôkazy o transakciách napaľovania. Okruh skontroluje, či adresa používateľa prijímajúceho ETH nie je súčasťou adries uložených v čiernej listine pri generovaní dôkazu o vypálení – prenos na adresu na čiernej listine automaticky zlyhá, pretože okruh nemôže vygenerovať dôkaz, ak vstup nespĺňa všetky podmienky platnosti.


Udržiavanie registra adries na čiernej listine predstavuje určitý stupeň centralizácie a potenciálne vektory cenzúry. Ale ak pripustíme, že komunitou riadená, základná samoregulácia je lepšia ako centralizovaná, zhora nadol regulácia, môžu byť potrebné takéto pomôcky na zabezpečenie súladu s nariadeniami.

Súkromná správa miezd pre organizácie v reťazci

Transparentnosť je jedným zo základných kameňov DAO (Decentralizované autonómne organizácie): na rozdiel od tradičných organizácií, kde sú podrobnosti o finančnom odmeňovaní pred investormi a zainteresovanými stranami skryté, platby prispievateľov v DAO sú verejne zaznamenávané v reťazci. Tento kontrolný záznam v reťazci poskytuje značné množstvo zodpovednosti a výrazne znižuje informačnú asymetriu, ktorá môže viesť k nesprávnemu finančnému riadeniu zo strany správcov DAO.


DAO však nevyhnutne dospejú a začnú fungovať ako korporácie (v dobrom aj v zlom) – v tomto bode sa môžu stať žiadúce veci, ako napríklad uchovávanie podrobností o odmenách prispievateľov v súkromí. EIP-7503 poskytuje infraštruktúru, ktorú DAO potrebujú na začatie súkromných platieb hlavným prispievateľom, vývojárom a nezávislým dodávateľom. Vo všetkých prípadoch si príjemca potrebuje vygenerovať iba adresu na vypaľovanie, aby mohol prijímať platby a odstúpiť na svoju zvolenú adresu.


Ako budú členovia DAO viesť správcov k zodpovednosti, ak sa implementujú platby súkromným prispievateľom/dodávateľom? To závisí od úrovne súkromia, ktorú DAO hľadá a akú úroveň utajenia môžu členovia DAO tolerovať. Napríklad, aby dokázala, že AliceDAO skutočne vyplatila 20 ETH Alici za prácu DAO a že peniaze neboli použité na alternatívne účely, Alice môže poskytnúť dôkaz, ktorý dokazuje, že vygenerovala nepoužiteľnú adresu.


Alica môže napríklad odhaliť súkromný kľúč použitý na vytvorenie nevyčerpateľnej adresy. Keďže nepoužiteľná adresa je po operácii razby anulovaná, Alice môže odhaliť s bez toho, aby podstúpila akékoľvek riziko. Overovateľ tretej strany odvodí nepoužiteľnú adresu hašovaním pomocou rovnakej kryptografickej hašovacej funkcie, ktorú použila Alice na začiatku, a porovná obe adresy. Ak sa zhodujú, overovateľ vie, že Alice mala prístup k adrese napaľovania v čase odoslania transakcie. Nevie však, na akej adrese Alica dostávala razené ETH tokeny (do určitej miery zachováva Alicino súkromie).

Zníženie závislosti od miešačov kryptomien

Používanie mixéra, akým je Tornado Cash, na prerušenie prepojenia medzi adresami peňaženky je problematické, pretože vytvára určitú formu viny za pridruženie . Pamätajte, že mixéry poskytujú anonymitu zmiešaním prostriedkov vložených rôznymi používateľmi do jedného fondu, z ktorého môže ktokoľvek vybrať bez toho , aby musel poskytnúť akékoľvek iné informácie ako dôkaz na overenie historického vkladu.


Čím viac finančných prostriedkov sa vloží do fondu ochrany osobných údajov, tým ťažšie je pre externého pozorovateľa odvodiť, kto čo vlastní; ak sa do skupiny pridajú zlí herci, čestní účastníci môžu nevedomky pomáhať zločincom prať špinavé peniaze tým, že prispievajú k nastaveniu anonymity protokolu. To je pravdepodobne dôvod, prečo sa sankcie OFAC rozšírili (a stále sa rozširujú) na adresy, ktoré interagovali s Tornado Cash, aj keď tieto adresy nie sú spojené so známymi zlými hráčmi (napr. phishingové gangy, štátom sponzorovaní hackeri a vykorisťovatelia blackhat).


Mixéry ako Tornado Cash tiež spôsobujú problém so zameniteľnosťou: žetóny vybraté z mixážneho fondu sa môžu „zašpiniť“ a nemožno ich použiť alebo vymeniť v pomere 1:1 za „čisté“ žetóny, ktoré neprešli mixérom. Na Reddite je skvelé vlákno , ktoré podrobnejšie rozoberá problém pokazených finančných prostriedkov, ktoré odporúčam prečítať. Tu sú niektoré z poučnejších komentárov z tohto vlákna:


Pôvodný príspevok (zdroj)


(zdroj)


(zdroj)


To môže mať dôsledky v skutočnom svete: napríklad veľa významných jednotlivcov v komunite Ethereum zistilo, že nie sú schopní komunikovať s niektorými frontendmi dapp po tom, čo ich peňaženky poslali nevyžiadané množstvá ETH z fondu Tornado Cash. EIP-7503 je opísaný ako „bezzmluvný mixér“ a obchádza vyššie uvedené problémy tým, že na spaľovanie ETH používa pravidelné prevody z EOA na EOA a zavádza priamu razbu na uľahčenie výberov z fondu anonymity (v porovnaní s použitím inteligentnej zmluvy).


Ďalšou výhodou bezzmluvného mixéra je veľkosť sady anonymity. S Tornado Cash (a podobnými protokolmi ako Railgun ) je súbor anonymity menší – koreluje s počtom účastníkov – a časom sa zmenšuje. Na rozdiel od toho, EIP-7503 premení celý súbor míňateľných a nevyčerpateľných adries na Ethereum na súpravu anonymity. Vzhľadom na veľký adresný priestor je bezpečné povedať, že reťazcoví detektívi, ktorí chcú vedieť, odkiaľ pochádza ETH odoslaný príjemcovi súkromného prevodu, majú pred sebou ťažkú prácu.


Hľadá sa Waldo > hrá sa na detektíva na reťazi.

Má implementácia EIP-7503 nejaké nevýhody?

Nižšie sú uvedené niektoré potenciálne nevýhody implementácie EIP-7503:

Problémy s dodržiavaním predpisov

Zatiaľ čo predchádzajúce analýzy naznačujú, že Ethereum pravdepodobne nepostihne rovnaký osud ako Monero a Zcash, ak začne podporovať súkromné prevody, je nemožné skutočne predpovedať , čo sa stane, ak sa aktivuje EIP-7503. Tu je komentár od účastníka vlákna Ethereum Magicians, ktorý diskutuje o dôsledkoch pre regulátorov:


(zdroj)


Hoci ide o natívne riešenie ochrany osobných údajov pre Ethereum, komunita začína uznávať dôležitosť kráčania po lane medzi súkromím/anonymitou a dodržiavaním predpisov po dopade sankcií zameraných na Tornado Cash. Táto myšlienka ovplyvňuje najmä návrh novej generácie protokolov ochrany osobných údajov, ako sú Privacy Pools a Nocturne :

  • Bazény na ochranu osobných údajov umožňujú používateľom vytvoriť „dôkaz o nevine“, ktorý potvrdzuje vylúčenie ich vkladu z fondu, ktorý uchováva vklady od zlých aktérov. Inými slovami, používateľ môže interagovať s mixérom a povedať: „Nepomáham zločincom a teroristom prať špinavé peniaze.“

  • Nocturne má v pláne prejsť na protokol proof-of-innocence, ale v súčasnosti implementuje niekoľko ochranných zábradlí, ktoré zaručujú súlad . Zahŕňa to filtrovanie vkladov, oneskorenia pri spracovaní vkladov, limity sadzby na adresu a globálny limit sadzby, ktorý obmedzuje celkovú hodnotu vkladov, ktoré protokol dokáže spracovať za deň.


Inteligentné riešenia ochrany súkromia založené na zmluvách, ako sú Nocturne a Privacy Pools, sú schopné implementovať jemné kontroly a selektívne vylúčiť používateľov, ktorí sa domnievajú, že sú zapojení do nezákonnej činnosti. Riešenia ochrany osobných údajov v protokole, ako je EIP-7503, sú nediskriminačné – žiaduca vlastnosť, ktorá by však mohla spôsobiť problémy a otvoriť dvere zlým aktérom na zneužívanie funkcií súkromných transakcií.


Je (teoreticky) možné vylepšiť EIP-7503 pridaním vyššie opísaného modulu gadget na čiernu listinu, ale pravdepodobne to otvorí Pandorinu skrinku problémov:

  • Kto môže viesť zoznam adries na čiernej listine? Žiadame OFAC, aby poskytol zoznam adries na čiernej listine a riskujeme, že vláda bude rozhodovať o tom, kto bude súkromne vykonávať transakcie v Ethereu? Riskujeme spustenie sporného forku, ak skupina validátorov odmietne cenzurovať prevody z jedného alebo viacerých účtov uvedených v registri blacklistedAddresses ?
  • Ak je EIP-7503 implementovaný súhrnom, je DAO zodpovedný za udržiavanie registra blacklistedAddresses ? Alebo uzatvára zakladajúci tím zmluvy so službami forenzných spoločností, ako sú Chainalysis, Elliptic a TRM Labs, aby poskytli informácie o tom, na ktoré adresy by sa malo obmedziť prijímanie súkromných prevodov? Aké problémy môžu nastať, ak sa zisková spoločnosť rozhodne, čo sa stane na základnej vrstve rollupu?
  • Ak sa súhrn rozhodne odstrániť správcovské privilégiá a urobiť zmluvy overovateľa a správcu neaktualizovateľnými, ako zabezpečí, aby zlí aktéri nezačali presúvať prostriedky prostredníctvom protokolu? Dá sa selektívne filtrovanie transakcií od známych vykorisťovateľov riešiť na vyšších vrstvách zásobníka (napr. na úrovni sekvenátora alebo validátora)? O akú logistiku ide?


Toto je len niekoľko otázok, ktoré bude potrebné zodpovedať predtým, ako Ethereum (alebo Ethereum L2) prijme EIP-7503. Crypto je stále v neprebádaných vodách, ale pomáha vykonávať veľa Murphyjitsu , myslieť na potenciálne hraničné prípady vopred, keď robíte rozhodnutia, ktoré majú významné dôsledky pre dlhodobé prežitie protokolu.


Nešťastie najviac dolieha na tých, ktorí neočakávajú nič iné ako šťastie. — Seneca

Potenciálna centralizácia spojená s tokenmi ERC-20

Implementácia EIP-7503 vyžaduje upgrade EVM na podporu nového typu transakcie, ktorý akceptuje potvrdenie o vypálení a pripíše zostatok príjemcu ETH spáleným v predchádzajúcej transakcii. Execution klienti budú tiež musieť upgradovať, aby podporovali Sparse Merkle Tree (SMT) na ukladanie nullifier a implementovali off-chain obvody na generovanie a overovanie proofs-of-burns v mene používateľov.


Uvedomujúc si, že aktualizácia môže byť nerealizovateľná, autori EIP-7503 majú alternatívny návrh na implementáciu EIP-7503 pomocou zmluvy o tokenoch ERC-20 . Používatelia zachovávajú rovnaký pracovný postup opísaný v predchádzajúcich častiach (odosielanie finančných prostriedkov na nepoužiteľnú adresu a generovanie nullifier), ale namiesto prijímania tokenov ETH razia tokeny ERC-20 po predložení dôkazu o vypálení. Zmluva ERC-20 sa integruje so špeciálnou zmluvou o overovaní EIP-7503, ktorá overuje dôkazy o vypálení v reťazci (zmluva ERC-20 môže tiež implementovať overovací okruh).


Zatiaľ čo zmluva ERC-20 zjednodušuje implementáciu EIP-7503, tento prístup znovu zavádza problém centralizácie a cenzúry. Môžeme urobiť token ERC-20 neupgradovateľný a neovládateľný, ako napríklad Wrapped Ether (WETH) , aby sme eliminovali centralizačné vektory, ale to nemôže pomôcť s problémami, ako sú burzy, ktoré odstránia token.


Mali by sme tiež poznamenať, že pre on-chain forenznú oblasť je jednoduchšie identifikovať účty, ktoré interagujú so zmluvou ERC-20 a umiestniť tieto adresy na čiernu listinu – ak sa regulátori rozhodnú ísť po kryptomenách zameraných na ochranu súkromia, ktoré cirkulujú v Ethereu. Keďže toto je problém, ktorý mal EIP-7503 vyriešiť, môže byť ťažké pochopiť, ako návrh na vytvorenie „súkromného tokenu ERC-20“ predstavuje zlepšenie.


Na druhej strane token ERC-20 uľahčí implementáciu funkcie skríningu prenosov, ktorá blokuje prenosy na adresy uvedené na čiernej listine. Vývojár by mohol jednoducho uložiť blacklist[] do zmluvy a upraviť transfer() tak, aby zahŕňal kontrolu identity adresy prijímajúcej tokeny v transakcii. Toto je však funkcia, ktorú nemôžeme implementovať na úrovni protokolu bez zavedenia niektorých veľmi silných predpokladov dôvery.


Zvýšená réžia výskumu a vývoja

EIP-7503 prichádza s požiadavkou vybudovať, testovať, auditovať a udržiavať komplexnú, špičkovú kryptografickú infraštruktúru potrebnú na podporu anonymných a súkromných transakcií. Prinajmenšom Nethermindov popis implementácie L2 EIP-7503 a dôkaz o koncepte EIP-7503 Chain Nobitex Labs naznačujú, že na vytvorenie obvodov ZK-SNARK na generovanie a overovanie dôkazov EIP-7503 bude vynaložené slušné množstvo inžinierskeho úsilia. .


Je tiež dôležité poznamenať, že kryptografické primitívy ako ZK-SNARK ešte musia byť dostatočne otestované, aby ich vývojári protokolov mohli implementovať s absolútnou istotou. Na ilustráciu, Zcash opravil chybu, ktorá by umožnila nepoctivému používateľovi poskytnúť falošné dôkazy o vlastníctve aktív a vyraziť nekonečné množstvo tokenov v roku 2018. Tiež som diskutoval o tesnom úniku tímu Tornado Cash z potenciálneho zneužitia v roku 2019.


Chyba v implementácii EIP-7503 na Ethereum bude mať netriviálny dopad. Napríklad používateľ, ktorý náhodne objaví chybu, ktorá umožňuje obísť kritické kontroly vykonávané obvodom na overenie dôkazu spálenia (napr. rovnováha adries vyhorenia a použitie nulovacích prostriedkov), môže tieto znalosti využiť na vyťaženie nekonečného množstva éteru a zrútiť trhovú hodnotu ETH.


Ďalšia oblasť zložitosti pochádza z požiadavky, aby overovač EIP-7503 overil hlavičku bloku B zahrnutú v dôkaze vygenerovanom používateľom. EVM ukladá hash posledných 128-256 blokov, takže on-chain overovateľ nemôže dôveryhodne overiť hlavičky blokov z väčšieho rozsahu.


Na overenie koreňa stavu zo starších blokov bude potrebné implementovať EIP-210 . EIP-210 navrhuje vytvoriť inteligentnú zmluvu na systémovej úrovni, ktorá ukladá historické blokové hash a refaktoruje operačný kód BLOCKHASH , aby klienti mohli zmluvu čítať.


EIP-210 nie je nevyhnutne potrebný, pretože používatelia majú aspoň jednu hodinu ( 14 seconds * 256 blocks ) na vygenerovanie a odoslanie dôkazu, ktorý možno overiť pomocou EVM. Poskytnutie slobody používateľom oddialiť vyplatenie vkladov odoslaných na adresu spálenia však zlepšuje UX a robí proces výberu odolnejším voči klastrovaniu adries a podobným analytickým technikám.


Alternatívou je integrácia zmluvy s veštcom, ktorá vyžaduje, aby (podnecovaní) aktéri predložili hlavičky historických blokov do zmluvy v reťazci. Je to jednoduchšie na implementáciu ako vytvorenie inteligentnej zmluvy na úrovni systému a refaktorovanie operačného kódu, ale vyžaduje si to od dôveryhodných operátorov Oracle, aby (a) zverejnili správne hlavičky blokov, (b) urýchlene odoslali hlavičky blokov. Ak sa nepodarí splniť oba tieto predpoklady, čestní používatelia nemusia byť schopní vyplatiť vklady a zlí aktéri by mohli zverejniť nesprávne hlavičky blokov, aby overili dôkazy Merkle pre neexistujúce transakcie napaľovania.

Zníženie anonymity

V čase aktivácie EIP-7503 bude anonymita nastavená pre používateľa, ktorý razí ETH v bloku #11000, zahŕňať všetky Ethereum EOA s kladným zostatkom ETH a nulovými odchádzajúcimi transakciami. Toto je rozhodujúce pre vlastnosť nevysledovateľnosti anonymných transakcií: ak transakcia spáli ETH, nie je možné ju rozpoznať ako spálenú transakciu, pretože nepoužiteľná adresa vyzerá ako bežná adresa Ethereum.


Počet adries, na ktorých zostatok na účte zostáva statický a neodosielajú sa žiadne transakcie, sa však zníži do bodu, kedy budú množinu anonymity tvoriť iba adresy na vypálenie. Súbor anonymity teda začína vyzerať ako súbory anonymity zmluvných mixérov, ako je Tornado Cash a nástroje na ochranu osobných údajov novej generácie, ako sú Privacy Pools a Railgun (čo znamená postupné znižovanie záruk ochrany súkromia EIP-7503).


Jedinou výnimkou sú tie účty, ktoré prijímajú ETH, pretože odosielateľ omylom previedol prostriedky na neexistujúcu adresu, takéto účty zostanú navždy v nastavení anonymity EIP-7503. Možno budeme chcieť zvážiť adresy, kde vlastník stratí súkromný kľúč, ako súčasť fondu anonymity, ale to sa (našťastie a bohužiaľ) stáva zriedka a tieto účty majú zvyčajne aspoň jednu alebo viac odchádzajúcich transakcií. (Je ťažké si predstaviť, že ten najnáročnejší používateľ stratí súkromné kľúče pred uskutočnením akejkoľvek transakcie.)


Bez ohľadu na zníženie anonymity je EIP-7503 stále užitočný pre hodnovernú popierateľnosť, ktorú ponúka. Predpokladajme, že niekto vytvorí búrku na krypto-Twitteri a obviní Alicu z účelového pálenia ETH (odoslaním na nepoužiteľnú adresu) s úmyslom neskôr vybrať prostriedky na novú adresu. Alice má vierohodnú popierateľnosť a môže čeliť obvineniu tvrdením:

  • „Omylom som poslal ETH na adresu. Môžete dokázať, že som sa pri zadávaní adresy do MetaMask nepomýlil?“
  • „Mám súkromný kľúč k adrese, ale nemôžem ho zdieľať. Teraz by si už nepýtal môj súkromný kľúč, však?"
  • „Mám súkromný kľúč k adrese, ale stratil som ho. Môžete dokázať, že som nestratil svoj súkromný kľúč?


Tieto tvrdenia možno nepresvedčia, ale takto vyzerá hodnoverné popieranie v kontexte skutočného sveta. Slovník práva to uvádza takto:


„Pravdepodobný neznamená dôveryhodný, možný alebo dokonca pravdepodobný. Pravdepodobný znamená, že môžete dospieť k záveru, že niečo môže alebo nemusí byť možné. Ale zvyčajne teoreticky, povrchne alebo podozrivo. Nemusí to byť nevyhnutne „rozumný“ záver. Vo svojom najširšom zmysle tento výraz zvyčajne poukazuje na nedostatok dôkazov. Koniec koncov, nevinný, kým sa nepreukáže vina, je chrbtovou kosťou nášho právneho systému.


Takže ak neexistuje dôkaz, je pravdepodobné, že by to mohli poprieť. V podstate všetko nezákonné alebo neetické, čo sa dá vysvetliť pod nevinnou a pravdepodobnou maskou – pravdivou alebo inou – spadá pod hodnoverné popieranie. Aj keď je vierohodnosť odmietnutia podozrivá.“

Jediný čas, kedy môže byť používateľ definitívne pripojený k súkromnému prenosu EIP-7503, je v okamihu spracovania prenosu na adresu príjemcu. Používatelia však môžu podniknúť kroky na zníženie alebo úplné odstránenie možnosti, že by externý pozorovatelia spojili transakciu výberu s transakciou spálenia:

  • Namiesto výberu na použiteľnú adresu Alica razí ETH na inú adresu na vypaľovanie, aby uchovala prostriedky v nastavenej anonymite. Opakované spálenie → mincovňa → vypálenie → mincovňa → opakovanie procesu viacnásobne sťažuje zistenie, či je konečná adresa účtom, ktorý kontroluje Alice.
  • Namiesto výberu celej sumy rozdelí Alice výber na dve alebo viac transakcií. Oneskorenie alebo náhodné výbery generujú „hluk“, ktorý zaťažuje analýzu transakčnej aktivity a sťažuje prepojenie transakcií napaľovania a ražby s tým istým používateľom.


Poznámka : Druhá technika je navrhované rozšírenie na EIP-7503 a nezdá sa, že by bola pri súčasnom dizajne realizovateľná. Aby používatelia rozdelili výbery, je potrebná funkcia na rozdelenie nulátorov tak, že nullifier 1 udeľuje právo raziť zlomok zostatku adresy na vypálenie, nullifier 2 udeľuje právo raziť ďalší zlomok zostatku atď.

Záver

EIP-7503 je riešením jedného z najpodceňovanejších problémov Etherea: nedostatok finančného súkromia. Ak Ethereum jedného dňa nahradí banky, musí poskytnúť úroveň súkromia rovnajúcu sa tomu, čo užívatelia v súčasnosti užívajú v status quo. Čokoľvek menej a Ethereum nedosahuje masové prijatie, pretože vzdanie sa súkromia – dokonca aj kvôli výhodám vyhýbania sa cenzúre – je obeťou, ktorú väčšina jednotlivcov nedokáže urobiť.


EIP-7503 je stále v štádiu preskúmania a pravdepodobne prejde zmenami a vylepšeniami výkonu. Okrem budúcej podpory výberu čiastkových súm je užitočná funkcia, ktorá používateľom umožňuje rekurzívne kombinovať viacero dôkazov o prepálení do jedného SNARK, ktorý overuje vklady na rôzne adresy spálenia v jednej overovacej transakcii. Táto funkcia ďalej zvyšuje príťažlivosť EIP-7503 pre CEX a obchodníkov, ktorí si želajú zachovať jednu adresu na každý vklad používateľa bez toho, aby museli jednotlivo predkladať dôkaz o vypálení pre (potenciálne stovky alebo tisíce) adries na vypálenie.


Bežní používatelia môžu tiež profitovať z odosielania tokenov na viaceré adresy na vypaľovanie (namiesto odosielania na jedinú nevyčerpateľnú adresu) a odoslania súhrnného dôkazu a sady nullifier na dokončenie súkromného prevodu. Použitím viac ako jednej adresy na napaľovanie môžu odosielatelia ďalej randomizovať transakčnú aktivitu a zastaviť pokusy o spätné sledovanie transakcií napaľovania jednej osobe. Toto dopĺňa hlavné výhody, ktoré už EIP-7503 poskytuje, ako sú súkromné vlastné prevody, súkromné peer-to-peer dary/platby a súkromná správa miezd pre on-chain DAO.


Ak sa vám páčilo čítanie tohto článku, zvážte jeho zdieľanie s niekým, kto ho môže považovať za poučný, a prihláste sa na odber bulletinu 2077 Research, aby ste sa podrobnejšie dozvedeli o návrhoch vychádzajúcich z ekosystému EIP. Naďalej sa budeme zameriavať na riešenia ochrany osobných údajov v Ethereu a plánujeme vydať podrobný prieskum ERC-5564 (štandard na generovanie utajených adries a odosielanie transakcií s utajenými adresami na Ethereum).


Zostaňte naladení!


Poznámka autora: Tento článok je uverejnený aj tu .