Programmable tokens · Solana · Token-2022

HOOKWAY

One route through
every hook.

Launch, inspect, simulate and execute programmable tokens without making users understand the machinery underneath them.

Respects every hook's rules. Finds the valid path — never bypasses one.

balance limitRoute Amissing accountRoute Bvenue incompatibleRoute CWALLETHOOKWAY● EXECUTED
The problem

Programmable tokens have a compatibility problem.

×

Extra accounts

A hooked transfer can need validation PDAs, config and per-wallet state. Miss one and the transfer fails.

×

Program state

Hooks read balances, allowlists, clocks and counters. Your wallet can't see those rules.

×

Special construction

Venues must forward hook accounts in the right order. Many can't.

×

Unreadable failures

“Simulation failed” isn't an explanation. Users deserve the actual rule.

Your wallet shouldn't have to understand every hook. That's our job.

How it routes

From intent to execution, every hook accounted for.

The trade interface stays simpler than the system underneath it. Open the advanced panel any time to see every account, step and check.

  1. 01User intent

    Swap, send or launch. Nothing else is asked of the user.

  2. 02Token inspection

    Mint, program, Token-2022 extensions, authorities.

  3. 03Hook discovery

    TransferHook extension → hook program ID → upgradeability.

  4. 04Account resolution

    Validation PDA → ExtraAccountMetaList → seeds → addresses.

  5. 05Policy understanding

    Manifest + adapter turn the hook's rules into plain English.

  6. 06Simulation

    Every candidate route is simulated before it is shown.

  7. 07Valid route

    Only routes the hook permits. Blocked routes say why.

  8. 08Transaction construction

    Compute budget, ATAs, venue ix, hook accounts — in order.

  9. 09Execution

    Sign, send, confirm. Re-simulate if state moved.

Simulation before signature

Know the route before you sign. Know why when there isn't one.

Live output of the mock simulator · $GATE (Max Wallet 1%)
Buy 100,000 GATE on Meridian AMM
Simulation48,628 CU
  • ✓Mint inspectedToken-2022 · 3 extensions
  • ✓Hook resolvedMax Wallet 1.2.0 · MaxWoq…
  • ✓Hook program is immutableno upgrade authority
  • ✓Validation account derivedseeds ['extra-account-metas', mint]
  • ✓4 additional accounts resolved
  • ✓Venue compatibleMeridian AMM
  • ✓Wallet permittedMax Wallet adapter
  • ✓Expected output calculated
  • ✓Transaction simulation passed≈ 48,628 CU
READY8 accounts in tx
Buy 202,500 GATE on Meridian AMM
Simulation
  • ✓Mint inspectedToken-2022 · 3 extensions
  • ✓Hook resolvedMax Wallet 1.2.0 · MaxWoq…
  • ✓Hook program is immutableno upgrade authority
  • ✓Validation account derivedseeds ['extra-account-metas', mint]
  • ✓4 additional accounts resolved
  • ✓Venue compatibleMeridian AMM
  • ×Blocked by hookPost-transfer balance exceeds token limit.
BLOCKED BY HOOK
ReasonPost-transfer balance exceeds token limit.
Current balance
0.72%
Expected
1.14%
Token limit
1.00%
Maximum valid amount
134,991 GATE

Reduce the amount to the maximum valid amount or below.

Trust labels

An unknown hook is never a safe hook.

HOOKWAY labels what it can verify and says plainly what it can't. When account resolution, manifest checks or simulation fail, it fails closed — no route, no guess.

Read the security model
  • Verified

    Source verified against the deployed program and manifest reviewed by HOOKWAY.

  • Known

    Recognised program with a published manifest; source not independently verified.

  • Unverified

    No verified source or manifest review. Simulation-only guarantees.

  • Upgradeable

    An upgrade authority can change this hook’s rules at any time.

  • High Risk

    Opaque behaviour, arbitrary CPI, or recent unexplained upgrades.

  • Unsupported

    HOOKWAY cannot resolve this hook’s accounts or simulate it safely. No routes.

For hook developers

Build the hook once.
Route it everywhere.

Describe your hook's accounts, config and error codes in a manifest. HOOKWAY cross-checks it against chain state and makes your token routable and explainable — without every wallet shipping custom code.

Developer docs
// @hookway/sdk
const hw = new Hookway({ connection });

const report = await hw.inspectToken(mint);
const sim    = await hw.simulateTransfer({ mint, from, to, amount });

if (!sim.ok) // “Post-transfer balance exceeds token limit.”
  showError(sim.blocked.reason);
else
  await wallet.send(await hw.buildTransfer(sim));

One route through every hook.