ZooBC wiki
Proof of Participation

Missed turns, suspension and expulsion

You are looking at an old version of this page: revision #845 by zoobc.how, 2026-10-26 22:31 UTC. See the current version

A seat in the node registry is kept by doing the work. A node that is drawn to make a block and does not deliver it costs the chain 15 seconds and counts a missed turn. Every skipped turn also starts a clock: the node is missing until its next own block, earns nothing and loses participation score. Four misses in a row take it out of the draw (suspension), and a score of zero takes away its seat (expulsion). This page describes that road, as it works from version 0.5.8.

Missed turns

When a block is made, every node that was drawn for an earlier round of that height and did not produce is a skipped producer and counts a miss. The node that made the block has its own miss counter reset.

The reason does not matter. A node that was offline, one that was too slow and one that was online but held its block back are treated alike. A skipped turn is a skipped turn. (Holding a block back is also the only way a producer could try to influence the seed; see block seed (VRF).)

Missing: no income, falling score

From any skipped turn until its next own block, a node is missing. While missing:

  • it earns nothing: no coinbase lottery ticket, no fee share and no longevity share;
  • its participation score falls by 5 points (out of 100) per unit, spread evenly over the unit's blocks.

The unit is max(n, 2,880 blocks), where n is the number of selectable nodes. Below 2,880 nodes the unit is 2,880 blocks, 12 hours. On a larger registry the unit grows with n, because each node's turn comes round only about once every n blocks. On devnet the unit floor is 120 blocks (30 minutes), so the whole road runs 24 times faster there.

Receipts the node signs and a ping (described below) do not end the missing state. Only its own next block does. So a node that misses one turn and makes its next block soon loses a little income and a sliver of score; a node that stays away keeps losing.

Suspension

At the fourth missed turn in a row, a node is suspended:

  • it leaves the producer draw, so its turns stop costing everyone a round;
  • it keeps its seat in the registry, but counts as missing, so it earns nothing and its score keeps falling;
  • it leaves the seat count of the admission pace and every two-thirds count, except the spine chain's signer list (see two-thirds rules).

A short gap never suspends a node: if it made a block of its own within the last 20 blocks, a fourth miss does not suspend it (the miss is still counted).

To come back, a suspended node's software sends a ping: a liveness attestation from the node's own key, with a fee of 0, at most one per 120-block window, valid only from a suspended node. It is a QueueAttendance transaction (type 59), the same type a queued node sends to show that it is online. The ping returns the node to the draw on probation. It never erases misses or stops the loss of score; that happens only when the node makes a block at one of its next turns.

State diagram: an active node is suspended at its fourth miss in a row; a ping puts it back in the draw on probation; its own block makes it active again; from suspension or probation, a score of zero expels it.
State diagram: an active node is suspended at its fourth miss in a row; a ping puts it back in the draw on probation; its own block makes it active again; from suspension or probation, a score of zero expels it.

Expulsion

When a node's score reaches zero, it is expelled. Its seat closes, 90 % of its locked stake returns to its owner and 10 % goes to the longevity pool (ZBC is never burned; see ZBC is never burned). Expulsion never leaves fewer than three active nodes; when that floor applies, "last seen" decides who is spared first. A receipt the node signed that appears in a block marks it as seen; it moves nothing but this "last seen" mark.

Every node starts at 20 %, so the time a silent node lasts depends on its score when it falls silent:

Score when the node falls silentBelow 2,880 nodes5,760 nodes10,000 nodes
20 % (the starting score)2 days4 days6.9 days
60 %6 days12 days20.8 days
100 %10 days20 days34.7 days

Climbing back is three times slower than falling: below 2,880 nodes, a node that makes all its blocks with their receipts goes from 0 to 100 % in 30 days, and from 20 % to 100 % in 24. Trust is slow to earn and quick to lose.

Score against days below 2,880 nodes: silent nodes fall from 100, 60 and 20 % to zero in 10, 6 and 2 days; a working node climbs from 0 to 100 % in 30 days.
Score against days below 2,880 nodes: silent nodes fall from 100, 60 and 20 % to zero in 10, 6 and 2 days; a working node climbs from 0 to 100 % in 30 days.
  • An owner who removes a node while it is missing or suspended loses 10 % of the stake (see leaving the registry).
  • A new node earns nothing until it is mature: 4 units after admission and one block of its own (see maturity and earnings).
  • A proven double-sign counts as a miss and makes the producer missing until its next own block (see double-signing (equivocation)).
  • Every number on this road (the 5 points, the unit, the starting score) is a genesis parameter of the chain.

See also