Whitepaper · 2
How it works
What happens from the moment you click Launch to the moment a charity is paid.
Step by step
Pick a charity
Choose one of 1.5 million US charities and set a charity fee, from 0% to 10% of every trade.
Launch the coin
Your wallet creates a vault for that charity, then creates the coin on Pons with the vault set as the address that receives its trading fees.
We confirm the link
Our server reads your transaction from the chain and confirms the coin really pays that charity's vault before listing it.
People trade
Every buy and sell pays a fee. The charity's share collects on the coin's trading contract.
Fees are swept
Every 30 minutes our keeper moves the collected fees into a Pons holding contract under the vault's name.
Fees are harvested
Every hour the vault claims its balance and sends it to the treasury, in USDG.
The site updates
The keeper watches the chain and records each step, so the coin's page and the charity's page show what has been raised.
Funds go to Daffy
We move the treasury balance into our Daffy donor-advised fund and record the amount.
The charity is paid
Every day, Daffy grants go out to each charity for what its coins raised. The charity receives a receipted donation.
The same thing, in detail
Everything below is the engineering behind the steps above.
The launch transaction
Pons’ launchToken takes a struct describing the coin. Two of its fields matter here:
struct TokenParams {
string name;
string symbol;
string logo; // ipfs://…
string description;
Socials socials;
address creatorFeeRecipient; // ← the CharityVault
uint16 creatorTaxBps; // ← the charity fee, 0–1000 (max 10%)
bool buybackEnabled;
bytes32 expectedEconomics;
bytes32 salt;
}creatorFeeRecipient is the address Pons will pay that coin’s creator fees to, forever. creatorTaxBps is an additional per-trade fee the creator chooses, capped by the protocol at 10%, which goes entirely to that same recipient. Setting the first to a CharityVault and the second above zero is the whole product.
Vaults are shared and deterministic
A vault is a minimal proxy deployed at an address derived from the charity’s EIN, the creator, and the split. Because the address is deterministic, the launch form can compute it before it exists. Because coins that give everything to the charity ignore the creator in that derivation, they all land on the same vault per charity — the tenth coin launched for a food bank costs nothing extra to bind, and every one of them feeds one address.
Where a fee goes
A trade’s fees do not arrive at the charity in one hop. They accumulate on the coin’s bonding curve, get swept into a shared Pons escrow, get claimed by the vault, and are forwarded to the treasury — after which a human moves them into Daffy.
Nobody needs our permission to move it
Pons restricts sweepFees to the coin’s fee recipient — anyone else gets NotFeeSweepOperator(). Since the recipient is the vault, and the vault’s sweep and harvest functions are open to any caller, the sequence can be triggered by anyone at all. Our keeper does it on a schedule, but it holds no privilege a stranger lacks.
What the vault can and cannot do
- Can: claim fees from the escrow, forward them to the treasury address, and pay the creator their split if one was set at launch.
- Cannot: send funds to any other address, change which charity it serves, or be upgraded. The EIN is written at deployment and the implementation is immutable.
- The one escape hatch is deliberately narrow: the factory owner can hand a token’s fee stream to a new recipient. It exists so a Pons redeployment cannot strand fees forever, and Pons enforces a three-day timelock on such changes.
From treasury to charity
The treasury accrues USDG — a dollar stablecoin — so the ledger is denominated in real dollars with no oracle in the path. An operator off-ramps it and contributes to a donor-advised fund at Daffy, logging the amount. The grants job then pays each charity what it is owed, in oldest-first order, and can never send more in total than has been logged as contributed.
Daffy enforces a $10 minimum per grant, so a charity below that carries forward rather than being rounded up. Amounts are never inflated to clear a threshold.
NextEconomicsThe bonding curve, the fee split, and what graduation costs
Skip to content