@Dusk Eu estava remexendo nas atualizações de engenharia da Dusk, tentando entender como a Succinct Attestation realmente finaliza um bloco, e não apenas a frase de marketing sobre "finalidade probabilística rápida". A parte que me travou: cada membro do comitê recebe uma ou mais votações, chamadas créditos, e o total de votos em um turno é fixo. Os votos do comitê são chamados de Credits, e o número de votos no comitê é chamado de Committee Credits. Tudo bem, isso é só votação ponderada por participação. Nada surpreendente.
O que eu não tinha considerado é o que acontece com todas aquelas votações individuais depois. Elas não ficam simplesmente ali como assinaturas separadas. O gerador de bloco as recolhe e produz um certificado que é uma atestação válida de um bloco, incluída no bloco filho seguinte. Então, a "prova de que um bloco é legítimo" não é a palavra de um único validador: são todos os votos creditados comprimidos em um único objeto agregado em BLS, e é esse objeto que o consenso futuro realmente referencia.
É aí que o problema de singularidade desaparece silenciosamente. A agregação força cada crédito a apontar para um único candidato por turno. Você não consegue ter seu voto contado duas vezes, ou contado para dois blocos concorrentes, porque o certificado só tem espaço para um único conjunto canônico. Não é um recurso de UX. É a coisa que faz a finalização significar qualquer coisa na $DUSK #dusk consenso. Ainda não tenho certeza de como isso se comporta sob timeouts de iteração pesada, no entanto.
O que eu não tinha considerado é o que acontece com todas aquelas votações individuais depois. Elas não ficam simplesmente ali como assinaturas separadas. O gerador de bloco as recolhe e produz um certificado que é uma atestação válida de um bloco, incluída no bloco filho seguinte. Então, a "prova de que um bloco é legítimo" não é a palavra de um único validador: são todos os votos creditados comprimidos em um único objeto agregado em BLS, e é esse objeto que o consenso futuro realmente referencia.
É aí que o problema de singularidade desaparece silenciosamente. A agregação força cada crédito a apontar para um único candidato por turno. Você não consegue ter seu voto contado duas vezes, ou contado para dois blocos concorrentes, porque o certificado só tem espaço para um único conjunto canônico. Não é um recurso de UX. É a coisa que faz a finalização significar qualquer coisa na $DUSK #dusk consenso. Ainda não tenho certeza de como isso se comporta sob timeouts de iteração pesada, no entanto.
