Lisk Consensus - DPoS
Important informations¶
- A delegate is an account which performed a delegate registration transaction.
- An account can vote for any delegate using a delegate vote transaction.
- Self-vote is the amount the delegate voted for themselves.
- Total votes is the sum of all vote amounts (including self-votes) for that specific delegate.
- Depending on the votes cast, every delegate has an associated delegate weight, which is an indicator for the support for this delegate in the network.
- The delegate weight is always capped by
10 * selfVotes
Examples
-
Delegate X
Total votes: 100,000 LSK
Self-vote: 7,000 LSK
Delegate weight: 70,000 LSK -
Delegate Y
Total votes: 120,000 LSK
Self-vote: 15,000 LSK
Delegate weight: 120,000 LSK
This definition implies that the self-votes are always at least 10 % of the delegate weight and thus delegates always have substantial skin in the game.1
Forging delegate selection¶
Blocks in the Lisk protocol
are grouped together into batches of 103 consecutive blocks, which are referred to as a round.
Every round has a forger list, which is an ordered list of 103 delegates that are allowed to forge a block in that round.
Starting with the first delegate on the forger list, every delegate has a 10 second block slot window in which they can forge a block and broadcast it to the network.
If every delegate on the list manages to forge a block in their block slot building on the block by the previous delegate, a round lasts 1030 seconds (around 17 minutes).
It can happen that a delegate misses the block slot, meaning that there is no block added to the chain by the delegate in their designated block slot. Consequently, the end of the forger list is reached before 103 blocks are added to the chain. In this case, block slots are assigned again from the beginning of the forger list until 103 blocks are forged.
Forger list¶
In Lisk DPoS, the forger list is computed taking into account the delegate weights and some random values submitted by delegates as part of their block. The top 101 delegates by delegate weight are called active delegates, whereas all other delegates with a delegate weight of at least 1011 (1000 LSK in Lisk Mainnet) are referred to as standby delegates.
Banning of unproductive delegates¶
As a fail-safe mechanism, a delegate that does not forge blocks for an extended period of time is banned. This is to avoid the situation where a delegate who is not running a node leads to frequent missed block slots. More specifically
- A delegate is banned in case they miss 50 consecutive blocks and the height of the last block they forged differs by more than 260,000 from the current height of the chain (the block is 30 days old).
As soon as a delegate is banned, they are excluded from the delegate weight snapshots used for the forger list computation. The ban is permanent, but the delegate account holder can move their funds to a different account and register a new delegate.
Lisk BFT - Finality and security guarantees
For more advanced user:
https://lisk.com/documentation/lisk-sdk/protocol/consensus-algorithm.html#lisk_bft
-
https://lisk.com/documentation/lisk-sdk/protocol/consensus-algorithm.html ↩