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.
Launch a token
bonker.wtf/launch
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
Token created
Your ERC-20 goes live with the name, ticker, and image you set.
Pool goes live
A Uniswap v4 pool initializes so people can start trading immediately.
Liquidity locked
LP is locked forever — there's no key that lets anyone rug it.
Sniper protection on
Bots pay an early-access auction instead of front-running your first trades.
You start earning
Every swap generates LP fees that flow back to you, claimable anytime.
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.