Kaspa removes the single-parent rule: a block’s header carries a parent list of up to sixteen entries (see Blocks). This page describes the structure that results.
Blocks with multiple parents
Kaspa replaces the chain with a Directed Acyclic Graph of blocks - a blockDAG. Instead of referencing one parent, each new block references all DAG tips its miner knows about at the time of mining. A block can have multiple parents, and multiple blocks can share a parent.
The figures below show the same six blocks under both rules. A chain keeps only one of two simultaneous blocks; the DAG keeps both, and the next block references each of them.
Consequences:
- No orphans. Blocks created in parallel are all merged into the DAG. Honest work is never thrown away.
- High block rates are safe. Parallel blocks are expected and handled by the protocol, so the block rate can be pushed to 10 per second.
- Confirmations accumulate fast. At ~100ms per block, confirmation count grows at approximately 10 per second.
The tradeoff: ordering
A chain provides transaction ordering for free - blocks are ordered by height. A DAG does not. Two blocks in each other’s anticone have no inherent order, and if they contain conflicting transactions, the network needs a rule to decide which came first.
That rule is Kaspa’s consensus protocol, covered on the next page: GHOSTDAG.
Vocabulary
A handful of terms describe position in the DAG. Full definitions in the Glossary:
- Tips - blocks with no children yet; the current frontier the next block will point at.
- Past / Future - everything a block builds on / everything built on top of it.
- Anticone - blocks with no ordering relationship to a given block; neither is in the other’s past. These are the parallel blocks.
- Selected Parent - the parent with the highest blue work (a GHOSTDAG concept, defined on the next page).
- Mergeset - the blocks a chain block merges into the backbone.
Past, future, and anticone are defined per block, not per DAG: every block partitions the whole DAG into its past, its future, and its anticone. Select a block to see its partition:
The DAG is visible live: block explorers render the parallel blocks and their parent links in real time. See Explorers & Analytics.