O que é um Nonce nas blockchains compatíveis com EVM?

2025-04-15 04:06

1. O que é um nonce na EVM?

Um nonce ("número usado uma vez") é um número inteiro que representa o número de transações iniciadas por uma conta específica (Conta de propriedade externa ou"EOA"). Acompanha quantas transações enviaste dessa conta. Um nonce começa em 0 e aumenta progressivamente em 1 a cada transação enviada. O nonce não salta números e conta cronologicamente por ordem, como 0, 1, 2, 3 e assim por diante.

2. Por que é que o nonce é importante?

Os nonces são usados em protocolos como o Ethereum para acompanhar cada transação a partir de um endereço específico, para garantir que tudo está a funcionar sem problemas:  

  • Sem repetições: os nonces impedem que alguém reutilize a tua transação (como enviar o mesmo 1 ETH duas vezes).
  • Ordem certa: certifica-se de que as tuas transações acontecem em sequência - Transação 1 antes da Transação 2.
  • Sem confusão: ajuda a rede a saber que transações são legítimas.

3. Como é que lidamos com o nonce na nossa carteira agora, versus anteriormente?

Atualmente, verificamos o número de transações pendentes em espera no pool de transações (chamado de mempool, abreviado de pool de memória), e adicionamos 1 a esse número.

No passado, usávamos nonce de ‘transações confirmadas’ + 1, enquanto agora usamos o nonce de ‘transações pendentes’ + 1. 

Por exemplo: supõe que tens uma transação confirmada na blockchain com um nonce de 3 e outra transação pendente no mempool com um nonce de 4. 

No passado, selecionávamos o nonce de 4 para a tua nova transação, permitindo-te substituir a transação no mempool. Isso significava que apenas uma transação com o nonce de 4 seria bem-sucedida. 

Agora, escolhemos o nonce de 5 para a tua nova transação. Desta forma, a nova transação permanece pendente no mempool atrás da transação com o nonce de 4, aguardando para ser enviada para a blockchain até a transação do nonce de 4 ser confirmada.

Observação: se verificarmos que tens uma transação pendente há muito tempo, receberás uma notificação pop-up a perguntar se a queres substituir por uma nova. 

Porque é que esta fórmula é vantajosa:

  • Maior eficiência: de acordo com o método anterior, uma transação atrasada podia impedir a tua capacidade de continuar — embora pudesses reutilizar o nonce, isso arriscava uma sobreposição da transação pendente, resultando na rejeição de uma. A nossa abordagem atualizada elimina este problema atribuindo o nonce sequencial seguinte com base nas transações pendentes, permitindo envios ininterruptos de transações.
  • Resolução proativa: se uma transação permanecer não confirmada por muito tempo, enviamos uma notificação clara, oferecendo-te a opção de a substituir por uma nova transação (usando o mesmo nonce e uma taxa de gás mais alta). Isso garante que possas lidar com os atrasos de forma rápida e eficaz.
  • Experiência de utilizador melhorada: este sistema permite um processamento de transações contínuo e consecutivo, independentemente dos estados pendentes, proporcionando uma interação mais fiável e simplificada com a carteira.

4. Preciso de me preocupar com o nonce?

Os utilizadores não têm de se preocupar com o nonce – geramos automaticamente um nonce para as tuas transações com base no que está pendente no mempool. Depois de confirmares as transações, o nosso sistema tratará do resto.

Para saberes mais sobre a Carteira da Binance, consulta O que é a Carteira Binance e como funciona?