B2 sidechain provides an on-chain staking system and uses the PoSA (Proof-of-Stake-of-Authority) staking model. It allows users to delegate their tokens to the specific validator and share the validator's rewards based on the total staked amount. B2 has the following staking roles:
• Validator: A node that produces new blocks and validates existing blocks.
• Delegator: A user who participates in validator election.
A validator is a node that runs the validator node software, in a special validator mode. This mode allows the node to connect to boot nodes and produce new blocks. Once a block is produced by a validator, it propagates it through the network to other validators using boot nodes. Other validators must verify and add this block to the chain. Unfortunately, the Parlia consensus engine does not support fast finality today, but still this feature is under development.
That’s why to prove the correctness of the produced block, the user must verify
blocks. To become a validator, the user has to satisfy the following requirements:
• Have their own, fully synchronized, node running in the full-sync mode, with an unlocked validator private key.
• For registration, the user must specify the validator's address and commission rate.
• Request from one of the existing validator to propose the user become a validator.
• Wait until 2/3 of the validators support the candidate.
Staking pool contract allows the chain to use a different staking model. Namely, instead of delegating tokens to a validator, the user buys a share of the pool, and validator rewards are distributed between delegators based on their share. Since all the users use the same pool, the cost of reward-claiming transactions on average is shared by all the delegators in the pool.