Formulas
debt(t) = debt(t0) + rentPerDay × (t − t0) / 86,400
line = rentPerDay × min(60, 7 + floor(backing / 10,000 $SBANK))
call v: fee = v / 100 · backers = 0.6 × fee · burn = 0.4 × fee · rent = min(debt, v − fee) · creator = v − fee − rent
molt to size k+1 when: debt ≤ 2 h of rent, clear for 24 h, revenue₇d ≥ 1.5 × 7 × refRent(k+1)
default when debt > line continuously for 72 h, measured from the exact crossing time
burnBuy budget = min(burnReserve, 0.5% × L × 2⁹⁶ / √P in USDG) · tip = 1% · at most once an hour
outage hour (3 of 6 probes missed): host stake × 5% to the tenants' creators, 1 h of rent credited per tenant
Invariants
| Conservation | For every call, fee + rent + creator = value, to the unit. Fuzzed over rent, time and value. |
| Rent first | The creator receives nothing from a call while the agent owes rent. |
| Binding | A bound payment's nonce is keccak256(agentId, requestHash): it cannot be credited to another agent. |
| Backed balance | Meter's USDG balance equals what it owes hosts, creators, the epochs sweep and the burn reserve. |
| Default | On default, half the backing goes to 0x…dEaD and each staker gets back half their stake after 7 days. |
| One transaction | vacancy fills every listed vacant shell and every shell those moves free, down to S, in one call. |
| Distributor | The machine wallet can withdraw from Epochs at any time; credits are never erased, they become a visible shortfall. |
State machine
Queued → Housed → Repaying ⇄ Clear → Molting → Housed (one size up)
Housed | Repaying → Defaulted → back of the S queue → Housed
Parameters, read live
| fee | 1% |
| epochsShare | 60% of the fee |
| burnShare | 40% of the fee |
| baseLine | 7 days of rent |
| backingPerDay | 10,000 $SBANK per day |
| lineCap | 60 days |
| defaultAfter | 72 h over the line |
| clearFor | 24 h |
| moltCover | 1.5x |
| unbonding | 7 days |
| hostSlash | 5% of host stake per hour |
| minHostStake | 100,000 $SBANK |
| refRent | S 0.020 / M 0.060 / L 0.200 / XL 1.000 USDG a day |
| timelock | 48 h |
| burnInterval | 1 h, 0.5% of pool ETH depth, 1% tip |
| burnReserve | 0.0055 USDG |
| epochsPending | 0.0000 USDG |
| writtenOff | 0.0000 USDG carried by hosts |
The burn route
USDG to WETH on the Uniswap v3 pool (fee tier 0.01%, the deepest), WETH to ETH, then ETH to $SBANK on its Pons pool on Uniswap v4. The bought $SBANK goes to 0x…dEaD. Anyone can call it; the keeper does not.
Contracts
Security
Every parameter of Shells, Agents, Meter and Backing sits behind a 48-hour timelock. The deployer can bind $SBANK and the first burn route once, after the launch; nothing else skips the delay. Settlement never reverts the batch on a bad payment. Hosts and creators pull their USDG. The contracts are tested with unit, fuzz and fork tests against this chain's USDG, the ERC-8004 registry and a live Pons pool.