Aller au contenu
ecdsa.com

ecrecover

Le contrat précompilé d’Ethereum à l’adresse 0x01 (et la fonction ecrecover de Solidity) qui récupère l’adresse du signataire à partir d’un condensat de 32 octets et d’une signature ECDSA (v, r, s) sur secp256k1.
Autres graphiesecrecoverECRECOVER precompile0x01 precompile

Il coûte 3000 unités de gaz et renvoie l’adresse de 20 octets de la clé publique récupérée, ou zéro octet (l’adresse zéro en Solidity) pour une entrée invalide, par exemple un v différent de 27 ou 28, ou des r et s hors plage. Il n’impose pas la règle low-S : un contrat qui utilise les signatures comme identifiants uniques doit donc rejeter lui-même tout s supérieur à n/2 (EIP-2 n’a appliqué cette règle qu’aux transactions).

Pour un usage sûr : comparez toujours le résultat au signataire attendu et rejetez l’adresse zéro, vérifiez un nonce ou une échéance dans les données signées pour empêcher le rejeu, hachez des données EIP-191 ou EIP-712 plutôt que des valeurs brutes, et utilisez ERC-1271 pour les comptes de contrat intelligent. ECDSA.recover et SignatureChecker d’OpenZeppelin intègrent ces vérifications.

Normes et références

Tous les termes