Définition
EIP-712 : définition
Aussi appelé : typed data
L'EIP-712 est un standard Ethereum qui définit comment signer des données structurées et typées, afin que le portefeuille affiche en clair ce que l'utilisateur approuve au lieu d'une suite hexadécimale incompréhensible.
Thème : Ethereum et smart contracts
Beaucoup d'actions dans l'écosystème Ethereum reposent sur des signatures hors chaîne : ordres sur une place de marché, votes de gouvernance, autorisations de dépense. Sans standard, l'utilisateur signait souvent un simple hachage, impossible à interpréter. L'EIP-712 impose de décrire le message sous forme de champs nommés et typés, par exemple un destinataire de type adresse et un montant de type entier. Le portefeuille peut alors présenter chaque champ lisiblement avant la signature.
Le standard ajoute un séparateur de domaine (domain separator), qui intègre notamment le nom de l'application, sa version, l'identifiant de la chaîne et l'adresse du contrat vérificateur. Une signature produite pour une application sur une chaîne donnée ne peut donc pas être rejouée sur un autre contrat ou une autre chaîne. Côté contrat, la vérification consiste à recalculer le même hachage structuré et à retrouver l'adresse du signataire. L'EIP-712 sert de fondation à d'autres standards, comme le permit de l'EIP-2612, et à de nombreux protocoles qui proposent des actions sans frais grâce à des signatures relayées.
Un exemple concret
Imaginons que Chloé mette en vente un NFT sur une place de marché. Plutôt que de payer une transaction, elle signe un ordre EIP-712. Son portefeuille affiche clairement l'identifiant du NFT, le prix demandé et la date d'expiration. L'ordre n'est exécuté on-chain qu'au moment où un acheteur l'accepte.
Les risques à connaître
La lisibilité ne protège pas si l'utilisateur ne lit pas : des sites malveillants font signer des messages EIP-712 parfaitement valides qui accordent des autorisations ou mettent des actifs en vente à prix dérisoire. Le domaine et les montants affichés doivent toujours être vérifiés.
Questions fréquentes sur EIP-712
Pourquoi mon portefeuille me demande-t-il de signer un message et pas une transaction ?
Certaines applications utilisent des signatures EIP-712 pour créer des ordres ou des autorisations sans frais. La signature est gratuite, mais elle peut avoir des conséquences réelles une fois utilisée par un contrat.
Une signature EIP-712 peut-elle être réutilisée ailleurs ?
Le séparateur de domaine lie la signature à une application, un contrat et une chaîne précis, ce qui empêche normalement sa réutilisation dans un autre contexte.