Blockchain/Niveau VII · Évolution/7.1 Ethereum : l'ordinateur mondial/Leçon 4
Signature explicite : UTXO contre approbations de tokens
La signature qui dépense, et l’autorisation qui lui survit
MatérielUn portefeuille matériel compatible PSBTAccès à Etherscan ou à un explorateur de blocs similaireL’interface de Revoke.cash
Curiosité
- Pourquoi un smart contract peut-il déplacer vos tokens des années après que vous avez interagi avec lui ?
- Quelle est la différence structurelle entre la signature d’une transaction et l’octroi d’une autorité permanente ?
- Comment un format de fichier rend-il visibles toutes les entrées et sorties d’une transaction Bitcoin avant l’application d’une signature ?
Explorer
- Sur les chaînes EVM, la norme ERC-20 régit les transferts de tokens. Pour déplacer des tokens d’un portefeuille externe vers un contrat, le détenteur doit d’abord appeler `approve`, ce qui autorise le contrat à dépenser un montant donné de ce token en son nom. Cette autorisation de dépense (allowance) est enregistrée dans l’état du contrat et persiste indéfiniment, jusqu’à ce qu’elle soit révoquée ou épuisée. Un utilisateur qui autorise 10 000 tokens pour une plateforme d’échange décentralisée conserve cette autorisation permanente même après la fin du swap.
- L’EIP-2612 a introduit `permit`, qui permet aux utilisateurs de signer un message off-chain définissant cette autorisation de dépense sans soumettre de transaction immédiate. La signature reste valide jusqu’à son utilisation ou jusqu’à l’expiration de son délai, et elle confère le même pouvoir de dépense. Une fois l’autorisation en place, quiconque contrôle l’adresse autorisée à dépenser peut la vider en appelant `transferFrom`, même si l’utilisateur n’a plus interagi avec ce contrat depuis.
- Les wallet drainers exploitent cette architecture. Des sites de phishing incitent les utilisateurs à signer un `approve` ou un `permit` illimité en faveur d’une adresse malveillante. Une fois la signature obtenue, l’attaquant dispose d’une autorisation permanente pour déplacer les tokens à sa guise. Révoquer ces autorisations exige des transactions supplémentaires et des frais de gas, ce qui crée des frictions. Résultat : une seule signature peut créer une vulnérabilité permanente, invisible tant que l’utilisateur ne vérifie pas activement ses autorisations en cours à l’aide d’outils comme Revoke.cash ou Etherscan.
- Le modèle UTXO de Bitcoin fonctionne différemment. Il n’existe aucune autorisation permanente. Chaque transaction dépense explicitement des sorties de transaction non dépensées (UTXO) précises pour en créer de nouvelles. Une signature autorise le déplacement d’une pièce précise depuis une adresse précise vers une destination précise, sans laisser aucun pouvoir résiduel. Si un utilisateur signe une transaction envoyant 1 BTC vers une plateforme d’échange, cette signature ne peut pas être réutilisée pour envoyer 1 BTC de plus par la suite.
- Le BIP-174 définit le format PSBT (Partially Signed Bitcoin Transaction, transaction Bitcoin partiellement signée). Avant la signature, une PSBT contient toutes les entrées et sorties, ce qui permet aux portefeuilles logiciels ou matériels d’afficher exactement ce qui est dépensé et où cela va. L’utilisateur voit toute la structure de la transaction — entrées, sorties, frais — et signe cette charge utile précise ; avec le type de signature par défaut, la signature engage l’ensemble de la transaction. Comme aucune autorisation cachée n’est créée, une signature malveillante ne peut déplacer que les pièces indiquées dans cette seule transaction ; elle ne peut pas laisser de porte dérobée pour de futurs transferts.
- Le compromis porte sur la composabilité. Les approbations EVM permettent des interactions complexes en plusieurs étapes, dans lesquelles des contrats gèrent les soldes de tokens au nom des utilisateurs sur plusieurs actions. Le modèle explicite de Bitcoin exige que chaque mouvement soit signé individuellement, ce qui limite la possibilité de déléguer des pouvoirs à des smart contracts avec la même fluidité. Les utilisateurs gagnent en sécurité grâce à la transparence et à l’absence d’autorisations permanentes, mais renoncent à la commodité d’un agent automatisé agissant de manière persistante.
Faits clés
- La fonction ERC-20 `approve` accorde à un contrat l’autorisation de dépenser des tokens au nom d’un détenteur, autorisation qui persiste jusqu’à sa révocation.
- L’EIP-2612 permet de définir des autorisations de dépense de tokens par des signatures off-chain, sans transaction immédiate.
- Les wallet drainers exploitent des autorisations illimitées ou oubliées pour vider les tokens de portefeuilles compromis.
- Les transactions Bitcoin dépensent des UTXO précis et créent de nouvelles sorties ; aucune autorisation permanente n’est créée.
- Le BIP-174 (PSBT) permet aux utilisateurs d’examiner toutes les entrées et sorties d’une transaction Bitcoin avant de la signer.
- La composabilité de l’EVM repose sur des autorisations de dépense persistantes, tandis que la sécurité de Bitcoin repose sur des signatures explicites et à usage unique.
Exercice neuf, six, trois, un
9RassemblerÉnumérez 9 actions courantes dans la DeFi ou la crypto qui nécessitent une signature de l’utilisateur. Indiquez celles qui créent des autorisations permanentes et celles qui sont des transferts ponctuels.
6RegrouperRegroupez ces 9 actions en 6 groupes selon ce que chaque signature laisse derrière elle.
3DistillerRéduisez ces 6 groupes à 3 raisons fondamentales pour lesquelles les autorisations permanentes créent des risques de sécurité spécifiques par rapport aux transferts ponctuels.
1CristalliserRédigez 1 phrase sur ce qu’une signature autorise dans chaque modèle et sur la manière dont cette autorisation persiste (ou non).
Vérification des faits
Les dates, les chiffres et les affirmations ont été vérifiés à l’aide des sources publiées listées ci-dessous.