TYPE 0x0506 · ANCHOR FAMILY

ANCHOR_ORACLE

Oracle anchor. Verifies an oracle pubkey and outcome count. Used for DLC oracle attestations, price feed anchoring, and event outcome commitments.

Anchor Non-Invertible
ANCHOR_ORACLE ORACLE_KEY OUTCOME_COUNT pubkey + outcome_count > 0 → SATISFIED
FieldData TypeSizeSideDescription
outcome_countNUMERIC1-4 BConditionsOptional number of possible outcomes. If present, must decode and be > 0; absent is fine (the block then degenerates to "an oracle key is committed").
oracle_keyPUBKEY32-33 BWitnessOracle pubkey. Required at spend time (HasRequiredPubkeys(block, 1)). Identity is bound at MLSC-proof level via merkle_pub_key — revealing a different key produces a different rung leaf and the proof rejects.

PubkeyCountForBlock = 1. The oracle pubkey lives in the witness (ANCHOR_ORACLE_WITNESS = {1, [PUBKEY]}), not conditions.

0x0506 0 1 NUMERIC · 3B Conditions ≈ 9 bytes
0x0506 0 1 PUBKEY · 35B Witness ≈ 39 bytes
Total ≈ 48 bytes
1.HasRequiredPubkeys(block, 1): at least one PUBKEY must be present in the merged conditions+witness block; else → ERROR. The oracle pubkey's identity is enforced at MLSC-proof level via merkle_pub_key — no leaf check is performed here.
2.Look for an optional NUMERIC (outcome_count). If present, ReadNumeric it; undecodable or value ≤ 0UNSATISFIED
3.All checks passed → SATISFIED
ConditionResult
No PUBKEY in the merged blockERROR
Optional outcome_count present and undecodable, or ≤ 0UNSATISFIED
PUBKEY present; outcome_count absent or > 0SATISFIED
Conditions (oracle with 3 possible outcomes — committed in the rung leaf)
{
  "type": "ANCHOR_ORACLE",
  "inverted": false,
  "fields": [
    { "type": "NUMERIC", "value": 3 }
  ]
}
Witness (input)
{
  "type": "ANCHOR_ORACLE",
  "fields": [
    { "type": "PUBKEY", "hex": "02 ... oracle pubkey ... 33 bytes" }
  ]
}

Anchors an oracle attestation with 3 possible outcomes (e.g., home win, draw, away win). The oracle key revealed in the witness identifies who will sign the outcome; its identity is bound to the rung leaf via merkle_pub_key.

DLC Oracle Attestations
Anchor Discreet Log Contract oracle parameters on-chain. The oracle key identifies the attestor, and the outcome count defines the event space. Contract execution branches are determined by which outcome the oracle signs.
Price Feed Anchoring
Commit a price oracle's key and the number of price buckets on-chain. Enables trustless price-dependent contracts where the oracle attests to which price range was reached, without revealing the exact price.
Event Outcome Commitment
Anchor the parameters for any real-world event with discrete outcomes. Sports results, election outcomes, or weather events can be committed with a specific oracle and outcome count, enabling conditional contract execution.