CAsoon

Launches

The kit

The kit is a token hook with four fixed, bounded modules. Only the launchpad installs it, and each launch picks the modules its token has.

Modules#

The kit's modules
BitModuleWhat it doesParameters
1Holder rewardsA share of each trade, paid to holders in SOL; claim any time.the reward vault; the fee itself is set in the pool hook
2Max walletNo holder above the cap until graduation. Never blocks a sell into the launch pool.max_wallet_amount, fixed at init
4Creator wallet lockThe creator’s wallet can’t sell or send until then, whoever signs.creator_unlock_at
8Early-buyer lockTokens bought from the pool in the window can’t be sold or sent until the unlock.early_window_end, early_unlock_at

The mint’s flags are BEFORE_TRANSFER, plus BEFORE_BURN | WRITES_HOOK_DATA when holder rewards or the early-buyer lock is on. A launch with none of these modules gets no hook at all; a burn alone runs in the pool hook.

Who can install it#

  • KitConfig, at ["kit", mint], is created only by init, signed by PDA(["kit-caller", mint], LAUNCH_ID), a PDA that signs nothing else and holds nothing.
  • A kit launch’s mint has hook_program = KIT_ID and no hook authority from its first instruction, so which program runs is fixed. The kit’s own code can change while it has an upgrade authority (programs).
  • Anyone can create a mint that names the kit as its hook, but without a KitConfig, which only a launch can create, every callback fails: such a mint can never move.

Owners#

Excluded
The pool and the launch: not settled, not capped, not counted in eligible, and they cannot claim. Every other owner is a holder.
Refused
The launch, the kit config, the default key and the five program ids, as destinations (DestinationNotAllowed).
Rewards on
No program can hold the token: a transfer to a holder must go to an address on the ed25519 curve, so every pool trade happens on the launch pool and pays its rules. Wallet-to-wallet swaps pay no launch fees; max wallet and the locks still apply.
Rewards off
Anyone can open another pool. Burn, the creator fee and the buy and sell rates apply only on the launch pool; max wallet caps another pool’s vault like any wallet until graduation.

before_transfer, in order#

  1. 1Where the token may go: not a refused destination; with holder rewards, an excluded owner or one on the curve.DestinationNotAllowed
  2. 2Sync: what reached the reward vault since the last callback is divided among the eligible supply.
  3. 3Creator wallet lock: before the unlock, the creator’s wallet sends nothing.CreatorLocked
  4. 4Early-buyer lock: before the unlock, a holder can’t go below the tokens it bought in the window.EarlyLocked
  5. 5Settle the source, then the destination, at their balances before the transfer.
  6. 6Max wallet: until graduation, no holder above the cap.MaxWalletExceeded
  7. 7Early-buyer bookkeeping: a buy from the pool in the window adds to the buyer’s locked tokens.
  8. 8The eligible count: excluded to holder adds the amount, holder to excluded takes it away.
  9. 9Answer the 64 bytes of each holder side that changed. No cuts, no burn: what leaves is what arrives.

before_burn runs the sync, the early-buyer check, the settle and the eligible count on the source alone. The creator wallet lock does not apply to burns. Sells go to the launch pool’s vault, which is excluded, so max wallet never blocks a sell into it.

Instructions#

init
From create_launch, signed by the kit-caller PDA. Checks the hard bounds again and creates KitConfig and, with holder rewards, the reward vault.
graduate
From the launch at graduation. Lifts max wallet; refuses a second time.
claim
Signed by the holder: pays what it is owed in bridged SOL (claims).
share(amount)
Signed by anyone: bridged SOL every holder receives pro rata, released over an hour. At least 0.001 SOL.

Runtime#

  • Callbacks make no CPIs and emit no events: the token program is on the stack while one runs.
  • Swap, then token, then kit is a height of 3; a router on top makes 4, under the limit of 5.
  • Known signers are constants, not derived on chain: the token program’s for the kit C2Y3B3hZTesJQqLYrZ7qoaZUoRmwYWh5Qh3MuFxruouE, the DEX’s for the launchpad 6Ztfr97cUewdViXDXdZUsQq4pz7MYdygvK1WijALjZ5q.

A verified kit token#

The site and the indexer treat a token as a kit launch only when a Launch exists at ["launch", mint], the mint’s hook is the kit with no hook or mint authority, its flags match the config’s modules, and the KitConfig names that launch and its pool. Launches are listed only from LaunchCreated, so look-alike mints never reach the board.