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 InvertibleLadder Diagram
Fields
| Field | Data Type | Size | Side | Description |
|---|---|---|---|---|
| vtxo_tree_root | HASH256 | 32 B | Conditions | Merkle 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_count | NUMERIC | 1-4 B | Conditions | Optional. If present, must be > 0 and decodable; absent is fine. |
| preimage | PREIMAGE | var | Witness | Preimage 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. |
Wire Format Breakdown
0x0503
0
2
HASH256 · 32B
NUMERIC · 3B
Conditions = 43 bytes
0x0503
0
1
PREIMAGE · var
Witness ≈ 4 + 1 + len bytes
Total
≈ 48 + len bytes
Evaluation Logic
1.HasRequiredHashes(block, 1): at least one HASH256 must be present (the
vtxo_tree_root); else → ERROR2.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 → UNSATISFIED3.Look for an optional NUMERIC (
participant_count). If present, ReadNumeric it; undecodable or value ≤ 0 → UNSATISFIED4.All checks passed → SATISFIED
Return Values
| Condition | Result |
|---|---|
| HASH256 field absent | ERROR |
Witness has no PREIMAGE, or SHA256(preimage) ≠ vtxo_tree_root | UNSATISFIED |
| HASH256 not exactly 32 B | UNSATISFIED |
Optional participant_count present and undecodable, or ≤ 0 | UNSATISFIED |
Hash binding holds; participant_count absent or > 0 | SATISFIED |
JSON Wire Format
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.
Use Cases
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.