Accountabstractie
Gebruikers communiceren met Ethereum via . Dit is de enige manier om een transactie te starten of een smart contract uit te voeren. Dit beperkt gebruikers in hun interactie met Ethereum. Hierdoor wordt het bijvoorbeeld moeilijk om batches van transacties uit te voeren en moeten gebruikers altijd een ETH- saldo aanhouden om gas te kunnen dekken.
Accountabstractie is een manier om deze problemen op te lossen door gebruikers in staat te stellen om op een flexibele manier meer beveiliging en betere gebruikerservaringen in hun accounts te programmeren. Dit kan gebeuren door EOA's te upgraden(opens in a new tab) zodat ze gecontroleerd kunnen worden door smart contracts, of door smart contracten te upgraden(opens in a new tab) zodat ze transacties kunnen opstarten. Deze opties vereisen allebei wijzigingen in het protocol van Ethereum. Er is ook nog een derde manier, waarbij er een tweede, apart transactiesysteem(opens in a new tab) wordt toegevoegd dat parallel aan het bestaande protocol mee wordt uitgevoerd. Wat het traject ook is, het eindresultaat is toegang tot Ethereum via smart contract-wallets, die van nature ondersteund worden als onderdeel van het bestaande protocol of via een extra transactienetwerk.
Smart contract-wallets bieden veel voordelen voor de gebruiker, waaronder:
- het definiëren van uw eigen flexibele beveiligingsregels
- het herstellen van uw account als u de sleutels verliest
- het delen van de beveiliging van uw account met vertrouwde apparaten of individuen
- het betalen iemand anders zijn/haar gas of iemand anders het uwe laten betalen
- het bundelen van transacties (bijvoorbeeld een ruil in één keer goedkeuren en uitvoeren)
- meer mogelijkheden voor dapps en ontwikkelaars van wallets om innovatie te brengen in gebruikerservaringen
Deze voordelen worden momenteel niet standaard ondersteund omdat alleen accounts in externe eigendom () transacties kunnen starten. EOA's zijn gewoon publiek-persoonlijke sleutelparen. Ze werken als volgt:
- als u de persoonlijke sleutel hebt, kunt u alles doen binnen de regels van de Ethereum Virtual Machine (EVM)
- als u de persoonlijke sleutel niet hebt, kunt u niets doen.
Als u uw sleutels verliest, kunnen ze niet worden teruggevonden en gestolen sleutels geven criminelen direct toegang tot al het geld op een account.
Smart contract-wallets zijn de oplossing voor deze problemen, maar vandaag de dag zijn ze moeilijk te programmeren omdat uiteindelijk elke logica die ze implementeren vertaald moet worden in een set EOA-transacties voordat ze door Ethereum verwerkt kunnen worden. Accountabstractie zorgt ervoor dat smart contracts zelf transacties kunnen starten, zodat elke logica die de gebruiker wil implementeren, gecodeerd kan worden in de smart contract-wallet zelf en uitgevoerd kan worden op Ethereum.
Uiteindelijk verbetert accountabstractie de ondersteuning voor smart contract-wallets, waardoor ze eenvoudiger te bouwen en veiliger te gebruiken zijn. Uiteindelijk kunnen gebruikers met accountabstractie genieten van alle voordelen van Ethereum zonder dat ze de onderliggende technologie kennen of zich er zorgen over hoeven te maken.
Voorbij seed phrases
De accounts van tegenwoordig zijn beveiligd met privésleutels die worden berekend op basis van seed phrases. Iedereen die toegang heeft tot een seed phrase kan eenvoudig de persoonlijke sleutel achterhalen die een account beschermt en toegang krijgen tot alle activa die deze beschermt. Als een persoonlijke sleutel en seed phrase verloren gaan, kunnen ze nooit meer teruggehaald worden en worden de activa die ze controleren voor altijd bevroren. Het beveiligen van deze seed phrases is lastig, zelfs voor ervaren gebruikers. Seed phrase-phishing is een van de meest voorkomende manieren waarop gebruikers worden opgelicht.
Accountabstractie zal dit probleem oplossen door een smart contract te gebruiken om activa vast te houden en transacties te autoriseren. Deze smart contracts kunnen vervolgens worden voorzien van aangepaste logica om ze zo veilig mogelijk te maken en zo goed mogelijk af te stemmen op de gebruiker. Uiteindelijk gebruikt u nog steeds persoonlijke sleutels om de toegang tot uw account te beheren, maar met veiligheidsmaatregelen die het eenvoudiger en veiliger maken om ze te beheren.
Er kunnen bijvoorbeeld reservesleutels worden toegevoegd aan een wallet, zodat als u uw hoofdsleutel verliest of per ongeluk blootgeeft, deze kan worden vervangen door een nieuwe, veilige sleutel met toestemming van de reservesleutels. Elk van deze sleutels zou op een andere manier beveiligd kunnen worden, of verdeeld over vertrouwde beheerders. Dit maakt het veel moeilijker voor een crimineel om de volledige controle over uw middelen te krijgen. Zo kunt u bijvoorbeeld toestaan dat transacties van lage waarde worden geverifieerd door een enkele handtekening, terwijl transacties van hogere waarde goedkeuring vereisen van verschillende geverifieerde ondertekenaars. Er zijn ook andere manieren waarop smart contract-wallets u kunnen helpen om criminelen te dwarsbomen. Een toestemmingslijst kan bijvoorbeeld gebruikt worden om elke transactie te blokkeren, tenzij deze naar een vertrouwd adres gaat of geverifieerd is door verschillende van uw vooraf goedgekeurde sleutels.
Voorbeelden van beveiligingslogica die kan worden ingebouwd in een smart contract-wallet:
- Multisig-autorisatie: u kunt autorisatiegegevens delen met verschillende vertrouwde personen of apparaten. Vervolgens kan het contract zo worden geconfigureerd dat transacties van meer dan een vooraf ingestelde waarde toestemming vereisen van een bepaald deel (bijv. 3/5) van de vertrouwde partijen. Voor transacties van hoge waarde kan bijvoorbeeld goedkeuring nodig zijn van zowel een mobiel apparaat als een hardwarewallet, of handtekeningen van accounts die zijn verdeeld onder vertrouwde familieleden.
- Bevriezen van accounts: als een apparaat zoekraakt of in gevaar komt, kan het account worden vergrendeld vanaf een ander geautoriseerd apparaat, waardoor de bezittingen van de gebruiker worden beschermd.
- Accountherstel: apparaat kwijt of wachtwoord vergeten? In het huidige paradigma betekent dit dat uw activa voor altijd bevroren kunnen worden. Met een smart contract-wallet kunt u een toestemmingslijst van accounts instellen die nieuwe apparaten kunnen autoriseren en toegang opnieuw kunnen instellen.
- Transactielimieten instellen: geef dagelijkse drempels op voor hoeveel waarde er in een dag/week/maand kan worden overgeschreven van het account. Dit betekent dat als een aanvaller toegang krijgt tot uw account, hij/zij niet alles in één keer kan buitmaken en dat u de mogelijkheid hebt om de toegang te bevriezen en opnieuw in te stellen.
- Toestemmingslijsten maken: sta alleen transacties toe naar bepaalde adressen waarvan u weet dat ze veilig zijn. Dit betekent dat zelfs als uw persoonlijke sleutel wordt gestolen, de aanvaller alleen geld kan sturen naar bestemmingsaccounts op uw lijst. Deze toestemmingslijsten vereisen verschillende handtekeningen om ze te wijzigen, zodat een aanvaller zijn/haar eigen adres niet aan de lijst kan toevoegen tenzij hij/zij toegang heeft tot verschillende van uw reservesleutels.
Betere gebruikerservaring
Accountabstractie zorgt voor een betere algemene gebruikerservaring en een betere beveiliging omdat het ondersteuning toevoegt voor smart contract-wallets op protocolniveau. De belangrijkste reden hiervoor is dat het ontwikkelaars van smart contracts, wallets en applicaties veel meer vrijheid zal geven om innovatie door te voeren in de gebruikerservaring op manieren die we nu misschien nog niet kunnen voorspellen. Enkele voor de hand liggende verbeteringen die samengaan met accountabstractie zijn het bundelen van transacties voor snelheid en efficiëntie. Een eenvoudige omruiling zou bijvoorbeeld in één klik moeten kunnen, maar vandaag de dag moeten er verschillende transacties worden ondertekend om de uitgaven van individuele tokens goed te keuren voordat de omruiling wordt uitgevoerd. Abstractie van accounts neemt dit probleem weg door het bundelen van transacties mogelijk te maken. Bovendien zou de gebundelde transactie precies de juiste waarde van tokens kunnen goedkeuren die nodig is voor elke transactie en vervolgens de goedkeuringen herroepen nadat de transactie is voltooid, wat zorgt voor extra veiligheid.
Het gasbeheer is ook sterk verbeterd met accountabstractie. Applicaties kunnen niet alleen aanbieden om de gaskosten van hun gebruikers te betalen, maar gaskosten kunnen ook worden betaald in andere tokens dan ETH, waardoor gebruikers geen ETH-saldo meer hoeven aan te houden voor het bekostigen van transacties. Dit werkt door de tokens van de gebruiker om te ruilen voor ETH binnen het contract en vervolgens de ETH te gebruiken om te betalen voor gas.
Vertrouwde sessies zijn ook potentieel transformatief voor gebruikerservaringen, vooral bij toepassingen zoals gaming, waar grote aantallen kleine transacties in korte tijd moeten worden goedgekeurd. Elke transactie afzonderlijk goedkeuren zou de spelbeleving verstoren, maar permanente goedkeuring is onveilig. Een smart contract-wallet kan bepaalde transacties goedkeuren voor een vaste tijd, tot een specifieke waarde of alleen naar bepaalde adressen.
Het kan ook interessant zijn om na te denken over hoe aankopen kunnen veranderen door accountabstractie. Vandaag de dag moet elke transactie worden goedgekeurd en uitgevoerd vanaf een wallet die van tevoren is voorzien van een voldoende hoeveelheid van het juiste token. Dankzij accountabstractie zou de ervaring meer kunnen lijken op het vertrouwde online winkelen, waarbij een gebruiker een "mandje" met artikelen kan vullen en één keer kan klikken om alles in één keer te kopen, waarbij alle benodigde logica wordt afgehandeld door het contract, niet door de gebruiker.
Dit zijn slechts een paar voorbeelden van hoe gebruikerservaringen op een hoger niveau kunnen worden gebracht door accountabstractie, maar er zullen nog veel meer voorbeelden volgen die we ons nog niet kunnen voorstellen. Accountabstractie bevrijdt ontwikkelaars van de beperkingen van de huidige EOA's, laat hen toe om de goede aspecten van web2 naar web3 te halen zonder zichzelf op te offeren. Bovendien kunnen ze creatief hacken om inventieve nieuwe gebruikerservaringen te creëren.
Hoe wordt accountabstractie geïmplementeerd?
Smart contract-wallets bestaan nu al, maar zijn lastig te implementeren omdat de EVM ze niet ondersteunt. In plaats daarvan vertrouwen ze op het gebruik van relatief complexe code rond standaard Ethereum-transacties. Ethereum kan dit veranderen door smart contracts de mogelijkheid te bieden om transacties te starten, waarbij de benodigde logica wordt afgehandeld in smart contracts van Ethereum in plaats van off-chain. Door logica in smart contracts te integreren, wordt de decentralisatie van Ethereum ook vergroot, omdat er geen “relayers” meer nodig zijn die door walletontwikkelaars worden uitgevoerd om berichten die door de gebruiker zijn ondertekend, te vertalen naar reguliere Ethereum-transacties.
Huidige vooruitgang
Smart contract-wallets zijn al beschikbaar, maar er zijn meer upgrades nodig om ze zo gedecentraliseerd en toestemmingsvrij mogelijk te maken. EIP-4337 is een uitgewerkt voorstel dat geen veranderingen aan het protocol van Ethereum vereist, dus het is mogelijk dat dit snel geïmplementeerd kan worden. Upgrades die het protocol van Ethereum veranderen, zijn momenteel echter nog niet in een actieve ontwikkelingsfase, dus het kan veel langer duren voordat deze veranderingen worden beschikbaar worden. Het is ook mogelijk dat accountabstractie voldoende wordt bereikt door EIP-4337 dat er nooit protocolwijzigingen nodig zijn.
Verder lezen
- erc4337.io(opens in a new tab)
- Paneldiscussie over accountabstractie op Devcon Bogota(opens in a new tab)
- “Waarom accountabstractie een gamechanger is voor dapps” op Devcon Bogota(opens in a new tab)
- "Accountabstractie ELI5" op Devcon Bogota(opens in a new tab)
- Vitaliks noties "De weg naar accountabstractie"(opens in a new tab)
- Vitaliks blogpost over wallets die kunnen hersteld worden via social media(opens in a new tab)
- Notities EIP-2938(opens in a new tab)
- Documentatie EIP-2938(opens in a new tab)
- Notities EIP-4337(opens in a new tab)
- Documentatie EIP-4337(opens in a new tab)
- Documentatie EIP-2771(opens in a new tab)
- "Basisprincipes van accountabstractie" -- Wat is accountabstractie Deel I(opens in a new tab)