Overview
What Petal is, the pieces the relay is built from, its fixed constants, and the money path on one page.
Petal is the public name of the Pons Charity Relay: immutable contracts on Robinhood Chain and Base that turn a Pons token's creator fees into USDC donations through donate.gg. A Pons creator sets a charity address as the token's creatorFeeRecipient. From then on the token's creator fees follow one fixed path to donate.gg on Base, which pays the charity in USDC. The path has no owner, no admin, and no step where a private key can send the money anywhere else.
The pieces
| Term | What it is |
|---|---|
| Config ID | donate.gg's 32-byte identifier for a donation configuration. Hex on EVM, base58 on Solana; same ID, two spellings. donate.gg's contract does not validate it, so a wrong ID strands ETH. |
| Charity address | The contract on Robinhood Chain a Pons creator sets as creatorFeeRecipient. One per config ID. A CREATE2 minimal proxy with salt equal to the config ID, so anyone can compute it. |
| Receiver | The matching contract on Base for the same config ID. Across fills land on it as WETH; anyone calls flush(), which unwraps and hands the balance to donate.gg. |
| Registry | The factory on Robinhood Chain that deploys charity addresses, holds the approved list, and holds the live fee cap. Its twin on Base deploys receivers and has no admin at all. |
| Approved list | Config IDs the Safe has allowed a charity address to be deployed for. The only guard against a wrong ID. Removal only blocks new deployments. |
| Safe | The registry's safe: the address that administers the approved list and the live fee cap. Currently a single-key wallet; intended to move to a multisig through proposeSafe and acceptSafe. It can never move or redirect funds. |
| Keeper | An off-chain process that calls the permissionless functions on a timer: claimAndBridge on Robinhood Chain, flush on Base. Anyone can make the same calls. |
| Pons Fee Escrow | Pons's pull-based ledger. Creator fees only land there after Pons sweeps a curve or pool; only the balance holder can claim. |
| Indexer | A read-only service that follows Pons and the relay contracts and serves the snapshot the site's figures are rendered from. Outside the trust path: nothing on-chain reads it. |
The numbers
| Constant | Value | Mutability |
|---|---|---|
| Minimum bridge amount | 0.01 ETH | Immutable. Below it nothing moves. |
| Live fee cap | 0.001 ETH at launch | Safe-adjustable, never above the hard ceiling. |
| Hard ceiling | 0.002 ETH | Immutable. |
| donate.gg split | 90% to the charity, 10% to donate.gg | Set by donate.gg, applied on Base. |
The money path
Pons curve or pool → sweep → Pons Fee Escrow (credited to the charity address) → claimAndBridge → Across → receiver on Base → flush → donate.gg donateNative → donate.gg epoch processing → charity (90%) and donate.gg (10%).
How it works walks every hop and shows an example settlement. Contracts lists every deployed address, generated from the deployments record at build time.
Chains
| Chain | Chain ID | Role | Explorer |
|---|---|---|---|
| Robinhood Chain | 4663 | Pons, the registry, every charity address | Blockscout |
| Base | 8453 | The Base registry, every receiver, donate.gg | Basescan |
Where to go next
How it works
The money path as a diagram, and an example settlement as a worked example.
Contracts
Every deployed address per chain, with explorer links.
Why permissionless
What is immutable, what the Safe can and cannot do.
Integration guide
Setting or transferring the fee recipient on Pons.
Keeper and relay
What the keeper calls, and why anyone can call it.
Live data
Where the site's figures come from, and why generated and received differ.
Get listed
How the curated list grows.
FAQ
Keeper down, Across down, wrong config ID, and the rest.