Creator-fee recipient
The single most consequential parameter of the launch. It decides where every fee Plouto will ever earn is sent, and it is set at the moment the token is created.
The constraint
Pons requires a creatorFeeRecipient address in the launch parameters. That address must already exist as a contract, because fees will be credited to it from the first trade.
Therefore the deployment order is forced:
- Deploy
PloutoRegistry. - Deploy
GravityStaking. - Deploy
BuybackExecutor. - Deploy
PloutoReserve. - Deploy
PloutoRevenueRouter— this address is the answer. - Wire the four one-shot router references and call
wireProtocol. - Launch PLOUTO with
creatorFeeRecipientset to the router. - Call
setPloutoTokenOnce(token, curve).
Between steps 5 and 8 the protocol exists but has no token.
What the app does in that window
Nothing is faked. The registry reports initialized() == false, and the interface:
- Shows Protocol contracts live · PLOUTO launch pending in the status strip.
- Disables every staking control.
- Renders protocol figures as genuine zeroes or em dashes.
- Marks PLOUTO registered as a failing health check on the status page.
The router can still claim fees during this window; it simply cannot route them, because the buyback destination has no token to buy.
Getting it wrong is unrecoverable-ish
If the wrong address is registered as the creator-fee recipient, every fee goes there instead. Pons does provide a timelocked recipient change:
function transferCreatorFeeRecipient(address token, address newRecipient) external;function executeCreatorFeeRecipientChange(address token) external;function cancelCreatorFeeRecipientChange(address token) external;subject to CREATOR_FEE_RECIPIENT_TIMELOCK and CREATOR_FEE_RECIPIENT_EXECUTION_WINDOW. So it is recoverable, but slowly and publicly, and any fees earned in the interim are gone.
The checks that prevent it
Three independent layers:
- prepare-pons-launch.ts
Verifies
PLOUTO_REVENUE_ROUTERhas bytecode on chain and that itsfeeEscrow()matches the official Pons escrow. Refuses to build launch calldata otherwise.- finalize-plouto.ts
Reads the factory record after launch and aborts if
record.creatorFeeRecipientis not the registry's router.- PloutoRegistry.setPloutoTokenOnce
Reverts with
FeeRecipientMismatch(expected, actual)on chain. Even if both scripts were bypassed, the registry will not register a token whose fees go elsewhere.
Publishing it
Once deployed, the Revenue Router address will be published in contract addresses and on the status page, where it is labelled explicitly as the Pons creator-fee recipient.