Don't gate the flow. Shape it.

// token standard + launchpad on solana

A weir is a low wall across a river. It doesn't stop the water. It decides how much goes over.

Weirs tokens run hooks on every transfer, mint, burn and swap. A hook answers with an amount: take a cut, burn some, keep a note, set the fee. The token program applies the answer itself, so nobody needs your signature to enforce the rules. Weirs isn't Token-2022 or SPL. It's a separate program built around hooks from day one.

weirs@solana: ~
live on weirsdemo data
launches
12
volume 24h
$591.3k
paid to holders
63.4 SOL
graduated
2
verdict vs amount

A gate can only open or shut.

A Token-2022 transfer hook runs after the balances have moved and gets one bit of output. A weir runs before, and its output is the transfer.

can it…token-2022 transfer hookweirs hook
change the amount✗ no✓ yes
take cuts to named accounts✗ no✓ up to 3
burn part of a swap✗ no✓ yes
set a swap’s fee✗ no✓ yes
per-holder memory✗ extra account each✓ 64 B in the holding
runs on mint and burn✗ no✓ yes
sees signer and delegate✗ read-only, after the fact✓ yes, before
anatomy of a transfer

Five stops between sender and receiver.

The same path runs for wallet transfers, mints and burns. On the Weirs DEX, pool hooks get the same treatment on every swap and liquidity change.

transfer 1,000 $DAMauto

> call before_hook

Before a single unit moves, the hook gets the full picture: both holdings and their balances, supply, who signed, and whether a delegate is acting. The token program signs the call, so the hook knows it is real.

sender   [≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈] 1000
flowing  [≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈] 1000
launch rules

Pick a preset. Watch the money move.

Every launch on weirs.fun runs through a pool hook. Choose a preset and simulate a trade below. The maths is the same code the programs run, down to the rounding.

ls ./presets
simulate --tradefresh launch, opening price
· you send1 SOL
◆ before hook · creator fee-0.005 SOLcreator
◆ before hook · holder rewards-0.005 SOLholders
· lp fee 0.3%-0.00297 SOLprotocol
· protocol share 25% of rule fees-0.0025 SOLprotocol
· curve0.9845 SOL → 22,197,397
◆ after hook · burn-110,986nobody
✓ you receive22,086,410 tokens

all-in cost 2.04% · ◆ lines are the hook's answer. A Token-2022 transfer hook can't produce any of them.

build your own weir

Presets are the easy part.

If a hook can answer it, you can ship it. A few ideas people keep asking for:

  • + a jackpot pot filled by 0.5% of every trade
  • + a sell cooldown per wallet, kept in hook data
  • + a cut to a charity wallet on every sell
  • + an allowlist phase that ends at a set time
  • + loyalty tiers that unlock as balances grow
// a mint with your own hook, then lock it for good
import { token } from '@weirs/sdk';
import { TOKEN_HOOK_FLAGS as F } from '@weirs/shared';

const create = token.createMint(me, mint, {
  name: 'River', symbol: 'RVR', decimals: 6,
  hookProgram: myHook,
  hookFlags: F.BEFORE_TRANSFER | F.TRANSFER_RETURNS_DELTA,
  hookAuthority: me,
});

const lock = token.setAuthority(me, mint, 'hook', null);
on chain

The programs.

Five programs, one standard. The addresses appear here once this deployment is live.

Token standard
pending deploy
DEX
pending deploy
Launchpad
pending deploy
Rules kit
pending deploy
Bridge
pending deploy

$ weirs launch --rules yours

Your token, your rules, enforced on chain.