Reverse Engineered
Each row is one piece of pump.fun's Fee Sharing and what this pad does with it on Raydium. The source is a community reconstruction of pump.fun's public programs by lalalune/pumpfun-source. We are not pump.fun, not partnered with it, and we do not run its code: the mechanic is re-implemented.
| pump.fun | What it does there | What it does here on Raydium |
|---|---|---|
| Shareholder { address, share_bps }types.rs:21 | One wallet and its cut in basis points. | { address, bps }. Same two fields. |
| SharingConfigcreate_fee_sharing_config.rs | A program account per coin, at the PDA sharing-config + mint, holding the admin, admin_revoked and the shareholders. | A JSON file on Arweave. The split sits under extensions.shares in the metadata the coin points to. LaunchLab mints that metadata immutable. |
| create_fee_sharing_configcreate_fee_sharing_config.rs:310 | The creator makes the config. It starts with one shareholder: the creator at 10000 bps. | launch({ extra: { shares } }). The split goes in with the launch. A LaunchLab coin with no split shows as 100% creator, which is what it is. |
| update_fee_sharesupdate_fee_shares.rs:294 | The admin replaces the shareholder list, then the same call sets admin_revoked = true. The split can change once. | No such call exists here. There is nothing to update. |
| admin_revokedsharing_update.rs:128 | Checked before every update. Once true, the call fails with SharingConfigAdminRevoked. | The equivalent of true from block one: no admin key exists for the split. |
| revoke_fee_sharing_authoritylib.rs:182 | In this source the handler returns DeprecatedInstruction. Authority now ends through update_fee_shares. | Nothing to revoke. |
| TooManyShareholdersupdate_fee_shares.rs:259 | shares.len() <= 10. | checkShares: 10 shareholders at most. The form stops at 10. |
| InvalidShareTotalupdate_fee_shares.rs:291 | sum == 10_000. | checkShares: exactly 100%. The launch button stays blocked until the bar reads 100%. |
| DuplicateShareholderupdate_fee_shares.rs:292 | Sorts and dedups the addresses, then compares the lengths. | checkShares: each wallet can only appear once. |
| ZeroShareNotAllowedupdate_fee_shares.rs:269 | share_bps > 0 for every shareholder. | checkShares: every shareholder needs a share above zero. |
| distribute_creator_feesdistribute_creator_fees.rs:219 | Pays every shareholder from the vault by share. The accounts ask for no signer, so anyone can run it once the minimum is met. | claimAndSplit: the creator signs one transaction that claims the vault and pays every shareholder. A wallet that would end under Solana's rent floor is held: its share stays with the claimer, and the page says so. |
| creator-vaultdistribute_creator_fees.rs:44 | A PDA of bonding_curve.creator, which Fee Sharing requires to be the coin's SharingConfig. One vault per coin. | LaunchLab keeps one vault per creator wallet, across all its coins. A claim pays out all of it by the split of the coin you press it on. |
What Runs Where
Raydium's program enforces
The curve, the price, the fee rates, graduation at 85 SOL, and that only the creator's wallet can claim its vault. It knows nothing about shareholders.
The signed transaction does
The claim and every transfer, together or not at all. A memo and this pad's reference key put it on this pad's record, read straight from the chain.
The creator's button decides
Shareholders are paid when the creator presses Claim and split. Nothing forces that press, and a creator can claim the vault with another tool. The cap table shows what splits on this pad actually paid.