ZooBC wiki
Proof of Participation

Proof of Participation

Proof of Participation (PoP) is how ZooBC agrees on its blocks. The blocks are made by the nodes of an on-chain node registry, drawn by lot from the previous block's seed, with the same chance for every seat. Each node is measured on the work a network needs, passing blocks and transactions on to the peers the protocol assigns it, and that measurement decides its share of the new coins. A block is valid because the right key signed it, and every node checks that for itself.

Four design goals

  • Uniform block-producing power. Balance, stake, hardware and score do not change a seat's chance.
  • Open but paced membership. Anyone can queue for a seat by locking a stake; the protocol admits one newcomer per cycle.
  • Measured, rewarded participation. Relaying is proven by receipts that the receiving peers sign, and the receipts decide each node's income.
  • No wasted work. Security comes from signatures, hashes and a verifiable random function, not from puzzles.

Proof of Participation compared with PoW and PoS sets these goals against Proof of Work, Proof of Stake and their delegated and federated variants.

One block, step by step

  1. The draw. The previous block's seed starts a random generator that every node runs alike. It names a producer for round 1, another for round 2, and so on (draw).
  2. The rounds. The round-1 producer aims to stamp its block 15 seconds after the previous one. If it is silent, the round-2 producer takes over 15 seconds later (rounds, timing and windows). Only the first ten rounds may carry transactions, and the previous block's producer is demoted (priority rounds, empty blocks and the previous producer).
  3. The block. The producer signs the block with its node key and proves the new seed with a verifiable random function, so it cannot choose that seed (block seed (VRF)).
  4. The checks. Every node checks that the producer was drawn for the round its timestamp falls in or for the round before, the signature, the seed proof, every transaction and every receipt. An empty block is valid.
  5. The work. Nodes relay blocks and transactions to their priority peers and collect signed receipts (receipts and the network topology). The receipts a node shows in its own blocks move its participation score, which weights the coinbase lottery.
  6. The cost of absence. A skipped turn makes a node "missing": no income and a falling score. Four misses in a row suspend it, and a score of zero expels it (missed turns, suspension and expulsion).
Node A relays a block to node B, and B sends back a receipt it signed. A's next block carries the receipt, which moves A's participation score, and the score sets A's chance of a share of new ZBC.
Node A relays a block to node B, and B sends back a receipt it signed. A's next block carries the receipt, which moves A's participation score, and the score sets A's chance of a share of new ZBC.

Power and income, kept apart

The producer draw ignores the score, and the lottery ignores the stake. A high-scoring node earns more, but it makes no more blocks and chooses no more seeds: power stays the same for every seat, while income follows the work each node does. More power means more seats, and seats come only through the queue, one admission at a time (admission pace).

Two nodes with scores of 90 % and 30 %: in the producer draw their slices are equal (1 : 1); in the coinbase lottery they are 3 : 1. The score moves rewards, not block production.
Two nodes with scores of 90 % and 30 %: in the producer draw their slices are equal (1 : 1); in the coinbase lottery they are 3 : 1. The score moves rewards, not block production.

When branches compete

Nodes follow the branch with the greatest cumulative difficulty, in which on-time blocks weigh more than late ones; an exact tie goes to the lower tip hash (fork choice and cumulative difficulty). No node rolls back more than 720 blocks (3 hours) or below the last checkpoint co-signed on the spine chain (finality and rollback). A producer that signs two blocks on the same parent can be reported and charged (double-signing (equivocation)).

Key numbers

ItemValue (mainnet)
block interval, and length of a round15 seconds
genesis seats per chain11
rounds that may carry transactions1 to 10
starting participation score20 %
missed turns in a row before suspension4
priority peers per node, reshuffled every12, every 40 blocks
rollback limit720 blocks (3 hours)

See also

Articles in this topic