Block Reference
ONE_SHOT
PLC Family
TYPE 0x0661 · PLC FAMILY

ONE_SHOT

One-shot trigger. SATISFIED when the state is armed (state == 0). Once fired (state != 0), permanently becomes UNSATISFIED. Commits to a HASH256 for binding the trigger to a specific action. No Tapscript equivalent exists.

PLC Invertible
ONE_SHOT ARMED (0) FIRED (≠0) state == 0 → SATISFIED | state != 0 → UNSATISFIED (permanent)
FieldData TypeSizeSideDescription
stateNUMERIC1-4 BConditionsTrigger state: 0 = armed (can fire), nonzero = fired (permanently used)
commitmentHASH25632 BConditionsCommitment hash binding the trigger to a specific action or context

No witness fields required. The HASH256 commitment binds the one-shot to a specific purpose, preventing reuse across different contexts.

0x0661 0 2 NUMERIC · 3B HASH256 · 32B Conditions = 43 bytes
0x0661 0 0 Witness = 4 bytes (empty block)
Total 47 bytes
1.Read state from NUMERIC field. If missing → ERROR
2.Read commitment from HASH256 field. If missing → ERROR
3.If state == 0 → SATISFIED (trigger is armed, can fire)
4.If state != 0 → UNSATISFIED (trigger already fired, permanently used)
ConditionResult
Missing NUMERIC fieldERROR
Missing HASH256 commitmentERROR
state != 0 (already fired)UNSATISFIED
state == 0 (armed)SATISFIED
Conditions (armed, with commitment)
{
  "type": "ONE_SHOT",
  "inverted": false,
  "fields": [
    { "type": "NUMERIC", "value": 0 },
    { "type": "HASH256", "hex": "a1b2c3d4...commitment hash...32 bytes" }
  ]
}

This creates an armed one-shot trigger. Once the state transitions to any nonzero value in the covenant chain, the trigger permanently disables.

commitment=0xabcd...1234

state=0: armed → SATISFIED (can fire)
state=1: fired → UNSATISFIED (permanently used)
state=255: fired → UNSATISFIED (any nonzero = fired)
No NUMERIC field: → ERROR
Single-Use Authorizations
Grant a one-time spending permission that permanently expires after use. The covenant output carries the trigger state, ensuring the authorization cannot be replayed in subsequent spends.
One-Time Unlocks
Create a covenant path that can only be taken once. Combined with other blocks, enables single-use emergency overrides, one-time key rotations, or irrevocable state transitions.
Non-Repeatable Actions
Enforce that a specific action (bound by the HASH256 commitment) can only occur once in a covenant chain. Prevents double-spending of vouchers, duplicate claim attempts, or repeated initialization.
← SEQUENCER RATE_LIMIT →