-
Notifications
You must be signed in to change notification settings - Fork 539
Consensus Parameters
There are a few consensus parameters in our proof of stake implementation which are hardcoded at compile time.
They are related to parameters described in the Ouroboros Praos Paper.
This document is meant to capture the general behaviors and assumptions behind the parameters.
k, c and delta are configured in mlh files here.
block_window_duration is configured in mlh files here.
The number of blocks that must pass after a transaction until the network sees the transactions as 'valid'.
From: Ouroboros Praos:
Here, stability is to be understood as a predicate that will be parameterized by some security parameter k that will affect the certainty with which the property holds. (E.g., "more than k blocks deep".)
After k blocks we can assume no forks will happen.
On larger testnets with adversarial attacks, this should generally be large (24), but on small sample testnets this can be small (2). In mainnet k should be significantly larger, it is spec'd at 2160 in OP.
In good network conditions with atleast 50% of the stake active, we expect to receive at least 1 block every c slots.
We always use a c value of 8.
In Ouroboros Praos, c is not directly referenced, but rather c is represented as '8k' slots.
The number of slots which can pass during which we will allow receipt of a transition after the slot it was proposed in.
We always use a delta value of 3
The time slot interval used to define individual time slices when a block may be emitted. (effectively a common shared unit of time for the network). Also called 'slot length'.
For slow testnets, we generally used a value of 60000 (60 seconds). This helps make it obvious when the slot boundaries occur as they line up directly on the minute.
For fast testnets when we DO NOT perform snarks, we believe this value can be as low as 1000 (1s).
We are able to produce blocks faster than
slots per epoch = k * c * 3
How many time slots are needed to pass before a new epoch begins. (Also referenced as 24k in OP, as c is 8).
acceptable network delay = block_window_duration * delta
length per epoch = block_window_duration * k * c * 3