El 'number that can be only used once', (número que pode ser usado apenas uma vez) também conhecido como nonce, é um número arbitrário usado em criptografia dentro dos chamados protocolos de autenticação.
Em uma rede blockchain baseada em Proof of Work (Prova de Trabalho) O nonce funciona em combinação com hash como elemento de controle para evitar a manipulação das informações dos blocos.
Este número aleatório garante que hashes antigos não podem ser reutilizados nos chamados ataques de repetição.
Um nonce em criptografia é:
Um número aleatório único destinado a autenticação de transferência de dados entre duas ou mais partes.
Normalmente, o nonce também implementa um timestamp ou marca de tempo.
Também é possível adicionar um cliente nonce ou 'cnonce', que melhorará a segurança implementando a autenticação de acesso.
Deve-se garantir que o nonce seja usado apenas uma vez. Portanto, uma variante de tempo deve ser adicionada a ele para evitar a repetição. Para garantir isso, um número suficiente de bits também pode ser gerado aleatoriamente para reduzir essa probabilidade.
Isso adiciona segurança e faz com que qualquer alteração dentro do bloco, seja ela qual for, se torne impossível. Isso ocorre porque a alteração de qualquer elemento dentro de um bloco altera todo o hash e toda a estrutura do bloco.
O cálculo do nonce é feito de forma forçada, ou o que dá no mesmo: eles exigem grandes quantidades de recursos de computação e também o tempo, portanto, obter esse valor é necessário realizar uma prova de trabalho ou PoW.
É impossível prever a combinação de bits, que normalmente é de 32 bits e resultará em um hash correto.