#dusk $DUSK
As soluções de dupla-spend apareceram em duas seções diferentes dos mesmos documentos de protocolo, e eu continuei tratando ambas como a mesma ideia até olhar de perto para as duas.

Nonce do Moonlight: um contador simples. Sua conta tem um nonce atual. Cada transação deve incluir exatamente current_nonce + 1. A rede rejeita qualquer outra coisa. Visível, sequencial e publicamente verificável.

Nullifier do Phoenix: um valor criptográfico derivado da chave secreta do note. Quando você gasta um note, você envia o nullifier. A rede o adiciona à lista de nullifiers. Ninguém pode reenviar o mesmo nullifier — o double spend é bloqueado. O nullifier não revela nada sobre o note nem sobre o valor.

Na mainnet, as transações são liquidadas em menos de 10 segundos. Ambos os mecanismos operam dentro dessa janela — seja qual for o modelo que você use, a verificação de dupla-spend é resolvida antes do próximo bloco.

O nonce do Moonlight é transparente por design: ele permite que qualquer pessoa verifique que uma transação é realmente nova. O nullifier do Phoenix é privado por design: ele prova exclusividade sem revelar qual note foi gasto.

A comparação é mais interessante do que parece: a mesma garantia fundamental — esta transferência é nova e não repetível — é imposta com divulgações completamente diferentes de informação. Um transmite o contador. O outro prova sem mostrar nada.

Qual abordagem escala melhor sob alta carga de transações — estado sequencial visível ou conjuntos de nullifiers privados? @Dusk

$DUSK #dusk