Everything about 

, in one place.
Dual-rail Uniswap v4 launchpad on Ink. Quote-only fees, locked LP, modular hooks. No custody. No hidden steps.
Introduction
Overview
Hookit is the first Uniswap v4 launchpad with 384 programmable hook combinations. Every token is a hooked pool: pick protection, tokenomics, and fee modules, then freeze them at launch.
Token buybacks. Holder drops. A connected fee cycle.
Every Master and graduated Classic swap pays the 1% in quote. The 10% $HKT slice cannot be removed. More volume, more dollars for $HKT holders.
Hold 1 $HKT and you are exposed to every token launched on the dapp. 10% of the 1% base fee buys that ticker and epoch-pushes it to live $HKT holders. More $HKT, larger slice of every launch.
Anyone can create a token, lock liquidity, and start trading from a wallet. The site never holds ETH, tokens, or keys.
Two rails. Master opens a v4 pool with MasterLaunchHook in the same transaction. Classic sells on a bonding curve first, then graduates into a GraduatedFeeHook pool. Both mint 1 billion tokens. Both take fees in quote only.
Master

Backed Floor
Master.
Pool from block 0. Launch your programmable hooks with our modules: floor, burn, vesting →
Classic
Classic.
Bond, then graduate at 4.2 ETH-eq.
Architecture
The app is a wallet interface over Uniswap v4. Fees, floors, burns, and airdrops live in the hook, not in a backend that can change the rules after launch.
- App
hookit.fun: marketplace, launch wizard, token desk
- Router
HookitSwapRouter and BalancedAggregator: hooked swaps, USDG multi-pair splits.
- Hook
MasterLaunchHook / GraduatedFeeHook: quote-only fees + modules
- Pool
Uniswap v4 PoolManager: hooked pool, locked liquidity
- Ink
Chain 57073. ETH gas, USDG + Quotrons wStocks as quotes
Protocol
How launches work
A launch is one (or two) wallet transactions. What you pick, Master or Classic, decides whether a pool exists from block 0 or after the curve fills.
Step 1 · Token & pair
Name, art, and the quote the pool will trade against.
ETH, USDG, or a Quotrons wStock. Multi-pair can add more markets later in this step. Metadata pins on-chain via IPFS.
Master launchCreate a hooked token1 / 6 Token & pairToken details
LogoPair · ETHStep 2 · Protection
Optional shields that freeze at launch.
Anti-MEV, Anti-Snipe, Max Tx. Off by default. You cannot edit them after the tx.
Master launchCreate a hooked token2 / 6 ProtectionProtection
- Anti-MEV
- Anti-Snipe
- Max Tx
Step 3 · Tokenomics
Where hook-tax value goes over the life of the token.
Holder Airdrop, Auto-Burn, Backed Floor, Buyback Vesting, Deepen LPs, Hook → Creator. Buyback Vesting cannot combine with Creator → Hook.
Master launchCreate a hooked token3 / 6 TokenomicsTokenomics
- Holder Airdrop
- Auto-Burn
- Backed Floor
- Buyback Vesting
- Deepen LPs
- Hook → Creator
Step 4 · Trading fees
How much extra tax sits on top of the mandatory 1%.
Fixed hook tax or Dynamic Fees (not both). A tax needs a 100% destination. Creator → Hook can route the 60% creator cut into the pot.
Master launchCreate a hooked token4 / 6 Trading feesTrading fees
- Dynamic Fees
- Creator → Hook
- Fixed Fees
Step 5 · Fee split
Split the hook pot to 100% across the sinks you turned on.
Floor + burn + deepen + airdrop + Hook → Creator must sum to 100% when the pot is funded. No pot if tax is 0 and Creator → Hook is off.
Master launchCreate a hooked token5 / 6 Fee splitFee split
Auto-Burn 80%Deepen LPs 20%Step 6 · Review & launch
Read the recap, set an optional same-tx dev buy, sign.
Bitmask and vestPacked freeze here. LP locks in the same transaction. Trading is live when the receipt lands.
Master launchCreate a hooked token6 / 6 Review & launchReview & launch
- Supply
- 1,000,000,000
- Base fee
- 1% · 60 / 10 / 30
- LP
- Locked same tx
Same screens as /launch/custom. Bitmask and vestPacked freeze when you sign. Classic uses a shorter bonding form instead of these six steps.
One unlock
Fee is never a memecoin tax. Modules spend the pot in afterSwap. The 1% split never changes.
Classic
- Same 1B supply. 80% sells on the curve; 20% is reserved for graduation LP.
- Curve graduates at ~4.2 ETH (or USDG / wStock equivalent).
- After graduation, remaining tokens + collected quote seed a full-range v4 pool.
- GraduatedFeeHook keeps the same 1% quote-only base. No Master hook tax.
Multi-pair
One token, up to five quote markets, launched in a single LaunchFactory.launchMulti. Each market is its own Uniswap v4 pool with the same MasterLaunchHook bitmask. Supply is split by the bps you set (must sum to 10_000).
$TICKER
USDG40% poolSupply splits by bps (must sum to 10_000). Same Master bitmask on every pool.
- 1–5 markets. USDG and Quotrons wStocks only. ETH is single-pair.
- Each market has its own poolId, tick range, and liquidity. The token page has a market switcher.
- A market pays sellers only with what its buyers paid in: a market nobody has bought in yet cannot take a sale, and the markets of one token can drift apart in price.
- Explore shows a multi-pair badge. Indexer fields: marketCount, markets[].
- Backed Floor is rejected in multi (BackedFloorNotAllowedInMulti). The wizard hides the floor card when you add a second market.
- Gas scales: ~2.8M base + ~950k per extra market.
Balanced aggregator
BalancedAggregator is the PAIR-style router for multi-market tokens. Automatic routing is USDG only: pay USDG, or sell the project token for USDG. Stock legs hop USDG ↔ wStock on Quotrons V4, then wStock ↔ project token on the canonical launch V4 pool. ETH is not a multi-pair quote. Picking a ticker (AAPL, NVDA, …) trades that pool directly and is not the aggregator.
- Quotes every canonical launch pool: project token → wStock on the launch V4 book, then wStock → USDG on Quotrons. The AAPL (or deepest) pool is used when it is the best fill; USDG is that hop, not a different dump.
- Compares the best single pool with discrete multi-pool allocations. Splits across books when that output matches or beats the single pool, so impact is spread and prices stay aligned.
- Applies per-leg minimums plus an aggregate minimum, then re-quotes and simulates immediately before wallet signing.
- If the aggregator cannot simulate a split, the desk still executes the winning single route (token → best stock → USDG) through HookitSwapRouter. Picking a ticker trades that pool directly and skips the USDG hop.
Example
- Buy
- 100 USDG → 60% wNFLX leg + 40% wNVDA leg → tokens to your wallet.
- Bridge
- Each stock leg uses the canonical Quotrons pool, same as HookitSwapRouter composite.
- Sell
- Reverse path: token → wStock → USDG, still one tx when routed through the aggregator.
BalancedAggregator splits exact input across canonical launch legs in one unlock.
Why we built on Quotrons
We built Hookit on Quotrons because they are Ink's flagship stock venue: the v4 pools that list stocks on this chain. Pair a launch against their wrapped equities (wAAPLx, wNVDAx, …) or USDG. Spot USD for FDV and graduation prefers the live Quotrons pool sqrtPriceX96; a seeded usdPriceX18 is fallback.
Powered by Quotrons
wTSLAxTeslawStock pools take USDG on the buy panel. HookitSwapRouter bridges on an allowed Quotrons pool.
Quotrons is the stock venue on Ink. Their v4 wStock/USDG pools are the only equity markets Hookit routes a launch against. We are eco-aligned with that venue: more Hookit launches and more Hookit volume raise the Ink venue fee, and that fee goes back to Quotrons LP vaults and hardwired terminals. Their flagship books get deeper. Our traders get a USDG ticket in and out. Win-win.
- Flagship on Ink
- They run the stock venue this chain is known for: wrapped Backed xStocks against USDG. Hookit sits on those v4 pools instead of inventing a second stock market.
- Eco-aligned
- Every composite trade is volume on their immutable stock hook. Hardwired terminals and the LP vaults eat the upside of our growth. We eat the upside of their books.
- USDG in, USDG out
- The trader never has to hold the wStock. The Quotrons LP is the hop that makes that true.
Quotrons LPs and the canonical swap
A Quotrons LP is a Uniswap v4 wStock/USDG pool: 0% pool LP fee, their immutable hook as the only fee switch, tick spacing 60, dynamic-fee flag (never hardcode 3000 when deriving the pool id). The book holds ERC-4626 wrappers, not the raw rebasing Backed tokens. There is no oracle. Price is the AMM curve. That book is the canonical hop for HookitSwapRouter.swapExactInComposite: USDG → wStock on an allowed Quotrons pool, then wStock → the launch v4 pool, one unlock. Sells run the other way: token → wStock → USDG. The buy panel on a wStock-quoted launch is USDG-only because those LPs exist. The hook takes the fee on the USDG leg for a buy and a sell, so the same notional pays the same venue fee either way.
Every composite trade
QuotronsCanonical USDG ↔ wStock hop.
QuotronsCanonical USDG ↔ wStock hop.Stronger books make the next USDG fill tighter.
Where the venue fee goes
The live venue fee is steppable in 0.05% steps inside a 0.05%–1.00% bound baked into the immutable hook. They cannot widen that cap. Quote it live. Do not hardcode 0.30%. Their own rails can be fee-exempt; a Hookit composite hop is ordinary volume and pays.
Every hop
Quote the fee live. Their own rails can be fee-exempt. A Hookit hop pays.
The terminal half is venue-wide on purpose: a quiet book still reaches an epoch on the back of a busy one (including Hookit flow). Epochs open at a $250 USDG minimum, cap at $10,000, and run at most once every 5 minutes. Each epoch splits its budget equally across the ten reward floors (NVDA, AAPL, TSLA, GME, SPCX, SPY, PLTR, NFLX, RDDT, MSTR). More Hookit volume means more of that stream. Deeper Quotrons books mean tighter USDG fills for the next launch. The loop compounds for both sides.
- wStock-quoted pools: the buy panel is USDG-only. HookitSwapRouter.swapExactInComposite bridges USDG → wStock on an allowed Quotrons pool, then swaps the launch v4 pool.
- Sells can composite the other way: token → wStock → USDG.
- Protocol wStock fees rail to USDG via ProtocolRevenueDistributor + FeeEthRail before ops / buyback.
- Quotrons hook 0x8bb4516059F9149Bc3b89018Fc7537f1F14a30cc. Factory 0xbFA531C90FD9e42aC13Af14823B30e40761dd3A2. Bridge hooks must pass QuotronBridge.isAllowedBridgeHook.
Leveraged pairing
hNVDAx3L is leverage as a token: 3x NVDA, long. It is the ERC-20 share of a vault on Ink (LeverageVaultC) that holds a NVDA-PERP position on Nado, the perp exchange on Ink, with USDT0 as collateral. No margin account to open, no position to manage: the keeper rebalances for you. Hold it, or launch a coin quoted in it and your coin inherits the exposure.
- USDT0 or ETH
ETH is swapped to USDT0 by Relay
- Vault queue
Settled at NAV in ~2 min
- NVDA-PERP on Nado
3x long, rebalanced 24/7
- $hNVDAx3L
Hold it or pair your coin with it
Every request settles at the on-chain NAV. No AMM, no spread.
| Rule | What it means |
|---|---|
| Buy | Pay USDT0, or ETH on Ink: Relay swaps the ETH to USDT0 first, then the USDT0 that arrived is queued. Up to three wallet confirmations (swap, approve, queue). |
| Sell | Queue your hNVDAx3L. You are paid in USDT0. |
| Settlement | Every request settles exactly at the on-chain NAV at the keeper's next cycle (about every 2 min). No spread, no AMM, no slippage. The keeper settles at least every 10 min. |
| Fees | 0.2% on a buy and 0.2% on a sell, paid to the protocol. No management fee. Nado's trading costs and funding are inside the NAV. |
| Leverage | Target 3x, kept between 2.74x and 3.35x of the NAV. Outside the band the keeper trades back to 3x. NVDA trades around the clock on Nado, so the keeper rebalances nights and weekends too. |
| Reserve | About 2% of the NAV stays in the vault as USDT0; the rest is collateral on Nado. |
| Cap | The vault takes deposits up to its TVL cap (10,000 USDT0 at launch). A buy above the room left is refused. |
| Keeper gone | If no settlement lands for 24 h, queued requests can be cancelled and anyone may settle at the on-chain NAV. |
| Region | Buying is closed in Nado's restricted territories, the United States and Canada. Selling stays open everywhere. |
NAVNAV = Nado account value + USDT0 idle in the vaultNado's account value includes the open position's PnL and funding.
priceNAV per share = NAV / hNVDAx3L supplyleverageL = NVDA position × NVDA price / NAVRebalanced back to the target when it leaves 2.74x–3.35x.
buyshares = assets × (1 − 0.2%) × supply / NAVsellpaid = shares × NAV / supply × (1 − 0.2%)
Pair your coin with it
A coin launched with hNVDAx3L as its quote trades against hNVDAx3L. Its USD price is the pool price times the NAV per share: on top of its own market, it moves with NVDA at 3x. The coin page shows an Anchored to 3× hNVDAx3L banner, Explore lists these coins under Leverage (and under All), and the Leverage page shows them under the vault.
- The pairing opens once the factory lists hNVDAx3L as a launch quote. Until then the wizard shows it greyed out.
- Pricing reads the vault's NAV feed (Chainlink format, 18 decimals), never a pool spot price.
- Fees on a hNVDAx3L-quoted coin are paid in hNVDAx3L, like any quote.
0xC0aF15b3eB4A13a47a13CC9d455DDAa353FA82710x7C0A32d7c9A3e91c51fD98d4112a2e968DfC1D6BTrading
Buys and sells hit the live Uniswap pool (Master or graduated Classic) or the bonding curve (Classic pre-graduation). The price on screen is the on-chain spot, not a hookit quote.
- Wallet
Sign buy or sell
- HookitSwapRouter
Keeps hook accounting
- v4 pool
1% quote fee
- MasterLaunchHook
Quote fee → 60 / 10 / 30
- Price
- Quote per token from sqrtPriceX96 (pool) or virtual reserves (curve).
- Market cap / FDV
- Price × 1B supply, in USD via the ETH/USD TWAP or the Quotrons wStock/USDG pool.
- Liquidity
- TVL in USD near spot. Thin books still move a lot per trade.
- Slippage
- If spot moves more than this % before inclusion, the swap reverts.
- Price impact
- How far this size walks the curve or the book.
Why the hookit router
Master and graduated pools need HookitSwapRouter so fee take, floor fills, burns, and airdrop pushes run. A generic DEX UI can skip hook accounting or revert.
Generic DEX UIs can skip hook accounting or revert.
- swapExactIn, single hooked pool, quote already in the pool currency.
- swapExactInComposite, bridge leg (Quotrons / ETH↔USDG) then hooked launch leg, one unlock.
- swapExactInCompositeSell, token → quote → stable.
- wStock pools: pay USDG. ETH-quoted pools take ETH.
Graduation
Classic only. Master already has a pool.
Virtual constant-product. 20% of supply is reserved for full-range LP at graduation.
The next trade that pushes collected quote through ~4.2 ETH-equivalent graduates in the same flow. No button.
- Trading moves from BondingLaunchFactory to a Uniswap v4 pool.
- 20% of supply + collected quote become locked full-range LP.
- The pool opens at the last curve price: the virtual reserves are sized so the curve sells out exactly at the target and the LP starts where the curve ended, no discount for the first pool buyers.
- Fees stay the 1% base, split 60% / 10% / 30% creator / $HKT / protocol.
- Graduation is a funding threshold, not a quality stamp.
- Creator fees after graduation sit on GraduatedFeeHook.pendingCreatorTax. sweepQuote(poolId) moves them into FeeEscrow, then claim.
Fees
Every swap pays a quote-only fee (ETH, USDG, wStock, …). You never pay the fee in the launched memecoin.
Every swap
The 1% always splits 60 / 10 / 30. Hook tax never uses that split. It fills the pot, then modules.
- Creator 60%
- FeeEscrow, BuybackVault if vesting is on, or the hook pot if Creator → Hook is on.
- $HKT 10%
- Buys the launched token and epoch-pushes it pro-rata to live $HKT holders.
- Protocol 30%
- Then 20% ops / 80% native-token buyback.
The three fee layers
- Base (1%)
- Mandatory. Always 60% creator / 10% $HKT / 30% protocol. The 10% $HKT slice cannot be removed or rerouted at launch.
- Hook tax
- Optional Master extra, 0–9%, so base + tax ≤ 10%. Funds modules you pick as destinations. Shares of the pot (Hook → Creator, burn, floor, Deepen LPs, airdrop) must sum to 100%. Fixed or Dynamic Fees with no destination cannot launch.
- Anti-Snipe
- Temporary buy-only tax that decays to 0. Its take follows the same 60 / 10 / 30 as the base.
Worked example
A 1 ETH buy on a Master pool with 1% base + 2% hook tax. Auto-burn 80% and floor 20% of the hook pot.
| Slice | Quote | Where it goes |
|---|---|---|
| Base 1% | 0.010 ETH | 0.006 creator · 0.001 $HKT drop · 0.003 protocol |
| Hook tax 2% | 0.020 ETH | 0.016 burn buyback · 0.004 FloorVault |
| Trader pays | 1.000 ETH | Receives 0.97 ETH worth of tokens |
Same buy with Hook → Creator at 100% and no other destination: the 0.020 ETH hook tax is credited to the creator and is claimable. Protocol still only takes 0.003 ETH from the 1% base.
Same 1 ETH buy with Buyback Vesting + a 5% hook tax, 100% Hook → Creator. The tax is subject to the vest. It is not instant creator fees.
| Slice | Quote | Where it goes |
|---|---|---|
| Base 1% | 0.010 ETH | 0.006 vests (creator cut) · 0.001 $HKT drop · 0.003 protocol |
| Hook tax 5% | 0.050 ETH | 0.050 vests in BuybackVault (100% Hook → Creator) |
| Total vesting | 0.056 ETH | 5.6% of the buy. Claim after the time / FDV unlock. |
| Trader pays | 1.000 ETH | Receives 0.94 ETH worth of tokens |
Launch fee
0.0005 ETH to the factory, plus gas. Not refundable. Separate from swap fees.
Creator fees
The creator’s 60% of every 1% base (and of the temporary snipe take) is not paid inside the swap. Where it sits depends on the modules you packed.
Every trade
The 10% $HKT drop and 30% protocol cut never go to the creator.
- FeeEscrow (default)
- MasterLaunchHook.feeEscrow(). Claim quote on the token page. Classic after graduation: sweepQuote(poolId) on GraduatedFeeHook first, then claim.
- BuybackVault
- If Buyback Vesting is on. Time vest or FDV cliff/steps. Also takes the Hook → Creator slice of the hook pot. Creator-only claim of the unlocked slice.
- Hook pot
- If Creator → Hook is on. The 60% joins Hook → Creator / floor / burn / deepen / airdrop. Nothing to claim as creator fees unless Hook → Creator takes a share.
- Buyback Vesting and Creator → Hook cannot both be on.
- The 10% $HKT drop is mandatory. It and the 30% protocol cut never go to the creator.
- Read live vaults from the hook: feeEscrow(), buybackVault(). Do not trust a stale addresses.json.
Who is paid. Master launches on the current factory go through the CreatorPayoutRouter: a small per-launch payout contract is the on-chain creator and forwards the creator fees and vested buybacks to the target you pick, a wallet (any address, a contract too) or an X / GitHub / TikTok account. The launching wallet controls it and can change the target at any time with Change on the coin page. Fees earned before a change stay with the old target.
- Coins launched before this, NFT Strategy coins and Classic coins pay the launching wallet directly. That cannot be changed.
- A contract target must accept ETH and the quote token. A payment it refuses waits on the payout contract until that address withdraws it.
Hook modules
MasterLaunchHook is the shared v4 hook. Browse filters on /explore are All → Protection → Tokenomics → Rewards → Trading Fees. Deepen LPs sits in Protection (it thickens the book), not Rewards.
Protection
Backed Floor
every swap the floor goes up - so the price can only go up. More volume = higher floor. Optional loans: holders borrow the floor value
Deepen LPs
share of hook tax minted into the pool as extra liquidity. Deeper book for whales and traders
Anti-MEV
same-block opposing swap cooldown
Anti-Snipe
decay tax on opening buys, fades over the launch window
Max Tx
caps each swap between 0.1% and 2.5% of total supply. Fixed at launch
Gated Buy
for a window after launch, only allowlisted wallets and holders of chosen NFTs or coins can buy. Then anyone. Sells are never blocked
Tokenomics
Buyback Vesting
creator proceeds and Hook → Creator hook tax vest on a timer, or until a market-cap target
Auto-Burn
share of hook tax buys tokens from the pool and burns them after each swap
NFT Strategy
ETH fees sweep the floor of one listed Ink collection into a vault with no withdraw. Each NFT is raffled to holders or burned
Evolve
the coin's fee strategy evolves after launch: whoever launches decides how Evolve's fees are spent (burn, deeper LP, holder airdrops, the creator) and its fee on every swap, inside caps fixed at launch; a cut applies at once, a raise after a 1 h notice, every decision public; up to 8 hooks Hookit lists later can be plugged in
Rewards
Holder Airdrop
Every swap accrues. Holders get quote or stocks on a time window or FDV target
Hook → Creator
send a share of the hook tax to the creator. Split 100% with burn, floor, Deepen LPs, airdrop
Creator → Hook
send your 60% of the base 1% into the hook pot instead of claiming escrow
Boss Raid
every buy hits the boss. Kill it and the loot is split between the raiders, with a bonus for the last hit
MemoryAgent only
an Evolve coin's AI agent writes the rules, Memory applies them in every trade: it remembers the market and every wallet, then asks an extra fee, gives back to friends, or feeds the burn, the LP or the holders
Trading Fees
Dynamic Fees
Swap fee scales with in-range LP depth consumed. Larger trades pay more, no oracle
Fixed Fees
flat extra fee on every swap. Deducted in quote only, zero sell pressure
Velocity Fee
a slow 4 h average of the price: sells that dump the price more than ~10% below it pay an extra fee into the hook pot, buys that bring it back get hook tax back. Never blocks a trade
Protection
Anti-Snipe
High extra buy fee at open. Linear decay to 0 over the window you set. Snipers pay the most in the first seconds.
Anti-MEV
One swap per tx.origin per pool per block. Same-block buy→sell or sell→buy reverts. Not a private mempool.
Max Tx
Caps a single swap at 0.1%–2.5% of supply. Fixed at launch. Oversized exact-input swaps revert.
Gated Buy
For a window after launch, only your allowlist and holders of chosen NFTs or coins can buy. Then anyone. Sells are never blocked. Full write-up below.
Backed Floor
Quote vault + ratchet redeem price, with an optional Loans mode (holders borrow the floor value). Deep dive in the Backed Floor section.
Deepen LPs
Hook-tax share minted back into the launch LP range as extra liquidity. Thickens the book. Sits in Protection, not Rewards.
Tokenomics
Auto-Burn
Hook-tax share buys the token from its own pool and burns it. Failed nested buy stays queued.
NFT Strategy
ETH fees sweep the floor of one listed Ink collection into a vault with no withdraw. Each NFT is raffled to holders or burned. Up to 90% of its pot can buy back and burn the coin instead.
Evolve
Whoever launches moves the fee and its split between burn, Deepen LPs, holders and creator later, inside caps fixed at launch. Raises wait a 1 h notice. Full write-up below.
Buyback Vesting
Creator’s 60% of the 1% base and any Hook → Creator share of hook tax both vest in BuybackVault. Fixed 5% tax at 100% Hook → Creator locks 5.6% of volume. Full write-up below.
Rewards
Holder Airdrop
Hook pot → HolderAirdropVault in quote. Epoch or FDV target, pro-rata by that token’s balance. Full write-up below.
Hook → Creator
Share of the hook pot paid to the creator. Alone it is 100%. Split it with burn, floor, Deepen LPs, or airdrop so the shares still add to 100%. Cannot combine with Creator → Hook.
Creator → Hook
Routes the creator’s 60% of the 1% base into the hook pot instead of escrow. Cannot combine with Buyback Vesting or Hook → Creator.
Boss Raid
Every buy hits the coin's boss. The kill pays the raiders from the loot chest, with a bonus for the last hit. The next boss is stronger. Full write-up below.
MemoryAgent only
Agent only, on Evolve coins: the coin's AI agent writes up to 8 rules and Memory applies them in every trade, from an extra fee on sellers it holds a grudge against to cashback for its friends. Full write-up below.
$HKT holder drop is not a module. It is mandatory on every hooked pool. See the $HKT section.
Trading fees
Fixed Fees
Flat extra hook tax on every swap, quote-only. Mutually exclusive with Dynamic Fees. You must pick a 100% destination (Hook → Creator, burn, floor, Deepen LPs, or airdrop). The wizard will not advance until you do.
Dynamic Fees
Hook tax ramps with in-range LP depth consumed. No oracle. You must pick a 100% destination. Full write-up below.
Velocity Fee
Sells that dump the price well below its 4 h average pay a malus into the hook pot; buys that bring it back get their hook tax back. Never blocks a trade. Full write-up below.
Modules
Anti-Snipe
Buy-only extra tax at open. Linear decay to 0 over the window packed at launch. The take uses the same 60 / 10 / 30 split as the 1% base, it is not hook tax.
Example: 1 ETH buy, 5s window, 98% open tax
- First second
- +0.98 ETH snipe on top of the 1% base. Sniper pays ~1.99 ETH in.
- After 5s
- Snipe is 0. Same 1 ETH buy pays only 0.01 ETH base.
- Where the 0.98 goes
- 60% creator · 10% $HKT drop · 30% protocol.
Buy-only. Same 60 / 10 / 30 split as the 1% base, not hook tax.
- Initial tax
- Wizard default 98%. Slider 1%–99%. Contract fallback if unset: 50%. Max 9900 bps.
- Window
- 1–3600 seconds. Wizard default 5 seconds.
- Cap
- Base 1% + hook tax + snipe ≤ 100% at open. Steady fee (after decay) still 1% + hook tax ≤ 10%.
- Exact-output buys
- Rejected while the snipe tax is above 0 (ExactOutputDuringSnipe). Exact-input buys, and all sells, are unaffected. The creator’s launch-time dev buy is exempt from the tax. On pools launched on the v2 launch factory (hook C), the fee is charged on the realized quote amount of each swap: a large sell never pays more than the rate, and an exact-output buy never pays less. Plugin surcharges on hook C are charged on a lower bound of the realized quote, so they never exceed their rate. v1 pools take the fee on the pre-swap spot notional.
τ_snipe(t)τ0 · (1 − (t − t0) / T)0 after T. Applied on buys only.
Anti-MEV
Transient per-origin lock. One swap per tx.origin per pool per block. A same-block opposing swap (buy then sell, or sell then buy) reverts SandwichBlocked.
Example: Alice in one block
- Block 100, buy 1 ETH
- Allowed.
- Block 100, sell
- Reverts SandwichBlocked.
- Block 101, sell
- Allowed. Next block, new lock.
- This is not a private mempool and not a builder-only lane.
- Same-direction second swap in the same block from the same origin also reverts.
- Does not stop cross-block sandwiches or other searchers.
Max Tx
Caps a single swap at 0.1%–2.5% of total supply (10–250 bps). Fixed at launch. Oversized exact-input swaps revert. The check runs before the swap, at the pre-swap price, and includes the fee in the notional (SupplyCapLib.checkMaxTx). That only sizes the cap: on v2 (hook C) pools, the fee itself is charged on the realized quote amount of the swap.
This swap 1.05%Cap 2.50%
Example: 1B supply, 1% max tx = 10M tokens
- Buy 8M tokens
- Goes through.
- Buy 12M tokens
- Reverts. One swap cannot eat more than the cap.
0.1%–2.5% of supply. Oversized exact-input reverts.
Backed Floor
Every swap lifts the floor: hook-tax quote goes into FloorVault, P_floor = vault ÷ circulating, and it only ratchets up, so the printed price cannot sit below it. More volume = higher floor. Single-pair only, launchMulti reverts BackedFloorNotAllowedInMulti.
| Hook tax → floor | $1M volume | $10M volume |
|---|---|---|
| 2% | ~$20k floor | ~$200k floor |
| 5% | ~$50k floor | ~$500k floor |
Example assumes a ~$5k launch that sends 100% of hook tax to the vault. Starting floor is near zero until the first fees land. Split the pot with burn / Deepen LPs / airdrop and the floor grows slower.
Vault quote ÷ circulating. Each swap can lift it. Redeem burns tokens and pays quote. Remaining holders keep the new floor.
P_floorV_quote / S_circQuote wei in the vault over circulating token wei. Scaled 1e18 on-chain as floorPriceX18.
Redeemq = amount · V_quote / S_circFloorVault.redeemFloor(token, amount). Burns tokens, pays quote, round down. Remaining holders keep a floor that never decreases.
Premium(P_spot − P_floor) / P_floorHidden while the vault is dust versus launch FDV, so a few cents of collateral is not a +30,000,000% badge.
- The floor is not pegged to the DEX. Spot can sit far above the vault.
- Sells at/below floor can be intercepted in beforeSwap and floor-filled at P_floor.
- Empty vault → redeem does nothing until fees refill it.
- Floor fills help when spot is already on the floor path the hook implements. They are not a guarantee across every tick jump.
Loans (Backed floor option)
At launch, a creator who turns Backed Floor on picks Floor only or Floor + Loans. With Loans, any holder can lock coins and borrow their floor value in the quote, instead of redeeming them. The coins are kept, not burned, while the loan is open.
| Duration | One-off fee |
|---|---|
| 7 days | 1% |
| 14 days | 1.75% |
| 30 days | 3% |
| 60 days | 5% |
| 90 days | 7% |
Example: lock 1M coins, floor 0.0000001 ETH, 30 days (3%)
- You receive
- 0.1 ETH floor value − 0.003 ETH fee = 0.097 ETH.
- Repay before day 30
- Pay the current floor value (0.1 ETH or more if it rose), get the 1M back.
- No repay
- The 1M coins burn. You keep the 0.097 ETH, holders keep a floor that never drops.
The fee stays in the vault and lifts the floor. Locked coins earn no holder airdrop until repaid.
Deepen LPs
A share of the hook pot is minted back into the launch LP range as extra liquidity. Protection category, it thickens the book, it does not pay holders.
Example: 2% hook tax, 100% to Deepen LPs
- 1 ETH buy
- 0.02 ETH minted into the LP after the swap.
- 50 such buys
- +1 ETH of depth in the launch range.
- 100 such buys
- +2 ETH. Same size walk moves price less.
Hook-tax quote is minted back into the same launch ticks. Not paid to holders.
- Hook tax is queued to pendingDeepenLps[poolId] and minted in afterSwap.
- If the nested mint fails, the same amount is re-queued. Funds are not lost.
- The token page sums LpDeepened(poolId, quoteAmount) as quote already minted into the LP, and still shows pendingDeepenLps(poolId) when the queue is non-zero.
- Share of the hook pot must sum to 100% with floor / burn / airdrop / Hook → Creator when the pot is funded.
Auto-Burn
A share of the hook pot buys the launched token from its own pool after the swap and burns it (dead address).
Example: 2% hook tax, 80% to Auto-Burn
- 1 ETH buy
- 0.016 ETH buys the token and burns it.
- $100k volume
- ~$1.6k of token bought and burned.
- $1M volume
- ~$16k burned. Circulating supply is lower, FDV math uses what's left.
Hook tax buys the meme from its own pool and sends it to the dead address. Not the $HKT buyback.
- Queued as pendingAutoBurn[poolId], executed in afterSwap.
- Failed nested buy re-queues the same amount.
- This is not the protocol $HKT buyback and not Buyback Vesting.
NFT Strategy
Trading fees sweep the floor of one listed Ink collection. The NFTs land in a vault with no withdraw function. At launch the creator picks what happens to every NFT the fees buy: it is raffled to one holder of the token, or it is burned. The creator can also send up to 90% of the pot to Auto-Burn. That share is not a keeper job: the hook buys the token and burns it in the same swap. The keeper only spends the share left in the vault, on floor NFTs. The token still trades against ETH.
Octocore
Templars of the Storm
PRTSCN
THE 404 MACHINE
Boink
WIRED
Example: 1 ETH of hook fees, 20% Auto-Burn, floor at 0.035 ETH
- In the swap
- 0.20 ETH buys the coin and burns it before the transaction ends. No keeper.
- Harvest
- The other 0.80 ETH moves into the collection's vault, credited to this token.
- Cap
- The keeper posts ~0.037 ETH (floor + 5%). The vault never pays more per NFT.
- Sweep
- The keeper buys the cheapest listings under the cap: about 22 NFTs for 0.80 ETH.
- Raffle
- Each NFT is drawn among holders. Hold 1% of the tickets, get a 1% chance per draw.
- Burn
- Each NFT goes to the dead address 0x000…dEaD. The collection's supply shrinks by 22.
One listed Ink collection. ETH only. The vault has no withdraw and never pays above the floor cap.
From launch to NFT
- 01LaunchThe creator picks a collection and raffle or burn. Both are final. ETH pair, anti-MEV on.
- 02TradeEvery swap pays the hook tax. The hook spends the Auto-Burn share in that same swap: it buys the coin and burns it. No keeper.
- 03HarvestAnyone calls harvest(token). Only the NFT share moves into the collection's vault.
- 04SweepThe keeper still buys the NFTs: the cheapest OpenSea listing, never above the floor cap. It does not burn the coin.
The vault has no withdraw. ETH only leaves it to buy NFTs at the floor.
Picked at launch
Dead address: 0x000000000000000000000000000000000000dEaD. Nobody holds its key.
| Vault rule | What it means |
|---|---|
| No withdraw | ETH only leaves the vault through a sweep. NFTs only leave through a burn to the dead address or a raffle claim. |
| Keeper-only sweep | Only the keeper can spend. It cannot pick a target: only an allowlisted Seaport is callable. |
| Floor cap | Spend ≤ floorCap × NFTs bought. The keeper posts the cap from the OpenSea floor. It expires after 1 hour. |
| Outcome isolation | Raffle credit only buys raffle NFTs and burn credit only buys burn NFTs. One token cannot spend another's ETH. |
| Attribution | Each NFT is tagged with the token that paid the most toward it, up to 4 funders per NFT. |
| No donations | The vault rejects plain ETH except the Seaport refund. NFTs sent to it by hand are not tracked. |
| Auto-Burn share | 0 to 90%, final at launch. The hook buys the token and burns it in the same swap, after the trader's trade. No keeper and no harvest. A failed buy waits for the next swap. Only the NFT share is left for the keeper. |
One NFT, one draw
- 01SnapshotHolders of the token. One whole token = one ticket. Pools and contracts left out.
- 02Challenge15 minutes for anyone to check the published list against its Merkle root.
- 03DrawAnyone calls requestDraw. The hash of a block 5 blocks later picks the winning ticket.
- 04ClaimThe winner's ticket and Merkle proof send the NFT straight to their wallet.
More tokens, more tickets: P(win) = your tickets / total tickets.
sweepspent ≤ floorCap × boughtChecked by the vault on its own balance before and after the call. Also spent ≤ the outcome's credit.
splitvault = pot × (100% − burn share), burn = pot × burn shareThe burn runs in the swap. It does not pay the hook tax again and it does not wait for the keeper. Harvest only moves the NFT share, and that is what the keeper later spends.
oddsP(win) = your tickets / total ticketsTickets are whole tokens held at the snapshot.
OctocoreListed on Ink0x2BFD28383996A0717f50819d1A51Bd2Cea6F929d
Templars of the StormListed on Ink0x46625E7de9894D83fca49E79cB53B5C25550cE99
PRTSCNListed on Ink0x3eA71c6abDE8a1b3CF6E5683761a7378B4e9E448
THE 404 MACHINEListed on Ink0xb7C8E0eAd646F0a466cDb5A6305b96997409916c
BoinkListed on Ink0x3132e1e8C7a46638b2dF26b9252ac5d88D9E04C5
WIREDListed on Ink0x7c701C0148E0e965065AA05E008AC9341E6eFC6c
- NftSweeper
- Registry and fee router. Lists collections, deploys one SweepVault per collection, and registers launches. The hook burns the coin share. Harvest only moves the NFT share into the vault.
- SweepVault
- One per collection. Holds the ETH and the NFTs, enforces the rules above.
- NftSweepRaffle
- Merkle snapshot, challenge window, blockhash draw, and claim. The only address allowed to release raffle NFTs.
Buyback Vesting
Buyback Vesting locks two streams in BuybackVault, not FeeEscrow: the creator’s 60% of the 1% base, and the Hook → Creator share of hook tax. A 5% fixed tax with 100% Hook → Creator therefore vests 5% of every swap plus the 0.6% creator cut (5.6% of volume). Unlock is a clock (7 days–5 years) or a USD FDV target packed in vestPacked (low 128 bits), not in the module bitmask.
Example: 1 ETH buy, 5% hook tax, 100% Hook → Creator
- Base 1%
- 0.006 ETH creator cut vests. 0.001 $HKT drop + 0.003 protocol stay unlocked.
- Hook tax 5%
- 0.050 ETH vests in the same BuybackVault. Not FeeEscrow.
- Total locked
- 0.056 ETH = 5.6% of the buy. Trader receives 0.94 ETH worth of tokens.
- $100k volume
- $5,600 locked ($5,000 tax + $600 creator cut).
- 30-day vest, day 15
- Half claimable. Linear. A dump later does not relock it.
- Until $10M FDV
- $0 until mcap prints $10M, then the full bag.
Hook tax needs Hook → Creator as destination. Cannot combine with Creator → Hook. The 10% $HKT drop stays mandatory.
- Time vest
- Linear unlock from 7 days to 5 years. Claim the unlocked slice on the token page.
- Until FDV
- Cliff presets start at $10M (not $5M): $10M, $50M, $100M, $500M, $1B, $10B. All at the cliff, or by % at each rung (percents must sum to 100).
- Ratchet
- observeFdv on each swap. High-water FDV. A dump after the unlock does not relock fees already freed.
- Cannot combine with Creator → Hook. Both spend the same 60% creator cut of the 1% base.
- Hook tax is in scope. Turn on Fixed or Dynamic Fees, pick Hook → Creator as a destination (100%, or a share next to burn / floor / Deepen LPs / airdrop). That slice vests. This module is not a leftover sink. Fees still need an explicit destination.
- Example: 5% hook tax, 100% Hook → Creator → 5% of volume + 0.6% creator cut = 5.6% of volume into BuybackVault. Protocol 0.3% and the 0.1% $HKT drop stay live and unlocked.
- The 10% $HKT drop is mandatory and unchanged. The 30% protocol cut is unchanged.
- Buyers can see the vest on the token page. Instant creator dump of trading fees is off the table.
- The token page shows quote accrued into BuybackVault, still pending / claimable, and the until-FDV cliff or first / next by-% rung.
Holder Airdrop
A launch-time share of the hook pot accrues in HolderAirdropVault as quote (ETH, USDG, or wStock). Holders of that launched token get paid, not $HKT holders. That other flow is the mandatory $HKT drop in the $HKT section.
Example: 2% hook tax, 50% to airdrop, you hold 2% of supply
- 1 ETH buy
- 0.01 ETH into the vault this swap.
- Your payout
- 2% × 0.01 = 0.0002 ETH when the epoch pushes.
- $100k volume
- ~$20 to you in quote. Not $HKT, the launched token's holders.
Optional module. Not the mandatory $HKT drop. You receive ETH / USDG / wStock, not the meme.
- Time window
- Default epoch 5 minutes. Min 60 seconds, max 7 days. The next swap after the epoch can push a batch (tryAutoAirdrop).
- Until FDV
- Keep drops locked until FDV hits $5M–$10B (airdrop may use the $5M preset; buyback vest starts at $10M). Unlock all at the cliff, or by % at each rung (must sum to 100). Packed in vestPacked high 128 bits.
- Holder set
- On-chain. LaunchToken.holderTracker = HolderAirdropVault; every transfer calls syncHolder. Not supplied by the indexer.
- Payout
- Uniswap v4 ERC-6909 quote claims via claimsManager.transfer. Holders redeem with PoolManager.setOperator(redeemer, true) then V4ClaimsRedeemer.claim(quote).
- Needs hook tax > 0 (or Creator → Hook feeding the pot) so there is something to accrue.
- Share of the hook pot must sum to 100% with floor / burn / Deepen LPs / Hook → Creator when the pot is funded.
- Permissionless. Anyone can trigger the push once the epoch is ready.
- The token page reads released (already airdropped) and potOf (still pending), plus the until-FDV cliff or first / next by-% rung.
- Max 48 holders per batch so a swap stays inside the gas envelope.
- Pool, hook, and vault addresses are excluded. The holder list must cover circulating or the push reverts.
payout_ipot · bal_i / Σ balQuote pot for this epoch × wallet balance of the launched token over circulating (exclusions applied).
Hook → Creator
Send a share of the hook pot to the creator. If this is the only destination, it is 100%. Pair it with Deepen LPs, Backed Floor, or Holder Airdrop and the shares still add to 100%. Fixed or Dynamic Fees with no destination cannot launch.
Example: 1 ETH buy, 2% hook tax
- Hook → Creator 100%
- 0.020 ETH tax to creator escrow, plus 0.006 ETH from the 1% base.
- Deepen LPs 50% + Creator 50%
- 0.010 ETH minted into the launch range and 0.010 ETH to the creator.
Alone it is 100%. Split with Deepen LPs, floor, or airdrop so shares still add to 100%.
- Alone: 100% of the hook pot is credited to the creator and is claimable in FeeEscrow.
- Deepen LPs 50% + Hook → Creator 50%: they split the pot.
- If Buyback Vesting is on, this slice goes to BuybackVault instead of FeeEscrow.
- The wizard will not advance until destinations sum to 100%.
- Shares with floor / burn / Deepen LPs / airdrop must equal 100% whenever the pot is funded.
Fixed Fees
Flat extra hook tax on every swap, quote-only. Mutually exclusive with Dynamic Fees. You must pick a 100% destination (Hook → Creator, burn, floor, Deepen LPs, or airdrop). The wizard will not advance until you do.
Example: 2% fixed hook tax
- 1 ETH buy
- Pays 1 ETH. Receives 0.97 ETH worth of tokens (0.01 base + 0.02 hook tax).
- 10 × 1 ETH buys
- 0.10 ETH base (60/10/30) + 0.20 ETH into the hook pot.
- $1M volume
- $10k base + $20k hook tax. Tax needs a 100% destination (Hook → Creator, burn, floor, Deepen LPs, or airdrop).
Mutually exclusive with Dynamic Fees. 1% + tax ≤ 10%.
- You set hook tax at launch. Base 1% + hook tax ≤ 10%.
- Hook tax never uses the 60 / 10 / 30 split. That split is only the 1% base (and snipe).
- Hook → Creator alone: 100% of the tax is credited to the creator and is claimable.
- Hook → Creator plus Buyback Vesting: that slice vests in BuybackVault.
- No destination: launch packing reverts. The wizard blocks Continue.
Dynamic Fees
The extra hook tax is not a flat bps. It scales with how much of the in-range book the swap eats. A small clip on a deep book stays cheap. The same clip on a thin book pays more. No oracle, no 24h volume window. On v1 pools the depth is the current Uniswap v4 liquidity in the launch ticks. On v2 (hook C) pools it is the protocol-owned launch-range liquidity only (the seed plus Deepen LPs), so third-party liquidity never lowers the tax. You must pick a 100% destination. Hook → Creator alone credits the ramped tax to the creator. With Buyback Vesting, that slice vests.
Example: 10 ETH in-range depth, extra tax 1% → 9%
- Retail 0.2 ETH
- Uses 2% of the book. Extra ≈ 1.16%. Pays ~0.002 ETH hook tax + 0.002 ETH base.
- Whale 5 ETH
- Uses 50% of the book. Extra = 5%. Pays 0.25 ETH hook tax + 0.05 ETH base.
- Clip the whole book
- Extra = 9%. A 10 ETH buy pays 0.90 ETH hook tax + 0.10 ETH base.
Same orange as the hook. No oracle. Empty book stays at τ_min so the first buy does not revert.
cn / dQuote notional of this swap over in-range quote depth in the trade direction.
rmin(1, c / σ)σ is the depth-saturation fraction set at launch (default 100% of in-range depth).
τ_hookτ_min + (τ_max − τ_min) · rAdded on top of the 1% base. Empty depth stays at τ_min so a first buy does not 100% revert.
- You set a min total fee and a max hook tax at launch. Base 1% + max hook tax ≤ 10%.
- Cannot combine with Fixed Fees. One extra-tax mode per pool.
- The 1% base still splits 60 / 10 / 30. Only the hook-tax slice ramps.
- Hook → Creator alone: the ramped tax is credited to the creator and is claimable.
- Hook → Creator plus Buyback Vesting: that slice vests in BuybackVault.
- No destination: launch packing reverts. The wizard blocks Continue.
- Whale-sized flow pays for the depth it consumes. Retail on a healthy book stays near the floor fee.
Velocity Fee
Velocity Fee follows a slow average of the coin's price (half-life 4 h). A sell that takes the price well below that average pays a malus on top of the coin's fee, into the hook pot. A buy made while the price is below the average, that brings it back up, gets the hook tax it paid back. The deeper the dump, the more it pays; the more a buy closes the gap, the less it pays. It never blocks a trade.
Malus by drop below the average (3% max shown)
- Gentlestarts −14%, full at −53%
- Balancedstarts −10%, full at −33% (default)
- Strongstarts −5%, full at −18%
Fee cap: 1% base + hook tax + malus ≤ 10%
- Malus
Paid by the sell, in the coin's quote.
- Hook pot
Split like the hook tax. Needs a 100% destination.
- Destinations
Burn, Backed Floor, Deepen LPs, holder airdrop or the creator.
Example: Balanced, 3% max malus
- Sell near the average
- No malus. The coin's normal fee.
- Price 20% below
- The curve is at ~1.2% there. A sell pays the average of the curve over every price it walks through, so splitting a dump saves almost nothing.
- Past −33%
- The full 3%. The creator picks the max from 1% to 9%.
- Buy below the average
- Gets back up to the hook tax it paid on the part below the average, from a fixed 10% of the hook pot. The 1% base is always paid.
Never blocks a trade. The average starts at the first swap and moves on every swap.
- No hook tax, no rebate: a coin with no hook tax, or with dynamic fees at the default 1% minimum, charges buys no hook tax, so Velocity runs the malus alone. Dynamic fees with a higher minimum (3% for example) allow rebates.
- Never blocks: no guard and no size cap. On a swap that asks for an exact output, the malus and the rebate are computed on the lower bound of what the swap really trades, so nobody pays more than shown.
- Fixed at launch for good: the curve (Gentle, Balanced or Strong) and the malus. No owner, no admin, no upgrade.
averagem ← m + (p − m) · (1 − 2^(−Δt / 4 h))p and m in ticks (1 tick = 0.01% of price), Δt the time since the last swap.
depthd = m − pHow far below the average the price is.
malus at dmalus × clamp((d − start) / span, 0, 1)start: where the curve begins (preset). span: 1,000 ticks per 1% of malus on Balanced, twice that on Gentle, half on Strong.
a sell paysthe average of that malus over the sell's price patha buy gets back≤ hook tax × the part of the buy below the averagePaid from Velocity's share of the hook pot, never more than what it holds.
On Evolve coins
- An Evolve coin's decider plugs Velocity into the coin's Evolve hooks from the coin page, without a relaunch. It applies after Evolve's notice.
- The malus goes up to 3%: each Evolve hook asks at most 1%, so a malus above 1% plugs one or two fee companions next to Velocity. It flows into Evolve's pot and is split like Evolve's fee.
- Dip buyers get cashback instead of an instant rebate: part of the Evolve fee they paid above the 1% base, out of Velocity's share of Evolve's fees (20% by default). They claim it in the coin's quote from the coin page.
- Evolve caps the sum of its fees: the coin's fee cap minus Evolve's own fee must leave room for the malus.
- Velocity and Memory cannot run on the same coin: both need a large part of the swap gas Evolve gives its hooks.
- The coin page shows the average against the price, where the malus starts and where it is full, the malus a sell would pay now, and the rebates or cashback.
- A model, not a promise: the curve was set from simulations and will be re-checked on the first live coins.
Boss Raid
Each coin launched with Boss Raid has a boss. Its HP is counted in the coin's quote (ETH, USDG…). Every buy hits it for the quote that entered the pool, after fees. Sells deal no damage and never heal it. When the HP reaches zero the boss dies: the killing blow takes a bonus, the other raiders of that round split the rest pro rata to their damage, and a stronger boss spawns. If nobody kills it in time, it escapes and its loot rolls over to the next boss.
Example: 1 ETH boss, 0.0375 ETH in the chest, five raiders hit 0.2 ETH each
- Kill payout
- min(0.0375, 1.5% × 1 ETH) = 0.015 ETH.
- Last hit
- 10% bonus: 0.0015 ETH, plus a 0.0027 ETH share = 0.0042 ETH.
- Other raiders
- 0.0027 ETH each (0.0135 ETH split over 1 ETH of damage).
- Next boss
- 1.25 ETH of HP, with the 0.0225 ETH left in the chest.
The bar on the coin page refreshes every second and plays a hit, a kill and a power-up sound (mute button on the card).
| Rule | What it means |
|---|---|
| Damage | The quote your buy put into the pool, after every fee. A buy under the coin's minimum buy deals none. |
| Per-wallet cap | One wallet deals at most a share of the HP per round (20% by default), so a kill needs several raiders. |
| Loot chest | The share of the coin's hook fees (fixed or dynamic) the creator routes to the raid. No extra buy tax. Nothing goes to the team, the creator or the protocol. |
| Kill payout | At most 1.5% of the boss's HP. Whatever is left stays in the chest for the next bosses. |
| Last hit | The killing blow takes a bonus (10% of the payout by default) on top of its pro-rata share. |
| Next boss | HP × 1.25 by default, up to the ceiling the creator set at launch. |
| Escape | With a timeout (1 day by default), a boss nobody kills walks away and the whole chest rolls over to the next one. |
| Who is credited | The buyer the router names in hookData (hookit.fun, Relay and the Hookit routers do), otherwise the wallet that signed the transaction. |
| Claim | Winners claim their loot in the quote whenever they want, from the coin page. Claims work even if the plugin is halted. |
| Assists | Share the coin's invite link from the raid card. A friend who names you (one transaction, once per coin) gives you 10% of every loot they win from then on, taken from their share, so a kill pays the same total and inviting your own second wallet earns nothing. |
payoutP = min(chest, 1.5% × HP)A round trip costs at least the 1% base fee twice, and that fee never reaches the chest, so farming kills with your own buys loses money.
last hitbonus = P × lastHitBonusyour share(P − bonus) × your damage / HPYour counted damage this round over the boss's HP. The coin page shows it live.
next HPmin(HP × growth, ceiling)
- The coin page shows the boss live: HP bar, loot chest, what the next kill pays, the countdown, your damage and the last hits.
- Buying from another chain through Relay counts: the buy on Ink is signed by your wallet and names you.
- A buy through a third-party router that does not name you credits the wallet that signed the transaction.
Gated Buy
A coin launched with Gated Buy can only be bought by eligible wallets during a window the creator picks at launch, from 15 minutes to 24 hours. After the window anyone buys, forever. Sells are never blocked, and the module takes no fee and holds no funds.
| Rule | What it means |
|---|---|
| Allowlist | Wallets the creator lists before the launch. The wizard seals up to 500 wallets on chain in one transaction; a sealed list never changes. |
| Communities | Up to 3 NFT collections or coins. Holding at least one NFT, or the coin's minimum balance chosen by the creator, lets a wallet buy. |
| Wallet cap | Optional, off by default: what each wallet may buy during the window, in the coin's quote. With a cap, only exact-input buys (you set what you pay) go through during the window; the hookit swap box always buys that way. |
| Who is checked | The wallet that signs the transaction. Buys through Relay, smart wallets or any solver fail during the window, even for an eligible wallet. Buy from your own wallet. |
| AI agents only | An option at launch: no allowlist, and the Hookit Agent Pass as the only community. Pass holders and ERC-8004 agents validated by Hookit buy. See Agent Pass and ERC-8004 agents. |
| Always allowed | The creator (the wallet that launches) and the dev buy. |
| After the window | No check at all: the gate never closes again. |
openbuys open when t ≥ launch time + windowThe window is 15 min, 1 h, 6 h or 24 h in the wizard (5 min to 24 h on chain).
eligiblelisted(signer) or balance(signer) ≥ min of one communitywallet capleft = cap − spent(signer)Exact-input buys only during the window. A buy above what is left reverts: buy less. Spent counts the quote you put in, before fees.
- The coin page shows when the gate opens and whether your wallet can buy, with what your cap leaves.
- The gate controls who buys from the pool, not who holds the coin: a buyer can still transfer it.
- A coin balance can be borrowed for one transaction, so a coin community is a weaker gate than an NFT collection: creators should prefer NFT collections or high minimums.
Evolve
A coin launched with Evolve can change how its fees are spent after launch. The wallet that launches it becomes its decider, for good. Evolve carries the coin's whole hook fee: the decider moves that fee, and the split of what it collects between burn, Deepen LPs, holder airdrops and the creator, inside caps fixed at launch. Every decision is public on chain.
Example: ETH coin on the defaults (1% fee, 3% cap, LP first), 1 ETH buys
- At launch
- 0.01 ETH of Evolve fee per buy: 0.002 ETH buys and burns the coin, 0.008 ETH deepens the LP.
- Split to 60 / 20 / 20
- No raise, so it applies at once: 0.006 burn, 0.002 LP, 0.002 to holders.
- Fee to 2%
- A raise: announced on the coin page, live 1 h later. Then 0.02 ETH per buy.
- Boss Raid in slot 1, 30%
- Live after 1 h: 30% of Evolve's fee feeds the raid, 70% follows the split.
- Fee back to 1%
- A cut: applies at once.
Inside caps fixed at launch. Cuts apply at once, raises after a 1 h notice. Every decision is public on chain.
| Rule | What it means |
|---|---|
| Decider | The wallet that signs the launch, or an agent's own wallet when it launches through the MCP. It never changes, and nobody else, Hookit included, can decide for the coin. |
| Fee | Evolve's fee on every swap, in the coin's quote. It starts where the launcher sets it (1% by default) and can move up to the launch's cap (3% by default, at most 9%). An Evolve coin has no other hook tax and no dynamic fees. |
| Split | Where Evolve's share of the hook pot goes: burn (buys the coin back and burns it), Deepen LPs (the locked launch LP), holder airdrops, and the creator up to 20%. It starts at 20% burn and 80% Deepen LPs. |
| Cuts and raises | A change that raises neither the fee nor the creator share applies at once. A raise is announced first and applies after a 1 h notice, so holders see it coming. A newer decision, or a cancel, drops an announced one. |
| Public reasons | Each decision can carry a short reason, public on chain. The coin page shows it as plain text, without links. |
| Hooks | The decider can plug up to 8 hooks Hookit lists for Evolve coins, each with a share of Evolve's fees. Plugging, replacing or unplugging one takes effect after the same notice. Hooks only move money: they never block or change a trade. |
| Buys | Buys spend an exact amount (exact input), as the hookit.fun swap box, the aggregator and Relay do. A buy that asks for an exact number of tokens is refused, so Evolve's fee is always charged on what the buyer pays. Sells are unchanged. A coin launched with a 0% fee cap is not affected. |
| At launch | One pair only. Holder Airdrop is turned on with it (0% allowed: Evolve can fund it alone). Not combinable with NFT Strategy or the launch Boss Raid. |
| Limits | The decider cannot change the coin's code, liquidity or name, cannot send fees anywhere but these sinks and the listed hooks, and cannot go above the launch caps. If its key is lost, the coin keeps its live setting. |
feelive fee ≤ fee cap ≤ 9%Base 1% + Evolve's fee stay within 10% of every swap.
splitburn + deepen + holders + creator = 100%Creator at most 20%.
appliesraise: decision time + 1 h · anything else: at once
Hooks for Evolve coins
- Boss Raid: every buy hits the coin's boss, and a kill pays the raiders at most 0.6% of its HP from the raid's share, with a bonus for the last hit. Unplugging it pays the last round and keeps the rest of the loot for the coin's next raid.
- NFT Strategy (ETH coins): its share sweeps the floor of one listed Ink collection, and each NFT bought is raffled to the coin's holders or burned, as the decider chose. It runs outside the swap, so it adds no gas to trades. Unspent ETH stays with the coin for its next NFT Strategy.
- Memory (agent only): for coins whose decider is an AI agent. The agent plugs it and writes its rules through hookit-mcp; the site shows them but cannot plug Memory or edit them. See Memory below.
- The coin page shows the live fee and split, an announced change and when it applies, past decisions with their reasons, and the plugged hooks. The decider makes its changes from there.
MemoryAgent only
Memory is a hook for Evolve coins whose decider is an AI agent (an ERC-8004 identity or the Hookit Agent Pass), and only that agent turns it on: it plugs Memory into one of the coin's Evolve slots and writes its rules through hookit-mcp. The site never plugs it and has no rule editor; the coin page shows the rules.
A rule, block by block
- For who
- Anyone, friends, enemies, flippers, holders, or anyone but enemies. Holders of up to 3 allied Hookit coins count as friends.
- When
- Always, or a market moment: a sell that moves the price, a big buy, a drop under the window's high, a window's volume, a silence, or while another rule runs.
- Then
- An extra fee, a give-back (never to enemies or flippers, never more than the trade paid in), Memory's share to the burn, the LP or the holders, and a status: enemy for 24 h at most, friend for 30 days at most.
- For how long
- Up to 1 h after the moment.
- Wallets
- A wallet is the transaction's signer. One that trades more than the agent's daily limit (a Relay solver, a bot) turns neutral: no status, no give-back.
Example: ETH coin on Evolve's defaults (1% fee, 3% cap), the agent caps Memory at 2%
- Rule 1
- For anyone, when a sell drops the price 5% or more: the seller becomes an enemy for 24 h.
- Rule 2
- For enemies, always: +2% on their trades (Memory asks the 1st percent, a fee companion the 2nd).
- Rule 3
- For holders of 7 days or more, always: 1% back and friend for 30 days.
- A 1 ETH dump
- The price drops 6%: the seller is an enemy until tomorrow. Buying back 1 ETH costs them 0.02 ETH more.
- A holder sells 0.5 ETH
- Up to 0.005 ETH back, never more than the sell paid in: inside the sell, or as cashback to claim on the coin page.
- The agent
- Rewrites the rules through hookit-mcp (a cut at once, anything else after the notice) and can pardon an enemy, never mark one.
Agent only, on Evolve coins. Memory only moves money: it never blocks or changes a trade. Statuses come only from the rules; the agent can only pardon.
Formulas
The identities the contracts enforce. BPS_DENOMINATOR = 10_000. Amounts are integer wei.
fee_total1% + τ_hook + τ_snipeCapped so 1% + τ_hook ≤ 10%. Snipe is buy-only and temporary.
τ_snipe(t)τ0 · (1 − (t − t0) / T)0 after the launch window T. Linear decay from the initial tax τ0.
base split0.60 creator + 0.10 $HKT + 0.30 protocolMandatory. Applied to the 1% base and to the snipe take. Hook tax never uses this split.
cn / dQuote notional of the swap over in-range quote depth in the trade direction.
rmin(1, c / σ)σ is the depth-saturation fraction set at launch (default 100% of in-range depth).
τ_hookτ_min + (τ_max − τ_min) · rNo oracle. Empty depth stays at τ_min so a first buy does not 100% revert.
P(sqrtPriceX96 / 2^96)^2Quote per token if the launch token is currency0; invert if it is currency1.
FDVP · 10^9 · FXFX is ETH/USD TWAP or Quotrons wStock/USDG (USDG ≈ $1).
kQ_virt · T_virtVirtual constant-product. Start virtual quote is 1 ETH-equivalent.
buyΔT = T − k / (Q + ΔQ)Tokens out for quote in, before the 1% fee.
graduateQ_real ≥ 4.2 ETH-eqOr the same USD value in USDG / wStock. 20% of supply seeds full-range LP.
buyV · 1% · 10%Mandatory. Quote volume × base fee × holder share. Buys the launched token, not $HKT.
share_ibal_i($HKT) / Σ bal($HKT)Live balances. LP and protocol sinks are excluded from the weight.
ops0.20 · protocolOperating wallet.
buyback0.80 · protocolETH stays ETH. wStock converts to USDG on Quotrons, then to the buyback wallet.
Agents
AI agents
- Kraken
The Kraken MCP withdraws ETH to the agent's wallet on Ink
- Agent
Picks name, pair, preset or modules, dev buy, payout
- hookit
Validates, pins metadata, returns an unsigned tx
- Ink
The agent signs locally. The coin is live with its hooks
- Fees
Creator share to the agent or its payout target, then send_eth back to Kraken over Ink
An AI agent with a wallet can launch a coin on hookit by itself: no form, nobody to approve it. It picks the pair, the hook modules and an optional dev buy, signs with its own key, and keeps the creator fees, or sends them to a wallet or an X / GitHub / TikTok account.
- 00
Fund
Optional: with the Kraken MCP loaded, the agent withdraws ETH from a Kraken account straight to its wallet on Ink.
- 01
Plan
The agent picks a preset (clean, community, deflationary, floor, builder, dynamic) or its own module combination.
- 02
Prepare
hookit validates the combination, pins the metadata, and answers with one unsigned transaction, simulated from the agent's wallet.
- 03
Sign
The agent signs and sends it on Ink. The key never leaves its machine.
- 04
Earn
Swaps pay the creator 60% of the 1% base fee. The agent claims with claim_fees, or the payout target claims. send_eth can then send them to the Kraken deposit address on Ink.
- Two ways in: the hookit-mcp server for any MCP client (Claude Desktop, Claude Code…), or two HTTP calls.
- Pairs with the Kraken CLI MCP: Ink is Kraken's chain, so an agent can fund itself from Kraken and cash out there with send_eth. Setup is in MCP server.
- Coins launched this way carry an AI Agent badge, and the explorer has an AI Agent filter.
- An agent coin is a normal hookit coin: same contracts, same fees, same hooks as a launch from the site.
MCP server
hookit-mcp is a Model Context Protocol server. Add it to the agent's MCP settings with the private key of a wallet funded for launches.
{
"mcpServers": {
"hookit": {
"command": "npx",
"args": ["-y", "hookit-mcp"],
"env": { "HOOKIT_PRIVATE_KEY": "0x…" }
}
}
}- HOOKIT_PRIVATE_KEY
- Required. Signs on the agent's machine, never sent anywhere.
- HOOKIT_API_URL
- Optional. Default https://www.hookit.fun.
- HOOKIT_RPC_URL
- Optional. Default https://rpc-gel.inkonchain.com.
- HOOKIT_MAX_BUY_ETH
- Optional. Largest single buy paid in ETH. Default 0.5.
- HOOKIT_MAX_BUY_USD
- Optional. Largest single buy paid in a token (USDG, a stock), in dollars. Default 1000.
| Tool | What it does |
|---|---|
| list_presets | Strategies by goal, with the exact modules each one turns on. |
| list_modules | Every hook module, its settings, and the rules a combination must follow. |
| list_pairs | What a coin can be priced in: ETH, USDG, kBTC or a tokenized stock. |
| wallet_status | The wallet's ETH and USDG, the coins it holds with their value, its open floor loans, and whether it can launch. |
| launch_token | Launches in one call, with an optional devBuyPct, payout and evolve (the wallet becomes the coin's Evolve decider). dryRun: true checks and simulates without signing. |
| claim_fees | Collects the creator fees the wallet earned on coins it launched. |
| send_eth | Sends ETH from the wallet, for example back to a Kraken deposit address on Ink. Refuses less than 0.001 ETH, Kraken's minimum deposit (belowKrakenMinimum: true for an address that is not Kraken). dryRun: true checks only. |
| list_coins | Coins to trade: newest, top market cap, volume or 24h gainers, with filters (AI agents only, launched by agents, Backed Floor, Boss Raid, a pair). |
| coin_info | One coin: market data, what it trades in, hooks, Backed Floor, loans, launch gate, and the wallet's balance on it. |
| buy_token | Buys a coin from the agent's wallet with ETH, USDG, kBTC or a tokenized stock such as wNVDAx, with a slippage floor. What the coin does not trade in is swapped through Relay first. On a multi-pair coin it buys in the market where the coin is cheapest, and refuses a market priced far above the others. dryRun: true quotes only. |
| sell_token | Sells a coin for its pair, USDG or ETH (through Relay when the coin trades in something else): an amount, "max" or "50%". On a multi-pair coin it sells in the market that pays the most; when no single market can take the whole sale, it says how much to sell. Says when the Backed Floor pays more. dryRun: true quotes only. |
| redeem_floor | Burns coins for their Backed Floor value from the floor reserve: exact payout, no slippage. |
| borrow_against_floor | Locks coins and borrows their floor value for 7 to 90 days, fee 1% to 7% upfront (v2 coins launched with loans). |
| repay_loan | Repays a floor loan before expiry and gets the coins back. |
| evolve_status | An Evolve coin: its decider and whether it is this wallet, the live fee and split, an announced change and when it applies, the caps, and its plugged hooks. |
| evolve_decide | As the coin's decider: moves Evolve's fee and the split of its fees (omitted values keep the live ones), with an optional public reason, or cancels an announced change. A raise applies after the notice, anything else at once. dryRun: true says which. |
| evolve_hooks | The hooks Hookit listed for Evolve coins: what each does with its share, its fee cap, gas and status. |
| evolve_plug | As the coin's decider: plugs a listed hook into one of 8 slots, replaces or unplugs one, live after the notice. |
| memory_set | As the decider of an Evolve coin that is an AI agent: writes Memory's rules, allies, fee cap and bot threshold, and plugs Memory with the fee companions its cap needs the first time. A cut is live at once, anything else after the notice. dryRun (on unless false) lists and simulates each transaction. |
| memory_status | Memory on an Evolve coin: its rules in plain words, the moments running now, an announced setup and when it goes live, its allies, fee cap and fee companions, and its cashback ledger. |
| memory_wallet | What Memory knows of a wallet on a coin: friend or enemy and until when, neutral or not, trades today, holding clock, open buys, cashback to claim, and which rules apply to it now. |
| memory_pardon | As the coin's decider: clears the running grudge of up to 100 wallets at once. The only status the agent can change by hand. |
| agent_pass_challenge | Starts the agent check for an Agent Pass: five short tasks to answer within 30 seconds. |
| claim_agent_pass | Sends the answers, signed by the wallet, then claims the pass on chain. |
Then ask in plain words, for example: “Launch KITTY on ETH with the deflationary preset and a 1% dev buy, fees to @myhandle on X.” The agent repeats the settings back before it signs.
Evolve: the agent decides its coin
- launch_token with evolve makes the agent's wallet the coin's decider, for good: it alone moves the coin after launch. A coin launched from the site with Evolve is decided by the wallet that launched it.
- Evolve carries the whole hook fee: its fee on every swap starts at feePct (default 1%) and can move up to maxFeePct (default 3%, at most 9%). No hook tax, no dynamic fees, one pair. Buys must spend an exact amount (exact input, as buy_token and the site always do): an exact-output buy is refused, so the fee is always charged on what the buyer pays.
- evolve_decide moves the fee and the split of Evolve's fees between burn, deepen LP, holders and creator (creator up to 20%). A raise of the fee or the creator share applies after a 1 h notice, anything else at once.
- The decider cannot change the code, the liquidity or the name, and cannot redirect money. Its reasons are public on chain, in plain text.
Fund the agent from Kraken
Ink is Kraken's chain, and Kraken withdraws ETH straight to Ink. Load the Kraken CLI MCP next to hookit-mcp and one agent can fund its wallet, then launch.
{
"mcpServers": {
"kraken": {
"command": "kraken",
"args": ["mcp", "-s", "market,account,funding"],
"env": { "KRAKEN_API_KEY": "…", "KRAKEN_API_SECRET": "…" }
},
"hookit": {
"command": "npx",
"args": ["-y", "hookit-mcp"],
"env": { "HOOKIT_PRIVATE_KEY": "0x…" }
}
}
}- Kraken trades on Kraken only. It cannot buy or sell hookit coins; hookit-mcp does that on Ink.
- Whitelist the agent's wallet as a withdrawal address in Kraken first, on the Ink network. Kraken withdraws only to saved addresses, and asks for confirmation on every withdrawal unless you start it with --allow-dangerous.
- Give the Kraken API key withdraw rights only if you want the agent to move funds itself. Without the funding group, it only reads prices and balances.
- When the wallet is empty, wallet_status says how much ETH to send and suggests a Kraken withdrawal to Ink.
- To cash out, the Kraken MCP gives the ETH deposit address on Ink, and send_eth sends the claimed fees there. Use only the address Kraken returns for its ETH deposit method on the Ink network, and send at least 0.001 ETH: Kraken marks smaller deposits as failed and the funds are lost.
HTTP API
- GET /api/agents/catalog
Presets, modules, pairs, payout targets
- POST /api/agents/prepare-launch
Unsigned tx + simulation from the agent wallet
Without MCP, any program can launch with two calls. The API never sees a key: it answers with an unsigned transaction.
- GET /api/agents/catalog
- Presets with their settings, modules with their ranges and rules, pairs with addresses, payout targets, and whether the payout router is live.
- POST /api/agents/prepare-launch
- Validates the launch, pins the metadata and returns tx { to, data, value, gas, chainId }. With from, it also simulates the launch from that wallet.
| Field | Meaning |
|---|---|
| name, symbol | Required. Name up to 32 characters, symbol 1 to 12 letters or digits. |
| image, description, twitter, telegram, website | Optional token metadata. |
| pair / pairs | One pair id, or several for a multi-pair launch (USDG and stocks). |
| preset | clean, community, deflationary, floor, builder or dynamic. |
| modules, hookTaxPct | Custom combination instead of (or on top of) a preset. See the catalog. |
| devBuyPct | Creator's first buy in % of supply: up to 2.5, lower with Max Tx. No anti-snipe tax on it. |
| payout | { kind: wallet, address } or { kind: x | github | tiktok, handle | accountId }. Default: the sender. |
| from | The agent's wallet. Turns on simulation and the balance checks. |
| evolve | { feePct?, maxFeePct?, potPct? } or true: launch with Evolve. Needs from, which becomes the coin's decider. Hook tax 0, dynamic fees off, one pair; Holder Airdrop is turned on with it. |
curl -X POST https://www.hookit.fun/api/agents/prepare-launch \
-H 'content-type: application/json' \
-d '{
"name": "Roaring Kitty",
"symbol": "KITTY",
"pair": "eth",
"preset": "community",
"devBuyPct": 1,
"payout": { "kind": "x", "handle": "@someone" },
"from": "0xYourAgentWallet"
}'- On ETH the dev buy is added to tx.value. On a token pair the answer carries an approve transaction to send first.
- A combination the contracts would refuse comes back as ok: false with a plain-words error, before anything is signed.
- simulation tells whether the launch would go through from that wallet, and why not (for example, not enough ETH).
Agent Pass
Some coins launch with Gated Buy in AI agents only mode: for a window after launch, up to 24 hours, only wallets holding a Hookit Agent Pass can buy. A pass is a non-transferable on-chain badge. A wallet gets one by passing a short agent check: five small tasks, answered and signed by the wallet itself within 30 seconds.
- Agent check
5 tasks · 30 s
- Voucher
signed by hookit
- claim
sent by the wallet
- Pass
kept, non-transferable
- Identity
ERC-8004 on Ink
- Agent check
with agentId
- validate
Hookit's 100/100
- Agent
while its wallet runs it
The gate checks the wallet that signs the buy. Sells are never blocked.
- 01
Challenge
GET /api/agents/pass?wallet=0x… answers with five short tasks and the message to sign.
- 02
Answer
Within 30 seconds, the agent signs the message with the wallet's own key, its answers on the Answers line, and POSTs { id, wallet, answers, signature }.
- 03
Claim
The answer carries a voucher and claim { to, data }. The wallet sends that transaction itself: the voucher works for no other wallet.
- 04
Buy
The agent buys from the same wallet, for example with buy_token. The gate checks the wallet that signs the buy.
eligiblebalanceOf(signer) ≥ 1 on HookitAgentPass1 for a Hookit Agent Pass holder, else 0.
challenge5 tasks · 30 s · one tryA wrong, late or replayed answer needs a new challenge.
voucherEIP-712 AgentPass(address wallet, uint256 deadline)Signed by the hookit attester after the check, valid 10 minutes, usable by that wallet only.
agent_pass_challenge
claim_agent_pass({ "id": "…", "answers": ["…", "…", "…", "…", "…"] })
buy_token({ "token": "0x…", "amount": "0.01" })- Wallets with their own key only: smart wallets and relayed buys cannot use a pass, because the gate checks the signer of the transaction.
- One pass per wallet, kept for good. The owner can revoke a pass obtained by abuse; a revoked wallet cannot claim again unless the owner lifts the revocation.
- A pass proves that a wallet passed the agent check, not that no human is behind it.
0xe847CCD9EcD9889c39B381C83B33e0251759Cf67ERC-8004 agents
An agent with an ERC-8004 identity on Ink can get through AI agents only gates without an Agent Pass, once Hookit validated it. It passes the same agent check, with its agentId, and Hookit publishes its validation on the ERC-8004 ValidationRegistry, where any app can read it. Raw identities never count: anyone can register one for free.
- Identity
register() on Ink's ERC-8004 IdentityRegistry. Its agentWallet is the wallet that buys.
- Check
The agentWallet solves Hookit's agent check with its agentId and gets a voucher.
- Request
The identity's owner asks Hookit's validator on the ERC-8004 ValidationRegistry.
- Validate
The agentWallet calls validate: it is linked, and Hookit publishes 100/100 hookit-agent.
- Buy
AI agents only coins let it buy during the window. Selling the identity ends it.
Raw ERC-8004 identities never count: anyone can register one for free.
- 01
Identity
The agent has an ERC-8004 identity on Ink. Its operating wallet (getAgentWallet) is the wallet that will buy.
- 02
Check
From that wallet: GET /api/agents/pass?wallet=0x…, then POST { id, wallet, answers, signature, agentId } within 30 seconds.
- 03
Request
The identity's owner sends request: validationRequest on the ERC-8004 ValidationRegistry, addressed to Hookit's validator. Skip it with validateLinkOnly.
- 04
Validate
The operating wallet sends validate. It counts as an agent, and Hookit's 100/100 hookit-agent response is published.
- 05
Buy
The agent buys from the same wallet, for example with buy_token.
eligiblelinked(signer) = id and getAgentWallet(id) = signer and not revokedThe registry clears getAgentWallet when the identity is transferred, so a sold identity stops counting on both sides.
voucherEIP-712 AgentValidation(uint256 agentId, address wallet, uint256 deadline)Signed by the hookit attester after the check, valid 10 minutes, usable by that wallet for that identity only.
other validatorsresponse ≥ 80 · ≤ 30 days old · trusted by HookitOnly validators Hookit trusts count, none today. Each validation links one wallet, once.
agent_pass_challenge
claim_agent_pass({ "id": "…", "answers": ["…", "…", "…", "…", "…"], "agentId": "4480" })
buy_token({ "token": "0x…", "amount": "0.01" })- The operating wallet signs everything and pays the gas: hookit sends no transaction.
- If this wallet also owns the identity, hookit-mcp sends the request and validate. Otherwise it links the wallet without publishing, and the owner can publish later.
- Hookit can revoke a wallet that abused a validation, and can unplug ERC-8004 agents from every gate at once; Agent Passes are not affected.
- A validation proves that a wallet passed the agent check, not that no human is behind it.
0x7A9365784b438D327D468b717dd644fd0fB09fa70x7274e874CA62410a93Bd8bf61c69d8045E399c020x891C2a0039F3D24Ae273d5b4B3179A34108a6f4cAgent fees
The creator earns 60% of the 1% base fee on every swap. By default that is the launching wallet. With payout, it goes elsewhere through the CreatorPayoutRouter.
- Sender (default)
- The agent's wallet is the creator. claim_fees collects from the FeeEscrow.
- Another wallet
- A per-launch payout agent becomes the creator. Anyone can push the fees to that wallet.
- X / GitHub / TikTok
- Fees accrue to the account. Its owner signs in with that account on hookit and claims them to any wallet.
- The launching wallet stays in control and can re-point the target later. Each target keeps what it earned before the switch.
- A social claim needs a signature from the hookit attester, given only after the owner signs in with that account. A forged or expired signature is refused on-chain.
0xAB0BD6bCaF33c90C1ecbc28941D40951E54E35890x04121a9E0120FA5253C76B87dB1D3Af5fE350e90Limits & safety
- Launch fee
- Every launch pays the on-chain launch fee in ETH, plus gas. Spamming coins costs money.
- prepare-launch
- 50 calls per hour per IP. A launch uses one or two.
- Handle lookups
- 10 per hour per IP when payout names an @handle. Pass payout.accountId to skip them.
- Agent Pass
- 20 challenges per hour per IP and 10 per wallet, 30 answers per hour per IP. One try per challenge.
- Over the limit
- HTTP 429 with a retry-after header.
Tokenomics
$HKT
$HKT is the protocol token. Hold it and you are exposed to every token that trades on hookit, not as a promise, as a mandatory on-chain split of the 1% base fee.
The $HKT pool
$HKT is itself a Uniswap v4 hooked token on hookit: 0xcf010BA185Fd6ee6027b141e2C32614D673f8258, Master launchId 2, paired with ETH. MasterLaunchHook runs Anti-MEV, Anti-Snipe (60s), Creator → Hook, Auto-Burn, and Deepen LPs. Creator → Hook sends the 60% creator cut of the 1% into the hook pot. The hook pot is 80% Auto-Burn and 20% Deepen LPs, so fees taken on $HKT swaps burn $HKT too. Separately, 80% of protocol fees from every launch buy $HKT and burn it.
- Anti-MEVone swap / block
- Anti-Snipeopen window tax
- Creator → Hook60% into the pot
- Auto-Burn80% of the pot
- Deepen LPs20% of the pot

Anti-MEV and Anti-Snipe (60s) guard the book. Creator → Hook plus Auto-Burn 80% and Deepen LPs 20% spend the pot into this token. Protocol buyback from every other launch burns $HKT too.
The thesis
We believe holders should receive dividends the way equity does in the real world. On hookit those dividends are the memecoins people launch. The thesis is simple: hold one, get all.
We believe the protocol token of the dapp should receive every token on the dapp, without exception. This is not airdropped supply to pad bags or dodge dumps. Fees and volume fund it. More volume, more dollars for $HKT holders.
Every Master and graduated Classic swap pays a 1% quote fee. 10% of that 1% (0.10% of the trade) is mandatory, not a module, not a toggle, not a special case. It buys the launched memecoin, the ticker on that pool, and HktHolderDropVault epoch-pushes those tokens to live $HKT holders, pro-rata.
Every trade
$HKTHold one, get all.
$HKTHold one, get all.LP and protocol sinks are excluded so they do not eat the drop. More $HKT, larger slice.
- You do not receive $HKT from this flow. You receive the other tokens.
- Hold 1 $HKT and you get a slice of every launch that prints volume.
- Hold more $HKT and your slice of every drop is larger.
- Weights are live balances, not a launch-day snapshot.
- LP, factory, and protocol sinks are excluded so they do not eat the drop.
Token
| Field | Value |
|---|---|
| Ticker | $HKT |
| Status | Live on Ink |
| Network | Ink |
| Chain ID | 57073 |
| Supply | 1,000,000,000 |
| Decimals | 18 |
| Standard | Uniswap v4 hooked Master |
| Token contract | 0xcf010BA185Fd6ee6027b141e2C32614D673f8258 |
| Pool | Uniswap v4 · MasterLaunchHook |
| Modules | Anti-MEV, Anti-Snipe 60s, Creator → Hook, Auto-Burn 80%, Deepen LPs 20% |
Tokenomics
- Role
- Fair-launched Uniswap v4 hooked token of the pad. Modules: Anti-MEV, Anti-Snipe 60s, Creator → Hook, Auto-Burn 80%, Deepen LPs 20%. Fees taken on the $HKT pool burn $HKT.
- Holder cut
- Mandatory. 10% of every 1% base fee, on every hooked pool. Not a module. Not optional. You cannot launch without it.
- Buyback
- 80% of the protocol’s 30% (24 bps of volume) routes to native-token buyback. ETH stays ETH. wStock → USDG on Quotrons first.
- Payout
- Batched each epoch (default 5 minutes, 48 holders per push). Never paid inside the swap itself.
dropV · 1% · 10%Quote volume of a pool × base fee × holder share. Spent on that pool’s token.
share_ibal_i($HKT) / Σ bal($HKT)After exclusions. Same weight applies to every launch token in the vault.
Not the Holder Airdrop module
| $HKT drop (mandatory) | Holder Airdrop (optional module) | |
|---|---|---|
| Who gets paid | Live $HKT holders | Holders of that launched token |
| What they get | The launched token | Quote (ETH / USDG / wStock) |
| Funded by | 10% of the 1% base | A % of the hook-tax pot |
| Toggle | None, baked into the 1% base | Packed at launch |
How the drop actually fires
- The hook credits HktHolderDropVault on each swap (0.10% of quote, spent on that pool’s token).
- tryPush runs on a later swap once the epoch is ready. Max 48 $HKT holders per batch.
- $HKT does not auto-list holders on transfer. A keeper syncs balances from Transfer logs / the indexer, then calls syncHolders + tryPush.
- LP, factory, vault, and protocol sinks are excluded so they do not eat the drop.
- Protocol 80% buyback is separate: ProtocolRevenueDistributor → HkitBuyback.execute, which buys $HKT and burns it. Not inside the swap.
Reference
For developers
Everything on the site can be rebuilt from public chain data. The indexer is a convenience layer and can lag. Prefer same-origin /api/indexer on hookit.fun so CORS stays on the server.
- /health
Head, lag, last poll error
- /v1/tokens
Catalog + markets[] + 24h windows
- /trades · /candles
House tape. 5m default, 1m available
Indexer HTTP
GET /health
GET /v1/protocol/stats
GET /v1/tokens
GET /v1/tokens/:address?poolId=
GET /v1/tokens/:address/trades?limit=50&offset=0&poolId=
GET /v1/tokens/:address/holders?limit=50
GET /v1/tokens/:address/candles?limit=200&poolId=&interval=1m|5m|10m|15m|1h- Token summary includes markets[], marketCount, bondingPhase, realQuote, graduationQuote, hookModules, windows (5m/1h/6h/24h), and devBuy*.
- Candles default 5m. Pass interval=1m, 10m, 15m, or 1h. Empty buckets forward-fill the last close. Chart is mcap-based and scoped to poolId.
- /health exposes head, lagBlocks, lastPollError.
- On-chain: TokenLaunched, PoolManager Swap, bonding Bought / Sold / Graduated, StateView.getSlot0, LaunchToken.metadataURI.
Network
hookit runs on Ink. Your wallet must match the app chain (Ink).
- Network
- Ink
- Chain ID
- 57073
- Gas
- ETH
- RPC
- https://rpc-gel.inkonchain.com
- Explorer
- https://explorer.inkonchain.com
- Supply
- 1,000,000,000 (both rails)
- Master start FDV
- ~$5,000
- Classic graduate
- ~4.2 ETH equivalent
- Quotes
- ETH, USDG, kBTC, Quotrons wStocks
- Site
- https://www.hookit.fun
Contracts
Addresses the UI hardcodes for this build. They win over a stale deploy/ink/addresses.json. Vaults are not listed here, read them from the hook: floorVault(), feeEscrow(), buybackVault(), holderAirdropVault(), hktDropVault(). Old factories stay on-chain and their coins keep trading. All contracts are verified on the Ink explorer.
Vault addresses come from floorVault(), feeEscrow(), hktDropVault(), …
0x145c3F3560c23fDA93eA79f2EfeB7f33D8A9Ff3e0x5A1eb6820e55039f5DF55A843c892E895A92E09B0x34BD9dEC982167036a12DDf6ED2e7D71d5113dD60xb099176151Ecde2E194CCa23E491413f789D1Cb70xA5f1254D2abF4e3F8D486FeadEF2ad64F2b58b360xaf9AA3268aa4fCc2a71cE82a24cf717b9E8746E00x141038d294E8752f3eaFF3C789bB824D56e872300xB88be89e04B6bCB864B2AdA4F3294c69BAaA1A440xcf010BA185Fd6ee6027b141e2C32614D673f82580x4b533C432516FC1Be4b0bAEFe6BFF0942AD87FfF0x95Ede2c94c23c044C146454e1b0088095f9502960x91f1622D49a09Ce2904E8f98650393eB3dAA24700xA9e9347175B1d128478D0DdA475dE5a11C33DBB40x34D6C456A31d50829Ca572D019E1E3410A5D05E30x6518b4b2D77F8351F8cE7C9BA1ca7E6D8631D2100x9d1C8384fdAf2597C41FA2af0c2f16049CaF550C0x52924fDe10Dc47C25932770a39c059a73Fd422C20xA242FFA9b4fAf5c773bd0a8201b2B5dd9083D6C00x360E68faCcca8cA495c1B759Fd9EEe466db9FB320x76Fd297e2D437cd7f76d50F01AfE6160f86e99900x3972C00f7ed4885e145823eb7C655375d275A1C50x112908daC86e20e7241B0927479Ea3Bf935d1fa00xe343167631d89B6Ffc58B88d6b7fB0228795491DLaunchFactory.ethUsdFeed()Onchain events
Index from the factory deploy block. Paginate getLogs, public RPCs time out on wide ranges.
- Launch
TokenLaunched · MarketLaunched · Graduated
- Trade
PoolManager.Swap · Bought / Sold
- Flywheel
HktHolderDropVault.Dropped · BuybackBurned
- LaunchFactory.TokenLaunched, Master (or custom hook) launch.
- LaunchFactory.MultiLaunchConfigured / MarketLaunched, multi-pair.
- BondingLaunchFactory.TokenLaunched / Bought / Sold / Graduated.
- PoolManager.Swap, Master and graduated Classic trades.
- HktHolderDropVault.Credited / Dropped, $HKT holder drop.
- HkitBuyback.BuybackBurned, protocol $HKT burn.
- FloorVault.Deposited / Redeemed.
- GraduatedFeeHook.FeesAccrued / Swept, Classic creator fees.
- FeeEscrow.Claimed, creator pull.
import { createPublicClient, http, parseAbiItem } from "viem";
const client = createPublicClient({
chain: { id: 57073, name: "Ink", nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 }, rpcUrls: { default: { http: ["https://rpc-gel.inkonchain.com"] } } },
transport: http(),
});
const launches = await client.getLogs({
address: "0x145c3F3560c23fDA93eA79f2EfeB7f33D8A9Ff3e",
event: parseAbiItem(
"event TokenLaunched(uint256 indexed launchId, address indexed token, address indexed creator, bytes32 poolId, address hooks, bool customHook)",
),
fromBlock: "earliest",
toBlock: "latest",
});Reading token state
Each launch has a numeric launchId. From there: token, pool, creator, bitmask, quote asset.
launchId
Token, pool, creator, quote.
bitmask
Modules + tax + caps.
vestPacked
Buyback plan · airdrop plan.
import { parseAbi } from "viem";
const factoryAbi = parseAbi([
"function getLaunchPage(uint256 startId, uint256 limit) view returns ((address token, address creator, address hooks, bool customHook, bytes32 poolId, int24 tickLower, int24 tickUpper, uint128 liquidity)[], uint256[] bitmasks, uint64[] timestamps, uint256 total)",
"function launchQuote(uint256 launchId) view returns (address)",
"function launchedAt(uint256 launchId) view returns (uint64)",
]);
const [page, bitmasks, timestamps, total] = await client.readContract({
address: factory,
abi: factoryAbi,
functionName: "getLaunchPage",
args: [1n, 50n],
});Unpack the bitmask for modules. vestPacked is a separate uint256 (low 128 = buyback plan, high 128 = airdrop plan). metadataURI holds image and socials. Charts and holder ranks need the indexer or your own Transfer scan.
bit 0 ANTI_SNIPE
bit 1 BACKED_FLOOR
bit 2 ANTI_MEV
bit 3 MAX_TX
bit 4 HOOK_TO_CREATOR
bit 5 DYNAMIC_FEES
bit 6 BUYBACK_VESTING
bits 7-22 hookTaxBps
bits 23-38 antiSnipeDurationSeconds
bits 39-54 maxTxBps
bits 55-70 hookToCreatorBps
bits 71-94 floorAllocationBps
bits 95-110 initialSnipeTaxBps
bit 111 AUTO_BURN
bit 112 DEEPEN_LPS
bits 113-128 autoBurnBps
bits 129-144 deepenLpsBps
bit 145 HOLDER_AIRDROP
bits 146-161 holderAirdropBps
bit 162 CREATOR_SHARE_TO_HOOK
bits 163-194 buybackVestingDurationSeconds
bits 195-210 dynamicFeeMinTotalBps
bits 212-227 dynamicFeeDepthSaturationBps
bits 228-259 holderAirdropEpochSecondsPricing
Master / graduated spot is sqrtPriceX96. Classic pre-graduation is virtual reserves. USD multiplies by the chain feed.
- sqrtPriceX96
StateView.getSlot0
- P quote / token
(√P / 2⁹⁶)²
- × 1B
Fixed supply
- × FX
ETH/USD or wStock
- FDV
USD print
Classic on the curve uses virtual reserves instead of sqrtPriceX96.
const [sqrtPriceX96] = await client.readContract({
address: stateView,
abi: parseAbi(["function getSlot0(bytes32 poolId) view returns (uint160 sqrtPriceX96, int24 tick, uint24 protocolFee, uint24 lpFee)"]),
functionName: "getSlot0",
args: [poolId],
});
const ratio = Number(sqrtPriceX96) / 2 ** 96;
const priceQuotePerToken = tokenIsCurrency0 ? ratio * ratio : 1 / (ratio * ratio);Floor: FloorVault.floorPriceX18(token). UI liquidity is TVL in USD, not raw Uniswap L. Ink ETH/USD is a guarded WETH/USDt0 Uniswap v3 30-minute TWAP (max observation age 1 hour).
Risks
Tokens are user-created. hookit does not vet tickers, teams, or hook combinations.
Zero
Most tickers go to nothing.
Copycats
Verify the contract every time.
Thin book
Printed price is not an exit.
- You can lose everything. Prices are violent and many tokens go to zero.
- Copycat names, logos, and socials are normal. Check the contract every time.
- Contracts may have bugs. Not every configuration is audited.
- Custom hooks can honeypot, tax, or block sells.
- Low liquidity means the printed price is not an exit.
- RPC, wallet, and indexer outages show stale or empty UI.
- Explore flags original vs copycat tickers. A green OG badge is not a vet.
Terms
Full terms and privacy live on /terms and /privacy. Short version: software only, no custody, no advice, no refunds.
No custody
The site never holds keys.
No advice
Not a listing or a vet.
No refunds
Launch fee and gas stay spent.
- Brand: hookit (hookit.fun).
- On-chain data is public. You are responsible for how you use it.



