hook it docs
Everything about hook it, in one place.
How to launch, trade, and stay safe on Ink. Plain language — no custody, no hidden steps.
Overview
hook it is a launchpad: anyone can create a token and start trading it on Ink, powered by Uniswap v4. You browse tokens on the marketplace, open a token page for charts and holders, and buy or sell directly from your wallet.
hook it is only an interface. We never hold your ETH, tokens, or stablecoins. Every launch and every trade is a transaction you review and sign in your wallet.
What you can do
- Explore — browse all launches, filter by modules, and see live stats.
- Launch — create your own token in one or two wallet confirmations.
- Trade — swap on the token page with instant or Pro mode.
- Portfolio — see tokens you created or hold, linked to your connected wallet.
Two paths in the app
- Classic (/launch/classic)
- Bonding curve first, then graduation to a Uniswap pool. Similar to pump.fun-style launches. Steady fee is the base 1% only (70% creator / 30% protocol).
- Custom (/launch/custom)
- Master launch: token + Uniswap v4 pool + locked LP in one tx via MasterLaunchHook. Optional hook tax funds modules (anti-snipe, floor, auto-burn, airdrop…) or paste your own hook code.
Both paths mint 1 billion tokens with fixed supply. The launch fee is the same; only the trading setup differs.
How launches work
Launching creates a new ERC-20 token and its trading setup on-chain. What happens depends on whether you pick Master or Classic.
Step by step (creator)
- 01
Connect your wallet
Make sure you are on Ink and have a little ETH for gas plus the launch fee (0.0005 ETH).
- 02
Fill in token info
Name, ticker, description, image, and optional social links. This metadata is stored on-chain. Images can be pinned to IPFS when the server is configured.
- 03
Pick Classic or Custom
Classic opens a bonding curve. Custom deploys a Master launch — modules, quote asset (ETH or stable), or your own hook code.
- 04
Sign the transaction
Your wallet sends the launch. Master deploys token + pool + locked LP in one go. Classic opens the bonding curve. You can optionally buy tokens in the same flow (dev buy).
- 05
Token goes live
Your token appears on Explore and gets its own page with chart, holders, and swap widget.
Custom launch (Master on-chain)
In the app this is /launch/custom. On-chain it uses LaunchFactory + MasterLaunchHook — a single Uniswap v4 hook shared by every Master pool.
- 1 billion tokens are minted (fixed supply, 18 decimals).
- Starting price targets roughly $4,000 fully diluted market cap at launch (converted to ETH or your chosen quote using the chain price feed / Quotrons pool price for wStocks).
- A Uniswap v4 pool is created with LP fee tier 0%. Trading fees are charged by the hook instead (quote-only).
- Liquidity is seeded in a locked price range — the creator cannot remove that LP (anti-rug).
- Trading starts in the same transaction. Buyers and sellers move price like any AMM.
- You pick optional modules at launch (anti-snipe, floor, airdrop, burns…). They are packed into a bitmask and cannot be changed later.
- Quote asset can be ETH, USDG, or a Quotrons wrapped xStock (e.g. wNVDAx) when those markets are seeded on Ink.
What MasterLaunchHook does on every swap
- 01
Before swap
Applies anti-MEV / max-tx / max-wallet checks when enabled. Computes the quote-notional fee (base 1% + hook tax + temporary anti-snipe on buys).
- 02
Take fee in quote
The hook pulls the fee from the quote leg only — never from the memecoin amount as a token tax.
- 03
Route the fee pool
Hook tax (if any) funds Master modules (floor, auto-burn, LP donate, airdrop); leftover hook tax goes to protocol. Base 1% (+ anti-snipe share) always splits 70% creator / 30% protocol — modules never touch that split.
- 04
After swap
Runs pending auto-burn (buy + burn launch token) and LP donate if those modules left a balance to process.
Classic launch — what actually happens
- Same 1 billion supply, but 80% is sold on a bonding curve first; 20% is reserved for liquidity at graduation.
- Early buyers pay increasing prices as the curve fills. Sells are allowed on the curve with fees applied.
- When real quote collected hits ~4.2 ETH (or the stable equivalent), the token graduates automatically.
- After graduation, remaining tokens and collected quote seed a full Uniswap v4 pool with GraduatedFeeHook (same quote-only fee idea as Master).
Trading and pricing
When you buy or sell on a token page, you swap against either the live Uniswap pool (Master or graduated Classic) or the bonding curve (Classic pre-graduation). The price shown is the current on-chain price — not a quote from hook it.
What the numbers on screen mean
- Price
- How much quote (ETH or stable) one token costs right now. Updates every time someone trades.
- Market cap
- Price × total supply, shown in USD when an ETH/USD feed is available. It is a snapshot, not a guarantee you can sell that amount.
- Liquidity
- Roughly how much value sits in the pool near the current price (TVL in USD). Higher usually means smaller price jumps per trade — but thin pools still exist.
- 24h volume
- How much was traded in the last day, from the indexer. Requires the indexer to be running and synced.
- Slippage
- Your tolerance: if the price moves more than this % before your transaction lands, it reverts instead of filling at a worse price.
- Price impact
- How much your specific trade size moves the pool price. Large buys on small pools = high impact.
How to trade
- Connect wallet on the token page.
- Choose buy or sell and enter an amount.
- Instant mode — quick swap with default slippage.
- Pro mode — pick slippage, see estimated receive amount, optionally pay with ETH or a supported stable.
- Every swap pays a trading fee on the quote side (see Fees). Fees are taken in ETH/USDC/etc., never in the memecoin itself.
Limit and stop tabs (Pro mode)
These are price alerts in your browser, not real orders on the blockchain. You set a target price; when spot crosses it, you get a toast notification. You still need to place a market swap yourself. Alerts are stored locally — they do not work if you close the tab or use another device.
Graduation
Graduation only applies to Classic launches. Master launches skip this — they have a pool from day one.
The bonding phase
While a Classic token is on the curve, buys increase the price along a fixed formula. Part of each trade is kept as fees; the rest grows the quote reserve. The progress bar on the token page shows how close the launch is to graduating.
When does it graduate?
Automatically when the curve collects about 4.2 ETH worth of real quote (or the same USD value if you launched against USDC/USDG). No button to press — the next trade that crosses the threshold triggers graduation in the same flow.
What changes after graduation
- Trading moves from the bonding contract to a normal Uniswap v4 pool.
- Leftover tokens (20% of supply) plus collected quote become locked liquidity in that pool.
- Fees switch to the graduated fee hook — same base 1% quote-only fee, 70/30 creator/protocol (no hook tax on Classic).
- The token page chart and swap widget automatically use the new pool.
Fees and flywheel
Every buy and sell pays a trading fee. Fees are always taken from the quote asset (ETH, USDC, USDG, wStock, etc.) — you never pay fees in the launched memecoin itself.
Steady fee (every Master / graduated swap)
- Base fee (1%)
- Always on. Always splits 70% creator / 30% protocol. Creators can optionally route their 70% into the hook pot (“Creator → hook”).
- Hook tax (optional, Master)
- Extra permanent fee (0–9% so base + tax ≤ 10%). Replaces the old creator tax: this cut funds Master modules (floor / burn / donate / airdrop). Unallocated → protocol.
- Anti-snipe (optional, Master)
- Temporary extra fee on buys only, decaying to 0 over the launch window. Stacked on top of base + hook tax at open; its share follows the base 70/30 split.
How MasterLaunchHook splits the fee
- 01
Peel hook tax
If hook tax is set, that fraction of the fee pot goes into the hook pot for modules (leftover → protocol).
- 02
Optional: creator → hook
If enabled, the creator’s 70% of the base also joins the hook pot instead of FeeEscrow. Protocol still keeps its 30% of the base.
- 03
Module cuts
Of the hook pot (hook tax ± creator share), optional % go to floor, auto-burn, LP donate, and/or holder airdrop. Together ≤ 100%. Needs hook tax and/or creator→hook when any sink is on.
- 04
Base → creator / protocol
Unless creator→hook is on, the base (+ anti-snipe) portion splits 70% creator / 30% protocol as usual.
- Creator share (70% of base only) → FeeEscrow (claim on the token page), or BuybackVault if buyback-vesting is on, or HKIT buyback pot for the protocol native token.
- Protocol share → ProtocolRevenueDistributor: 20% ops / 80% flywheel, plus any unallocated hook tax.
- Classic launches: base 1% only (no hook tax / Master modules).
- wStock protocol fees can be converted to USDG via Quotrons pools before buyback routing.
Example
Trade pays 1% base + 2% hook tax. Creator sets auto-burn 50% and floor 50% of the hook tax. Then 2% of the trade funds those sinks 50/50. The 1% base still splits 70/30 creator/protocol.
Launch fee
Creating a token costs 0.0005 ETH (plus gas) paid to the factory. Separate from trading fees; not refundable.
Stats page honesty
Protocol stats show live launch count, TVL, and indexer volume where available. Buyback and burn history only appear when those events are actually indexed — we do not fabricate lists.
Master hook modules
MasterLaunchHook is the shared Uniswap v4 hook for every Custom/Master launch. Modules are optional rules packed into a uint256 bitmask at creation. You pick them in Launch Custom or Builder. Once the token is live, the bitmask cannot change.
Anti-snipe
Adds a high extra fee on buys right after launch. You set duration (seconds) and initial tax %. The tax decays linearly to zero over that window. Goal: make same-block snipes and instant dumps expensive for bots.
Anti-MEV cooldown
One swap per wallet origin (tx.origin) per pool per block. A second swap from the same origin in the same block reverts. Reduces classic sandwich legs; not a private mempool.
Max trade / max wallet
Max trade caps how large a single swap can be as a % of total supply. Max wallet caps how many tokens one address can hold after a buy. Both are optional and set at launch.
Hook tax
Permanent extra quote fee on every swap. That slice funds Master modules (floor, auto-burn, LP donate, holder airdrop). Unallocated hook tax goes to the protocol. The creator’s take stays the 70% of the separate 1% base fee.
Backed floor
Routes a % of the hook-tax pot into FloorVault as quote collateral. Holders can redeem launch tokens for quote at the floor price. The floor ratchets up and never decreases. See the Backed floor section for redeem details.
Auto-burn
Routes a % of the hook-tax pot to buy the launched token from its own pool, then burns those tokens (LaunchToken.burn). The quote is spent; the memecoin supply shrinks. If the nested buy fails, the cut falls back to the floor vault.
LP donate
Routes a % of the hook-tax pot as a Uniswap v4 donate into the pool (extra quote for in-range LPs). If the pool has no in-range liquidity yet, or donate fails, the cut falls back to the floor vault.
Holder airdrop
Routes a % of the hook pot into HolderAirdropVault (still in quote — ETH, USDG, or wStock). Fees accumulate there. Every 15 minutes, once the window is open, a swap on the token can push the pot pro-rata to holders.
- Pro-rata uses each holder’s balance of the launched token.
- System addresses (pool, hook, vaults) are excluded automatically.
- The holder list must cover all circulating balances or the call reverts (keeps the airdrop fair).
- Token page shows pending pot and countdown when the module is on.
- No dedicated keeper bot — the Hookit swap path supplies the holder set from the indexer when the epoch is ready.
Buyback vesting (optional)
When enabled, the creator’s escrowed fee share (70% of base) goes to BuybackVault and vests linearly over the duration you pick (7 days to 5 years). Claim unlocks gradually on the token page.
Custom hooks (advanced)
Instead of MasterLaunchHook modules, developers can paste their own Uniswap v4 hook Solidity. hook it compiles it, mines a CREATE2 address with the required permission flags, and deploys from your wallet. Custom hooks are not reviewed by hook it — read the code or treat the token as high risk.
Explore lists which modules each token uses and live usage counts — popularity is not a safety signal.
Backed floor
Backed floor is a MasterLaunchHook module. A percentage of each swap’s hook-tax pot (set at launch) is deposited into FloorVault for that token only.
Floor price
Floor price = vault quote balance ÷ token total supply. It is the redeem rate: how much quote you get per token if you redeem through the vault. New fee deposits can raise the floor. Redemptions use rounding that never lets the floor decrease for remaining holders.
Redeeming
On the token page (when the module is on and the vault has reserves), holders send launch tokens to the vault. Tokens are burned; you receive quote at the current floor. This is separate from selling on the open market. Redeeming large amounts lowers vault reserves for everyone left.
Floor vs market price
- Market price can trade above or below the floor.
- Low volume → slow floor growth.
- Empty vault → redeem is useless until fees refill it.
- Failed auto-burn / LP donate cuts can also land in the floor vault as fallback.
- Classic launches do not include backed floor unless you use a custom setup after graduation.
Reference
For developers and integrators
Everything hook it displays can be rebuilt from public blockchain data. The app uses factory contracts, Uniswap v4 pools, and an optional indexer for charts and history.
- Launches — read TokenLaunched events from LaunchFactory (Master) or BondingLaunchFactory (Classic).
- Trades — read Swap events from the Uniswap v4 PoolManager for each pool.
- Live price — read pool state via StateView (sqrtPriceX96) or simulate swaps via the V4 Quoter.
- Metadata — each LaunchToken exposes metadataURI (JSON with name, image, links).
- Indexer — optional HTTP API for candles, recent trades, and holder lists (see INDEXER_URL in env).
On-chain events are the source of truth. The indexer is a convenience layer and may lag or be offline on testnet.
Network
hook it deploys on Ink today. Production targets Ink (chain ID 57073); integration and testing use Base Sepolia (84532). Your wallet must match the chain the app is configured for.
- Active network
- Ink
- Chain ID
- 57073
- Gas token
- ETH
- Public RPC
- https://rpc-gel.inkonchain.com
- Token supply
- 1,000,000,000 (1 billion) on both Master and Classic
- Starting mcap target (Master)
- ~$4,000 at launch
- Graduation target (Classic)
- ~4.2 ETH equivalent
- Quote assets
- ETH, USDG, and supported Quotrons
Contracts
Hook-specific addresses (LaunchFactory, BondingLaunchFactory, swap router) come from your environment variables. Below are the shared Uniswap v4 core contracts on the active chain — the same infrastructure every v4 pool uses.
0x360E68faCcca8cA495c1B759Fd9EEe466db9FB320x76Fd297e2D437cd7f76d50F01AfE6160f86e99900x3972C00f7ed4885e145823eb7C655375d275A1C50x112908daC86e20e7241B0927479Ea3Bf935d1fa00xe343167631d89B6Ffc58B88d6b7fB0228795491D0xe5867B1d421f0b52697F16e2ac437e87d66D5fbFOnchain events
To build your own explorer or bot, index these events from the deployment block forward. Wide getLogs ranges on public RPCs often timeout — paginate in chunks.
- LaunchFactory.TokenLaunched — new Master (or custom hook) launch.
- BondingLaunchFactory.TokenLaunched / Bought / Sold / Graduated — Classic lifecycle.
- PoolManager.Swap — every pool trade after graduation or on Master.
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: process.env.NEXT_PUBLIC_LAUNCH_FACTORY,
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 gets a numeric launchId on the factory. From there you can load the token address, pool, creator, module bitmask, and quote asset — all on-chain.
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],
});The bitmask unpacks into human-readable modules (anti-snipe, floor, etc.). Token metadata lives in metadataURI on the ERC-20. Charts and holder rankings need the indexer unless you compute them yourself from Transfer events.
Pricing and floor
Spot price on Master or graduated pools comes from the pool's sqrtPriceX96 (Uniswap v4 math). Classic bonding price comes from the curve reserves. USD values multiply by the chain ETH/USD oracle when available.
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);Backed floor: call FloorVault.floorPriceX18(token) for the redeem price. UI liquidity is TVL in USD (both sides of the pool), which is easier to interpret than raw Uniswap liquidity units.
Risk disclosures
Tokens on hook it are created by users, not vetted by us. Treat every launch as high risk until you have done your own research.
- You can lose all money you spend — prices are volatile and many tokens go to zero.
- Copycat names, logos, and social links are common. Verify the contract address every time.
- Smart contracts may contain bugs. hook it and Uniswap v4 code are not fully audited for all configurations.
- Custom hooks can include malicious logic (honeypots, hidden taxes, blocked sells).
- Low liquidity means you may not be able to sell at the price shown.
- RPC, wallet, and indexer outages can break the UI or show stale data.
- Limit/stop alerts are not guaranteed — they depend on your browser staying open.
- Testnet tokens have no real value; mainnet launches involve real funds.
hook it provides software tools only. We do not endorse any token, creator, or module combination.
Support
hook it is early-stage software. The fastest way to report bugs or ask integration questions is GitHub Issues on the public repository.
Repository: https://github.com/deadpouule/hookit
Include your chain, token address, transaction hash, and wallet type when reporting swap or launch failures — it speeds up debugging.
Terms and attribution
Onchain data is public and free to read. You are responsible for how you use it. hook it is provided as is, without warranties.
- Write the name in lowercase: hook it.
- Do not imply partnership, endorsement, or audited status without written agreement.
- Do not present third-party services as operated by hook it.
- Availability of interfaces and public infrastructure is not guaranteed.