Somente para fins educacionais; não constitui recomendação nem aconselhamento de investimento. Investir pode causar perdas.
Resposta direta
Nonce é um valor cujo significado vem de um namespace específico do protocolo. Nem sempre é aleatório ou um valor universal “usado uma vez”. No Ethereum, o nonce de estado de uma conta de propriedade externa ordena e valida as transações daquele remetente. Um contrato pode manter nonces de aplicação separados no storage para permits ou intenções assinadas. Smart accounts ERC-4337 podem usar um nonce estruturado de UserOperation com faixas paralelas de chave e sequência. No Proof of Work do Bitcoin, o nonce do cabeçalho é um campo de busca limitado usado para testar hashes candidatos.
Esses valores não são intercambiáveis. Um nonce de conta Ethereum não protege uma assinatura arbitrária de dados tipados se a aplicação não validar seu próprio domínio e campo contra replay. Um nonce de cabeçalho PoW não ordena transações de contas. O mesmo número usado por remetentes, contratos, chains ou faixas diferentes representa estados distintos.
Como funciona
- Identifique o namespace antes de ler o número: transação EOA, estado de conta contratual, storage de aplicação,
UserOperationERC-4337 ou cabeçalho PoW específico. Fixe chain ID, fork e versão, conta ou owner, contrato verificador e domínio, EntryPoint ou formato do cabeçalho conforme aplicável. - Leia o estado autoritativo com block tag explícito. Separe o nonce canônico da EOA da contagem pending do provedor, o valor
nonces(owner)da aplicação, a chave e sequência ERC-4337 e o contador local de busca do minerador. Concordância entre RPCs não substitui a verificação de recibo e estado canônicos. - Construa a linhagem assinada. Registre remetente ou owner, chain e domínio, nonce, payload, deadline, contrato verificador, hash da transação ou mensagem e cada substituição. Em transações Ethereum, regras de domínio como EIP-155 complementam o nonce; sozinho, ele não fornece proteção completa contra replay entre chains.
- Aloque na faixa correta. Coordene signatários EOA simultâneos para atribuir cada sequência canônica uma única vez; preserve gaps e linhagem de substituição com o mesmo nonce. Em uma aplicação ou smart account, siga as regras atômicas de verificação e incremento e de faixas do contrato, em vez de presumir um contador global.
- Envie sob as regras de admissão corretas. Políticas pending e de substituição do execution client são locais; bundlers ERC-4337 validam objetos
UserOperationsegundo EntryPoint e conta; uma assinatura EIP-712 ou permit pode ser retransmitida dentro da transação de outra pessoa. Nenhuma aceitação local prova inclusão canônica. - Acompanhe o resultado completo. Diferencie rejeitada, pending, queued, substituída, incluída com sucesso, incluída com
status = 0, removida por reorganização e finalizada. Uma transação Ethereum incluída avança o nonce do remetente mesmo quando a EVM reverte; o nonce de aplicação atualizado dentro da chamada revertida também volta atrás. - Reconcilie antes de tentar novamente. Verifique recibo canônico, hash do bloco, nonce do remetente, storage da aplicação, evento ou recibo ERC-4337 e finalidade. Em PoW, verifique cabeçalho completo e target, não apenas nonce; se o campo finito se esgotar, mineradores alteram outros dados que afetam o cabeçalho para criar novo espaço de busca.
Exemplos resolvidos
- Revert incluído consome o nonce EOA. O nonce canônico do remetente é
12. Uma transação de nonce12é incluída comstatus = 0, usa50,000gas a30 gweie custa50,000 * 30 gwei = 0.0015 ETH. As mudanças do contrato revertem, mas o nonce canônico passa a13. Se uma reorganização remover o bloco, ele pode voltar a12; a carteira deve conferir toda a linhagem. - Nonces de aplicação e relayer são separados. Um owner tem nonce EOA
18; um token ERC-2612 informanonces(owner) = 7; o nonce EOA do relayer é42. Um permit bem-sucedido consome o nonce de aplicação7, tornando-o8; a inclusão leva o nonce do relayer a43e mantém o nonce do owner em18. Se toda a chamada reverter, o relayer ainda passa a43, mas o storage do token retorna a7. - Faixas ERC-4337. Sob a expressão didática
nonce = (key << 64) | sequence, chave5e sequência9resultam em5 * 2^64 + 9 = 92,233,720,368,547,758,089; sequência10resulta em92,233,720,368,547,758,090. A chave independente6, sequência0, resulta em110,680,464,442,257,309,696. O uso paralelo ainda depende da validação da smart account e é separado do nonce EOA do bundler. - Nonce de busca PoW. O nonce do cabeçalho Bitcoin tem
32 bits, portanto existem2^32 = 4,294,967,296candidatos numéricos. A hipotéticos100 TH/s, percorrer esse espaço leva4,294,967,296 / 100,000,000,000,000 = 0.00004294967296 seconds = 42.94967296 microseconds. Mineradores alteram extraNonce da coinbase, horário ou conjunto de transações para mudar a raiz de Merkle e obter novos cabeçalhos; esse campo não é estado contra replay de contas.
Riscos
- Confundir namespaces EOA, contrato, aplicação, ERC-4337 e PoW.
- Ler o nonce da chain, fork, contrato ou EntryPoint errados.
- Usar resposta RPC desatualizada, incoerente ou maliciosa.
- Signatários simultâneos alocarem o mesmo nonce EOA.
- Um gap de nonce bloquear candidatas locais posteriores.
- Tratar o nonce pending do provedor como estado canônico.
- Esquecer que um revert incluído consome nonce EOA e gas.
- Não restaurar nonce e linhagem após uma reorganização.
- Uma substituição não cumprir a política de comissão do nó.
- Presumir que a substituição apagou globalmente a transação antiga.
- Correlacionar números iguais de remetentes ou domínios diferentes.
- Omitir chain ID ou outro separador de domínio exigido.
- Não verificar e incrementar atomicamente um nonce de aplicação.
- Owner, deadline, domain separator ou token ERC-2612 incorretos.
- Replay de assinatura entre chain, contrato ou versão.
- Interpretar nonce de conta contratual como contador genérico de chamadas.
- Empacotar chave ou largura de sequência ERC-4337 erradas.
- Misturar nonce EOA do bundler e nonce
UserOperationda smart account. - Upgrade de proxy ou colisão de storage alterar o nonce da aplicação.
- Tratar nonce PoW finito como autorização, estado contra replay ou prova isolada.
Equívocos comuns
- Todo campo chamado nonce tem o mesmo significado e é usado globalmente uma vez.
- Um nonce maior torna a transação mais segura, rápida ou final.
- Uma transação Ethereum que reverte não consome o nonce do remetente.
- Um nonce sozinho impede todo replay entre chains, contratos e mensagens tipadas.
- Toda smart account ERC-4337 tem um contador linear idêntico ao nonce EOA.
Tópicos relacionados
Fontes
- Ethereum accounts - Ethereum.org (acessado em: 2026-08-13)
- Transactions - Ethereum.org (acessado em: 2026-08-13)
- EIP-2681: Limit account nonce to 2^64-1 - Ethereum Improvement Proposals (acessado em: 2026-08-13)
- EIP-155: Simple replay attack protection - Ethereum Improvement Proposals (acessado em: 2026-08-13)
- EIP-712: Typed structured data hashing and signing - Ethereum Improvement Proposals (acessado em: 2026-08-13)
- ERC-2612: Permit Extension for EIP-20 Signed Approvals - Ethereum Improvement Proposals (acessado em: 2026-08-13)
- ERC-4337: Account Abstraction Using Alt Mempool - Ethereum Improvement Proposals (acessado em: 2026-08-13)
- Block Chain - Bitcoin Developer Documentation (acessado em: 2026-08-13)