How does Kaspa's KIP-0021 commit sequencer state into a block header?

KIP-0021 encodes the entire sequencer state into a single value in the block header called SeqCommit, built up through a deliberate sequence of layered hashes. First, the set of active lanes is organized into a Sparse Merkle Tree (SMT) to produce the ActiveLanesRoot; that root is then combined with an "inactivity shortcut" to form the ActivityRoot. Separately, per-block context and miner payload data are hashed into a PayloadAndContextDigest. Both of those values are hashed together into a SeqStateRoot, which is finally chained through the block's selected-parent ancestry to produce the finished SeqCommit. This layered design matters for beginners because it means every block carries a compact, cryptographically verifiable snapshot of the sequencer's state — one that is directly tied to the parent-block history, so no one can alter past state without breaking the chain.

Learn more ›