Heimdall is our Proof-of-Stake Verifier layer, which is responsible for checkpointing a representation of the Plasma blocks to the main chain in our architecture. We have implemented this by building on top of the Tendermint consensus engine with changes to the signature scheme and various data structures.
The main chain Stake Manager contract works in conjunction with the Heimdall node to act as the trust-less stake management mechanism for the PoS engine, including selecting the Validator set, updating validators, etc. Since staking is actually done on the Ethereum smart contract, we do not rely only on validator honesty and instead inherit Ethereum chain security for this key part.
Validator Selection
Validators are selected via an on-chain auction process which happens at regular intervals as defined here. The process of becoming a validator after you have won the slot is outlined here:
- Call
StakeFor()function onStakeManagercontract to lock your state on-chain. -
Bridgeon heimdall listens to this event and broadcasts to heimdall - After consensus
Validatoris added toheimdallbut not activated. -
Validatorstarts validating only afterStartEpoch(defined here) - As soon as
startEpochreaches the validator is added tovalidator-setand starts participating in the consensus mech