The Bor node or the Block Producer implementation is basically the sidechain operator. The sidechain VM is EVM-compatible. Currently, it is a basic Geth implementation with custom changes done to the consensus algorithm. However, this will be built from the ground up to make it lightweight and focused.
Block producers are chosen from the Validator set and are shuffled using historical Ethereum block hashes for the same purpose. However, we are exploring sources of randomness for this selection.
Producers are the block producers on the BOR layer, they are small committee selected from the validators pool on the basis of stake.
- Validators are given slots according to the stake, so if a validator has 100 Matic tokens staked, and per slot is 10, he will get 10 slots in total.
- All the validators are given these slots [ A, A, A, B, B, C ]
- Using the historical Ethereum blocks as seed we shuffle this array.
- After shuffling the slots using the seed we get this array [ A, B, A, C, B, A, A]
- Now we pop validators from the top, for eg if we want to select 3 producers we get the producer set as [ A, B, A]
- Hence the producer set for the next span is defined as [ A: 2, B:1 ]
- Using this validator set and tendermint’s proposer selection algorithm we choose a producer for every sprint on BOR.