3.4.4 IBFT Proof-of-Stake (PoS)
IBFT Proof-of-Stake (PoS) implementation is intended to be an alternative to the existing IBFT PoA implementation by giving node operators the ability to easily select between the two when starting the chain. Epochs are considered to be specific timeframes (in blocks) during which a given set of validators can generate blocks. The epoch length can be changed, meaning that the node operators can set the length of the epoch during instance creation. At the end of each epoch, an epoch block is created, and after this event, a new epoch begins. Validator sets are updated at the end of every epoch period. Nodes request a set of validators from the staking smart contract during the creation of an epoch block and store the resulting data in local storage. This query and saving the cycle are recurring at the end of every epoch period. Fundamentally, this allows the staking smart contract to have full control over the addresses in the validator group, leaving only one task to the nodes. Each contract query is executed only once per period to obtain the latest information about the validator set. This removes the responsibility of dealing with validator sets from individual nodes.