I was tracing how Dusk moves blocks across the network, expecting the usual gossip-flood story. Instead I found something narrower and more deliberate.
Kadcast doesn't flood. It routes. Using Kademlia's XOR-distance structure, each node forwards data along deterministic paths to specific buckets of peers, not to everyone. That's the efficiency story most people stop at.
But structured routing has an obvious weakness: if a node in the path goes offline, does the message just die there? That's where I slowed down. Kadcast doesn't rely on one path per bucket — it uses a redundancy parameter, β, that selects multiple delegates per bucket to receive and re-forward the same chunk. Lose one, the others still carry it.
Then there's RaptorQ, layered in as forward error correction data gets encoded so a receiver can reconstruct the original from partial fragments, without needing every packet to arrive intact.
So the resilience isn't really about nodes "staying up." It's about the protocol assuming they won't, and building redundancy into the path structure itself rather than into blind flooding.
Makes me wonder how β gets tuned as validator sets grow more redundancy costs bandwidth, less costs reliability. Where does Dusk actually draw that line at scale?
#dusk $DUSK @Dusk
Kadcast doesn't flood. It routes. Using Kademlia's XOR-distance structure, each node forwards data along deterministic paths to specific buckets of peers, not to everyone. That's the efficiency story most people stop at.
But structured routing has an obvious weakness: if a node in the path goes offline, does the message just die there? That's where I slowed down. Kadcast doesn't rely on one path per bucket — it uses a redundancy parameter, β, that selects multiple delegates per bucket to receive and re-forward the same chunk. Lose one, the others still carry it.
Then there's RaptorQ, layered in as forward error correction data gets encoded so a receiver can reconstruct the original from partial fragments, without needing every packet to arrive intact.
So the resilience isn't really about nodes "staying up." It's about the protocol assuming they won't, and building redundancy into the path structure itself rather than into blind flooding.
Makes me wonder how β gets tuned as validator sets grow more redundancy costs bandwidth, less costs reliability. Where does Dusk actually draw that line at scale?
#dusk $DUSK @Dusk