Pular para o conteúdo
ecdsa.com

ecrecover

O contrato pré-compilado do Ethereum no endereço 0x01 (e a função ecrecover do Solidity) que recupera o endereço do signatário a partir de um hash de 32 bytes e de uma assinatura ECDSA (v, r, s) na secp256k1.
Também escrito comoecrecoverECRECOVER precompile0x01 precompile

Custa 3.000 unidades de gás e retorna o endereço de 20 bytes da chave pública recuperada, ou zero bytes (o endereço zero no Solidity) para entradas inválidas, como v diferente de 27 ou 28 ou r e s fora do intervalo. Ele não impõe a regra low-S, então um contrato que usa assinaturas como identificadores únicos precisa rejeitar por conta própria s acima de n/2 (a EIP-2 aplicou essa regra apenas às transações).

Uso seguro: sempre compare o resultado com o signatário esperado e rejeite o endereço zero, confira um nonce ou um prazo nos dados assinados para impedir a repetição, calcule o hash de dados EIP-191 ou EIP-712 em vez de valores brutos e use a ERC-1271 para contas de contrato inteligente. O ECDSA.recover e o SignatureChecker do OpenZeppelin encapsulam essas verificações.

Padrões e referências

Todos os termos