Saltar al contenido
ecdsa.com

ERC-1271 (validación de firmas por contratos)

El estándar de Ethereum con el que las cuentas de contrato inteligente validan firmas: un verificador llama a isValidSignature(bytes32 hash, bytes signature) y considera válido el valor de retorno 0x1626ba7e.
También se escribeERC-1271EIP-1271isValidSignatureERC-6492

Las cuentas inteligentes (Safe, billeteras ERC-4337, cuentas delegadas con EIP-7702) no pueden producir una firma ECDSA simple para su propia dirección, así que decide el contrato: una cuenta Safe comprueba que haya suficientes firmas de propietarios, una billetera con llaves de acceso comprueba una firma P-256 y una billetera con claves de sesión comprueba su política. El valor mágico es el selector de la función, bytes4(keccak256("isValidSignature(bytes32,bytes)")).

Los verificadores deberían probar ERC-1271 cuando la dirección tiene código, y ERC-6492 cuando aún no lo tiene: ERC-6492 envuelve la firma con la llamada a la factoría necesaria para desplegar la cuenta y termina con el sufijo mágico de 32 bytes 0x6492…6492. Bibliotecas como verifyMessage de viem y SignatureChecker de OpenZeppelin cubren los tres casos. Los resultados pueden cambiar con el tiempo, porque los propietarios y las políticas del contrato pueden cambiar.

Estándares y referencias

Todos los términos