Owner: @David Rusu

Reviewers: 🟢@Marcin Pawlowski 🟢@Giacomo Pasini 🟢@Alexander Mozeika 🟢@Álvaro Castro-Castilla

Introduction

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.

Overview

Adversary Model

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 first simulate the honest network to build out a block tree

we then simulate the adversary slot wins

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

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.

This is repeated, with the adversary branch forking off of each block.

The adversary can even boost his attack by continuing abandoned branches

The adversary can even boost his attack by continuing abandoned branches

Network Model

Leader proposing a block through the blend network

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:

image.png

Choosing a Block Time