O que é um nonce?
Nonce é um valor único destinado a ser usado uma única vez em um contexto criptográfico, de blockchain ou de contrato inteligente específico.No universo cripto, a palavra costuma ser entendida como abreviação de “number used once” (número usado uma vez).Um nonce pode ser um contador simples de transações, um campo de mineração, um valor aleatório, uma entrada de assinatura, um ID de autorização de contrato inteligente ou um número de sequência usado para impedir ações repetidas.O significado exato depende de onde o nonce aparece.Em uma conta Ethereum, o nonce ajuda a ordenar transações e impede que a mesma transação assinada seja executada mais de uma vez.No cabeçalho de um bloco Bitcoin, o nonce é um campo que os mineradores alteram ao buscar um hash válido de Proof of Work.Em uma autorização de token (permit), o nonce ajuda a impedir que a mesma aprovação assinada seja reutilizada.Na assinatura ECDSA, um nonce pode ser um valor secreto usado em cada assinatura; se for gerado de forma inadequada, pode expor uma chave privada.Como a mesma palavra aparece em vários sistemas cripto, os usuários devem sempre verificar que tipo de nonce está sendo mencionado.A ideia comum mais importante é a singularidade.Um nonce é útil porque torna uma ação, tentativa de hash, mensagem, transação ou assinatura diferente das demais.Essa singularidade contribui para a proteção contra replay, a ordenação, a mineração, a segurança da criptografia, a segurança dos contratos, a usabilidade das carteiras e a proteção das chaves privadas.Principais informações sobre nonces
- Nonce é um valor destinado a ser usado uma única vez em um contexto definido.
- As contas Ethereum usam nonces para ordenar transações e impedir replay de transações.
- Os mineradores de Bitcoin alteram o nonce do cabeçalho do bloco enquanto buscam um hash de Proof of Work que atenda ao alvo.
- Os contratos inteligentes costumam usar nonces para impedir que autorizações assinadas, votos, resgates e meta-transações sejam reutilizados.
- O permit ERC-2612 usa nonces do proprietário para impedir a reutilização da mesma assinatura de aprovação de token.
- As contas inteligentes ERC-4337 usam um modelo de nonce mais flexível para fluxos de account abstraction.
- A EIP-155 adiciona proteção contra replay por meio do ID da chain, que funciona em conjunto com os nonces das transações.
- Mensagens estruturadas EIP-712 ainda precisam de verificações de nonce no nível da aplicação, pois os dados tipados não impedem automaticamente todos os ataques de replay.
- Os nonces de assinatura ECDSA devem ser secretos e únicos, pois a reutilização ou padrões previsíveis podem revelar chaves privadas.
- Os usuários não devem alterar manualmente os nonces da carteira a menos que entendam as transações pendentes e o comportamento de substituição.
Por que os nonces são importantes nas criptomoedas
Os nonces são importantes porque as blockchains dependem de assinaturas, hashes e regras determinísticas.Qualquer pessoa que veja uma assinatura digital válida pode copiá-la perfeitamente.Uma transação pode ser retransmitida por muitos nós.Um contrato inteligente pode aceitar novamente a mesma mensagem assinada se não verificar se ela já foi usada.Um minerador pode testar muitas entradas de hash ao buscar um bloco válido.Uma carteira pode criar várias transações a partir do mesmo endereço e precisa mantê-las em uma ordem válida.Os nonces ajudam todos esses sistemas a evitar confusão, duplicação, replay e reutilização insegura.Sem nonces, os sistemas cripto teriam dificuldade para distinguir uma nova ação de uma ação antiga copiada.Um usuário poderia aprovar um operador de token uma vez e, sem querer, permitir que a mesma assinatura fosse usada novamente.Uma bridge poderia processar a mesma mensagem cross-chain duas vezes.Uma transação poderia ser reproduzida em outra chain.Uma carteira de assinatura poderia revelar sua chave privada por causa de um nonce criptográfico fraco.Os nonces são valores pequenos, mas protegem grandes quantidades de valor digital.Nonce de conta Ethereum
O nonce de uma conta Ethereum é um contador associado a uma conta.A documentação de contas da Ethereum explica que uma conta tem um campo de nonce e que apenas uma transação com determinado nonce pode ser executada por conta.
Em uma conta de propriedade externa, o nonce conta as transações enviadas pela conta.Em uma conta de contrato, o nonce está relacionado aos contratos criados por essa conta de contrato.Se um endereço enviou 25 transações bem-sucedidas, a próxima transação normal deverá usar o nonce 25.Depois que essa transação for executada, a próxima deverá usar o nonce 26.Esse contador simples impede que a mesma transação seja executada duas vezes.Ele também define a ordem das transações do mesmo endereço.Normalmente, uma transação com nonce 27 não pode ser processada antes que a transação com nonce 26 seja processada.Por isso, uma transação travada pode bloquear transações posteriores da mesma carteira.Nonce de transação Ethereum
O nonce de uma transação Ethereum faz parte dos dados da transação assinados pela carteira.A documentação de transações da Ethereum descreve o nonce como um contador sequencial crescente que indica o número da transação da conta.
O nonce da transação ajuda a criar um hash de transação exclusivo.Ele também informa à rede em que posição a transação se encaixa na sequência de transações do remetente.Se duas transações pendentes da mesma conta usarem o mesmo nonce, elas disputarão a mesma posição.Apenas uma delas poderá ser executada.Essa é a ideia básica por trás da aceleração ou do cancelamento de uma transação Ethereum.O usuário pode enviar uma transação de substituição com o mesmo nonce e uma taxa maior.Se a substituição for aceita pela rede e incluída primeiro, ela usará o nonce e impedirá a execução da transação anterior.Esse comportamento é útil, mas pode confundir usuários que editam nonces manualmente sem entender a fila de transações pendentes.Nonce de mineração Bitcoin
O nonce de mineração do Bitcoin é diferente do nonce de conta da Ethereum.A referência da blockchain do Bitcoin descreve o nonce do cabeçalho do bloco como um número arbitrário de 32 bits que os mineradores alteram para modificar o hash do cabeçalho.
Os mineradores calculam repetidamente o hash dos dados do cabeçalho do bloco, alterando o nonce e outros campos ajustáveis.O objetivo é encontrar um hash menor ou igual ao limite-alvo atual.Se o minerador testar todos os valores possíveis de nonce de 32 bits sem encontrar um bloco válido, poderá atualizar o horário ou alterar a transação coinbase, o que modifica a raiz de Merkle.Isso oferece ao minerador mais entradas de hash para testar.O nonce de mineração não ordena as transações dos usuários.Ele não impede ataques de replay de carteira.É uma variável de busca de Proof of Work.Por isso, a mesma palavra “nonce” pode ter significados muito diferentes dependendo da chain e do contexto.Nonce em Proof of Work
Na mineração de Proof of Work, um nonce ajuda os mineradores a criar muitas tentativas diferentes de hash.Uma função hash criptográfica produz uma saída muito diferente quando a entrada muda, mesmo que ligeiramente.Alterar o nonce muda a entrada do cabeçalho do bloco.Alterar a entrada muda o hash.Os mineradores continuam testando valores diferentes de nonce até que um hash atenda ao alvo de dificuldade da rede.Nesse contexto, o nonce não é secreto.Depois que um bloco é encontrado, todos podem ver o nonce e verificar o hash.A segurança vem da grande quantidade de trabalho necessária para encontrar um hash válido, não de ocultar o nonce.Isso é diferente de um nonce de assinatura, que geralmente deve permanecer secreto.Os nonces de mineração são ferramentas públicas de busca de Proof of Work.Nonce para proteção contra replay
A proteção contra replay é um dos usos mais importantes dos nonces em cripto.Um ataque de replay ocorre quando alguém copia uma ação assinada válida e a envia novamente.Um nonce impede isso ao tornar cada ação assinada utilizável uma única vez.Quando a ação é executada, o nonce é consumido, incrementado ou marcado como usado.Se alguém tentar enviar a mesma ação assinada novamente, a verificação do nonce falhará.Isso é importante para transações, aprovações de tokens, resgates em contratos inteligentes, votos de governança, mensagens de bridge, logins de carteira e meta-transações.Uma assinatura válida comprova que uma chave aprovou algo.Um nonce válido comprova que a aprovação ainda não foi usada naquele contexto.As duas verificações são necessárias para uma autorização cripto segura.A proteção contra replay transforma uma assinatura copiada, que seria uma ameaça grave, em uma duplicata rejeitada.Nonce e o Chain ID da EIP-155
A EIP-155 acrescenta outra camada de proteção contra replay ao incluir um ID de chain nos dados assinados de transações Ethereum.A especificação EIP-155 explica que essa alteração permite que uma transação funcione em uma chain sem funcionar em outra que use um ID de chain diferente.
Isso é importante porque muitas chains compatíveis com EVM podem compartilhar formatos de endereço e estruturas de transação semelhantes.O nonce de uma transação impede que a mesma transação de conta seja executada duas vezes na mesma chain.O ID de chain ajuda a impedir que a mesma transação assinada seja reproduzida em outra chain.As duas ideias são importantes.Uma transação pode ser única em uma chain e ainda ser perigosa se também for válida em outra.Assinaturas que consideram a chain reduzem esse risco.As assinaturas no nível da aplicação também devem incluir o contexto da chain quando ele for relevante.Um nonce sem o domínio correto ainda pode ser reutilizado em outros contextos.Nonce em dados tipados EIP-712
A EIP-712 é um padrão para assinar dados estruturados e tipados.A especificação EIP-712 declara que o padrão não oferece proteção contra replay por si só.
Isso significa que os desenvolvedores precisam adicionar essa proteção na aplicação ou no contrato inteligente que verifica a assinatura.Uma mensagem tipada pode incluir um nonce.O contrato precisa verificar esse nonce.Depois da execução bem-sucedida, o contrato também precisa marcar o nonce como usado ou incrementá-lo.Se o contrato verificar a assinatura, mas esquecer de atualizar o estado do nonce, a mesma assinatura poderá ser reutilizada.A EIP-712 melhora a legibilidade e a separação de domínio, mas não substitui um projeto cuidadoso de nonces.Uma assinatura segura de dados tipados deve incluir um nonce, um prazo de validade, o ID de chain, o contrato verificador e a ação exata autorizada.Os usuários devem tratar assinaturas de dados tipados como permissões reais, não como janelas inofensivas de login.Nonce no permit ERC-2612
O permit ERC-2612 permite que o proprietário de um token aprove gastos por meio de uma mensagem assinada, em vez de uma transação de aprovação on-chain direta.O padrão ERC-2612 inclui uma função nonces e determina que o mapeamento de nonces é usado para proteção contra replay.
Quando um permit é executado com sucesso, o nonce do proprietário aumenta.Isso invalida a mesma assinatura de permit para usos futuros.O ERC-2612 também inclui um prazo de validade para que a aprovação assinada possa expirar.Isso é importante porque um relayer pode receber um permit e escolher quando enviá-lo.Sem um prazo de validade, uma assinatura antiga poderia continuar válida por mais tempo do que o usuário espera.Sem um nonce, a mesma assinatura de aprovação poderia ser enviada repetidamente.Os nonces de permit são um dos principais motivos pelos quais aprovações sem gas podem ser mais seguras e práticas.Eles também mostram por que os contratos inteligentes precisam de seus próprios sistemas de nonce, além dos nonces normais de transação da conta.Nonce em account abstraction ERC-4337
A account abstraction ERC-4337 usa uma UserOperation em vez de uma transação Ethereum normal de uma conta de propriedade externa.A especificação ERC-4337 define o nonce da UserOperation como um parâmetro antirreplay.
Ela também determina que as assinaturas devem depender do ID de chain e do endereço EntryPoint para impedir replay cross-chain ou entre vários EntryPoints.A ERC-4337 oferece suporte a um modelo de nonce semiabstraído.O nonce pode ser dividido em uma chave e uma sequência.Isso permite que contas inteligentes usem várias faixas de nonce.Uma carteira pode ter uma faixa para transações normais e outra para ações administrativas ou de recuperação.Esse modelo é mais flexível do que um único contador sequencial simples.Também é mais complexo para desenvolvedores e usuários de carteiras.A account abstraction torna o projeto de nonces mais poderoso, mas também aumenta a necessidade de interfaces de carteira mais claras.Faixas de nonce
Uma faixa de nonce é uma sequência de nonce independente dentro de uma conta ou estrutura de conta inteligente maior.As faixas de nonce permitem que diferentes categorias de ações avancem em paralelo.Por exemplo, uma carteira pode usar uma faixa para gastos diários e outra para operações de recuperação.Uma carteira de jogos pode usar uma faixa para ações frequentes de baixo valor e outra para transferências de ativos de alto valor.Uma carteira de assinaturas pode usar uma faixa para pagamentos recorrentes e outra para transações gerenciadas pelo usuário.A vantagem é que uma ação travada não bloqueia todas as outras.O risco é que os usuários talvez não entendam qual faixa estão autorizando.Os desenvolvedores precisam garantir que cada faixa mantenha uma proteção forte contra replay.As carteiras devem explicar as faixas de nonce apenas quando o usuário precisar saber.O melhor projeto oferece flexibilidade sem expor detalhes técnicos confusos.Nonces sequenciais
Um nonce sequencial é um contador que aumenta em um após cada ação válida.Esse é o modelo mais comum para transações normais de conta.É fácil auditar nonces sequenciais porque eles criam uma ordem clara.Eles também impedem que duas transações da mesma conta com o mesmo nonce sejam executadas.A desvantagem é que transações posteriores podem ser bloqueadas por uma transação anterior pendente.Isso pode causar problemas com transações travadas.O usuário talvez precise acelerar ou cancelar a transação anterior antes que as posteriores avancem.Nonces sequenciais são confiáveis, simples e amplamente usados.São menos flexíveis para sistemas em que muitas ações independentes precisam ocorrer ao mesmo tempo.Por isso, contas de contrato inteligente e sistemas de autorização às vezes usam outros padrões de nonce.Nonces aleatórios
Um nonce aleatório é um valor único gerado com base em aleatoriedade, em vez de um contador simples.Nonces aleatórios são úteis quando as ações não precisam seguir uma ordem estrita.Um contrato inteligente pode armazenar um mapeamento dos nonces aleatórios usados.Quando uma autorização assinada é usada, o contrato marca esse nonce aleatório como consumido.Se a mesma autorização aparecer novamente, o contrato a rejeita.Nonces aleatórios podem permitir que várias ações assinadas existam ao mesmo tempo sem bloquear umas às outras.A desvantagem está no armazenamento e na qualidade da aleatoriedade.O contrato talvez precise armazenar muitos nonces usados.A carteira ou aplicação precisa evitar gerar o mesmo nonce aleatório duas vezes no mesmo contexto.Nonces aleatórios são flexíveis, mas precisam ser monitorados com cuidado.Nonces de contratos inteligentes
Um nonce de contrato inteligente é qualquer sistema de nonce definido e armazenado por um contrato inteligente.Pode ser um contador para cada usuário.Pode ser um mapeamento de IDs de mensagem já usados.Pode ser um índice de resgate em um airdrop.Pode ser o estado de votação de uma proposta de governança.Pode ser um hash de ordem em um marketplace.Pode ser um número de sequência de mensagem de bridge.Nonces de contratos inteligentes são necessários porque os nonces normais de conta não protegem todas as assinaturas off-chain nem todas as ações no nível do contrato.Se um contrato aceitar uma assinatura, deverá decidir se ela já foi usada.Um bom projeto de nonce para contratos inteligentes impede execuções repetidas sem tornar a experiência do usuário difícil de gerenciar.Nonce em mensagens de login de carteira
Mensagens de login de carteira costumam usar nonces mesmo quando não há transação on-chain.Um site pode pedir que o usuário assine uma mensagem para comprovar que controla um endereço de carteira.O site deve gerar um nonce de desafio novo para aquela tentativa de login.A mensagem assinada deve incluir o domínio, o nonce, o horário de emissão, o prazo de validade e a finalidade.Depois que o login for bem-sucedido, o servidor deve marcar o nonce como usado.Se um invasor roubar uma assinatura de login antiga, o nonce usado deverá impedir o replay.Sem um nonce novo, uma assinatura de login pode funcionar como uma senha reutilizável.Isso é perigoso porque os usuários muitas vezes consideram a assinatura de mensagens menos séria do que as transações.Os nonces de login de carteira fazem parte da segurança da conta.Uma boa assinatura de login deve ser específica, recente, limitada e fácil de entender.Nonce em assinaturas ECDSA
A assinatura ECDSA usa um valor secreto por mensagem, muitas vezes chamado de nonce ou nonce de assinatura.Esse tipo de nonce é diferente de um nonce de transação de conta.Ele deve ser secreto e único para cada assinatura.A RFC 6979 define um método determinístico para gerar assinaturas DSA e ECDSA, que evita depender da geração de novos valores aleatórios para cada assinatura.
O FIPS 186-5 Digital Signature Standard do NIST declara que o ECDSA usa um número secreto por mensagem durante a geração da assinatura.
Se um nonce ECDSA for reutilizado ou previsível, invasores poderão conseguir recuperar a chave privada.Pesquisas recentes sobre o risco de colisão de nonce ECDSA em atividades de blockchain em produção mostram como a geração inadequada de nonces pode ter consequências catastróficas.
Esse é um dos significados mais sérios de nonce na segurança cripto.Um nonce de conta incorreto pode causar uma transação com falha ou travada.Um nonce de assinatura ECDSA incorreto pode expor a carteira inteira.Nonce em criptografia
Alguns sistemas de criptografia também usam nonces.Na criptografia autenticada, um nonce pode ajudar a tornar únicas as saídas de criptografia, mesmo quando a mesma chave é usada para várias mensagens.A RFC 5116 define uma interface para criptografia autenticada com dados associados e discute algoritmos AEAD que usam nonces.
Carteiras cripto, backups criptografados, sistemas de mensagens seguras e softwares de custódia podem usar internamente nonces de criptografia.Esses nonces não são iguais aos nonces de transações de blockchain.Eles fazem parte da proteção criptográfica das mensagens.Em muitos esquemas de criptografia, reutilizar um nonce com a mesma chave pode ser perigoso.Normalmente, os usuários não gerenciam esses nonces manualmente.Os desenvolvedores e as bibliotecas de carteira precisam tratá-los corretamente.Softwares cripto seguros tratam a geração de nonces como um aspecto crítico de segurança.Nonce vs. salt
Nonce e salt são conceitos relacionados, mas não são iguais.Em geral, um nonce deve ser único para um único uso em um protocolo ou contexto de assinatura.Um salt costuma ser um dado aleatório ou único adicionado a um hash, processo de senha, compromisso ou cálculo de endereço para tornar as saídas distintas.Em cripto, um salt pode ser usado para implantar contratos de forma determinística ou derivar compromissos.Um nonce pode ser usado para ordenar transações ou impedir replay.Ambos os valores podem acrescentar singularidade.A diferença está na função de segurança que desempenham.Um salt costuma impedir pré-computações ou criar singularidade em valores derivados.Um nonce costuma impedir reutilização ou garantir atualidade em ações de protocolo.Os desenvolvedores devem nomear e documentar esses valores com clareza para evitar erros de segurança.Nonce vs. hash de transação
Nonce não é a mesma coisa que hash de transação.O nonce é uma entrada incluída em uma transação ou mensagem de protocolo.O hash de transação é um identificador produzido pelo cálculo de hash dos dados da transação assinada.Alterar o nonce modifica o hash da transação porque a transação assinada muda.Uma carteira pode usar o nonce antes de a transação ser minerada.Um explorador de blockchain geralmente mostra o hash da transação depois que ela é transmitida ou incluída.O nonce informa à rede a posição da transação na sequência do remetente.O hash da transação ajuda os usuários a encontrar e verificar o registro da transação.Ambos são importantes, mas têm funções diferentes.Confundi-los pode dificultar a resolução de problemas de transação.Nonce vs. gas
Nonce não é gas.Gas mede o trabalho computacional e o custo de execução da transação.Um nonce identifica a ordem ou a singularidade da transação.Uma transação pode ter o nonce correto, mas pouco gas ou uma taxa muito baixa.Uma transação pode ter gas suficiente, mas o nonce errado.Esses problemas levam a falhas diferentes.Um problema de gas pode causar falha de execução ou baixa prioridade de inclusão.Um problema de nonce pode fazer a transação ser rejeitada, substituída, atrasada ou bloqueada por uma transação pendente anterior.Os usuários costumam ver as duas configurações em ferramentas avançadas de carteira.Não devem alterar nenhuma delas sem cuidado.Nonce e criação de endereço de contrato
Os nonces também podem afetar endereços de contratos.Em sistemas semelhantes à Ethereum, o endereço de um contrato criado pela operação tradicional create é derivado do endereço do criador e do nonce do criador.Isso significa que a mesma conta pode criar endereços de contrato diferentes conforme seu nonce muda.Os desenvolvedores precisam entender isso ao implantar contratos, testar implantações ou prever endereços.Scripts de implantação de contratos podem falhar se o nonce esperado for diferente do nonce real da conta.Uma transação pendente pode alterar a ordem de implantação.Erros manuais de nonce podem fazer com que contratos sejam implantados em endereços inesperados.Métodos de implantação determinística podem usar outros mecanismos, mas o gerenciamento de nonce continua sendo importante em implantações comuns.Em implantações importantes, as equipes devem usar scripts controlados e verificar os endereços antes de anunciá-los.Um endereço de implantação incorreto pode confundir os usuários e prejudicar integrações.Nonce e transações travadas
Uma transação costuma ficar travada quando uma taxa baixa a mantém pendente.Se essa transação usar o próximo nonce da conta, as transações posteriores poderão ficar na fila atrás dela.Isso acontece porque nonces sequenciais exigem que posições anteriores sejam processadas primeiro.Uma carteira pode mostrar transações posteriores como pendentes mesmo que as taxas delas sejam altas.O problema real pode ser uma transação mais antiga com um nonce menor.Em muitos casos, os usuários podem acelerar a transação travada substituindo-a por outra com o mesmo nonce e uma taxa maior.Em muitos casos, os usuários podem cancelar a transação travada enviando uma transação de substituição sem efeito, com o mesmo nonce e uma taxa maior.Essas ações exigem cuidado.Substituir o nonce errado pode cancelar ou sobrescrever uma ação que o usuário ainda queria realizar.A resolução de problemas de nonce é um dos motivos pelos quais as configurações avançadas de carteira podem ser arriscadas para iniciantes.Nonce e substituição de transação
A substituição de transação usa o mesmo nonce para substituir uma transação pendente.A transação de substituição disputa com a original a mesma posição de nonce.Se a substituição for aceita e confirmada primeiro, a transação original se tornará inválida porque o nonce já terá sido usado.Isso é útil quando o usuário quer aumentar a taxa de uma transação lenta.Também é útil quando o usuário quer cancelar uma transação pendente antes da confirmação.A substituição não significa que a blockchain apaga uma transação confirmada.Ela só funciona enquanto a transação anterior ainda está pendente.Depois que uma transação é confirmada, o nonce é consumido.Depois disso, o usuário não pode reutilizar esse nonce em outra transação.Por isso, o momento certo é importante ao gerenciar transações pendentes.Nonce e bridges
As bridges usam nonces ou IDs de mensagem para impedir que a mesma mensagem cross-chain seja processada duas vezes.Uma mensagem de bridge pode representar um depósito, saque, mint, burn ou chamada de contrato de token.Se a chain de destino aceitar a mesma mensagem mais de uma vez, os ativos poderão ser liberados ou emitidos incorretamente.Uma mensagem de bridge segura deve incluir a chain de origem, a chain de destino, o contrato de origem, o contrato de destino, o remetente, o destinatário, o valor e um nonce ou ID de mensagem único.O contrato de destino deve marcar a mensagem como processada.Se alguém enviar a mesma mensagem novamente, o contrato deverá rejeitá-la.O projeto de nonce para bridges é especialmente importante porque elas conectam diferentes sistemas de consenso.Uma falha de replay em uma bridge pode criar risco sistêmico entre chains.Os usuários devem considerar a segurança da bridge separadamente da segurança do próprio token.Um token pode ser confiável enquanto o sistema de mensagens da bridge não é seguro.Nonce e governança
Os sistemas de governança usam estados semelhantes a nonces para impedir a repetição de votos, delegações e execuções de propostas.Em geral, um voto deve contar apenas uma vez por snapshot de poder de voto ou conforme regras de votação claramente definidas.Uma delegação assinada não deve poder ser reutilizada indefinidamente, a menos que o projeto permita isso de forma explícita.A execução de uma proposta não deve ocorrer duas vezes, a menos que o contrato permita intencionalmente execuções repetidas.Mensagens de governança podem precisar de IDs de proposta, nonces de votantes, IDs de chain, prazos de validade e verificações do estado de execução.Isso é especialmente importante quando a governança controla tesourarias, atualizações, taxas, parâmetros de risco ou conexões de bridge.Uma ação de governança reproduzida pode ser mais perigosa do que um pagamento com falha.Ela pode alterar as regras de um protocolo inteiro.Contratos de governança bem projetados tratam a proteção contra replay como um recurso essencial de segurança.Os votantes devem analisar a ação que estão assinando antes de aprová-la.Nonce e resgates de airdrop
Airdrops e sistemas de recompensa costumam usar proteções semelhantes a nonces para impedir resgates repetidos.Um contrato pode armazenar se determinado endereço já fez um resgate.Um contrato pode armazenar se determinado índice de resgate de Merkle já foi usado.Um contrato pode usar uma mensagem de resgate assinada com nonce, ID da campanha, quantidade de tokens, prazo de validade e endereço do destinatário.Se essa proteção estiver ausente, um resgate válido poderá ser reutilizado até esgotar as recompensas.Bons sistemas de resgate vinculam a solicitação ao usuário, à campanha, à chain, ao token, ao valor e à janela de tempo corretos.Os usuários devem ter cuidado ao assinar mensagens de resgate em sites desconhecidos.Uma assinatura de resgate pode autorizar mais do que um resgate inofensivo se a mensagem for enganosa.A proteção por nonce impede o uso repetido, mas não torna seguro um primeiro uso malicioso.Uma carteira clara continua sendo importante.Nonce e DeFi
O DeFi usa nonces de muitas formas que nem sempre são visíveis.Permits de tokens usam nonces para aprovações assinadas.Meta-transações usam nonces para ações sem gas.Protocolos de empréstimo podem usar nonces para delegações assinadas ou aprovações de crédito.Sistemas descentralizados de ordens podem usar nonces ou hashes de ordem para impedir que ordens executadas sejam executadas novamente.Opções, vaults e produtos estruturados podem usar nonces em cotações off-chain ou mensagens de liquidação.Robôs de liquidação e sistemas de trading também precisam gerenciar nonces de conta com cuidado, pois uma transação travada pode bloquear ações sensíveis ao tempo.No DeFi, erros de nonce podem custar dinheiro rapidamente.Uma assinatura de aprovação desatualizada pode representar risco de drenagem da carteira.Uma atualização de nonce esquecida pode deixar um contrato vulnerável a replay.Um nonce de transação incorreto pode fazer uma operação potencialmente lucrativa falhar.Nonce e NFTs
Sistemas de NFT também usam nonces em listagens de marketplace, ofertas, permits, resgates e transferências baseadas em assinatura.Um vendedor pode assinar uma ordem off-chain para vender um NFT.O contrato do marketplace precisa impedir que a mesma ordem assinada seja executada mais vezes do que o permitido.Isso pode ser feito com nonces de ordem, hashes de ordem, contadores de cancelamento ou mapeamentos de estado de execução.Se uma ordem de NFT puder ser reproduzida após a venda ou o cancelamento, o vendedor poderá perder um ativo inesperadamente.Se uma assinatura de oferta puder ser reproduzida depois que as condições mudarem, o comprador poderá adquirir algo que já não pretendia comprar.As assinaturas de NFT devem incluir o endereço do contrato da coleção, o ID do token, o preço, a moeda, as condições do comprador ou do vendedor, o prazo de validade, o ID de chain e o nonce.Os usuários não devem assinar mensagens vagas de listagem de NFT.Também devem cancelar listagens antigas quando necessário.A segurança de nonce faz parte da segurança do marketplace.Nonce e segurança de chave privada
A qualidade do nonce pode afetar diretamente a segurança da chave privada em algoritmos de assinatura.Isso é mais importante em sistemas baseados em ECDSA.Se o mesmo nonce de assinatura ECDSA for usado em duas mensagens diferentes, a chave privada poderá ser recuperada.Se os nonces de assinatura seguirem padrões previsíveis, invasores também poderão recuperar chaves em certas condições.Por isso, os desenvolvedores de carteiras usam bibliotecas criptográficas revisadas.Os usuários não devem criar softwares de assinatura próprios para carteiras com valores relevantes sem uma análise criptográfica especializada.Um erro de nonce de transação pode ser visível e corrigível.Um erro de nonce de assinatura pode vazar a chave privada silenciosamente.Carteiras de hardware e bibliotecas de software consolidadas ajudam a reduzir esse risco.A geração de nonces criptográficos não é um aspecto em que se deva buscar atalhos.Tipos comuns de nonces em cripto
- Um nonce de conta ordena as transações de uma conta blockchain.
- Um nonce de transação é incluído nos dados da transação assinada para torná-la única.
- Um nonce de mineração é ajustado por mineradores de Proof of Work na busca por um hash de bloco válido.
- Um nonce de permit impede que uma aprovação de token assinada seja usada mais de uma vez.
- Um nonce de contrato inteligente impede a execução repetida de autorizações no nível do contrato.
- Um nonce de mensagem de bridge impede que a mesma mensagem cross-chain seja processada duas vezes.
- Um nonce de login cria um desafio novo de autenticação de carteira.
- Um nonce de assinatura é um valor secreto por mensagem usado por alguns algoritmos de assinatura digital.
- Um nonce de criptografia ajuda a tornar únicas as mensagens criptografadas com a mesma chave.
- Uma faixa de nonce é uma sequência de nonce independente usada por alguns projetos de contas inteligentes.
Erros comuns relacionados a nonces
Um erro comum é achar que todos os nonces significam a mesma coisa.Outro erro é editar manualmente o nonce de uma transação sem verificar as transações pendentes.Um terceiro erro é assinar dados tipados que não incluem um nonce.Um quarto erro é verificar uma assinatura de contrato inteligente, mas esquecer de marcar o nonce como usado.Um quinto erro é usar um nonce sem ID de chain ou sem separação do domínio do contrato verificador.Um sexto erro é tratar a EIP-712 como proteção automática contra replay.Um sétimo erro é usar aleatoriedade fraca para nonces aleatórios.Um oitavo erro é reutilizar ou expor nonces de assinatura ECDSA.Um nono erro é presumir que um nonce impede phishing.Um décimo erro é esquecer de migrar o estado do nonce durante atualizações de contrato.Boas práticas para desenvolvedores
Defina a finalidade do nonce antes de escrever o código.Use nonces sequenciais quando for necessária uma ordem estrita.Use nonces aleatórios ou mapeados quando autorizações independentes precisarem ser executadas em paralelo.Inclua o ID de chain e o endereço do contrato verificador nos dados assinados quando o contexto for relevante.Inclua prazos ou períodos de validade em assinaturas off-chain.Marque os nonces como usados durante a execução bem-sucedida.Teste tentativas de replay em testes unitários e de integração.Use bibliotecas criptográficas revisadas para nonces de assinatura e criptografia.Evite a geração personalizada de nonces ECDSA, a menos que ela se baseie em padrões amplamente revisados.Documente claramente o comportamento dos nonces para que carteiras, indexadores, auditores e usuários possam entendê-lo.Boas práticas para usuários
Deixe sua carteira gerenciar os nonces das transações normais, a menos que você entenda a ordem das transações pendentes.Verifique se uma transação está travada antes de enviar muitas novas transações pela mesma carteira.Use com cuidado as funções de acelerar ou cancelar ao substituir uma transação.Leia as mensagens de permit de token antes de assinar.Verifique o operador, o valor, a chain, o prazo e a aplicação antes de aprovar uma assinatura.Não assine mensagens de login de carteira de domínios suspeitos.Não presuma que uma assinatura de mensagem é segura só porque não movimenta fundos imediatamente.Use softwares de carteira confiáveis e evite ferramentas de assinatura desconhecidas.Mantenha carteiras de hardware e métodos de recuperação seguros para saldos relevantes.Lembre-se de que a proteção por nonce pode impedir o uso repetido, mas não torna inofensiva uma assinatura ruim.Quando um nonce é mais importante
Um nonce é mais importante quando uma assinatura pode movimentar valor ou alterar um estado importante.Ele é importante no envio de transações normais de blockchain.É importante na aprovação de gastos de tokens por meio de permits.É importante na assinatura de ordens de marketplace.É importante no envio de mensagens de bridge.É importante ao votar ou assinar delegações de governança.É importante ao resgatar airdrops ou recompensas.É importante ao fazer login com uma assinatura de carteira.É importante ao gerar assinaturas ECDSA.É importante sempre que reutilização, replay ou previsibilidade puderem causar prejuízo financeiro.Nonce em uma frase
Nonce é um valor único usado uma vez em um contexto de blockchain, criptografia ou contrato inteligente para contribuir para a ordenação de transações, a mineração de Proof of Work, a proteção contra replay, a segurança das assinaturas, a segurança da criptografia e o funcionamento confiável das carteiras.Perguntas frequentes
O que significa nonce em cripto?
Nonce significa um valor único usado uma vez em um contexto cripto específico, como um contador de transações, um campo de mineração, um ID de mensagem assinada ou um valor de assinatura criptográfica.O que é um nonce Ethereum?
Um nonce Ethereum é um contador que ajuda a ordenar as transações de uma conta e impede que a mesma transação com aquele nonce seja executada duas vezes.O que é um nonce Bitcoin?
Um nonce Bitcoin é um campo do cabeçalho do bloco que os mineradores alteram enquanto buscam um hash de Proof of Work que atenda ao alvo da rede.Por que as carteiras usam nonces?
As carteiras usam nonces para criar sequências válidas de transações, impedir replay, substituir transações pendentes e controlar qual transação deve ocorrer em seguida.Posso alterar um nonce manualmente?
Sim, algumas carteiras permitem a edição manual de nonce, mas os usuários só devem fazer isso se entenderem as transações pendentes e as regras de substituição.O que acontece se duas transações usarem o mesmo nonce?
Apenas uma transação com o mesmo remetente e nonce pode ser executada; por isso, as transações disputam a mesma posição.Por que minha transação está travada por causa de um nonce?
Uma transação posterior pode ser bloqueada se uma transação anterior com nonce menor ainda estiver pendente.Como um nonce impede ataques de replay?
Um nonce impede ataques de replay ao tornar uma ação assinada utilizável uma única vez e permitir que o sistema rejeite o mesmo nonce depois que ele for consumido.A EIP-712 gerencia nonces automaticamente?
Não. A EIP-712 estrutura dados tipados, mas os desenvolvedores ainda precisam incluir e aplicar verificações de nonce no contrato ou na aplicação.O que é um nonce de permit?
Um nonce de permit é um nonce do proprietário do token usado para impedir que a mesma aprovação assinada seja enviada mais de uma vez.O que é um nonce de assinatura?
Um nonce de assinatura é um valor secreto por mensagem usado por alguns algoritmos de assinatura; o tratamento inadequado pode expor uma chave privada.Um nonce é sempre secreto?
Não. Nonces de conta e de mineração geralmente são públicos, enquanto alguns nonces criptográficos de assinatura precisam permanecer secretos.Conclusão
Nonce é uma palavra pequena com vários significados importantes nas criptomoedas.Em sua essência, nonce diz respeito à singularidade.Essa singularidade ajuda os sistemas cripto a distinguir uma transação, mensagem, assinatura, tentativa de hash ou ação de contrato das demais.Na Ethereum, os nonces de conta ordenam as transações e impedem que a mesma transação seja executada duas vezes.Na mineração de Bitcoin, o nonce do cabeçalho do bloco oferece aos mineradores uma variável para alterar ao buscar um hash válido de Proof of Work.Em contratos inteligentes, nonces impedem que permits, resgates, votos, ordens e mensagens de bridge assinados sejam reproduzidos.Na account abstraction, modelos de nonce mais flexíveis permitem que carteiras inteligentes ofereçam suporte a fluxos paralelos e a lógicas avançadas de autorização.Na assinatura ECDSA, a qualidade do nonce pode determinar se uma chave privada permanece segura ou se torna recuperável por um invasor.Esses significados estão conectados pelo mesmo princípio, mas não pelo mesmo funcionamento.Um nonce de mineração é público e testado repetidamente.Um nonce de conta é público e sequencial.Um nonce de contrato pode ser um contador armazenado ou um mapeamento de mensagens usadas.Um nonce de permit protege uma aprovação assinada.Um nonce de assinatura deve ser secreto e gerado com segurança.Por isso, o contexto importa sempre que a palavra aparece.Para os usuários, a lição prática mais importante é deixar as carteiras gerenciarem a sequência normal de transações, a menos que uma ação manual seja realmente necessária.Os usuários devem ter cuidado com transações travadas, transações aceleradas, tentativas de cancelamento e configurações manuais de nonce.Também devem ler com atenção as solicitações de assinatura, pois mensagens off-chain podem incluir nonces e ainda autorizar ações prejudiciais.Para os desenvolvedores, a lição mais importante é projetar explicitamente a proteção contra replay.Toda assinatura que possa movimentar valor ou alterar um estado importante deve incluir um nonce, um domínio, um prazo de validade quando apropriado e detalhes claros da ação.Os contratos devem verificar o nonce e consumi-lo corretamente.As carteiras devem explicar em linguagem simples o que o usuário está autorizando.O código criptográfico deve usar bibliotecas revisadas e métodos seguros de geração de nonce.Erros de nonce podem parecer pequenos durante o desenvolvimento, mas se tornar graves após a implantação.A ausência de uma verificação de nonce pode permitir resgates ou aprovações repetidos.Um nonce de conta incorreto pode bloquear transações.Um nonce ECDSA fraco pode revelar uma chave privada.A ausência do ID de chain pode permitir replay cross-chain.Uma mensagem de bridge sem o controle adequado de nonce pode ser processada duas vezes.Portanto, a segurança de nonce não é um detalhe técnico opcional.Ela faz parte da base que permite movimentar criptoativos, executar contratos, fazer buscas de mineração, assinar transações em carteiras e garantir que uma aprovação corresponda a uma única ação pretendida.Você também pode gostar
HOT
Criptomoedas que estão em alta atualmente e ganhando atenção significativa do mercado
TOP volume
As criptomoedas com o maior volume de negociação
Recém-adicionados
Criptomoedas listadas recentemente que estão disponíveis para negociação

