Documentation
How FanStock works.
FanStock lets anyone launch a coin on pons for any X creator. The coin's creator fees are paid into a vault that belongs to that creator and fills with tokenized stock on Robinhood Chain. Only the person who controls that X account can claim it.
Overview
There are three parts:
- The FanStock registry: one smart contract on Robinhood Chain. It gives every X handle its own pile contract and controls who can claim from it.
- Piles: one small contract per handle. A pile is the pons creator-fee recipient for every coin launched for that handle, and it holds the stock until the creator claims.
- The FanStock server: hosts this site, builds launch transactions, reads the chain to show live piles, and runs Sign in with X so creators can prove who they are.
Coins themselves are ordinary pons v2 coins. FanStock doesn't run its own launchpad, take a cut, or hold anyone's funds.
How fees move
- A fan launches a coin. They pick a creator's X handle and a stock. The site builds a pons v2
launchTokentransaction with that creator's pile set ascreatorFeeRecipient. The fan's own wallet sends it and pays the pons launch fee. - Trading credits fees to the pile. On every buy and sell, pons credits the creator share of the fee to the pile in its fee escrow. No one at FanStock touches this money.
- Fees become stock. If the coin is paired with a stock, the fees already are that stock. If it's paired with ETH, the keeper swaps the ETH into the chosen stocks inside the pile.
- The creator claims. They sign in with X, link a wallet, wait out a 24-hour safety window, then claim. Everything in the pile moves to their wallet.
Piles
Every X handle has exactly one pile address, computed from the handle with CREATE2. You can know a handle's pile address before anything is deployed (pileOf("handle") on the registry), so a coin can name it as fee recipient from its first trade. The pile contract itself is deployed the first time it's needed.
Handles are case-insensitive and validated the same way X does: 1 to 15 letters, numbers or underscores. @Mira and @mira share one pile.
A pile has no owner, no upgrade path and no arbitrary call. It does exactly four things, and only when the registry tells it to: pull its fees from the pons escrow, send its balance to the creator's linked wallet, swap ETH into an allowed stock with the output staying in the pile, and hand a coin's future fees to a new address that the creator chooses.
Stock vs ETH pairing
pons v2 lets a coin trade against an approved asset instead of ETH, and creator fees are paid in that asset.
- Single stock, approved by pons: the coin is paired with that stock, so fees arrive as the stock itself. No swaps needed.
- Single stock not approved by pons, or a 3-way split: the coin is paired with ETH. Fees arrive as ETH and the keeper converts them into the chosen stocks, inside the pile.
The site checks pons's approval list at launch time and picks the right pairing automatically.
Claiming
- Sign in with X. Standard OAuth 2.0. FanStock reads only the account's ID and handle, then revokes the access token. It never posts, likes, follows or DMs.
- Get a signed link. The server's verifier key signs an EIP-712 message:
Bind(handleHash, wallet, nonce, deadline). It expires after 1 hour and works once. - Send
bind. The creator's wallet submits the signature. The link is now pending. - Wait 24 hours. During this window the FanStock owner, or the handle's current linked wallet, can cancel a link that looks wrong.
- Claim. The linked wallet calls
claim. The registry pulls any fees still in escrow and sends the whole pile to the wallet in one transaction.
Renamed handles. When a coin is launched, FanStock records the X account ID that owns the handle at that moment. If that account later renames and someone else takes the handle, the new owner can't claim the old pile.
After claiming, the creator can point any coin's future fees straight at their own wallet with redirectFees, or leave them going to the pile.
Roles and permissions
The registry has three privileged keys, each with one narrow job. None of them can take funds out of a pile.
| Role | What it does | Can move pile funds |
|---|---|---|
| Owner | Rotates the verifier and keeper, edits the stock list, sets the safety wait (1 hour to 7 days), cancels pending links | No |
| Verifier | Signs "this X account links to this wallet" after Sign in with X. Never sends transactions | No |
| Keeper | Swaps ETH fees into allowed stocks. Output always stays in the same pile, with a minimum price | No |
| Creator's linked wallet | Claims the pile, redirects future fees, cancels a link that tries to replace it | Yes, to itself |
Safety rules enforced on-chain
- Only a verifier signature can link a wallet to a handle. Each signature is single-use and expires in an hour.
- A new link only activates after the safety wait. A matured link is locked in before any new request can replace it, so the current wallet always keeps its right to cancel.
- Only the linked wallet can claim or redirect fees.
- The keeper can only swap into stocks on the allowlist, must set a nonzero minimum output, and the swap reverts if the pile receives less.
- No function lets the owner, verifier or keeper withdraw from a pile.
The contracts are covered by 20 Foundry tests, including fuzzing on who can claim. One real bug was caught and fixed by those tests before launch: a pending link could have overwritten a matured one.
Contract addresses
Robinhood Chain mainnet, chain ID 4663.
| Contract | Address |
|---|
Risks
FanStock coins are memecoins. They have no intrinsic value and can go to zero. Nothing here is investment advice.
- Unaudited. The contracts are tested but haven't had an external audit.
- Verifier key. If the verifier key leaked, someone could request a link for any handle. The 24-hour wait exists so it can be cancelled in time.
- pons can override fee recipients. pons v2's owner can redirect any coin's creator fees after a public 3-day timelock. That's a pons rule outside FanStock's control.
- Stock Tokens can block wallets. Robinhood Stock Tokens can block addresses. If a creator's wallet is blocked, the claim fails and the stock stays in the pile. They can link a different wallet.
- Stock Tokens aren't shares. They track the share price but aren't shares in a brokerage account, and they aren't offered to US persons.
- X access. If X revoked the app, claims would use a manual backup: FanStock verifies the creator by hand, for example with a code in their X bio, and the verifier issues the same signature.
- Launching for someone without asking. Every coin's on-chain description says the creator didn't create or endorse it.
Public API
Everything on the site is readable as JSON.
| Endpoint | Returns |
|---|---|
GET /api/config | Chain, contract addresses, stock list |
GET /api/stats | Total stock earned, coins launched, creators who claimed |
GET /api/piles | Leaderboard. Filters: ?filter=unclaimed|claimed, ?q= |
GET /api/piles/:handle | One pile: holdings, coins, value history, claim state |
GET /api/feed | Recent launches, sweeps, swaps and claims |
GET /api/status | Server health |
FAQ
Does the creator have to agree?
No. Anyone can launch a coin for any public handle. Only the verified owner can ever withdraw.
What if they never claim?
The pile keeps growing and stays put. Nobody else can move it, including FanStock.
Does the launcher earn anything?
No. The creator fee goes to the pile. The launcher's wallet is public on every coin.
What does FanStock charge?
Nothing on top of pons's own fees.
Can a creator stop a coin made for them?
After claiming, they can send its future fees anywhere they like, including straight to their own wallet.