Anatomy of a Kaspa block
1.0×
Byte anatomy
sample
wire offset 0 B—
header.version
u16 · 2 bytes · offset 0..2
46°
drag to orbit
Tap a field or byte to inspect it.
Mergeset
sample
Block header
Block stream
Transactions
STATION 00 · COMPLETE INSTRUMENT
solids in view
Post-Toccata Kaspa BlockDAG Block (Block Version 2 · Tx Version 1)
Activated on June 30, 2026 at DAA score 474,165,565, the Toccata hard fork (Covenants++) sets the block header version to TOCCATA_BLOCK_VERSION = 2 (pre-Toccata: 1) and transaction version to TX_VERSION_TOCCATA = 1 (pre-Toccata: 0), while doubling the transient-mass limit to 1,000,000 grams.
// Consensus Recurrence & Mass Ceiling (KIP-16, KIP-17, KIP-20, KIP-21)
B.header.accepted_id_merkle_root = SeqCommit(B) = H_seq(SeqCommit(parent(B)), SeqStateRoot(B))
Compute ≤ 500,000g · Transient (4×bytes) ≤ 1,000,000g · Storage ≤ 500,000g — three independent per-block budgets
RelayFeeFloor(tx) ≈ 100 sompi/g × tx mass // rate = node policy (raised 1 → 100 sompi/g at Toccata)
BlockHeader v2 & Transaction v1 Wire Anatomy
Tap row to inspect
| Field / Substructure | Type / Size | Post-Toccata Consensus Role |
|---|---|---|
| header.version | u16 = 2 | Post-Toccata TOCCATA_BLOCK_VERSION = 2 (pre-Toccata: 1) — flags KIP-21 sequencing commit |
| header.parents_by_level | CompressedParents | Multi-level DAG tips under GHOSTDAG k = 124 (≤ 16 direct; cumulative ≤ 255 × 2048 uncompressed) |
| header.pruning_point | Hash (32B) | IBD bootstrap anchor · 1,080,000 blue-score depth (~30 h at 10 BPS) |
| header.hash_merkle_root | Hash (32B) | Merkle root over the block’s transaction IDs (txid omits signature_script) |
| header.accepted_id_merkle_root | SeqCommit(B) (32B) | KIP-21 H_seq(SeqCommit(parent), SeqStateRoot) via 256-bit ActiveLanes SMT |
| header.utxo_commitment | Hash (32B) | Rolling MuHash of the UTXO set (entries carry covenant_id) |
| header.{timestamp,bits,nonce} | u64, u32, u64 | ms clock, target difficulty, kHeavyHash matrix PoW nonce |
| header.{daa_score,blue_score,blue_work} | u64, u64, Uint192 | Committed in MergesetContextHash(B) & miner_payload_leaf(X) |
| tx_v1.inputs[].compute_budget | u16 · script units | Replaces v0 sig_op_count in the same TxInputMass slot; allowance q × 10,000 + 9,999 SU |
| tx_v1.outputs[].covenant | Option<Binding> | KIP-20 { authorizing_input: u16, covenant_id: Hash(32B) } lineage lock |
| tx_v1.{subnetwork_id, gas, payload} | 20B, u64, Vec<u8> | System lanes 0x00‖0… native & 0x01‖0… coinbase (tx.gas = 0) · user lane [ns:4B, 0x00*16] · ≤ 50 lanes/blk |
Workload model
Fee floor Σ (100 sompi/g)
Compute (≤ 500k)
412,000 g
script units
Transient (≤ 1M)
642,800 g
KB / 250 KB cap
Storage (≤ 500k)
298,400 g
floor