Een mislukte Ethereum-transactie betekent bij EIP-7702 niet automatisch dat de bijbehorende accountdelegatie is verdwenen. De protocolregels verwerken die delegatie vóór de uitvoering van de transactie. Als de uitvoering daarna terugdraait, blijft de verwerkte verwijzing naar het aangewezen contract bestaan. Wie alleen de melding ‘mislukt’ bekijkt, kan daardoor de verkeerde conclusie trekken over de toestand van zijn account.
| Wat je moet weten |
|---|
| EIP-7702 laat een Ethereum-account verwijzen naar code van een ander adres. |
| De delegatie wordt verwerkt vóór de uitvoering van de transactie. |
| Een fout tijdens die uitvoering draait de verwerkte delegatie niet terug. |
| Een geldige autorisatie naar het nuladres wist de accountcode. |
Controleer de delegatie, niet alleen de transactiestatus
De officiële specificatie van EIP-7702 beschrijft twee afzonderlijke stappen. Eerst wordt de lijst met autorisaties verwerkt. Daarbij krijgt het autoriserende account een verwijzing naar de code op het opgegeven adres. Vervolgens begint de uitvoering van de transactie. Een fout of een terugdraaiing in die tweede stap maakt de al verwerkte delegatie niet ongedaan.
Voor een controle achteraf zijn daarom twee vragen nodig: is de transactie geslaagd, en welke codeverwijzing staat nu op het account? Het antwoord op de eerste vraag geeft volgens deze regels geen uitsluitsel over de tweede. Een account met een delegatie voert bij een aanroep de code van het aangewezen adres uit, in de context van dat account. Het gaat dus om meer dan een verwijzing die alleen in de transactiegeschiedenis staat.
Wat een nieuwe autorisatie moet bevatten
Een autorisatie bevat onder meer het chain-ID, het adres van de gekozen code en de nonce van het autoriserende account. De nonce is de teller waarmee het protocol de autorisatie vergelijkt. Alleen als de nonce overeenkomt met de actuele accountteller, kan deze controle slagen. Het protocol verhoogt die teller na een verwerkte autorisatie met één. Een eerder ondertekende autorisatie past daardoor niet vanzelf bij de nieuwe accounttoestand.
De regels voorzien ook in het verwijderen van de codeverwijzing: bij een geldige autorisatie naar het nuladres wordt de accountcode gewist. Dat vereist dezelfde controles op de autorisatie; het nuladres invullen is op zichzelf geen bewijs dat de wijziging is uitgevoerd. Controleer daarna de werkelijke accountcode. De specificatie onderscheidt daarmee een voorgenomen wijziging van de wijziging die het netwerk daadwerkelijk heeft verwerkt.
Bij meerdere geldige autorisaties voor hetzelfde account gebruikt het protocol het adres uit de laatste geldige vermelding. Een ongeldige vermelding wordt overgeslagen, waarna de verwerking doorgaat. Lees bij een onverwachte uitkomst dus ook de autorisatielijst. Alleen naar het eerste adres kijken kan een andere uitkomst suggereren dan de uiteindelijke delegatie.






