Launches
bordrless-programsThe kit
bordrless_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#
| Bit | Module | What it does | Parameters |
|---|---|---|---|
| 1 | Holder rewards | A share of each trade, paid to holders in SOL; claim any time. | the reward vault; the fee itself is set in the pool hook |
| 2 | Max wallet | No holder above the cap until graduation. Never blocks a sell into the launch pool. | max_wallet_amount, fixed at init |
| 4 | Creator wallet lock | The creator’s wallet can’t sell or send until then, whoever signs. | creator_unlock_at |
| 8 | Early-buyer lock | Tokens 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 byinit, signed byPDA(["kit-caller", mint], LAUNCH_ID), a PDA that signs nothing else and holds nothing.- A kit launch’s mint has
hook_program = KIT_IDand 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#
- Where the token may go: not a refused destination; with holder rewards, an excluded owner or one on the curve.
DestinationNotAllowed - Sync: what reached the reward vault since the last callback is divided among the eligible supply.
- Creator wallet lock: before the unlock, the creator’s wallet sends nothing.
CreatorLocked - Early-buyer lock: before the unlock, a holder can’t go below the tokens it bought in the window.
EarlyLocked - Settle the source, then the destination, at their balances before the transfer.
- Max wallet: until graduation, no holder above the cap.
MaxWalletExceeded - Early-buyer bookkeeping: a buy from the pool in the window adds to the buyer’s locked tokens.
- The eligible count: excluded to holder adds the amount, holder to excluded takes it away.
- Answer 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 launchpad6Ztfr97cUewdViXDXdZUsQq4pz7MYdygvK1WijALjZ5q.
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.