Epochs allow nodes to join and leave the network over time. This document provides terminology to describe the different states a node can be in within this lifecycle, and discusses the implications on the flow-go
networking layer.
Terminology
Registered
Node
- has submitted a registration to the
FlowIDTableStaking
contract.
- may or may not be selected to join the network in a subsequent epoch.
- ⚠️ Only appears in the
FlowIDTableStaking
contract, never in the Protocol State
Joining
Node
- was previously
Registered
and was selected to participate in the next epoch. A Registered
node becomes AuthorizedJoining
when the EpochSetup
event is processed.
- it has limited ability to participate in the protocol, only as necessary to prepare for participation in the next epoch, for example:
- SNs may participate in DKG
- LNs may participate in Cluster QC voting
- all nodes may participate in the Block Synchronization protocol, to maintain an up-to-date Protocol State
- has 0 weight
ActiveParticipant
Node
- was previously
AuthorizedJoining
in the previous epoch. A AuthorizedJoining
node becomes AuthorizedParticipant
at an epoch switchover.
- it has unhindered ability to participate in the protocol as required for its role
- has non-zero weight
AuthorizedLeaving
Node
- was previously
AuthorizedParticipant
and submitted a valid un-registration request in the previous epoch. An AuthorizedParticipant
node becomes AuthorizedLeaving
at an epoch switchover.
- it was limited ability to participate in the protocol, only as necessary to gracefully terminate its responsibilities, for example:
- LNs may participate cluster consensus until all transactions valid for inclusion have expired
- A node may submit or respond to a slashing challenge
- has 0 weight
Ejected
Node