papermill
A paper mill for PAPER yield on HyperEVM. MILL is the token you buy. PULP is the vault share you get for USDC, redeemable at NAV.
0x0e0d6075679657Cc0B08679f582f6615343c85Bd - MILL price
- …
- Pool liquidity
- …
- 24h buys / sells
- …
- Vault USDC
- MILL above NAV
- …
- Buy MILL. 1% tax in, 2 to 5% tax out. Tax goes to the vault when MILL is above NAV, to burn when below.
- Or deposit USDC. You get PULP. Redeem at net asset value through a queue, settled at the next weekly report.
- Weekly print run. Above 1.5x NAV the mill prints and sells MILL, half the proceeds back the vault. Below NAV it buys back and burns.
One epoch, every seven days.
Once a week, at the same block height, the keeper delivers the claimed yield and posts the report. Then anyone at all can start the press. Nothing inside the run reverts: a swap that falls outside the price band is deferred and retried an hour later, a deposit the vault would reject is buffered, and a carried buyback is dropped rather than executed above NAV.
The line reads headbox, press, dryer. The code runs allocate, tax, issue. The issuance tranche moves spot the most, so it goes last.
Keeper delivers yield and posts the report
The team fee comes off at the door. The rest vests into NAV over seven days. The report is bounded, then settles the redemption queue at this NAV.
receiveYield · reportbeater · stock chestAnyone runs the press
Allocate yield: buy back and burn below NAV, compound otherwise. Process tax: sold into vault shares above NAV, burned below, inside one per-epoch pool budget. Issue above 1.5×: one tranche per epoch, half to vault shares, half to protocol-owned liquidity. Flush any buffered deposit.
TreasuryController.runEpochdrive · headbox · dryer · press · return headerAnyone pays the queue
Settled redemptions are paid first in, first out, partially if cash is short. A payee the token refuses is converted to a claim so no one behind them is frozen.
processPayouts · claimPayoutstock chestLocker distribution
Off in v1. The distributor is set by governance.
VeLocker.distributereelSnapshot
The mill floor is archived on-chain by hash and on IPFS. Not a contract call.
off-chain
The token holds vault shares and nothing else.
| Layer | Instrument | Redeemable | Role |
|---|---|---|---|
| 1 | Pulp share, PULP | yes, at NAV, through a queue | the floor |
| 2 | Mill, MILL | no | the fuel |
Its premium over NAV is the only thing allowed to be reflexive. Premium is simply MILL's seven-day average price divided by NAV per token: at 1.0 the market pays exactly what the backing is worth, at 1.5 it pays a dollar and a half for every dollar of backing, and because MILL cannot be redeemed that gap can exist. The mill harvests it: above 1.5× it sells new MILL and puts the proceeds behind every token; below 1.0× it spends yield to buy MILL back and burn it.
Stock · USDC and PULP
depositat the vesting-smoothed NAV, to yourself onlyfundAccountto capped keeper accounts, never reserved cashreceiveYieldback, fee off the top, vests 7 daysrequestRedeem→ settled at the next report →processPayoutsFIFO
Sheet · MILL
mintonly by the controller, inside a per-epoch cap- tax on pool trades to the controller, as the increment of the batch
- sold above NAV into vault shares, burned below
lock1 to 52 weeks for 1× to 4× weight;kickan expired lock back to 1×
Steam · yield
- keeper-only intake, one window ≤ 20% of principal
- 7-day linear vest into NAV
- valued on closed daily samples over a 30-day window, divided by capRate 4.0
- never worth more than 1× the cash held
The nameplate.
Defaults are starting points from the design, set at deploy. Floors and ceilings are in the code and the owner, behind a 48-hour timelock, can only move toward them.
| Parameter | Default | In code | Owner may |
|---|---|---|---|
| capRate, PAPER valuation | 4.0 | floor 0.5 · MIN_CAP_RATE_BPS | raise toward conservative |
| PAPER leg cap vs cash held | 1.0× | 0.1× to 3× · MIN/MAX_PAPER_CAP_BPS | set within band |
| Yield intake per window | 20% of principal | floor 1% · MIN_YIELD_CAP_BPS | lower only |
| Yield vest into NAV | 7 days | YIELD_VEST | fixed |
| Valuation window · warm-up | 30 d · 14 d ramp | WINDOW_SPAN · 7 to 30 d | warm-up within range |
| Holding period | 24 h | MIN_HOLD | fixed |
| Report bound | ≤ 120% | of max(net funded, recognised equity) · REPORT_UPSIDE_BPS | fixed |
| Team fee | 10% of gross yield | ceiling 15% · MAX_TEAM_FEE_BPS | lower only |
| Issuance threshold | 1.5× NAV | floor 1.2× · MIN_ISSUANCE_THRESHOLD_BPS | raise only |
| Issuance per epoch | 2% supply · 2% pool | ceilings 3% · 5%, floors 0.1% · per-epoch across retries | lower only |
| Buyback per epoch | 2% of pool USDC | ceiling 5%, floor 0.1% | lower only |
| Swap gate vs TWAP | ±3% | ceiling 10%, floor 0.5% | lower only |
| POL share of issuance | 50% | 20% to 80% | set within band |
| Buy tax · sell tax | 1% · 2% → 5% | ceiling 5% · MAX_TAX_BPS | lower only · trigger raise only |
| Lock weight | 1× to 4× over 52 weeks | boostBps · expired locks kick to 1× | fixed |
| Epoch | 7 days | 7 to 90 days | lengthen within range |
| Oracle, stale mode | anyone after 6 h | step clamped ±5% · first observation updater-only | fixed |
| Governance delay · POL LP lock | 48 h · 30 days | spec, DESIGN s2 | — |