Block Reference
COUNTER_UP
PLC Family
TYPE 0x0633 · PLC FAMILY

COUNTER_UP

Up counter with event signer. SATISFIED while the current count is below the target (still counting). Requires a valid public key or commitment to authorize count increments. No Tapscript equivalent exists.

PLC Invertible
COUNTER_UP EVENT SIGNER current: 3 < target: 10 pubkey + current < target → SATISFIED
FieldData TypeSizeSideDescription
currentNUMERIC1-4 BConditionsCurrent counter value (NUMERIC[0])
targetNUMERIC1-4 BConditionsTarget count value (NUMERIC[1])

Public key folded into Merkle leaf via merkle_pub_key (PubkeyCountForBlock = 1). No key field in conditions.

Both NUMERIC fields are required.

0x0633 0 3 NUMERIC · 3B NUMERIC · 3B Conditions = 16 bytes
0x0633 0 0 Witness = 4 bytes (empty block)
Total 52 bytes
1.Verify witness PUBKEY against Merkle leaf (merkle_pub_key). If missing or mismatch → ERROR
2.Read current (NUMERIC[0]) and target (NUMERIC[1]). If fewer than 2 NUMERIC fields → ERROR
3.If current < 0 or target < 0 → ERROR
4.If current < target → SATISFIED (still counting)
5.If current ≥ target → UNSATISFIED (count complete)
ConditionResult
Merkle leaf pubkey count mismatchERROR
Fewer than 2 NUMERIC fieldsERROR
current < 0 or target < 0ERROR
current ≥ targetUNSATISFIED
current < targetSATISFIED
Conditions (signer commit, current=3, target=10)
{
  "type": "COUNTER_UP",
  "inverted": false,
  "fields": [
    { "type": "PUBKEY", "hex": "02abc1...33 bytes" },
    { "type": "NUMERIC", "value": 3 },
    { "type": "NUMERIC", "value": 10 }
  ]
}

This creates a signed up counter that remains SATISFIED until 10 authorized events have been recorded. The event signer's pubkey must match the commitment.

event_signer=committed, current=3, target=10

current=0, target=10: pubkey valid, 0 < 10 → SATISFIED
current=9, target=10: pubkey valid, 9 < 10 → SATISFIED (boundary)
current=10, target=10: 10 ≥ 10 → UNSATISFIED (done)
No pubkey field: → ERROR
Signature-Gated Counters
Only an authorized signer can increment the counter. Each increment requires a valid signature from the event signer, preventing unauthorized count manipulation in covenant chains.
Multi-Event Tracking
Track a series of signed events (e.g., oracle attestations, delivery confirmations) up to a target. The covenant remains active while events are being collected and transitions when complete.
Progressive Authorization
Require N signed approvals before unlocking funds. Each approval increments the counter. Combined with other blocks, creates multi-step authorization workflows with cryptographic accountability.
← COUNTER_PRESET COMPARE →