TYPE 0x0503 · ANCHOR FAMILY

ANCHOR_POOL

VTXO pool anchor. Verifies a pool Merkle root and participant count. Used to commit the state of Ark-style virtual transaction output pools on-chain.

Anchor Invertible
ANCHOR_POOL VTXO_TREE_ROOT PARTICIPANTS H256 (32B root) count > 0 hash + participant_count > 0 → SATISFIED
FieldData TypeSizeSideDescription
vtxo_tree_rootHASH25632 BConditionsMerkle root of the VTXO pool tree. The committed root must equal SHA256(witness PREIMAGE) at spend time — ANCHOR_POOL applies a hash-binding check via VerifyHashPreimageBinding.
participant_countNUMERIC1-4 BConditionsOptional. If present, must be > 0 and decodable; absent is fine.
preimagePREIMAGEvarWitnessPreimage whose SHA-256 must equal vtxo_tree_root. Required: the witness layout is freeform (NO_IMPLICIT) but the evaluator rejects when no PREIMAGE accompanies the conditions HASH256.
0x0503 0 2 HASH256 · 32B NUMERIC · 3B Conditions = 43 bytes
0x0503 0 1 PREIMAGE · var Witness ≈ 4 + 1 + len bytes
Total ≈ 48 + len bytes
1.HasRequiredHashes(block, 1): at least one HASH256 must be present (the vtxo_tree_root); else → ERROR
2.VerifyHashPreimageBinding(block): pair each HASH256 with a witness PREIMAGE in field order; require SHA256(preimage) == hash256 for each pair. Insufficient PREIMAGEs, undersized HASH256, or any mismatch → UNSATISFIED
3.Look for an optional NUMERIC (participant_count). If present, ReadNumeric it; undecodable or value ≤ 0UNSATISFIED
4.All checks passed → SATISFIED
ConditionResult
HASH256 field absentERROR
Witness has no PREIMAGE, or SHA256(preimage) ≠ vtxo_tree_rootUNSATISFIED
HASH256 not exactly 32 BUNSATISFIED
Optional participant_count present and undecodable, or ≤ 0UNSATISFIED
Hash binding holds; participant_count absent or > 0SATISFIED
Conditions (VTXO pool with 128 participants — committed in the rung leaf)
{
  "type": "ANCHOR_POOL",
  "inverted": false,
  "fields": [
    { "type": "HASH256", "hex": "b3f1a7e9...vtxo tree root...32 bytes" },
    { "type": "NUMERIC", "value": 128 }
  ]
}
Witness (input)
{
  "type": "ANCHOR_POOL",
  "fields": [
    { "type": "PREIMAGE", "hex": "... preimage whose SHA256 is the vtxo_tree_root ..." }
  ]
}

Anchors a VTXO pool tree root with 128 participants. The root commits to all virtual transaction outputs in the pool; the spend reveals a preimage that hashes to the committed root.

Ark-style VTXO Pools
Commit the Merkle root of a virtual transaction output pool on-chain. Participants can prove their VTXO exists in the pool by providing a Merkle proof against the anchored root, enabling off-chain UTXO management with on-chain settlement guarantees.
Joinpool State Commitment
Anchor the current state of a joinpool — a shared UTXO managed by multiple participants. The tree root captures everyone's balance, while the participant count enables on-chain verification of pool size constraints.