How Xpaid works
What the contracts do, in the order a fee meets them — the one power over them Xpaid cannot remove, and the four things this deliberately will not do.
The problem it solves
Pons credits a token’s creator fees to one address, named at launch. That is good for whoever holds the address and bad for everyone else involved: a team splitting revenue, a creator paying a designer, a project promising a share to a charity. All of them have to trust one wallet to pass the money on.
An Xpaid splitter is a contract that takes that address’s place. The shares are set when it is deployed and there is no function to change them, no owner and no upgrade path. Whoever is named in it can withdraw their own balance and nothing else.
How a fee reaches a recipient
Pons V2 moves a creator fee in three hops before Xpaid ever sees it:
- A trade books it on the curve. While a token trades on its bonding curve, each trade’s fee is recorded there, not paid out.
- A sweep credits it to the fee escrow. Pons’ operator sweeps, and so can the launch’s fee recipient — the splitter. The escrow is a ledger: it only ever pays the credited address, when that address asks.
- The splitter pulls it in.
collect()does the sweep and the escrow withdrawal in one transaction. Anyone can call it, and it can only move value into the splitter.
From there each recipient withdraws their own share with claim(recipient). After a token graduates to its Uniswap V4 pool, the pool’s hook books fees instead of the curve and Pons’ operator sweeps them; collect() still brings them across.
A token that is already live
Pons V2 lets whoever a launch currently pays hand that role to another address, once. So a creator who launched paying themselves can still split their fees: deploy a splitter, call Pons’ transferCreatorFeeRecipient(token, splitter) from the wallet Pons pays, then link the two. The launch page walks through it and checks the wallet first.
Fees the curve has booked but not swept yet go to whoever the recipient is when they are swept — after the hand-off, the splitter. The flow shows that amount and offers to sweep it to the creator first.
The launch sequence
The order is forced by Pons. The fee recipient is named when the token is created, and the splitter has no way to hand that role on, so its address has to be known before the token exists:
predict(deployer, recipients, shares, salt)returns the address the splitter will occupy when that account deploys it. It depends only on those inputs, so it is stable before anything is deployed — and because the deployer is one of them, nobody else can occupy it first.- Launch on Pons with that address as the creator-fee recipient.
deploy(recipients, shares, salt)puts the splitter at the predicted address. Fees are credited to the address either way; the splitter only has to exist before they are pulled in.link(token, splitter)records the pairing. Anyone can call it, and it still cannot be faked: it asks Pons who the token’s creator fees go to and refuses unless the answer is that splitter — and unless the token belongs to whoever deployed the splitter, so a stranger cannot attach a token of their own to it.
The one thing Xpaid cannot stop
Pons’ owner can redirect any launch’s creator fees to a different address. It is a published part of Pons V2, meant for creators who lose their wallet, but it is not limited to that case. It is not instant: the owner has to propose the change, wait 3 days, and then anyone can execute it within the following 3 days.
What that means for a splitter: fees already in it, or already credited to it in the escrow, stay its own — the override cannot touch them. Fees still on the curve go to whoever is the recipient when they are swept. So the defence is to collect during the notice period, and Xpaid makes the notice impossible to miss: a proposed override appears on the token’s page, in the activity feed and in the Explore table as soon as it is on chain, and a completed one stays flagged.
The numbers
- Pons trade fee
- 1% of every trade
- Creator share of that fee
- 70%
- Pons protocol share
- 30%
- Optional creator tax
- 0–10% of every trade, all of it to the splitter
- Cost to launch on Pons
- 0.0005 ETH
- Xpaid fee
- None. The splitter takes no cut.
- Smallest withdrawal
- 0.00001 ETH
Pons freezes its fee terms per launch, so these describe new launches. The withdrawal floor exists because gas can cost more than a tiny balance is worth. Nothing is lost when a claim is refused for being too small — it stays in the splitter and keeps accumulating.
Handles
A payout can be credited to an X handle, but the handle has to be claimed first. The person holding the receiving address signs the transaction themselves, and an attestation from our verifier is only the other half of it — a leaked signature cannot bind a handle to someone who never acted.
You can also refuse payments entirely from the opt-out page. That needs no attestation, takes effect immediately, and only you can lift it.
What Xpaid does not do
- It does not convert anything to dollars. Payouts are the ETH that Pons collected. Moving that into a bank account is money transmission, which needs licences Xpaid does not hold.
- It does not hold your funds. There is no pooled treasury. Fees go from Pons into the splitter for that one token.
- It does not pay you automatically. Withdrawals are pull only. That is what keeps Xpaid out of custody, and it is a deliberate trade: you have to ask for your money.
- It cannot take a token’s fees without its creator. Only the address Pons pays can hand a live token’s fees to a splitter — that is what routing an existing token asks the creator to sign. Nobody else can redirect them, Xpaid included.
Addresses
Robinhood Chain mainnet (chain 4663). Xpaid’s contracts were checked byte for byte against their source after deployment, and Pons V2’s against the interface Xpaid calls. Pons is not deployed on testnet, which runs against a mock with the same interface instead.
- XpaidFactory
- 0xcbf322e7578c3f0755f710cf29e4d7f924b5d8af
- AttestationRegistry
- 0xcb95a69c8f502cf6439c8edc2b74f4d0a7fd3c3b
- Pons V2 launch factory
- 0x7eD598BcEf8bd9Edd8C97A195C6d13f40801EC7e
- Pons V2 fee escrow
- 0xd3AFEB2a57f70eF218Aa82451c51B2fb0416Ac9e
- Pons V2 meme hook
- 0xE5e702641Ea86F4ae6cC3cDaeD2B886f976Be044