Documentation

Block mining

Mining a block is a multi-step collaboration: users send transactions to the mempool, the mempool assembles a candidate, a subset of miners work on it, a winner is chosen, and the result is written to storage.

Summary flow

  1. Client transactions are accepted and queued by the mempool path.
  2. When a round starts, a block body is built from the queue and offered to the miners selected for that round.
  3. Miners produce proofs and return candidates.
  4. The mempool picks the winner, validates the block, and sends it to storage.

UNiCORN

One randomness object per round, derived from agreed inputs (transactions, miner set, and prior round metadata), drives who may mine and who wins. Unicorns has more detail.

Parallelism in some implementations

Real implementations can pipeline more than one block height at a time; field names like previous_hash may not mean “the immediately prior block in the same way a naive client expects” when overlap is allowed. Rely on the spec and code in the build you use.

Further reading