THE REVENUE
ENGINE
The DIVIS engine connects a trading hub, admitted market spokes and instruments with different income and capital roles. Earned fees can fund eligible holder dividends, staking allocations, backing and useful liquidity. Keeper rebalancing results are measured separately from customer fee income; new strategies require their own funding and fee rights.
Priced per swap. Clamped at 20%.
Volatility on every pool; the oracle gap on stock spokes during market hours; a surge on large trades; a premium when the feed sleeps.
fee_bps = clamp( base
+ k_vol · EWMA(|Δtick| per block) realised volatility, all pools
+ k_gap · |impliedPrice − chainlinkPrice| (bps) stock spokes · market hours · feed fresh · not paused
+ k_size · priceImpact(bps) surge on large trades
+ afterHoursPremium feed stale (24/5) or oraclePaused()
+ sellPremium (if selling DIVIS, optional) asymmetric, per pool
, minFee, maxFee = 20% )Split at swap time, by currency.
No harvest, no multisig, no manual LP. The hook knows which currency it holds and where it goes.
| Fee currency | Stakers (USDG) | Reserve | POL | Burn | Holders |
|---|---|---|---|---|---|
| USDG (hub fees) | 20% | 20% | 20% | — | 40% to DIVIS holders via the dividend engine |
| Stock token (spoke fees) | — | 70% | 30% | — | the Reserve's 70% pays that ticker's pStock coupon first (senior), the rest is junior basket |
| DIVIS (unspecified side) | — | — | 50% | 50% | — |
| Clone / stock (launch pools) | — | 12.5% | — | clone-token side burned | 87.5% in the stock |
| ETH pad fees via FeeRouter | 50% → USDG | 20% | — | — | 20% to DIVIS holders · 10% ops |
Nobody can withdraw. Including us.
- › Holds every protocol position. No withdraw, no approve, no arbitrary call. Capital out only via Reserve.redeem() pro-rata or rebalances that stay inside the vault.
- › Range policy per pool type is on-chain and immutable: spokes ±X% around the Chainlink-implied cross, hub wide band, launch spokes full range.
- › LP fee on every pool is 0. The hook fee is taken via afterSwapReturnDelta, so it sits outside the Uniswap fee switch. Routed fees are earmarked per pool and anyone can compound them back into the position.
- › Fee-exempt, immutable: POLVault, Keeper, BondDepository, Reserve. Nothing else, ever. The keeper's re-peg can only run paths where no token it touches decreases.
Rebalancing serves the engine.
- › When the hub moves, every spoke is stale by the same percentage. The keeper trades DIVIS↔stock through the mispriced spokes at zero hook fee and unwinds through the hub, keeping the gap.
- › If an outside bot gets there first, it pays the k_gap fee. Both outcomes accrue to the protocol. A hand-run pool network only gets the second one, at a fixed rate.
- › Corporate actions never touch pool balances (an ERC-8056 multiplier moves instead), so on every ex-dividend and split date the gap is guaranteed. The hook harvests it.
- › Permissionless entry points; a whitelisted operator funded from the 10% ops split. Keeper win-rate is a published KPI.
The hub and its admitted spokes.
Each admitted pair has its own fee policy and status. Stock spokes require explicit admission and funding checks; creator graduation adds its own main pool and separate DIVIS spoke. A feed alone does not authorize a new stock market.
Small on purpose.
3-of-5 multisig behind a 48-hour timelock. Not a DAO, not yet. The timelock is the stakers' exit window. Everything that can run without it does: spokes, bonds, graduation, compounding, re-peg and sweeps are permissionless.
- ✓ Set the Chainlink feed for a stock (the one listing act: feed addresses cannot be verified on-chain). Anyone then opens its DIVIS spoke at the reference price
- ✓ Allow a payout asset that has no feed, and set a template for future pools
- ✓ Spend the ecosystem bucket within 2M DIVIS per 30 days
- ✓ Move Reserve assets into protocol positions (still redeemable)
- ✓ Replace the graduation price guard; ops runs the keeper float and converts pad fees
- ✗ Touch reserve assets or withdraw from POLVault
- ✗ Open, close or price a bond market (anyone rolls epochs from chain state; the floor only ratchets up)
- ✗ Change emissions, fee constants, routing splits or the fee-exempt set
- ✗ Block a graduation, a spoke, a redemption or a claim
- ✗ Upgrade anything (no proxies) or mint
