Définition
ERC-777 : définition
L'ERC-777 est un standard de jetons fongibles compatible avec l'ERC-20, qui ajoute des opérateurs autorisés et des hooks, c'est-à-dire des fonctions appelées automatiquement lors de l'envoi ou de la réception de jetons.
Thème : Ethereum et smart contracts
L'ERC-777 a été conçu pour corriger certaines limites de l'ERC-20. Avec ce dernier, un contrat qui reçoit des jetons n'en est pas informé, et déposer des jetons dans un protocole exige deux étapes, une approbation puis un prélèvement. L'ERC-777 introduit des hooks : avant un envoi, le contrat de l'expéditeur peut être notifié, et après la réception, celui du destinataire aussi. Un contrat peut ainsi réagir immédiatement à l'arrivée de jetons, voire la refuser.
Le standard ajoute la notion d'opérateurs, des adresses autorisées à déplacer les jetons pour le compte du détenteur, et prévoit une fonction d'envoi accompagnée de données. Il s'appuie sur un registre commun (ERC-1820) où chaque adresse déclare les interfaces qu'elle prend en charge. Les jetons restent compatibles avec les fonctions ERC-20 habituelles. En pratique, l'ERC-777 a été peu adopté. Les hooks introduisent un appel vers un contrat externe au milieu d'un transfert, ce qui a facilité des attaques par réentrance contre des protocoles qui ne s'y attendaient pas. Des bibliothèques de référence ont depuis déconseillé son usage.
Un exemple concret
Imaginons qu'un service d'abonnement accepte un jeton ERC-777. Lorsque Marc envoie ses jetons au contrat du service, le hook de réception s'exécute automatiquement et active son abonnement dans la même transaction, sans approbation préalable ni seconde opération. Avec un ERC-20 classique, il aurait fallu deux transactions distinctes.
Les risques à connaître
Un protocole qui accepte des jetons ERC-777 en les traitant comme de simples ERC-20 peut être vulnérable à la réentrance, le hook permettant à un attaquant de rappeler le contrat avant la fin de la mise à jour de ses soldes. Ce risque explique la faible adoption du standard.
Questions fréquentes sur ERC-777
Pourquoi l'ERC-777 est-il peu utilisé ?
Ses hooks, pratiques sur le papier, ont créé des risques de réentrance dans des protocoles existants, et des outils de référence ont fini par en déconseiller l'usage.
Un portefeuille compatible ERC-20 peut-il gérer un jeton ERC-777 ?
Oui, l'ERC-777 conserve les fonctions de l'ERC-20, un portefeuille classique peut donc afficher et transférer ces jetons.