TYPE 0x0505 · ANCHOR FAMILY
ANCHOR_SEAL
Asset seal anchor. Verifies an asset identifier hash and a state transition hash. Used for RGB-style client-validated assets and single-use seal protocols.
Anchor InvertibleLadder Diagram
Fields
| Field | Data Type | Size | Side | Description |
|---|---|---|---|---|
| asset_id | HASH256 | 32 B | Conditions | Hash identifying the asset being sealed. Must equal SHA256(witness PREIMAGE[0]) at spend time. |
| state_transition | HASH256 | 32 B | Conditions | Hash of the state transition being committed. Must equal SHA256(witness PREIMAGE[1]). |
| preimage[0] | PREIMAGE | var | Witness | Preimage for asset_id (paired by field order). |
| preimage[1] | PREIMAGE | var | Witness | Preimage for state_transition. |
PubkeyCountForBlock = 0. Witness layout is freeform (NO_IMPLICIT) but the evaluator requires one PREIMAGE per HASH256, in field order, via VerifyHashPreimageBinding.
Wire Format Breakdown
0x0505
0
2
HASH256 · 32B
HASH256 · 32B
Conditions = 72 bytes
0x0505
0
2
PREIMAGE · var
PREIMAGE · var
Witness ≈ 6 + 2×len bytes
Total
≈ 78 + 2×len bytes
Evaluation Logic
1.HasRequiredHashes(block, 2): at least 2 HASH256 fields must be present (the first is
asset_id, the second is state_transition); else → ERROR2.VerifyHashPreimageBinding(block): pair each HASH256 with a witness PREIMAGE in field order; require
SHA256(preimage[i]) == hash[i] for both pairs. Insufficient PREIMAGEs, undersized HASH256, or any mismatch → UNSATISFIED3.All checks passed → SATISFIED
Return Values
| Condition | Result |
|---|---|
| Fewer than 2 HASH256 fields | ERROR |
| Either HASH256 not exactly 32 B | UNSATISFIED |
| Witness has fewer than 2 PREIMAGEs, or any pair fails the SHA-256 binding | UNSATISFIED |
| Both pairs satisfy the hash binding | SATISFIED |
JSON Wire Format
Conditions (asset seal with state transition — committed in the rung leaf)
{
"type": "ANCHOR_SEAL",
"inverted": false,
"fields": [
{ "type": "HASH256", "hex": "d4e5f6a7...asset identifier...32 bytes" },
{ "type": "HASH256", "hex": "b8c9d0e1...state transition hash...32 bytes" }
]
}Witness (input)
{
"type": "ANCHOR_SEAL",
"fields": [
{ "type": "PREIMAGE", "hex": "... preimage that hashes to asset_id ..." },
{ "type": "PREIMAGE", "hex": "... preimage that hashes to state_transition ..." }
]
}Seals a specific state transition for the identified asset to this UTXO. The seal is consumed when the UTXO is spent; the witness reveals preimages whose SHA-256 values equal the two committed hashes.
Use Cases
RGB-style Client-validated Assets
Anchor client-side validated asset state transitions on-chain. The asset_id identifies the contract, and the state_transition hash commits to the off-chain state change. Validators verify the full state history client-side while only the seal appears on-chain.
Single-use Seals
Implement single-use seal protocols where each UTXO can only commit to one state transition per asset. Spending the UTXO consumes the seal, preventing double-commitment of the same asset state.
NFT State Anchoring
Anchor non-fungible token ownership transitions on-chain. The asset_id uniquely identifies the NFT, and the state_transition commits to the new ownership or metadata state, creating an auditable chain of custody.