Aller au contenu
ecdsa.com

ERC-1271 (validation des signatures par les contrats)

Le standard Ethereum par lequel les comptes de contrat intelligent valident les signatures : un vérificateur appelle isValidSignature(bytes32 hash, bytes signature) et considère la valeur de retour 0x1626ba7e comme valide.
Autres graphiesERC-1271EIP-1271isValidSignatureERC-6492

Les comptes intelligents (Safe, portefeuilles ERC-4337, comptes délégués via EIP-7702) ne peuvent pas produire une simple signature ECDSA pour leur propre adresse : c’est donc le contrat qui décide. Un Safe vérifie un nombre suffisant de signatures de ses propriétaires, un portefeuille à clé d’accès vérifie une signature P-256, un portefeuille à clés de session vérifie sa politique. La valeur magique est le sélecteur de fonction, bytes4(keccak256("isValidSignature(bytes32,bytes)")).

Les vérificateurs devraient essayer ERC-1271 quand l’adresse contient du code, et ERC-6492 quand elle n’en contient pas encore : ERC-6492 enveloppe la signature avec l’appel à la fabrique (factory) nécessaire pour déployer le compte et se termine par le suffixe magique de 32 octets 0x6492…6492. Des bibliothèques comme verifyMessage de viem et SignatureChecker d’OpenZeppelin gèrent les trois cas. Les résultats peuvent varier dans le temps, puisque les propriétaires et les politiques du contrat peuvent changer.

Normes et références

Tous les termes