Guides

Documentation

Technical reference for the Bonker token factory.

Getting Started

Launching a token on Bonker is one transaction. Fill in a name and a ticker, drop an image, and hit deploy — Bonker sets up the pool, locks the liquidity, and switches on sniper protection for you.

QuickAdvanced

Launch a token

bonker.wtf/launch

Name
Degen Coin
Ticker
$DEGEN
Image
Drag & drop, or generate with AI
Deploy Token

The Quick tab on /launch — three fields is all it takes. Fee tier, reward splits, and launch extensions live one click away under Advanced, off by default. Linked two accounts to your wallet? /launch can deploy for free instead of costing you gas.

What happens after you hit Deploy

1

Token created

Your ERC-20 goes live with the name, ticker, and image you set.

2

Pool goes live

A Uniswap v4 pool initializes so people can start trading immediately.

3

Liquidity locked

LP is locked forever — there's no key that lets anyone rug it.

4

Sniper protection on

Bots pay an early-access auction instead of front-running your first trades.

5

You start earning

Every swap generates LP fees that flow back to you, claimable anytime.

Want more control? Flip the form to Advanced to set your own fee tier, split rewards with a co-creator, or bolt on a vault, dev-buy, or airdrop — see Launch Extensions.
For developers: the raw deployToken() calldata

The form above calls deployToken() with a single DeploymentConfig struct. If you're calling the contract directly, here's the shape:

struct DeploymentConfig {
    TokenConfig tokenConfig;
    PoolConfig poolConfig;
    LockerConfig lockerConfig;
    MevModuleConfig mevModuleConfig;
    ExtensionConfig[] extensionConfigs;
}

TokenConfig

struct TokenConfig {
    address tokenAdmin;          // Admin address for the token
    string name;                 // Token name (e.g. "Bonker Token")
    string symbol;               // Token symbol (e.g. "BONK")
    bytes32 salt;                // CREATE2 salt for deterministic address
    string image;                // Token image URI
    string metadata;             // Additional metadata
    string context;              // Context string
    uint256 originatingChainId;  // Chain ID for cross-chain support
}

PoolConfig

struct PoolConfig {
    address hook;                // DynamicHook or StaticHook address
    address pairedToken;         // Token to pair with (usually WETH)
    int24 tickIfToken0IsBonker;  // Starting tick
    int24 tickSpacing;           // Pool tick spacing
    bytes poolData;              // Hook-specific pool config
}

LockerConfig

struct LockerConfig {
    address locker;              // LpLocker address
    address[] rewardAdmins;      // Admin per reward recipient
    address[] rewardRecipients;  // Who receives LP fees (up to 7)
    uint16[] rewardBps;          // Fee share per recipient (basis points, sum = 10000)
    int24[] tickLower;           // LP position lower ticks
    int24[] tickUpper;           // LP position upper ticks
    uint16[] positionBps;        // Liquidity split per position
    bytes lockerData;            // Additional locker config
}

ExtensionConfig

struct ExtensionConfig {
    address extension;     // Extension contract (or address(0))
    uint256 msgValue;      // ETH to send to extension
    uint16 extensionBps;   // Token supply % for extension (basis points)
    bytes extensionData;   // Extension-specific config
}

Full field reference plus a working viem example: SDK Integration.