Protocol Violations
Generally, we distinguish between two types of protocol violations:
- felony: a severe protocol violation that is immediately punished by ejecting the respective node from the network and subsequent financial penalty.
Most protocol violations are felonies, including
• equivocation by Consensus nodes or Collector nodes
• publishing (EN) or approving (VN) a faulty Execution Result
• sending invalid messages (such as blocks)
- misdemeanor: a single misdemeanor only results in a financial penalization of the node. Accumulating multiple misdemeanors might result in a node being subsequently ejected from the network.
Examples include:
• Execution or Collector nodes being involved in a Missing Collection Challenge
• Execution Receipt publishes an Execution Receipt that is unverified and conflicts with the sealed results (aka a potential Wintermute attack)
Ejection from the network
An ejected node
- an ejected node is still listed in the protocol state. However, an ejected node lost all privileges to participate in extending a fork in which it was ejected.
- A some point, a fork containing an ejection will get finalized. At this point, the node cannot participate in any fork. Essentially, it has become irrelevant for the happy-path operation of the network. At the point were we finalized a node's ejection, we would like to start ignoring all its messages. At this point, a node tells its networking layer to ignore the node.
- it can still be challenged for protocol felonies or misdemeanors and needs to participate in the adjudications of such challenges.
The node operator can:
• unbond the remaining stake of the ejected node (subject to same restrictions as voluntary unbonding)
• create a new node identity and enter the bidding for a new seat
Separation of Protocol State and Tracking of Staking Balances
⚠️This is an update to the previous architecture.
Protocol State maintained by Consensus Nodes
The protocol state now contains:
- the node's networking, staking and (optionally) DKG key
- the node's networking address
- weight of the node (for now, all nodes will have identical weight as long as they are not ejected). The weight of an ejected node is set to 0.
- Blacklist of ejected nodes (details see below)
Note that consensus nodes do not maintain the staking balances anymore.