TYPE 0x0601 · PLC FAMILY
HYSTERESIS_FEE
Fee rate band check. SATISFIED if the transaction fee rate (sat/vB) falls within a configurable [low, high] band. Prevents fee overpayment and enforces economic constraints on spending. No Tapscript equivalent exists.
PLC InvertibleLadder Diagram
Fields
| Field | Data Type | Size | Side | Description |
|---|---|---|---|---|
| high_sat_vb | NUMERIC | 1-4 B | Conditions | Upper bound of the fee rate band (sat/vB) |
| low_sat_vb | NUMERIC | 1-4 B | Conditions | Lower bound of the fee rate band (sat/vB) |
No witness fields required. Evaluation uses the transaction context (inputs, outputs, vsize) to compute fee rate.
Wire Format Breakdown
0x0601
0
2
NUMERIC · 3B
NUMERIC · 3B
Conditions = 14 bytes
0x0601
0
0
Witness = 4 bytes (empty block)
Total
18 bytes
Evaluation Logic
1.Collect conditions NUMERIC fields. Fewer than 2 → ERROR. ReadNumeric the first as
high and the second as low; either undecodable → ERROR2.Range/order check:
high < 0, low < 0, or low > high → UNSATISFIED3.Require
ctx.tx, ctx.spent_outputs, and ctx.tx_weight > 0; missing → ERROR (fail-closed).4.Compute
fee = Σ(spent_outputs[i].value) - Σ(tx.outputs[i].value). fee < 0 → UNSATISFIED5.Compute
vsize = (tx_weight + 3) / 4 (BIP 141 WITNESS_SCALE_FACTOR). vsize ≤ 0 → ERROR. Then fee_rate = fee / vsize — truncating integer division, so the consensus check uses the floor (sub-sat/vB precision is intentionally not enforced).6.If
low ≤ fee_rate ≤ high → SATISFIED; else → UNSATISFIEDReturn Values
| Condition | Result |
|---|---|
| Fewer than 2 NUMERIC fields, or either undecodable | ERROR |
| Missing tx / spent_outputs / tx_weight context, or vsize ≤ 0 | ERROR |
high < 0, low < 0, or low > high | UNSATISFIED |
fee < 0 (outputs exceed inputs) | UNSATISFIED |
fee_rate below low or above high | UNSATISFIED |
low ≤ fee_rate ≤ high | SATISFIED |
JSON Wire Format
Conditions (fee band 5-50 sat/vB)
{
"type": "HYSTERESIS_FEE",
"inverted": false,
"fields": [
{ "type": "NUMERIC", "value": 50 },
{ "type": "NUMERIC", "value": 5 }
]
}This creates a fee rate band of 5-50 sat/vB. Transactions with fee rates outside this range will fail the block check.
Use Cases
Fee Overpay Prevention
Covenant-locked UTXOs enforce a maximum fee rate, preventing accidental or malicious fee overpayment when spending from shared or automated wallets.
Fee Band Enforcement
Institutional treasury outputs can only be spent within a reasonable fee band, ensuring transactions are neither too cheap (risk of non-confirmation) nor too expensive.
Economic Constraint on Spending
Combined with other PLC blocks, fee hysteresis creates economic guardrails that prevent value extraction through inflated fees in automated covenant chains.