Token launches on Robinhood Chain and Solana
A one-transaction launch on Robinhood Chain, simulated before the wallet signs and re-verified on the server, plus a Solana launcher on Meteora's bonding curve and the 2025 Anchor presale program.
- Status
- Shipped
- When
- 2025 and 2026
- Role
- Integrations, the Solana launcher and the presale program
- Team
- A small team; the Robinhood launch factory was a teammate's
- Stack
- TypeScript, viem, Next.js, Rust, Anchor, Meteora DBC
- Links
- stories.fun
- 11
- transaction to create the token, its Uniswap v4 pool, the lock, vesting and the first buy
- 282
- merged pull requests across four stories.fun repositories
- 600k3
- compute units requested per server-built Solana transaction to land under congestion
Summary
stories.fun lets creators publish stories and launch tokens around them. I worked with the team twice. In early 2025 I wrote its Anchor presale program on Solana. From April 2026 I built a Solana launcher on Meteora's bonding curve, integrated a launch flow on Robinhood Chain, and then wrote Zyora, which has its own write-up.
The Robinhood Chain launch factory was a teammate's contract. My part was everything around it: building the launch transaction, simulating it before the wallet signs and refusing to publish anything the chain does not confirm.
A launch that the server re-checks
On Robinhood Chain one call to the factory creates the token, opens its Uniswap v4 pool, locks the liquidity, sets up creator vesting and makes the first buy1. The app simulates that call before asking the wallet to sign, so a launch that would revert fails in the browser with a reason instead of on chain with a fee.
The server does not take the client's word for any of it. It waits for the receipt, then checks that the creator is one of the wallets linked to the signed-in account, that the transaction went to the factory from that creator, and that the decoded calldata matches every launch setting and the liquidity unlock time the policy allows. Only then does it read the token back from the factory, save it and publish the story. A launch left pending recovers after a refresh.
1Simulates launch() before signing
2Sends one launch transaction
3Asks the server to confirm the launch
4Waits for the receipt, reads the transaction
5Checks creator, sender, target and every setting
The creator must be a wallet linked to the signed-in account.
6Reads the token back from the factory
7Saves the token, publishes the story
Around that integration I added launch settings that admins change in the database instead of in code, permissionless Solana launches through Meteora's bonding curve, fee and migration settings, and support for any ERC-20 as the quote token2.
The Solana launcher
Before that, I built a one-click launcher on Meteora's Dynamic Bonding Curve: AI-written token metadata, images on IPFS, launch state in a key-value store, a daily cron and command-line tools for the operators. Three problems from its commit history:
- Launches failed under mainnet congestion. The blockhash expired before the config transaction landed. Every transaction the server builds now carries compute-budget instructions, 600,000 compute units and a priority fee, and an expired blockhash triggers one rebuild and re-sign3.
- Fees with a refund floor. Forty minutes after a launch, collected fees up to the creator's first buy go back to the creator, and only the profit above that is split. I verified the split on devnet before it shipped.
- Referrals people could not game. Self-referral is blocked in the interface, in the API and in the command-line tool, because blocking it in one place only moves the exploit to another.
The 2025 presale program
My first work for stories.fun was its Anchor presale program, all fourteen commits of it: initializing a presale, buying into it, ending it after the deadline, and graduating the token by minting the unsold supply into the presale's own token account for the DEX listing. I also shipped seven pull requests to the web app that year, from wallet integration to the smart contract hookup and a TypeScript migration2.
Sources
- 1.stories-v2 pull request #1, Robinhood Chain launchpad integration, merged 25 Aug 2026. Private repository; +2,855 and -211 lines.
- 2.GitHub search: merged pull requests by takshakmudgal in the stories-fun organization. 28 on 16 Oct 2026.
- 3.stories-token-launcher commit history, Apr to Aug 2026. Private repository.