Fee accrual
Before a fee reaches the escrow, it lives inside Pons contracts in a form Plouto cannot read as a balance. This page explains what is actually happening there, and why the interface shows an em dash rather than a number.
Pre-graduation
Trades on the bonding curve pay curveFeeBps — 100 bps (1%) in the live configuration. The curve accumulates it internally, exposed through its own accessors:
quoteFeeBalance() // fees held in the quote assetcreatorTaxBalance() // creator tax accrued (zero for Plouto)These are per-curve totals, not per-recipient balances. There is no view function that answers "how much of this is owed to the creator-fee recipient", because the division happens at sweep time.
Post-graduation
Fees accrue on the Pons meme hook instead, tracked per pool:
function pendingFees(bytes32 poolId, address currency) external view returns (uint256);function pendingCreatorTax(bytes32 poolId, address currency) external view returns (uint256);function pendingBuyback(bytes32 poolId, address currency) external view returns (uint256);Closer to readable, but still pool-level and still pre-split. And because the hook may hold fees in the memecoin rather than in ETH, converting them requires a sweep that may involve the operator.
Why Plouto shows nothing there
Any number displayed in that slot would be a guess, and a guess sitting next to four accurate figures reads as a fifth accurate figure.
The formatting layer enforces this — undefined renders as —, never as 0, and there are tests asserting exactly that.
The sweep
Moving fees from accrual into escrow is a Pons operation:
function sweepPoolFees(bytes32 poolId, uint256 minConversionQuoteOut, uint256 minBuybackTokensOut) external;function rescuePoolFees(bytes32 poolId) external returns (uint256 protocolAmount, uint256 creatorAmount);function rescueCurveFees(address token) external; // on the factoryPlouto does not call these and has no permission to. See sweeps.
What Plouto tracks instead
The four states it can read, all separately:
| State | Source |
|---|---|
| Credited in escrow | feeEscrow.balanceOf(revenueRouter) |
| Claimed | router.totalRevenueClaimed() |
| Claimed, unallocated | router.unallocatedRevenue() |
| Allocated | router.totalRevenueRouted() |
Those four are exact. The fifth is honestly unknown.