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.
GovernanceInvertible
Ladder Diagram
Fields
Field
Data Type
Size
Side
Description
merkle_root
HASH256
32 B
Conditions
Root of the Merkle tree committing to the allowed set
siblings[0..N]
HASH256
32 B each
Witness
Sibling hashes from leaf to root (proof path). One per tree level.
leaf
HASH256
32 B
Witness
The 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].
Wire Format Breakdown
Example: depth-2 tree (4 leaves), proving membership of one 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.
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.