Documentation

How Gated works

Gated launches coins on Meteora’s bonding curve, so every trading app that supports Meteora can reach them. What’s different is that each coin carries its own rules about which apps may trade it, and the token itself enforces them, on every trade, whoever sends it.

Gated in a minute

  • Built on Meteora. Every coin is a pool on Meteora’s Dynamic Bonding Curve. Gated doesn’t run its own market: Axiom, GMGN, Terminal, Jupiter and the rest already route trades into these pools.
  • You choose who can trade it. Only GMGN? Only Gated and Fomo? Everyone except Axiom? Anywhere? Gated’s program is the coin’s transfer hook: the token calls it on every trade, it looks at which app sent the trade, and it refuses the ones your coin doesn’t allow.
  • No side doors. While the coin is on its curve it can only move between wallets and its own Meteora pool. Nobody can seed an outside pool with it to get around your rules.
  • Pair it with SOL, USDC or a stock. A coin can trade against SOL, USDC, or a tokenized stock like TSLAx or NVDAx.
  • No block-zero snipes. Nobody but the creator trades in the creation block or the next. For the first minute buys are size-capped, the creator can’t buy, and Meteora’s sniper fee falls from 50% to the normal 0.5%.
  • Dev buys are capped at 5%. The creator can buy first, at the minimum fee, but never more than 5% of the supply, counting every buy they ever make.
  • No copycats. Lookalike tickers, names and images of existing coins are refused.
  • Liquidity is locked. At graduation the coin moves to a Meteora DAMM v2 pool whose liquidity is locked forever. There’s no migration fee.

The life of a coin

CreatedMeteora pool + Gated hook01Opens≥ 2 blocks later02Protectedbuy caps · sniper fee03Bonding curvehook checks every trade04GraduatesDAMM v2 · locked pool05✕ no trades in the creation blockhook on: the coin’s rules applyhook off · no migration fee
Every coin goes through the same five steps. The hook applies the coin’s rules from creation until the curve fills; after that the coin trades anywhere.

Created. One transaction does it all. Meteora creates the pool and mints the supply (1 billion tokens, no more ever) with Gated as the token’s transfer hook. Gated then checks that pool (right Meteora config, right creator, created in this very block), reads the name, ticker and image link from the token itself, claims them so nobody can copy them, and switches the hook on. Until that last step nothing can move the coin. If you want a dev buy, it’s the last instruction of the same transaction.

Opens. Trading opens at least two blocks after creation (or later, if you schedule it), for everyone at once.

Launch protection. For about the first minute buys are capped, the creator can’t buy and the sniper fee is high. See Launch protection.

Bonding curve. Buying pushes the price up along Meteora’s curve, selling pushes it down. Every trade goes through Gated’s hook, which applies your coin’s rules.

Graduates. When the curve fills (about 400 SOL of market cap, or the same dollar value in USDC or the stock), Meteora switches the hook off and the coin migrates to a DAMM v2 pool with locked liquidity. From then on it trades anywhere. See Graduation.

Choosing who can trade

Each coin has one of three settings:

SettingExampleWhat the hook does
Anywhere-Lets every trade through.
Only these platforms“Only GMGN”, “Gated and Fomo”Lets a trade through only if one of the named platforms sent it. Up to 8 platforms.
Everyone except“Everyone but Axiom”Refuses trades that came from a named platform; everything else goes through.

The registered platforms today are Gated itself, Fomo, GMGN, Axiom, Terminal and pump.fun. See Platforms for how each one is recognised.

One transaction① GMGN’s routerthe app that sent it② Meteora swapbuy 1 ◎ of $NIGHT③ Token transferToken-2022 calls the hookGated hookSent byGMGN’s router$NIGHT trades only onGMGNMatch: let it through.✓ Trade goes throughtokens and SOL move✕ Refusedthe same trade sent by AxiomAlso recognised: a platform’s co-signature or signed permit (can’t be faked), and payments to its fee wallet (used only to block).
The app’s program sends the trade to Meteora; Meteora moves the coin; the token asks Gated’s hook first. The hook looks at which program sent the transaction’s instruction and compares it with the coin’s list.

Sells are checked the same way as buys. And every swap is judged on its own instruction, so a transaction can’t pair one allowed GMGN buy with a second buy sent straight to Meteora and slip the second one through.

Changing platforms later

The creator can change the setting after launch, with one rule that protects holders:

Allow GMGN tooapplies immediatelyStop allowing Axiom24h notice: still tradable on Axiom, countdown on the coin pageappliesnow+24h
Allowing one more platform only widens who can trade, so it applies at once. Dropping one could strand people who trade there, so it waits 24 hours, long enough to move or sell.
  • Changes that only widen who can trade apply immediately: adding a platform to an allow-list, removing one from a block-list, or opening the coin to everyone.
  • Changes that narrow it wait 24 hours: removing an allowed platform, blocking a new one, or turning an open coin into an allow-list. The coin page shows the countdown, so anyone trading there has time to move or sell. A new change replaces a pending one and restarts the clock.
  • Lock forever. The creator can freeze the setting for good (not while a change is pending). After that nobody, the creator included, can change it.

The exit hatch

On an allow-list coin, if none of the allowed platforms has sent a trade for about three days (say a platform shut down), selling opens up to every app so holders are never trapped. Buying stays restricted.

How an app is recognised

The hook can’t see which app someone clicked in, only the transaction that reaches the chain. Each platform is recognised by something in its transactions, and the honest question for each is: can someone who isn’t using that platform fake it?

FingerprintWhat the hook checksCan it be faked?
The platform signs the tradeThe platform’s key co-signed the transaction, or signed a short permit (“this wallet may trade this coin until block N”) that Solana’s built-in ed25519 program verifies in the same transaction.No. Nobody else has the key.
The platform’s program sent itThe program that sent the trade (the transaction’s top-level instruction) is the platform’s router.Partly. Public routers can be called by anyone, so “only GMGN” also admits a bot that routes through GMGN’s program. If another program wraps GMGN’s router, the outer program counts, so wrapping doesn’t help.
The platform’s fee is paidThe transaction pays the platform’s fee wallet directly.Used only for blocking: anyone can pay a fee, so it never lets a trade in.
What blocking can and can’t do
“Everyone but Axiom” refuses everything sent through Axiom’s router or paying Axiom’s fee: that is, Axiom’s users. It can’t stop an Axiom user who goes and trades the coin in another app instead. Blocking keeps a platform from making money on your coin; it doesn’t follow people around.

Airtight coins

A platform can be recognised in more than one way, and a bot only has to pass the easiest. Turn on Airtight when you create an allow-list coin and the hook accepts only trades an allowed platform has signed. Routers don’t count. Every platform you name must be able to sign, so the program refuses airtight launches that name one that can’t. It’s fixed for the life of the coin and shown on its page.

Today two platforms can sign: Gated, whose server issues permits to people trading on this site (in production each permit needs a passing human check, and during launch protection each wallet gets only a few short-lived permits a minute), and Fomo, whose gas sponsor already co-signs every trade its users make. We crawled mainnet for keys like that for Axiom, GMGN, Terminal and pump.fun and found none (their trades are signed by the trader alone), so for them, router recognition is the strongest gate available until they sign Gated trades themselves.

The transfer hook

Every Gated coin is a Token-2022 token with the transfer hook extension pointing at Gated. The token program calls the hook on every transfer of the coin, Meteora’s own swaps included, and the transfer only happens if the hook says yes. That’s what makes the rules impossible to route around: they live in the token, not in a website.

Someone moves $NIGHT tokensOut of, or into, its own Meteora vault?that’s a buy or a sellyesPlatform check + launch protectionallowed apps only, buy caps, creator’s 5%noAre both sides ordinary wallets?a person’s key, not a programyes✓ Allowede.g. sending to a friendno✕ Refusedanother pool, an escrow, an order bookThat’s the point: a coin limited to GMGN can’tbe bought there and dumped into a poolnobody approved.
Token-2022 asks Gated’s hook about every transfer of the coin. Trades with the coin’s own Meteora pool get the platform check; wallets can send to each other; anything held by another program is refused.
  • Trades. A transfer out of the coin’s own Meteora pool vault is a buy; a transfer into it is a sell. Those get the platform check and the launch protections.
  • Wallet to wallet. Sending to a friend or to another wallet you own always works (into their normal token account, the kind every wallet creates).
  • Everything else is refused. Every outside pool, escrow and order book keeps tokens in accounts controlled by a program, and program-controlled addresses are mathematically distinguishable from people’s keys. So the coin can’t be deposited into a Raydium, Orca or second Meteora pool, and a fake “sell” into some other Meteora account doesn’t count either. Only the coin’s own vault does.

The hook only ever says yes or no. It can’t move, freeze or take anyone’s tokens. And a pool someone creates on Gated’s Meteora config without going through Gated never gets the hook switched on, so it can’t trade at all.

Graduation

The hook is active while the coin is on its curve. On the swap that fills the curve, Meteora itself revokes the hook (Gated still decides who gets to make that last swap) and the coin migrates to a Meteora DAMM v2 pool:

  • the curve’s reserves become the pool’s liquidity, permanently locked: half in a position owned by the creator, half by Gated;
  • the pool charges the same 0.5% fee;
  • there’s no migration fee;
  • the coin is an ordinary token from then on, tradable everywhere.
Why gating ends at graduation
Gating is a launch tool: it decides who gets to build a coin’s market, and keeps that market in one place while it’s small. Once a coin has a deep, locked pool, it trades freely like any other token.

SOL, dollars or stocks

On Gated you choose what your coin is paired with: what people pay when they buy and receive when they sell:

  • SOL: the default.
  • USDC: prices, fees and the graduation pool are all in dollars.
  • A tokenized stock: xStocks (TSLAx, NVDAx, SPYx, AAPLx…) or Backpack-issued stocks (TSLA, NVDA…).

Each pair has its own Meteora curve, sized so a coin starts and graduates at the same dollar market cap whichever you pick (about 30 SOL at launch and 400 SOL at graduation, converted at market prices). Trades settle in the pair token: you need some in your wallet to buy, plus a little SOL for network fees, and sells pay out in it. Meteora only accepts tokenized stocks it has approved with a badge; every stock Gated offers has one.

Stocks come with issuer powers
Tokenized stocks are regulated products, and their issuers keep powers over them: they can move or burn tokens from any account, pause all transfers, or freeze accounts, including the pool that holds your coin’s reserves. Gated can’t remove those powers, so it shows them on every stock-paired coin’s page. If you want no third party in the picture, pair with SOL.

Dev buys (max 5%)

A creator may want to hold some of their own coin. Gated allows it, in the open and with a hard limit:

  • Before anyone else. Until trading opens, the only trade the hook allows is a buy by the creator. The usual place for it is the launch transaction itself, where Meteora charges it the minimum fee instead of the sniper fee.
  • Never more than 5%. Everything the creator’s wallet buys (the dev buy and every later buy) counts toward 5% of the supply. A buy that would cross it is refused. Selling doesn’t reset the count.
  • Visible. The dev buy is labelled in the coin’s trades, and the coin page shows how much of the 5% the creator has used.

The creator can’t buy during launch protection at all. (Like anywhere on-chain, a creator can use a second wallet; the launch-protection caps exist for exactly that case.)

Launch protection

Every coin starts with the same protections. Creators can make them stricter, never weaker.

block 0closed0%25%50%0s15s30s45s60ssniper fee: a trading fee, so snipers fund buybacksplus: ≤ 2% of supply per buy · ≤ 6% per block · creator can’t buy0.5% from here on
Default settings: Meteora’s fee starts at 50% and steps down to 0.5% over about a minute. Buy caps and the creator lockout cover the same window. Creators can make the protections stricter, never weaker.
  • No block-zero trades. Trading opens at least two blocks after creation, so “create and buy in the same bundle” is impossible for anyone but the creator’s capped dev buy. You can schedule the opening later, and everyone sees the same countdown.
  • Sniper fee. Meteora’s fee starts at 50% when the pool is created and steps down to the normal 0.5% over about a minute.
  • Buy caps. For the first ~150 blocks (about a minute) after trading opens, each buy can take at most 2% of the supply, and all buyers together at most 6% per block. A bundle lands in a single block, so the per-block cap is the most any bundle can take.
  • The creator can’t buy during that window. Their only head start is the dev buy, capped at 5%.

Copycat protection

When a coin is created its ticker, name and image are claimed on-chain, read straight from the token’s own metadata, so the claim always matches what wallets display. A new coin that looks like an existing one is refused. To catch lookalikes, tickers and names are boiled down to a skeleton first:

You typeSkeletonWhy
pepe, P3PE, PEEPEPEPEcase, numbers used as letters, doubled letters
PEPE2, PEPE420PEPEtrailing numbers
BABYPEPE, PEPEINU, PEPEAIPEPEcommon copycat add-ons
ΡΕΡΕ, Pepe, PépéPEPEGreek/Cyrillic lookalikes, wide letters, accents
Dog Wif Hat, dogwifhat 2.0DOGWIFHATspaces and punctuation

Images are claimed by their exact bytes on-chain, and Gated’s attestor also compares them by what they look like: resized, recompressed, recolored, cropped, captioned and mirrored copies are caught. When a coin passes, the attestor writes a short-lived attestation on-chain (the image, ticker and name it checked) and the launch must match it exactly. The attestor never signs your transaction. The create page tells you right away if your ticker, name or image is taken.

Fees

FeeAmountGoes to
Trading on the curve0.5% (50% → 0.5% in the first minute)0.25% buys back the main coin · 0.10% to the creator · 0.10% to Meteora · 0.05% to Gated’s treasury, paid in the pair token. See Revenue.
Creator’s dev buy in the launch transactionMeteora’s minimum feesame split
Create a coin0.02 SOL (never more than 0.1 SOL)Gated: it stops people squatting tickers
Graduation / migrationnone-
Trading after graduation0.5% DAMM v2 pool feethe locked pool

A coin’s curve and fees come from the Meteora config it was created from, and Meteora has no way to edit a config, so the fees a coin launches with are the fees it keeps. The 0.1 SOL launch-fee ceiling is written into Gated’s program. Nothing anywhere can pause trading.

For platforms

Gated coins are standard Meteora transfer-hook pools, and on mainnet Axiom, GMGN, Terminal, OKX and DFlow already route trades into pools like these. Meteora’s own SDK resolves the hook’s accounts from the token, so an app that already supports these pools can trade open and block-listed Gated coins without anything Gated-specific.

Building the swap yourself

The swap is Meteora’s swap2_with_transfer_hook with one hook slice of four accounts. If the coin’s config charges the creator’s first swap the minimum fee (Gated’s do), Meteora also wants the instructions sysvar ahead of the slice:

swap2_with_transfer_hook(params, { slices: [{ accountsType: TransferHookBase, length: 4 }] })

remaining accounts:
  Sysvar1nstructions…                     (configs with first-swap-at-min-fee)
  ["extra-account-metas", mint]  (Gated)  the hook's account list
  Sysvar1nstructions…                     lets the hook see which app sent the trade
  ["coin", mint]                 (Gated)  writable: the coin's rules and launch-guard state
  Gated program

Letting creators gate coins to you

  1. Get a registry entry. We create your platform’s entry with your router program, fee wallets and, ideally, a signing key, then hand control of it to you. From then on only you can change it. If you rotate your router, update the entry; each coin’s creator can then refresh it. Locked coins keep the fingerprints they were locked with.
  2. Sign your users’ trades for airtight coins: co-sign the transaction, or sign this 87-byte permit in your backend:
"GATED/PERMIT/v1" ‖ mint (32 bytes) ‖ trader (32 bytes) ‖ expires_slot (u64, little-endian)
  1. Build the trade with the SDK, passing the permit, or wrapping the swap in your own router:
import { fetchMarket, fetchPoolState, permitMessage, quoteSwap, tradeInstructions } from '@gated/sdk';

const { market, config } = (await fetchMarket(rpc, mint))!;
const pool = (await fetchPoolState(rpc, market.pool))!;
// Meteora's own curve and fee math: exact to the lamport.
const q = quoteSwap({ pool, config, side: 'buy', amountIn, slot, quoteDecimals: 9, slippageBps: 100 });

const signature = await yourKey.sign(permitMessage(mint, trader, expiresSlot));
const ixs = await tradeInstructions({
  market, trader, side: 'buy', amountIn, minOut: q.minOut,
  proof: { kind: 'permit', signer: yourKey.address, signature, expiresSlot },
  // or: wrapSwap: (swap) => yourRouterInstruction(swap),
});

A reference permit signer ships with Gated (services/attestor). The program source and the SDK are in the repository.

FAQ

Why can an “Axiom only” coin be traded on Axiom at all?

Because it’s a normal Meteora pool, and Axiom already routes trades into Meteora pools. The hook sees Axiom’s router send the trade and lets it through; the same trade from any other app is refused.

Is “only GMGN” really only GMGN?

It’s only trades sent through GMGN’s program, which includes bots that call GMGN’s program directly. Only airtight coins are limited to a platform’s actual users, and that needs a platform that signs.

Can a creator rug the liquidity?

No. On the curve, reserves sit in Meteora’s pool and only trades move them. At graduation they become a permanently locked DAMM v2 position.

Can a creator change the name or image after people buy?

No. The token’s metadata is immutable from creation.

Can a creator lock people in by changing platforms?

Narrowing changes wait 24 hours so holders can move or sell, and the exit hatch opens selling to everyone if all of a coin’s allowed platforms go quiet.

What happens if a stock’s issuer pauses its token?

Trading on coins paired with that stock stops until the issuer unpauses it, because the pool can’t move the stock either. Coins paired with SOL or other tokens aren’t affected.

Can I send the coin to a friend?

Yes. Wallet-to-wallet transfers are always allowed.

Who enforces all this: the website?

No. Every rule on this page is enforced by Gated’s program, called by the token itself, so it applies no matter which app or bot sends the transaction. This website is just one way to use it.