Saltar al contenido
ecdsa.com

ecrecover

El contrato precompilado de Ethereum en la dirección 0x01 (y la función ecrecover de Solidity) que recupera la dirección del firmante a partir de un hash de 32 bytes y una firma ECDSA (v, r, s) sobre secp256k1.
También se escribeecrecoverECRECOVER precompile0x01 precompile

Cuesta 3000 unidades de gas y devuelve la dirección de 20 bytes de la clave pública recuperada, o cero bytes (en Solidity, la dirección cero) ante una entrada no válida, como un v distinto de 27 o 28 o unos r y s fuera de rango. No aplica la regla low-S, así que un contrato que usa las firmas como identificadores únicos debe rechazar por sí mismo los s mayores que n/2 (EIP-2 aplicó esa regla solo a las transacciones).

Uso seguro: compara siempre el resultado con el firmante esperado y rechaza la dirección cero, comprueba un nonce o una fecha límite en los datos firmados para impedir la repetición, calcula el hash de datos con formato EIP-191 o EIP-712 en lugar de valores en bruto y usa ERC-1271 para las cuentas de contrato inteligente. ECDSA.recover y SignatureChecker de OpenZeppelin encapsulan estas comprobaciones.

Estándares y referencias

Todos los términos