Rate limiter. Checks single-transaction output limits to prevent excessive value extraction per spend. Enforces per-block withdrawal caps with accumulation and refill parameters. No Tapscript equivalent exists.
PLCInvertible
Ladder Diagram
Fields
Field
Data Type
Size
Side
Description
max_per_block
NUMERIC
1-4 B
Conditions
Maximum output amount allowed per single transaction (NUMERIC[0])
accumulation_cap
NUMERIC
1-4 B
Conditions
Maximum accumulated withdrawal allowance (NUMERIC[1])
refill_blocks
NUMERIC
1-4 B
Conditions
Number of blocks between allowance refills (NUMERIC[2])
The single-transaction check (output_amount vs max_per_block) is evaluated directly. Full accumulation tracking requires UTXO chain state beyond this block's scope.
Note: Full accumulation tracking (cap enforcement across multiple transactions, refill period management) requires UTXO chain state and is handled at a higher protocol layer.
Return Values
Condition
Result
Fewer than 3 NUMERIC fields
ERROR
output_amount > max_per_block
UNSATISFIED
output_amount ≤ max_per_block
SATISFIED
JSON Wire Format
Conditions (max 100k sats/tx, 1M cap, refill every 144 blocks)
This creates a rate limiter allowing at most 100,000 sats per transaction, with a cumulative cap of 1,000,000 sats that refills every 144 blocks (~1 day).
Exchange hot wallets or custodial vaults enforce maximum withdrawal amounts per transaction and per time period. Even with valid signing keys, an attacker cannot drain the wallet in a single transaction.
Anti-Drain Protection
Protect high-value UTXOs from catastrophic key compromise. The rate limit ensures that even with stolen keys, funds can only be extracted slowly — giving the owner time to detect and respond.
Velocity Controls
Implement spending velocity limits on institutional wallets. Combined with EPOCH_GATE, creates sophisticated time-and-amount-based spending policies that mirror traditional banking controls.