Block Reference
RECURSE_SPLIT
Recursion Family
TYPE 0x0405 · RECURSION FAMILY

RECURSE_SPLIT

Splitting covenant. Allows a UTXO to split into multiple outputs, each re-encumbered with decremented max_splits. Enforces a minimum per-split value to prevent dust. Total output value must not exceed input. No Tapscript equivalent.

Recursion Invertible
RECURSE_SPLIT 1 input → N outputs, each SPLIT(max-1) each output ≥ min_split_sats dust protection enforced Tree-structured splitting — fan-out with recursive re-encumbrance
FieldData TypeSizeSideDescription
max_splitsNUMERIC1-4 BConditionsRemaining split depth (> 0). Each output gets max_splits - 1. When 0, no further splits allowed.
min_split_satsNUMERIC1-4 BConditionsMinimum value in satoshis for each split output. Prevents dust creation.
0x0405 0 2 NUMERIC · max_splits NUMERIC · min_split_sats Conditions = 14 bytes
0x0405 0 0 Witness = 4 bytes
Total 20 bytes
1.Read max_splits and min_split_sats from NUMERIC fields
2.If max_splits ≤ 0 → UNSATISFIED (no further splits allowed)
3.For each output in the spending transaction:
4.  Verify output value ≥ min_split_sats
5.  Verify output carries RECURSE_SPLIT(max_splits - 1, min_split_sats)
6.Verify total output value ≤ input value
7.All checks pass → SATISFIED
8.Any check fails → UNSATISFIED

Binary tree split: max_splits=3, min_split_sats=1000

Input: 100,000 sats with RECURSE_SPLIT(3, 1000).

Split into 2 outputs: 60,000 and 40,000 sats
60,000 ≥ 1,000 and 40,000 ≥ 1,000 → dust check passes
Each output carries RECURSE_SPLIT(2, 1000) → SATISFIED

Attempt to split below minimum:

Output of 500 sats < min_split_sats of 1,000 → UNSATISFIED
{
  "type": "RECURSE_SPLIT",
  "fields": [
    { "type": "NUMERIC", "value": 3 },
    { "type": "NUMERIC", "value": 1000 }
  ]
}

max_splits=3 allows up to 3 levels of splitting. With binary splits, this produces up to 8 leaf outputs. min_split_sats=1000 prevents dust.

Recursive Payment Splitting
A single UTXO that can be progressively divided among recipients. Each split creates new covenanted outputs that can themselves be further split, enabling hierarchical payment distribution.
Tree-Structured Payout Schemes
Organizational payroll or revenue sharing where a root UTXO splits into department budgets, which split into team budgets, which split into individual payouts. The tree depth is bounded by max_splits.
Airdrop Distribution Trees
Efficient token distribution using a binary tree of splits. A single large UTXO is recursively halved until each leaf output reaches the per-recipient amount, bounded by min_split_sats to prevent uneconomical outputs.
← RECURSE_COUNT RECURSE_DECAY →