Owner: @David Rusu
Reviewers: 🟢@Marcin Pawlowski 🟢@Giacomo Pasini 🟢@Alexander Mozeika 🟢@Álvaro Castro-Castilla
We are interested in finalizing the Cryptarchia and Blend Network parameters. There are some competing requirements here, Blend Network would like to have longer block times in order to provide better privacy, Cryptarchia wants shorter block times in order to provide faster finality.
We need to find the right balance that would give us good enough privacy while not sacrificing finality times too much.
The analysis centres on the block-witholding attack where an adversary does not participate in the main chain, instead builds a secret side-chain and releases it on the network attempting to trigger the honest chain to re-org.
We first simulate the honest network to build out a block tree
we then simulate the adversary slot wins
and consider the effect of extending from the honest block tree at each block to see how many re-orgs the adversary can induce
This is repeated, with the adversary branch forking off of each block.
The adversary can even boost his attack by continuing abandoned branches
Leader proposing a block through the blend network
blend_network = NetworkParams(
broadcast_delay_mean=0.5, # seconds
pol_proof_time=1, # 1 second PoL delay
blending_delay=3, # seconds spend in each blend node
desimenation_delay_mean=0.5, # seconds to desimenate message within blend
blend_hops=3, # hops within blend
)
no_blend_net = replace(blend_net, blend_hops=0)
The block delay distribution from the network model looks like this: