The launch

A launch spans three chains, so it cannot be one transaction. It is a fixed sequence run by the keeper, each step a public transaction. pump.fun comes first: Solana is where the launch starts and where the deposit is, and if anything fails afterwards the coin is left on the chains already done.

How a launch starts

  1. The creator fills the launch page. The logo goes to POST /api/metadata, which pins it for pump.fun and for Flap, then the parameters go to POST /api/requests.
  2. The keeper answers with a deposit address (its address on Solana), an amount in SOL and a reference. The amount covers the three chains: the pump.fun creation, the Pons launch fee, the Robinhood Chain gas and the BNB Chain gas at the current rates, and a margin.
  3. The creator sends the amount in SOL to that address with the reference in a memo instruction, from the Solana address given in the request. The page then sends the transaction signature to POST /api/requests/:id/deposit.
  4. The keeper reads the transaction on Solana, checks signer, recipient, memo, success and amount, and starts the pipeline. A request that gets no deposit expires after 30 minutes.

The pipeline

StepWhat happens
pump_createThe keeper wallet creates the coin on pump.fun with create_v2 and, for a dev buy, buys it in the same transaction (through an address lookup table, see the keeper)
pump_sendIf there is a pump.fun dev buy: the keeper sends its tokens to the creator's Solana wallet and closes its own token account. It sends whatever the keeper holds of that coin, so a retry never sends twice
pons_launchPivotLauncher.launch on Robinhood Chain launches the coin on Pons with the same name, ticker and logo, and a dedicated PivotVault as creator fee recipient. The creator's deposit pays the 0.0005 ETH launch fee, converted to SOL
flap_launchThe keeper mines a salt that gives the token an address ending in 7777, then PivotFlapLauncher.launch on BNB Chain launches a Tax Token V3 through the Flap Portal, with a dedicated PivotFlapSplit as tax beneficiary
fee_shareTwo transactions on pump.fun: create_fee_sharing_config, then update_fee_shares_v2, which fixes the shareholders once
registerThe coin is added to the keeper's list and the three addresses are returned

Every step is saved before the next one starts. A crash or a restart resumes where it stopped and never repeats a finished step. A step that fails is retried up to three times. Passes never overlap: a request already being worked on is skipped.

Parameter mapping

Pivot fieldPons launchFlap launchpump.fun
name, tickername, symbolname, symbolcreate_v2 name, symbol
logo and metadatalogoIpfsmeta, a CID pinned on Flap's gatewaymetadata URI
creator feecreatorFeeBps, 1 % to 10 %taxBps, buy and sellfixed 30 bps, shared
fee recipientthe vault, then splitthe splitter, then splitsharing config: creator wallet and Pivot
optional EVM payoutcreatorEvm, creatorShareBpscreatorEvm, creatorShareBpsn/a
dev buydevBuyWei, tokens to creatorEvmmsg.value, tokens to creatorEvmbuy in the creation transaction, then sent to the creator wallet

Failure modes

The chains are separate, so there is a window between the steps. Each case is a tested path of the pipeline.

FailureOutcome
pump.fun creation failsNothing else runs, the deposit is refunded in full, in SOL
The Pons launch fails after pump.funThe coin stays on pump.fun, the deposit is refunded minus the costs already spent, in SOL
The Flap launch fails after pump.fun and PonsThe coin stays on pump.fun and Pons, the deposit is refunded minus the costs already spent, in SOL
Fee sharing failsThe keeper wallet stays the creator of record of the pump.fun coin, the request needs attention
No deposit arrivesThe request expires
A deposit below the amount, or from another walletIt does not start the launch
A dev buy larger than the keeper can front in ETH or BNBThe request is refused with a clear message, before any money is asked
A keeper wallet is low on SOL, ETH or BNBNew requests are paused with a clear message until it is refilled, see the keeper
CarefulThe refunds and the retries are run by the keeper. They are tested, but they are a promise of the operator, not something a contract enforces. See the operator and the trust model.

What stops a bad launch