Met EIP-3009, "transfer with authorization", ondertekent een tokenhouder een transfer off-chain en laat hij die door iemand anders versturen. De houder heeft geen ETH voor gas nodig: een relayer, uw backend of de ontvanger verstuurt de ondertekende autorisatie en betaalt het gas. Het is vooral bekend als het mechanisme achter gasloze transfers van USDC, en daarmee erg praktisch voor betaalflows in stablecoins.
Zo werkt het
- De houder ondertekent een EIP-712-bericht: van, naar, bedrag, een tijdvenster (geldig na, geldig vóór) en een nonce.
- Iedereen kan het versturen met
transferWithAuthorization; het tokencontract controleert de handtekening en voert de transfer uit. - Met
receiveWithAuthorizationkan alleen de ontvanger het versturen, wat belangrijk is als een contract de betaling ontvangt. - Een ongebruikte autorisatie kan worden ingetrokken met
cancelAuthorization.
Wilt u dat gebruikers transacties doen zonder gas? Zie gasloze transacties voor alle methoden, van sponsoring met paymasters en EIP-7702 tot relayers en permit-handtekeningen.
EIP-3009 versus permit
Permit (EIP-2612) ondertekent een goedkeuring: iemand mag later uw tokens uitgeven. EIP-3009 ondertekent de transfer zelf, met een exact bedrag en een vaste ontvanger. Een ander belangrijk verschil is de nonce: permit gebruikt oplopende nonces, dus handtekeningen moeten op volgorde worden gebruikt; EIP-3009 gebruikt willekeurige nonces van 32 bytes, zodat veel autorisaties tegelijk kunnen openstaan en in willekeurige volgorde worden gebruikt. Dat maakt het geschikt voor betalingen, abonnementen en backends met veel volume.
Veilig integreren
- Gebruik receiveWithAuthorization in contracts: roept een contract transferWithAuthorization aan, dan kan iemand die de mempool volgt dezelfde autorisatie eerder versturen; de transfer gebeurt wel, maar de logica van uw contract eromheen draait niet.
- Korte geldigheidsvensters: autorisaties die snel verlopen, beperken de schade van een uitgelekte handtekening.
- Duidelijk ondertekenen: gebruikers moeten ontvanger en bedrag in gewone taal zien, zie blind signing voorkomen.
- Ondersteuning per token: alleen tokens die EIP-3009 implementeren, zoals USDC, ondersteunen deze flow; andere tokens hebben permit of een andere aanpak nodig.
Veelgestelde vragen over EIP-3009
Welke tokens ondersteunen EIP-3009?
USDC is het bekendste voorbeeld, samen met enkele andere tokens van dezelfde uitgever. De meeste ERC-20-tokens niet, dus controleer de ondersteuning per token dat u wilt accepteren.
Wie betaalt het gas?
Wie de autorisatie verstuurt: meestal uw backend of een relayer. U kunt die kosten terugverdienen in uw prijzen of ze zien als onderdeel van de gebruikerservaring.
Kan een ondertekende autorisatie worden ingetrokken?
Ja, zolang hij nog niet is gebruikt, met cancelAuthorization. Korte geldigheidsvensters maken dat minder vaak nodig.
Wie is eigenaar van de code?
Het eigendom van de broncode wordt contractueel vastgelegd, en de code kan volledig van u zijn, inclusief documentatie en tests.
Onderdeel van ons werk aan Ethereum-standaarden (EIP's en ERC's) en smart contract ontwikkeling.
Zie onze cross-chain trading app in USDC voor flows met handtekeningen in de praktijk.
Bouw gasloze USDC-betalingen
Vertel ons hoe uw gebruikers betalen en wie het gas moet dragen. Wij ontwerpen een flow met ondertekende transfers die soepel en veilig is.