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.

Every swap feeds $HKT

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.

Two launch rails

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.

Protocol stack
  1. App

    hookit.fun: marketplace, launch wizard, token desk

  2. Router

    HookitSwapRouter and BalancedAggregator: hooked swaps, USDG multi-pair splits.

  3. Hook

    MasterLaunchHook / GraduatedFeeHook: quote-only fees + modules

  4. Pool

    Uniswap v4 PoolManager: hooked pool, locked liquidity

  5. 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.

Master Launch Studio, step by step
  1. 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 token
    1 / 6 Token & pair

    Token details

    Pair · ETH
  2. Step 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 token
    2 / 6 Protection

    Protection

    • Anti-MEV
    • Anti-Snipe
    • Max Tx
  3. 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 token
    3 / 6 Tokenomics

    Tokenomics

    • Holder Airdrop
    • Auto-Burn
    • Backed Floor
    • Buyback Vesting
    • Deepen LPs
    • Hook → Creator
  4. 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 token
    4 / 6 Trading fees

    Trading fees

    • Dynamic Fees
    • Creator → Hook
    • Fixed Fees
  5. 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 token
    5 / 6 Fee split

    Fee split

    Auto-Burn 80%Deepen LPs 20%
  6. 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 token
    6 / 6 Review & launch

    Review & 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.

Master swap lifecycle

One unlock

Fee is never a memecoin tax. Modules spend the pot in afterSwap. The 1% split never changes.

Classic

Classic quote pairs
  • 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).

One token, many quote pools
Multi-pair

$TICKER

USDG40% pool
wAAPLx30% pool
wNVDAx30% pool

Supply 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.
One USDG payment, many markets
USDG inexact inputAggregatorone unlockwNFLX legwNVDA legUSDG legStock legs bridge Quotrons wStock/USDGbefore the hook swap.

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.

Launch against wrapped equities
Powered by Quotrons
wAAPLxApple
wGOOGLxAlphabet
wMSTRxStrategy
wNVDAxNVIDIA
wSPYxS&P 500 ETF
wTSLAxTesla

wStock 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.

Hookit × Quotrons flywheel

Every composite trade

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.

Where the venue fee goes

Every hop

Venue feeLive take in USDG. 0.30% at writing.
Split 50 / 50Onchain. No custody. Same fee buy or sell.
LP vaultPer-pool. Claimable in USDG.
Terminal potVenue-wide. Quiet books ride busy ones.
Epochs → terminals$250 min, $10,000 cap. Ten hardwired floors.

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.

From USDT0 to 3x NVDA
  1. USDT0 or ETH

    ETH is swapped to USDT0 by Relay

  2. Vault queue

    Settled at NAV in ~2 min

  3. NVDA-PERP on Nado

    3x long, rebalanced 24/7

  4. $hNVDAx3L

    Hold it or pair your coin with it

Every request settles at the on-chain NAV. No AMM, no spread.

RuleWhat it means
BuyPay 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).
SellQueue your hNVDAx3L. You are paid in USDT0.
SettlementEvery 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.
Fees0.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.
LeverageTarget 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.
ReserveAbout 2% of the NAV stays in the vault as USDT0; the rest is collateral on Nado.
CapThe vault takes deposits up to its TVL cap (10,000 USDT0 at launch). A buy above the room left is refused.
Keeper goneIf no settlement lands for 24 h, queued requests can be cancelled and anyone may settle at the on-chain NAV.
RegionBuying is closed in Nado's restricted territories, the United States and Canada. Selling stays open everywhere.
NAV
  • NAVNAV = Nado account value + USDT0 idle in the vault

    Nado's account value includes the open position's PnL and funding.

  • priceNAV per share = NAV / hNVDAx3L supply
  • leverageL = NVDA position × NVDA price / NAV

    Rebalanced back to the target when it leaves 2.74x–3.35x.

  • buyshares = assets × (1 − 0.2%) × supply / NAV
  • sellpaid = 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.
hNVDAx3L (LeverageVaultC)The token and its vault
0xC0aF15b3eB4A13a47a13CC9d455DDAa353FA8271
hNVDAx3L NAV feedNAV per share, 18 decimals
0x7C0A32d7c9A3e91c51fD98d4112a2e968DfC1D6B

Trading

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.

Hooked swap path
  1. Wallet

    Sign buy or sell

  2. HookitSwapRouter

    Keeps hook accounting

  3. v4 pool

    1% quote fee

  4. 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.

Why the hookit router
WalletGeneric DEXSkip / revert
WalletHookitSwapRouterFees + modules

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.

Classic bonding → graduation
price4.2 ETH-eqtokens sold (80%)

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.

Where the 1% goes

Every swap

The 1% always splits 60 / 10 / 30. Hook tax never uses that split. It fills the pot, then modules.

1% base fee, 60 / 10 / 30
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.

SliceQuoteWhere it goes
Base 1%0.010 ETH0.006 creator · 0.001 $HKT drop · 0.003 protocol
Hook tax 2%0.020 ETH0.016 burn buyback · 0.004 FloorVault
Trader pays1.000 ETHReceives 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.

SliceQuoteWhere it goes
Base 1%0.010 ETH0.006 vests (creator cut) · 0.001 $HKT drop · 0.003 protocol
Hook tax 5%0.050 ETH0.050 vests in BuybackVault (100% Hook → Creator)
Total vesting0.056 ETH5.6% of the buy. Claim after the time / FDV unlock.
Trader pays1.000 ETHReceives 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.

Where the creator 60% sits

Every trade

1% baseQuote only. Always on.
Anti-Snipe takeSame 60 / 10 / 30. Temporary.
Creator 60%Packed at launch. One stream.
FeeEscrowDefault. Claim quote on the token page.
BuybackVaultIf vesting is on. Clock or FDV unlock.
Hook potIf Creator → Hook. No creator claim.

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.

Snipe tax decays to zero
t=098%t=5s0%

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.

One origin, one swap, one block
Block Ntx.origin A, buyAllowed
Same blocktx.origin A, sellSandwichBlocked

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.

Single-swap supply cap

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.

Floor only ratchets up
P_floorvolumenever down

Vault quote ÷ circulating. Each swap can lift it. Redeem burns tokens and pays quote. Remaining holders keep the new floor.

  • P_floorV_quote / S_circ

    Quote wei in the vault over circulating token wei. Scaled 1e18 on-chain as floorPriceX18.

  • Redeemq = amount · V_quote / S_circ

    FloorVault.redeemFloor(token, amount). Burns tokens, pays quote, round down. Remaining holders keep a floor that never decreases.

  • Premium(P_spot − P_floor) / P_floor

    Hidden 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.

DurationOne-off fee
7 days1%
14 days1.75%
30 days3%
60 days5%
90 days7%
Borrow the floor, keep the upside
Lock coinscollateralGet floor valuein ETH − feeRepay in timecoins backExpirycoins burned

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.

The book gets thicker
At launchThin waves
After volumeDeeper, larger

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).

Supply burns down
1B at launchAfter burns

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.

Fees sweep the floor, every NFT is raffled or burned
FeesFloor sweepVaultRaffle or burn
  • 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 trading fees to floor NFTs

From launch to NFT

  1. 01LaunchThe creator picks a collection and raffle or burn. Both are final. ETH pair, anti-MEV on.
  2. 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.
  3. 03HarvestAnyone calls harvest(token). Only the NFT share moves into the collection's vault.
  4. 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.

Two exits for every NFT

Picked at launch

Dead address: 0x000000000000000000000000000000000000dEaD. Nobody holds its key.

Vault ruleWhat it means
No withdrawETH only leaves the vault through a sweep. NFTs only leave through a burn to the dead address or a raffle claim.
Keeper-only sweepOnly the keeper can spend. It cannot pick a target: only an allowlisted Seaport is callable.
Floor capSpend ≤ floorCap × NFTs bought. The keeper posts the cap from the OpenSea floor. It expires after 1 hour.
Outcome isolationRaffle credit only buys raffle NFTs and burn credit only buys burn NFTs. One token cannot spend another's ETH.
AttributionEach NFT is tagged with the token that paid the most toward it, up to 4 funders per NFT.
No donationsThe vault rejects plain ETH except the Seaport refund. NFTs sent to it by hand are not tracked.
Auto-Burn share0 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.
How a raffle runs

One NFT, one draw

  1. 01SnapshotHolders of the token. One whole token = one ticket. Pools and contracts left out.
  2. 02Challenge15 minutes for anyone to check the published list against its Merkle root.
  3. 03DrawAnyone calls requestDraw. The hash of a block 5 blocks later picks the winning ticket.
  4. 04ClaimThe winner's ticket and Merkle proof send the NFT straight to their wallet.

More tokens, more tickets: P(win) = your tickets / total tickets.

Checks
  • sweepspent ≤ floorCap × bought

    Checked 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 share

    The 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 tickets

    Tickets are whole tokens held at the snapshot.

  • Octocore
    OctocoreListed on Ink0x2BFD28383996A0717f50819d1A51Bd2Cea6F929d
  • Templars of the Storm
    Templars of the StormListed on Ink0x46625E7de9894D83fca49E79cB53B5C25550cE99
  • PRTSCN
    PRTSCNListed on Ink0x3eA71c6abDE8a1b3CF6E5683761a7378B4e9E448
  • THE 404 MACHINE
    THE 404 MACHINEListed on Ink0xb7C8E0eAd646F0a466cDb5A6305b96997409916c
  • Boink
    BoinkListed on Ink0x3132e1e8C7a46638b2dF26b9252ac5d88D9E04C5
  • WIRED
    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.

Base creator cut and hook tax unlock later
Time vestday 0day 30Until FDV$0$10M

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.

Quote split to holders of that token
pot0.01 ETHyou 2%2%1%…

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 / Σ bal

    Quote 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.

Hook tax paid to the creator

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.

Creator → Hook

Routes the creator’s 60% of the 1% base into the hook pot instead of FeeEscrow. Same module split as hook tax (Hook → Creator / floor / burn / deepen / airdrop).

Creator 60% feeds the hook pot

Example: 1 ETH buy, no hook tax, Creator → Hook on

Base 1%
0.006 ETH to Hook → Creator / floor / burn / deepen / airdrop instead of escrow.
$100k volume
$600 extra in the pot. Creator claims $0.

Nothing to claim as creator fees. $HKT 10% is untouched.

  • Cannot combine with Buyback Vesting.
  • The 1% base is unchanged. Only the creator slice is redirected.
  • A fee sink can run with hook tax = 0 if this module feeds the pot.

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.

Flat extra hook tax
Base 1%, every swap
Hook tax 2%, every swap

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.

Tax ramps with depth eaten
τ_min 1%τ_max 9%

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 / d

    Quote 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) · r

    Added 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.

A dump below the average pays a malus
price4 h averagemalus startsfull malussell paysbuy gets tax back

Malus by drop below the average (3% max shown)

0%−20%−40%3%0
  • Gentlestarts −14%, full at −53%
  • Balancedstarts −10%, full at −33% (default)
  • Strongstarts −5%, full at −18%

Fee cap: 1% base + hook tax + malus ≤ 10%

1%tax 2%malus up to 7%10% cap
  1. Malus

    Paid by the sell, in the coin's quote.

  2. Hook pot

    Split like the hook tax. Needs a 100% destination.

  3. 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.
Velocity Fee
  • 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 − p

    How 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 path
  • a buy gets back≤ hook tax × the part of the buy below the average

    Paid 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.

Every buy hits the boss
Boss #11.00 / 1.00 ETH

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).

RuleWhat it means
DamageThe quote your buy put into the pool, after every fee. A buy under the coin's minimum buy deals none.
Per-wallet capOne wallet deals at most a share of the HP per round (20% by default), so a kill needs several raiders.
Loot chestThe 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 payoutAt most 1.5% of the boss's HP. Whatever is left stays in the chest for the next bosses.
Last hitThe killing blow takes a bonus (10% of the payout by default) on top of its pro-rata share.
Next bossHP × 1.25 by default, up to the ceiling the creator set at launch.
EscapeWith a timeout (1 day by default), a boss nobody kills walks away and the whole chest rolls over to the next one.
Who is creditedThe buyer the router names in hookData (hookit.fun, Relay and the Hookit routers do), otherwise the wallet that signed the transaction.
ClaimWinners claim their loot in the quote whenever they want, from the coin page. Claims work even if the plugin is halted.
AssistsShare 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.
Kill
  • 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 × lastHitBonus
  • your share(P − bonus) × your damage / HP

    Your 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.

RuleWhat it means
AllowlistWallets the creator lists before the launch. The wizard seals up to 500 wallets on chain in one transaction; a sealed list never changes.
CommunitiesUp 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 capOptional, 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 checkedThe 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 onlyAn 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 allowedThe creator (the wallet that launches) and the dev buy.
After the windowNo check at all: the gate never closes again.
Gate
  • openbuys open when t ≥ launch time + window

    The 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 community
  • wallet 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.

The decider steers the fee, the split and the hooks
Fee per swapcap set at launchraise: live after 1 h1% livecap 3%9% maxSplit of the feeno raise: applies at oncelaunch20%80%later60%20%20%burnLPholderscreator ≤ 20%Hook slotsplug or unplug: after 1 hRaidNFT++++++

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.

RuleWhat it means
DeciderThe 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.
FeeEvolve'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.
SplitWhere 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 raisesA 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 reasonsEach decision can carry a short reason, public on chain. The coin page shows it as plain text, without links.
HooksThe 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.
BuysBuys 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 launchOne 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.
LimitsThe 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.
Evolve
  • 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.

The agent writes the rules, Memory applies them in every trade
The agent's ruleup to 8, through hookit-mcpFOR WHOfriends, enemies,holders, flippers…WHENalways, or amarket momentTHENfee, give-back,burn · LP · holdersFOR HOW LONGup to 1 hafter the momentMemory rememberson every trade, without the agentthe marketa sell −5%0x9a…41friend · ≤ 30 days0x3f…c2enemy · ≤ 24 hsolverneutral · a botIn every tradea cut at once, anything else after the noticeextra feeMemory 1%+1% companion+1% companioncap set by the agent, 3% max · each companion takes a slotgive-back ≤ 10%rebate in the sell, or cashbackMemory's share of the feesburnLPholders

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.

What the identities cover
Swap feeDynamic τUniswap spotClassic curve$HKT dropProtocol pot
Swap fee
  • fee_total1% + τ_hook + τ_snipe

    Capped 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 protocol

    Mandatory. Applied to the 1% base and to the snipe take. Hook tax never uses this split.

Dynamic hook tax
  • cn / d

    Quote 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) · r

    No oracle. Empty depth stays at τ_min so a first buy does not 100% revert.

Uniswap spot
  • P(sqrtPriceX96 / 2^96)^2

    Quote per token if the launch token is currency0; invert if it is currency1.

  • FDVP · 10^9 · FX

    FX is ETH/USD TWAP or Quotrons wStock/USDG (USDG ≈ $1).

Classic curve
  • kQ_virt · T_virt

    Virtual 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-eq

    Or the same USD value in USDG / wStock. 20% of supply seeds full-range LP.

$HKT holder drop
  • 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.

Protocol pot
  • ops0.20 · protocol

    Operating wallet.

  • buyback0.80 · protocol

    ETH stays ETH. wStock converts to USDG on Quotrons, then to the buyback wallet.

Agents

AI agents

From a Kraken balance to a live coin, and back
  1. Kraken

    The Kraken MCP withdraws ETH to the agent's wallet on Ink

  2. Agent

    Picks name, pair, preset or modules, dev buy, payout

  3. hookit

    Validates, pins metadata, returns an unsigned tx

  4. Ink

    The agent signs locally. The coin is live with its hooks

  5. 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.

  1. 00

    Fund

    Optional: with the Kraken MCP loaded, the agent withdraws ETH from a Kraken account straight to its wallet on Ink.

  2. 01

    Plan

    The agent picks a preset (clean, community, deflationary, floor, builder, dynamic) or its own module combination.

  3. 02

    Prepare

    hookit validates the combination, pins the metadata, and answers with one unsigned transaction, simulated from the agent's wallet.

  4. 03

    Sign

    The agent signs and sends it on Ink. The key never leaves its machine.

  5. 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 tools
list_presetslist_moduleslist_pairswallet_statuslaunch_tokenclaim_feessend_ethlist_coinscoin_infobuy_tokensell_tokenredeem_floorborrow_against_floorrepay_loanagent_pass_challengeclaim_agent_pass+ Kraken MCP

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.

MCP config
{
  "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.
ToolWhat it does
list_presetsStrategies by goal, with the exact modules each one turns on.
list_modulesEvery hook module, its settings, and the rules a combination must follow.
list_pairsWhat a coin can be priced in: ETH, USDG, kBTC or a tokenized stock.
wallet_statusThe wallet's ETH and USDG, the coins it holds with their value, its open floor loans, and whether it can launch.
launch_tokenLaunches 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_feesCollects the creator fees the wallet earned on coins it launched.
send_ethSends 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_coinsCoins 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_infoOne coin: market data, what it trades in, hooks, Backed Floor, loans, launch gate, and the wallet's balance on it.
buy_tokenBuys 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_tokenSells 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_floorBurns coins for their Backed Floor value from the floor reserve: exact payout, no slippage.
borrow_against_floorLocks coins and borrows their floor value for 7 to 90 days, fee 1% to 7% upfront (v2 coins launched with loans).
repay_loanRepays a floor loan before expiry and gets the coins back.
evolve_statusAn 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_decideAs 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_hooksThe hooks Hookit listed for Evolve coins: what each does with its share, its fee cap, gas and status.
evolve_plugAs the coin's decider: plugs a listed hook into one of 8 slots, replaces or unplugs one, live after the notice.
memory_setAs 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_statusMemory 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_walletWhat 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_pardonAs 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_challengeStarts the agent check for an Agent Pass: five short tasks to answer within 30 seconds.
claim_agent_passSends 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.

Both MCP servers
{
  "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

Two calls, no key on the server
  1. GET /api/agents/catalog

    Presets, modules, pairs, payout targets

  2. 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.
FieldMeaning
name, symbolRequired. Name up to 32 characters, symbol 1 to 12 letters or digits.
image, description, twitter, telegram, websiteOptional token metadata.
pair / pairsOne pair id, or several for a multi-pair launch (USDG and stocks).
presetclean, community, deflationary, floor, builder or dynamic.
modules, hookTaxPctCustom combination instead of (or on top of) a preset. See the catalog.
devBuyPctCreator'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.
fromThe 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.
Example
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.

Two ways through an AI agents only gate
Agent Pass
  1. Agent check

    5 tasks · 30 s

  2. Voucher

    signed by hookit

  3. claim

    sent by the wallet

  4. Pass

    kept, non-transferable

ERC-8004 validated
  1. Identity

    ERC-8004 on Ink

  2. Agent check

    with agentId

  3. validate

    Hookit's 100/100

  4. Agent

    while its wallet runs it

The gate checks the wallet that signs the buy. Sells are never blocked.

  1. 01

    Challenge

    GET /api/agents/pass?wallet=0x… answers with five short tasks and the message to sign.

  2. 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 }.

  3. 03

    Claim

    The answer carries a voucher and claim { to, data }. The wallet sends that transaction itself: the voucher works for no other wallet.

  4. 04

    Buy

    The agent buys from the same wallet, for example with buy_token. The gate checks the wallet that signs the buy.

Agent Pass
  • eligiblebalanceOf(signer) ≥ 1 on HookitAgentPass

    1 for a Hookit Agent Pass holder, else 0.

  • challenge5 tasks · 30 s · one try

    A 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.

With hookit-mcp
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.
HookitAgentPassAgent Pass, read by AI agents only gates
0xe847CCD9EcD9889c39B381C83B33e0251759Cf67

ERC-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.

From an ERC-8004 identity to a buy
  1. Identity

    register() on Ink's ERC-8004 IdentityRegistry. Its agentWallet is the wallet that buys.

  2. Check

    The agentWallet solves Hookit's agent check with its agentId and gets a voucher.

  3. Request

    The identity's owner asks Hookit's validator on the ERC-8004 ValidationRegistry.

  4. Validate

    The agentWallet calls validate: it is linked, and Hookit publishes 100/100 hookit-agent.

  5. 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.

  1. 01

    Identity

    The agent has an ERC-8004 identity on Ink. Its operating wallet (getAgentWallet) is the wallet that will buy.

  2. 02

    Check

    From that wallet: GET /api/agents/pass?wallet=0x…, then POST { id, wallet, answers, signature, agentId } within 30 seconds.

  3. 03

    Request

    The identity's owner sends request: validationRequest on the ERC-8004 ValidationRegistry, addressed to Hookit's validator. Skip it with validateLinkOnly.

  4. 04

    Validate

    The operating wallet sends validate. It counts as an agent, and Hookit's 100/100 hookit-agent response is published.

  5. 05

    Buy

    The agent buys from the same wallet, for example with buy_token.

ERC-8004 agent
  • eligiblelinked(signer) = id and getAgentWallet(id) = signer and not revoked

    The 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 Hookit

    Only validators Hookit trusts count, none today. Each validation links one wallet, once.

With hookit-mcp
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.
HookitAgentValidatorHookit's ERC-8004 validator, read by the Agent Pass
0x7A9365784b438D327D468b717dd644fd0fB09fa7
ERC-8004 IdentityRegistry (Ink)Agent identities and their operating wallets
0x7274e874CA62410a93Bd8bf61c69d8045E399c02
ERC-8004 ValidationRegistry (Ink)Where Hookit publishes its hookit-agent validations
0x891C2a0039F3D24Ae273d5b4B3179A34108a6f4c

Agent fees

Where the creator share goes
DefaultAgent wallet
payout.walletAny wallet
payout.x · github · tiktokAccount owner claims

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.
CreatorPayoutRouterLaunches with a payout target
0xAB0BD6bCaF33c90C1ecbc28941D40951E54E3589
SocialClaimVerifierChecks social claim signatures
0x04121a9E0120FA5253C76B87dB1D3Af5fE350e90

Limits & safety

Per IP, per hour
prepare-launch50
@handle lookups10
Over the limitHTTP 429
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.

$HKT pool: hooks into the token

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.

Hold $HKT, get a slice of every launch

Every trade

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

FieldValue
Ticker$HKT
StatusLive on Ink
NetworkInk
Chain ID57073
Supply1,000,000,000
Decimals18
StandardUniswap v4 hooked Master
Token contract0xcf010BA185Fd6ee6027b141e2C32614D673f8258
PoolUniswap v4 · MasterLaunchHook
ModulesAnti-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 paidLive $HKT holdersHolders of that launched token
What they getThe launched tokenQuote (ETH / USDG / wStock)
Funded by10% of the 1% baseA % of the hook-tax pot
ToggleNone, baked into the 1% basePacked 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.

Same-origin indexer
  1. /health

    Head, lag, last poll error

  2. /v1/tokens

    Catalog + markets[] + 24h windows

  3. /trades · /candles

    House tape. 5m default, 1m available

Indexer HTTP

indexer.hookit.fun
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).

Production chain
ChainInk · 57073
GasETH
QuotesETH · USDG · wStocks
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.

Canonical addresses at launch
LaunchFactoryBondingFactorySwapRouterDistributorHkitBuybackPoolManager

Vault addresses come from floorVault(), feeEscrow(), hktDropVault(), …

LaunchFactoryFactory C: every new launch (hook C + plugins)
0x145c3F3560c23fDA93eA79f2EfeB7f33D8A9Ff3e
LaunchFactoryQueryPaginated launch index
0x5A1eb6820e55039f5DF55A843c892E895A92E09B
BondingLaunchFactoryClassic rail
0x34BD9dEC982167036a12DDf6ED2e7D71d5113dD6
HookitSwapRouterRequired for hooked swaps
0xb099176151Ecde2E194CCa23E491413f789D1Cb7
BalancedAggregatorPAIR-style USDG multi-market splits
0xA5f1254D2abF4e3F8D486FeadEF2ad64F2b58b36
ProtocolRevenueDistributor
0xaf9AA3268aa4fCc2a71cE82a24cf717b9E8746E0
HkitBuybackPermissionless execute → burn $HKT
0x141038d294E8752f3eaFF3C789bB824D56e87230
V4ClaimsRedeemerRedeem Holder Airdrop ERC-6909 claims
0xB88be89e04B6bCB864B2AdA4F3294c69BAaA1A44
Native token$HKT on Ink
0xcf010BA185Fd6ee6027b141e2C32614D673f8258
Generation C: hook C and plugins
MasterLaunchHookCThe hook every Factory C coin trades through
0x4b533C432516FC1Be4b0bAEFe6BFF0942AD87FfF
HookRegistryApproved hooks for Factory C
0x95Ede2c94c23c044C146454e1b0088095f950296
ModuleRegistryOwner-reviewed plugins a creator can pick at launch
0x91f1622D49a09Ce2904E8f98650393eB3dAA2470
FloorLoanPluginLoans against the backed floor, module id 1
0xA9e9347175B1d128478D0DdA475dE5a11C33DBB4
RouteConfigCAggregator and wStock bridge pools for C coins
0x34D6C456A31d50829Ca572D019E1E3410A5D05E3
BalancedAggregatorCMulti-market splits for C coins
0x6518b4b2D77F8351F8cE7C9BA1ca7E6D8631D210
CreatorPayoutRouterCX / GitHub / TikTok creator payouts on Factory C
0x9d1C8384fdAf2597C41FA2af0c2f16049CaF550C
NftSweeperCNFT Strategy on Factory C
0x52924fDe10Dc47C25932770a39c059a73Fd422C2
HookitLensCRead-only views
0xA242FFA9b4fAf5c773bd0a8201b2B5dd9083D6C0
Uniswap v4 on this chain
PoolManager
0x360E68faCcca8cA495c1B759Fd9EEe466db9FB32
StateView
0x76Fd297e2D437cd7f76d50F01AfE6160f86e9990
V4 Quoter
0x3972C00f7ed4885e145823eb7C655375d275A1C5
Universal RouterNot used for hooked Hookit pools
0x112908daC86e20e7241B0927479Ea3Bf935d1fa0
Stable quoteUSDG
0xe343167631d89B6Ffc58B88d6b7fB0228795491D
ETH/USDRead live from the factory; the owner rotates it with setEthUsdFeed
LaunchFactory.ethUsdFeed()

Onchain events

Index from the factory deploy block. Paginate getLogs, public RPCs time out on wide ranges.

Index these logs
  1. Launch

    TokenLaunched · MarketLaunched · Graduated

  2. Trade

    PoolManager.Swap · Bought / Sold

  3. 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.
List Master launches (viem)
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.

Two packed integers

launchId

Token, pool, creator, quote.

bitmask

Modules + tax + caps.

vestPacked

Buyback plan · airdrop plan.

Paginate launches
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.

Bitmask layout (BitmaskConfig)
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 holderAirdropEpochSeconds

Pricing

Master / graduated spot is sqrtPriceX96. Classic pre-graduation is virtual reserves. USD multiplies by the chain feed.

Spot to FDV
  1. sqrtPriceX96

    StateView.getSlot0

  2. P quote / token

    (√P / 2⁹⁶)²

  3. × 1B

    Fixed supply

  4. × FX

    ETH/USD or wStock

  5. FDV

    USD print

Classic on the curve uses virtual reserves instead of sqrtPriceX96.

Read pool price from StateView
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.

Assume the worst print

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.

Software only

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.