Fee routing
Fixed 5% PUM tithe plus DIEM, perp-agent, and creator allocation.
Every enrolled token has a TokenRewardSplit — basis points that must sum to 10 000 (100%).
Split table
| Leg | Default | Config key | Destination |
|---|---|---|---|
| PUM | 5% | PUM_REWARD_BPS (fixed) | PUM buyback & burn |
| DIEM | 28.5% | diemBps / diemPct | DIEM endowment (Venice intelligence token) |
| Perp agent | 57% | perpBps / perpPct | Per-token Avantis desk collateral |
| Creator | 9.5% | creatorBps / creatorPct | Creator wallet (claim on Clanker) |
Creators configure the last three at launch; they must sum to 95%. PUM is always 5%.
// config.ts — default user-configurable split
DEFAULT_REWARD_SPLIT: {
pumBps: 500,
diemBps: 2850,
perpBps: 5700,
creatorBps: 950,
}Claim cycle
The fee claimer (claimPooledFeesCycle):
- Round-robin batch of enrolled tokens (
CLAIM_BATCH_SIZE, default 25) collectRewards+claimUSDC from Clanker FeeLocker- Attribute USDC per token
splitProtocolUsdcon the protocol share (PUM + DIEM + perp):
pumUsdc = usdc × (pumBps / (pumBps + diemBps + perpBps))
diemUsdc = usdc × (diemBps / …)
perpUsdc = usdc × (perpBps / …)- Accrue to in-memory accumulators (
addTokenRewardAllocation)
Creator USDC never passes through the engine — it sits in FeeLocker for the creator to claim via Clanker.
Where each leg goes
flowchart TB
Fees["USDC fees claimed"]
Fees --> Proto["Protocol share\n(PUM + DIEM + perp)"]
Fees --> Creator["Creator share\n(direct claim)"]
Proto --> PUM["buyback-engine\n→ swap USDC → PUM → burn"]
Proto --> DIEM["diem-engine\n→ DIEM buy/stake"]
Proto --> Desk["desk-manager\n→ Avantis USDC collateral"]
Desk --> Profit["Desk profit"]
Profit --> CB["creator-buyback\n→ swap → creator token → burn"]Fission 70/30 vs pumperp
Historical Fission docs describe a simple 70% perps / 30% protocol token burn.
pumperp generalizes this:
- PUM tithe (5%) ≈ network tax on every launch (was 30% in Fission, but only of protocol flow)
- Perp slice ≈ Fission's 70% desk leg (now per-token, agent-managed)
- DIEM + creator ≈ new legs for intelligence endowment and optional creator cash
config.FEE_SPLIT (positionFund: 0.7, buyback: 0.3) is deprecated — the live path is TokenRewardSplit per token.
Validation
buildRewardSplit rejects negative bps and enforces:
diemBps + perpBps + creatorBps === 10000 - PUM_REWARD_BPS // 9500API accepts either raw bps in rewardSplit or whole-percent shortcuts (diemPct, perpPct, creatorPct).
