@Dusk I was digging through Dusk's engineering updates, trying to understand how Succinct Attestation actually finalizes a block, not just the marketing line about "fast probabilistic finality." The part that stopped me: every committee member gets one or more votes, called credits, and the total pool of votes in a round is fixed the committee's votes are called Credits, and the number of votes in the committee is called Committee Credits. Fine, that's just weighted voting by stake. Not surprising.
What I hadn't considered is what happens to all those individual votes afterward. They don't just sit there as separate signatures. The block generator collects them and produces a certificate that is a valid attestation of a block, included in the following child block. So the "proof a block is legitimate" isn't one validator's word, it's every credited vote compressed into a single BLS-aggregated object, and that object is what future consensus actually references.
That's where the uniqueness problem quietly disappears. Aggregation forces every credit to point at one candidate per round. You can't have your vote counted twice, or counted for two competing blocks, because the certificate only has room for one canonical set. Not a UX feature. It's the thing making finality mean anything at all in $DUSK #dusk consensus. Still not sure how it behaves under heavy iteration timeouts though.
What I hadn't considered is what happens to all those individual votes afterward. They don't just sit there as separate signatures. The block generator collects them and produces a certificate that is a valid attestation of a block, included in the following child block. So the "proof a block is legitimate" isn't one validator's word, it's every credited vote compressed into a single BLS-aggregated object, and that object is what future consensus actually references.
That's where the uniqueness problem quietly disappears. Aggregation forces every credit to point at one candidate per round. You can't have your vote counted twice, or counted for two competing blocks, because the certificate only has room for one canonical set. Not a UX feature. It's the thing making finality mean anything at all in $DUSK #dusk consensus. Still not sure how it behaves under heavy iteration timeouts though.
