Skip to content
helixLaunch

Docs

Launches

Launching a token

One instruction creates the token, its bonding-curve pool and its launch, with rules that are fixed from that moment: nobody can change them afterwards, not the creator and not the admin. The curve sells most of the supply; when it sells out, the pool turns into an AMM in the same transaction, with its liquidity locked for ever.

create_launch(name, symbol, uri, rules, custom_hook, custom_hook_flags) tag 40 · accounts: creator (s, w), config (w), mint (s, w), pool (w), pool_holding (w), launch (w), fee_collector (w), system, …hook
  1. Refused while new launches are paused, and if a rule is out of bounds (RuleOutOfBounds).
  2. The creator pays the launch fee (0.01 SOL by default) to the config's fee collector, and the rent of four accounts (about 0.0117 SOL).
  3. It creates the mint at a fresh keypair address (6 decimals, no authorities), the pool at ["pool", mint] in curve mode, the pool's holding and the launch at ["launch", mint].
  4. The hook is chosen once: the built-in kit if any token rule is on, the custom hook if one is given, otherwise none.
  5. It mints the whole supply, once, into the pool's holding (through the hook), and logs LaunchCreated.

The pool copies its fees from the config at this moment (the curve's protocol fee, and the AMM fees it will switch to), and the launch copies the sniper fee. Later config changes don't reach it. The creator can add a first buy to the same transaction.

The numbers below are the config HELIX ships with (DEFAULT_CONFIG). The admin can change them for future launches; each launch keeps the ones it was created with.

total supply, 6 decimals
1,000,000,000
sold on the curve (79%)
790,000,000
set aside for the AMM (21%)
210,000,000
virtual SOL at the start
30 SOL
virtual tokens at the start
1,073,000,000
market cap at the first price
≈27.96 SOL
SOL in the curve when it sells out
≈83.75 SOL
market cap at the last curve price
≈402 SOL
last price ÷ first price
≈14.4×

The curve is a constant product on virtual reserves vs (SOL) and vt (tokens). The real SOL it holds is what buyers paid in, net of fees. Rounding always favours the pool.

buy: tokens out = vt − ceil(vs × vt / (vs + net SOL in)) sell: SOL out = vs − ceil(vs × vt / (vt + tokens in)), capped at the real SOL sells out after: vs × vt / (vt − 790,000,000) − vs ≈ 83.75 SOL of net buys

The ≈83.7 SOL is what reaches the curve. Buyers pay that plus the SOL-side fees of each buy (see Fees).

create_launch refuses any rule outside these bounds, which are constants in the program (BOUNDS in the SDK).

RuleBound
Creator fee, on every buy and sell0 to 2%
Holder fee, per side (buy, sell)0 to 3%
Burn, per side0 to 2%
Creator fee + holder fee + burn, on one sideat most 5%
Max walletoff, or 0.5% to 5% of supply
Creator lock0 to 365d
Early-buyer window0 to 300 s
Early-buyer lock0 to 30d; set together with the window, or neither
A share with holdersat least 0.001 SOL

The launch page offers these presets. Each stays inside the bounds; a creator can also set every rule by hand.

Plain

No token rules. The creator earns 1% of every trade.

Creator fee
1%
Holder fee, buy / sell
0% / 0%
Burn, buy / sell
0% / 0%
Max wallet
off
Creator lock
off
Early-buyer lock
off

Diamond hands

Holders earn 1% of every trade in SOL. Max wallet 1% until graduation, creator locked 90 days, first-minute buyers locked a day.

Creator fee
0.5%
Holder fee, buy / sell
1% / 1%
Burn, buy / sell
0% / 0%
Max wallet
1%
Creator lock
90d
Early-buyer lock
first 60 s, 1d

Furnace

Every trade burns 0.5% of the tokens and pays holders 0.5% in SOL.

Creator fee
0.5%
Holder fee, buy / sell
0.5% / 0.5%
Burn, buy / sell
0.5% / 0.5%
Max wallet
off
Creator lock
off
Early-buyer lock
off

Paid to hold

Sellers pay holders 2% in SOL; buys pay nothing extra. Creator locked 30 days.

Creator fee
0.5%
Holder fee, buy / sell
0% / 2%
Burn, buy / sell
0% / 0%
Max wallet
off
Creator lock
30d
Early-buyer lock
off

The creator fee and the burn are applied by the DEX. The four token rules (holder rewards, max wallet, creator lock, early-buyer lock) are enforced by the built-in kit on every transfer, so they hold on and off the DEX. Turning any of them on installs the kit as the token's hook.

Creator fee

A share of the SOL of every buy and every sell, on the curve and on the AMM after graduation, for the life of the pool. It accrues in the launch account and the creator claims it in SOL with claim_creator_fees.

Holder rewards

A share of the SOL of each buy and/or sell, divided among holders pro rata to the tokens they hold, paid in SOL. The pool's own tokens, and those in the bridge's vault, don't count.

  • eligible is the tokens held by everyone but the pool and the bridge's vault. min_eligible is supply ÷ 1000 (1,000,000 tokens by default). While fewer are held, trades pay no holder fee, and shares wait in held until enough is held to divide them.
  • The launch keeps acc_per_share: lamports per base unit, scaled by 1018. Each holding keeps a snapshot of it and what it is owed, in its 64 bytes of hook data.
  • Every balance change settles the holding first, at its balance before the change, so a holder earns exactly on what it held while the fees arrived.
  • On a buy the fee is added before the tokens move, so the tokens being bought earn nothing from their own fee. On a sell the tokens reach the pool before the fee is added, so the tokens being sold don't either.
  • Rewards owed stay owed after a holder sells everything, and can be claimed at any time.
when a fee or a released share of P lamports arrives, and eligible ≥ min_eligible: acc_per_share += (P × 10^18 + rem) / eligible (the remainder stays in rem) before a holding's balance changes: owed += balance × (acc_per_share − snapshot) / 10^18 snapshot = acc_per_share claim_rewards pays min(owed, rewards_in − rewards_claimed)

Burn

A share of the tokens of each buy and/or sell is burned, lowering the supply. On a buy it comes out of the tokens the pool sells, before the trader receives them. On a sell it comes out of what reached the pool, before the pool prices it. It is not a token rule, so it works with a custom hook too.

Max wallet

Until graduation, no holding but the pool's may end a transfer above the cap: 0.5% to 5% of the supply (1% is 10,000,000 tokens). It applies to buys and to transfers between wallets, and never blocks a sell. After graduation it no longer applies.

Creator lock

Until the unlock time, the creator's wallet can't send the token: no sell and no transfer. It can still buy, and burn. The unlock time is the launch time plus the lock, at most 365d.

Early-buyer lock

Tokens bought in the first seconds after the launch (the window, at most 300 s) are recorded in the buyer's holding and can't leave it, by sale, transfer or burn, until the unlock time: the launch time plus the lock, at most 30d. Tokens bought after the window, or received any other way, stay free to move.

Custom hook

Instead of the kit, a launch can name an external hook program and its flags (custom_hook, custom_hook_flags). A mint has one hook, so a custom hook can't be combined with the four token rules; it can be combined with the creator fee and the burn. Its program and flags are fixed for ever, since a launched token has no hook authority.

The launch mints the supply through the hook, so the hook must be ready for the mint's address before the launch, and its accounts passed to create_launch. HELIX does not review hook code: the site marks such tokens as “custom hook, unverified”. See Hooks and Write a hook.

For the first seconds of a launch, buys pay an extra fee in SOL that falls linearly to zero: 30% at the start, over 20 seconds, by default. Sells pay none. Each launch copies the rate and the window from the config when it is created; the ceilings are 50% and 60 s.

sniper fee = ceil(start × seconds left in the window ÷ window); zero once the window ends
Seconds after launchSniper fee
0 s30%
5 s22.5%
10 s15%
15 s7.5%
19 s1.5%
20 s0%
With the default config.
  • It goes to the pool's bonus_sol, not to HELIX and not to the creator, and joins the AMM's liquidity at graduation.
  • The creator's first buy is exempt, once. The site lets the creator make it in the launch transaction itself.

The buy that sells the curve's last token graduates the pool, in the same transaction. That buy is charged only what the last tokens cost (the rest of the SOL offered is never taken). Then:

  1. The AMM's token side is sized at the curve's last price: SOL reserve × vt ÷ vs, at most the tokens set aside.
  2. Set-aside tokens that aren't needed are burned.
  3. The SOL side is the curve's SOL reserve plus the sniper fees collected (the bonus).
  4. The pool mints LP equal to √(tokens × SOL) and locks all of it for ever: nobody, the creator included, can withdraw it.
  5. The pool switches to the AMM fees it copied at creation; the max wallet stops applying; the launch logs Graduated.

With the default config and no sniper bonus, about 83.75 SOL meets about 208.36M tokens, and about 1.64M unused tokens are burned. A bonus adds to the SOL side, so the AMM then opens slightly above the curve's last price. After graduation anyone can add liquidity beside the locked part; their LP is theirs to withdraw.

InstructionAccountsPays
claim_creator_feescreator (s, w), launch (w)All the creator fees not yet claimed, in SOL, to the creator.
claim_rewardsowner (s, w), mint, launch (w), holding (w)What the holding is owed, in SOL, to its owner.

Both are paid from the launch account, whose lamports are always at least its rent plus unclaimed creator fees plus unclaimed rewards; HELIX checks it after every claim. Neither can be paused.

share_with_holders(amount) lets anyone send SOL to the holders of a token that has holder rewards: the creator, a project treasury, a fan. The minimum is 0.001 SOL.

share_with_holders(amount) accounts: payer (s, w), launch (w), system
  • The SOL is streamed over 3,600 seconds. A new share restarts the hour: whatever an earlier share hadn't released yet, plus the new amount, streams from now.
  • Released SOL is divided at the next trade, transfer, burn or claim of the token, pro rata to the balances at that moment, like a holder fee.
  • A buyer who arrives just before a share and leaves right after catches only the part released while it held.