Block Reference
ACCUMULATOR
Governance Family
TYPE 0x0806 · GOVERNANCE FAMILY

ACCUMULATOR

Merkle set membership proof. Verifies that a value belongs to a committed set using sorted-pair Merkle proofs. The conditions commit to a Merkle root; the witness provides the leaf and proof path. No Tapscript equivalent.

Governance Invertible
ACCUMULATOR Merkle Tree Structure ROOT H(min||max) SIBLING LEAF SIBLING Sorted pairs: H(min(a,b) || max(a,b))
FieldData TypeSizeSideDescription
merkle_rootHASH25632 BConditionsRoot of the Merkle tree committing to the allowed set
siblings[0..N]HASH25632 B eachWitnessSibling hashes from leaf to root (proof path). One per tree level.
leafHASH25632 BWitnessThe leaf hash being proven (last HASH256 field in the block)

Minimum 3 HASH256 fields required: root + at least 1 sibling + leaf. Fields are ordered: [root, sibling_0, sibling_1, ..., leaf].

Example: depth-2 tree (4 leaves), proving membership of one leaf:

0x0806 0 1 HASH256 · root Conditions = 38 bytes
0x0806 0 3 HASH256 · sib0 HASH256 · sib1 HASH256 · leaf Witness = 106 bytes
Total (depth 2) 144 bytes

Witness grows by 34 bytes per tree level (1B type + 1B len + 32B hash).

1.Extract all HASH256 fields. If fewer than 3 → ERROR
2.First hash = root, last hash = leaf, middle hashes = proof siblings
3.Start with current = leaf
4.For each sibling: current = SHA256(min(current, sibling) || max(current, sibling))
5.If computed root == committed root → SATISFIED
6.Otherwise → UNSATISFIED

Sorted pair convention: At each level, the two children are sorted lexicographically before hashing. This makes the proof deterministic — no left/right direction bits needed, saving 1 bit per level.

Conditions (commit to set root)
{
  "type": "ACCUMULATOR",
  "fields": [
    { "type": "HASH256", "hex": "a1b2c3d4...merkle root...32 bytes" }
  ]
}
Witness (prove membership)
{
  "type": "ACCUMULATOR",
  "fields": [
    { "type": "HASH256", "hex": "...sibling at level 0..." },
    { "type": "HASH256", "hex": "...sibling at level 1..." },
    { "type": "HASH256", "hex": "...leaf being proven..." }
  ]
}
Whitelist Authorization
Commit to a Merkle root of allowed transaction hashes, pubkey hashes, or output scripts. Only transactions that can prove membership in the committed set are valid spends. The set can contain millions of entries with only 32 bytes on-chain.
Inverted: Blacklist Enforcement
With the inverted flag, spending is blocked if the leaf IS in the set. Creates exclusion lists — e.g., block specific output patterns or addresses from being created.
Merkle Airdrops
Covenant output commits to a Merkle root of eligible claimants. Each claimant proves their pubkey hash is in the tree to claim their share. Scales to millions of recipients with O(log N) proof size.
Oracle Data Attestation
Oracle publishes a Merkle root of attested facts. Contract verifies a specific fact by checking its Merkle proof against the committed root, enabling trustless off-chain data verification.
← RELATIVE_VALUE P2PK_LEGACY →