Token-2022 · Transfer Hooks

Programmable token rails
DEXs actually welcome.

Lock in the rules. Lock out the rugs. Never your funds.
One audited, open-source transfer-hook engine — attach anti-rug rules to your token with zero code and earn a verifiable Safe Rails ✓ badge wallets and DEXs actually trust, because honeypots are impossible by construction.

No bespoke program to audit. One engine, read once, trust every token.

The unlock

Trust, made transferable

Every hooked token today ships its own unaudited program — so nobody trusts them. Hooklock flips it: thousands of tokens share one audited engine. Audit it once, trust them all.

🛡️

Honeypot-impossible

No buy/sell-asymmetric block exists in the engine, and rule bounds are enforced. A Hooklock token cannot trap holders — and it's provable on-chain.

🔍

Audit once, trust all

One open-source program secures every token. Integrators read a token's rules from a config account — no per-token audit, no hidden logic.

One allowlist = whole ecosystem

A DEX adds our single program id and instantly supports every Hooklock token. Integrating us is one line, and it ships them a trust badge their users want.

No-code builder

Compose your token's rules

Toggle rules, set the mutability tier, and watch the badge + on-chain config update live.

Rules · 3 active

Launch window v1
Restrict transfers for the first minutes — kills snipe bots.
5 min
Max wallet holding v1
Cap how much supply any single wallet can hold.
2% / wallet
Allow / block list v1
Gate transfers by wallet — compliance or bot exclusion.
Velocity cap v1.5
Max % of supply a wallet can move per hour — anti-dump.
5% / hr
Sell cooldown v1.5
Minimum seconds between a wallet's transfers — anti-bot.

Mutability tier

Rules can only be loosened, never tightened. Provable on-chain.

Safe Rails
🟡 One-way-safer
  • Anti-snipe: 5m launch window
  • Anti-whale: 2% max per wallet
  • Anti-dump: 5%/hr velocity cap
🛡️ Sell-block / honeypot: impossible — not a primitive this engine has.
{
  "engine": "hooklock-v1",
  "mint": "<your-token-mint>",
  "mutability": "oneway",
  "honeypot": "impossible",
  "rules": [
    {
      "type": "launch_window",
      "minutes": 5
    },
    {
      "type": "max_wallet_holding",
      "pct": 2
    },
    {
      "type": "velocity_cap",
      "pct_per_hour": 5
    }
  ]
}

Pre-trade simulation (what a DEX sees)

Snipe bot buys at second 0BLOCK · blocked — launch window (5m)
Whale grabs 8% of supplyBLOCK · blocked — max holding 2%
Dev dumps 30% in one minuteBLOCK · blocked — velocity cap 5%/hr
Holder sells 0.3% normallyPASS · allowed — always

Outcomes are knowable before signing — no surprise reverts.

For DEXs & wallets

Supporting us is one line — and a feature for your users

We follow the spl-transfer-hook-interface exactly, so standard clients just work. Read a token's rules, simulate a transfer, and render the badge — all from one SDK.

import { getTokenRules, simulateTransfer } from "@hooklock/sdk";

// Show the badge in your token row
const rules = await getTokenRules(mint);
// -> { tier: "oneway", honeypot: "impossible", rules: [...] }

// Warn the user BEFORE they sign (no failed txns)
const ok = await simulateTransfer({ mint, from, to, amount });
if (!ok.pass) toast(ok.reason); // e.g. "blocked — 15s cooldown"

Allowlist one program

Gate hooks by program? Add our id once → every Hooklock token works.

🔮

No surprise reverts

Simulate the hook client-side and warn users before they sign.

🏷️

Ship a trust badge

Drop-in badge component your users already want to see.