Clanker SDK Deploy production-ready ERC20 tokens with built-in liquidity pools using the official Clanker TypeScript SDK. Overview Clanker is a token deployment protocol that creates ERC20 tokens with Uniswap V4 liquidity pools in a single transaction. The SDK provides a TypeScript interface for deploying tokens with advanced features like vesting, airdrops, and customizable reward distribution. Quick Start Installation npm install clanker-sdk viem
or
yarn add clanker-sdk viem
or
- pnpm
- add
- clanker-sdk viem
- Environment Setup
- Create a
- .env
- file with your private key:
- PRIVATE_KEY
- =
- 0x
- ..
- .your_private_key_here
- Basic Token Deployment
- import
- {
- Clanker
- }
- from
- 'clanker-sdk'
- ;
- import
- {
- createPublicClient
- ,
- createWalletClient
- ,
- http
- ,
- type
- PublicClient
- }
- from
- 'viem'
- ;
- import
- {
- privateKeyToAccount
- }
- from
- 'viem/accounts'
- ;
- import
- {
- base
- }
- from
- 'viem/chains'
- ;
- const
- PRIVATE_KEY
- =
- process
- .
- env
- .
- PRIVATE_KEY
- as
- `
- 0x
- ${
- string
- }
- `
- ;
- const
- account
- =
- privateKeyToAccount
- (
- PRIVATE_KEY
- )
- ;
- const
- publicClient
- =
- createPublicClient
- (
- {
- chain
- :
- base
- ,
- transport
- :
- http
- (
- )
- ,
- }
- )
- as
- PublicClient
- ;
- const
- wallet
- =
- createWalletClient
- (
- {
- account
- ,
- chain
- :
- base
- ,
- transport
- :
- http
- (
- )
- ,
- }
- )
- ;
- const
- clanker
- =
- new
- Clanker
- (
- {
- wallet
- ,
- publicClient
- }
- )
- ;
- const
- {
- txHash
- ,
- waitForTransaction
- ,
- error
- }
- =
- await
- clanker
- .
- deploy
- (
- {
- name
- :
- 'My Token'
- ,
- symbol
- :
- 'TKN'
- ,
- image
- :
- 'ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi'
- ,
- tokenAdmin
- :
- account
- .
- address
- ,
- metadata
- :
- {
- description
- :
- 'My awesome token'
- ,
- }
- ,
- context
- :
- {
- interface
- :
- 'Clanker SDK'
- ,
- }
- ,
- vanity
- :
- true
- ,
- }
- )
- ;
- if
- (
- error
- )
- throw
- error
- ;
- const
- {
- address
- :
- tokenAddress
- }
- =
- await
- waitForTransaction
- (
- )
- ;
- console
- .
- log
- (
- 'Token deployed at:'
- ,
- tokenAddress
- )
- ;
- Core Capabilities
- 1. Token Deployment
- Deploy tokens with full customization including metadata, social links, and pool configuration.
- Basic deployment:
- Token name, symbol, and image (IPFS)
- Description and social media links
- Vanity address generation
- Custom pool configurations
- Reference:
- references/deployment.md
- 2. Vault (Token Vesting)
- Lock a percentage of tokens with lockup and vesting periods:
- vault
- :
- {
- percentage
- :
- 10
- ,
- // 10% of token supply
- lockupDuration
- :
- 2592000
- ,
- // 30 days cliff (in seconds)
- vestingDuration
- :
- 2592000
- ,
- // 30 days linear vesting
- recipient
- :
- account
- .
- address
- ,
- }
- Reference:
- references/vesting.md
- 3. Airdrops
- Distribute tokens to multiple addresses using Merkle tree proofs:
- import
- {
- createAirdrop
- ,
- registerAirdrop
- }
- from
- 'clanker-sdk/v4/extensions'
- ;
- const
- {
- tree
- ,
- airdrop
- }
- =
- createAirdrop
- (
- [
- {
- account
- :
- '0x...'
- ,
- amount
- :
- 200_000_000
- }
- ,
- {
- account
- :
- '0x...'
- ,
- amount
- :
- 50_000_000
- }
- ,
- ]
- )
- ;
- // Include in deployment
- airdrop
- :
- {
- ...
- airdrop
- ,
- lockupDuration
- :
- 86_400
- ,
- // 1 day
- vestingDuration
- :
- 86_400
- ,
- // 1 day
- }
- Reference:
- references/airdrops.md
- 4. Rewards Configuration
- Configure trading fee distribution:
- rewards
- :
- {
- recipients
- :
- [
- {
- recipient
- :
- account
- .
- address
- ,
- admin
- :
- account
- .
- address
- ,
- bps
- :
- 5000
- ,
- // 50% of fees
- token
- :
- 'Both'
- ,
- // Receive both tokens
- }
- ,
- {
- recipient
- :
- '0x...'
- ,
- admin
- :
- '0x...'
- ,
- bps
- :
- 5000
- ,
- // 50% of fees
- token
- :
- 'Both'
- ,
- }
- ,
- ]
- ,
- }
- Token Type Options
- Choose which tokens each recipient receives from trading fees:
- Token Type
- Description
- 'Clanker'
- Receive only the deployed token
- 'Paired'
- Receive only the paired token (e.g., WETH)
- 'Both'
- Receive both tokens
- Default Bankr Interface Fee
- When deploying via Bankr, use this default rewards configuration with 20% interface fee:
- // Bankr interface fee recipient
- const
- BANKR_INTERFACE_ADDRESS
- =
- '0xF60633D02690e2A15A54AB919925F3d038Df163e'
- ;
- rewards
- :
- {
- recipients
- :
- [
- {
- recipient
- :
- account
- .
- address
- ,
- // Creator
- admin
- :
- account
- .
- address
- ,
- bps
- :
- 8000
- ,
- // 80% to creator
- token
- :
- 'Paired'
- ,
- // Receive paired token (WETH)
- }
- ,
- {
- recipient
- :
- BANKR_INTERFACE_ADDRESS
- ,
- // Bankr interface
- admin
- :
- BANKR_INTERFACE_ADDRESS
- ,
- bps
- :
- 2000
- ,
- // 20% to Bankr
- token
- :
- 'Paired'
- ,
- // Receive paired token (WETH)
- }
- ,
- ]
- ,
- }
- Reference:
- references/rewards.md
- 5. Dev Buy
- Include an initial token purchase in the deployment:
- devBuy
- :
- {
- ethAmount
- :
- 0.1
- ,
- // Buy with 0.1 ETH
- recipient
- :
- account
- .
- address
- ,
- }
- 6. Custom Market Cap
- Set initial token price/market cap:
- import
- {
- getTickFromMarketCap
- }
- from
- 'clanker-sdk'
- ;
- const
- customPool
- =
- getTickFromMarketCap
- (
- 5
- )
- ;
- // 5 ETH market cap
- pool
- :
- {
- ...
- customPool
- ,
- positions
- :
- [
- {
- tickLower
- :
- customPool
- .
- tickIfToken0IsClanker
- ,
- tickUpper
- :
- -
- 120000
- ,
- positionBps
- :
- 10_000
- ,
- }
- ,
- ]
- ,
- }
- Reference:
- references/pool-config.md
- 7. Anti-Sniper Protection
- Configure fee decay to protect against snipers:
- sniperFees
- :
- {
- startingFee
- :
- 666_777
- ,
- // 66.6777% starting fee
- endingFee
- :
- 41_673
- ,
- // 4.1673% ending fee
- secondsToDecay
- :
- 15
- ,
- // 15 seconds decay
- }
- Contract Limits & Constants
- Parameter
- Value
- Notes
- Token Supply
- 100 billion
- Fixed at 100,000,000,000 with 18 decimals
- Max Extension BPS
- 9000 (90%)
- Max tokens to extensions, min 10% to LP
- Max Extensions
- 10
- Maximum number of extensions per deployment
- Vault Min Lockup
- 7 days
- Minimum lockup duration for vesting
- Airdrop Min Lockup
- 1 day
- Minimum lockup duration for airdrops
- Max LP Fee
- 10%
- Normal trading fee cap
- Max Sniper Fee
- 80%
- Maximum MEV/sniper protection fee
- Sniper Fee Decay
- 2 minutes max
- Maximum time for sniper fee decay
- Max Reward Recipients
- 7
- Maximum fee distribution recipients
- Max LP Positions
- 7
- Maximum liquidity positions
- Supported Chains
- Chain
- Chain ID
- Native Token
- Status
- Base
- 8453
- ETH
- ✅ Full support
- Ethereum
- 1
- ETH
- ✅ Full support
- Arbitrum
- 42161
- ETH
- ✅ Full support
- Unichain
- -
- ETH
- ✅ Full support
- Monad
- -
- MON
- ✅ Static fees only
- Post-Deployment Operations
- Claim Vaulted Tokens
- const
- claimable
- =
- await
- clanker
- .
- getVaultClaimableAmount
- (
- {
- token
- :
- TOKEN_ADDRESS
- }
- )
- ;
- if
- (
- claimable
- >
- 0n
- )
- {
- const
- {
- txHash
- }
- =
- await
- clanker
- .
- claimVaultedTokens
- (
- {
- token
- :
- TOKEN_ADDRESS
- }
- )
- ;
- }
- Collect Trading Rewards
- // Check available rewards
- const
- availableFees
- =
- await
- clanker
- .
- availableRewards
- (
- {
- token
- :
- TOKEN_ADDRESS
- ,
- rewardRecipient
- :
- FEE_OWNER_ADDRESS
- ,
- }
- )
- ;
- // Claim rewards
- const
- {
- txHash
- }
- =
- await
- clanker
- .
- claimRewards
- (
- {
- token
- :
- TOKEN_ADDRESS
- ,
- rewardRecipient
- :
- FEE_OWNER_ADDRESS
- ,
- }
- )
- ;
- Update Token Metadata
- const
- metadata
- =
- JSON
- .
- stringify
- (
- {
- description
- :
- 'Updated description'
- ,
- socialMediaUrls
- :
- [
- {
- platform
- :
- 'twitter'
- ,
- url
- :
- 'https://twitter.com/mytoken'
- }
- ,
- {
- platform
- :
- 'telegram'
- ,
- url
- :
- 'https://t.me/mytoken'
- }
- ,
- ]
- ,
- }
- )
- ;
- const
- {
- txHash
- }
- =
- await
- clanker
- .
- updateMetadata
- (
- {
- token
- :
- TOKEN_ADDRESS
- ,
- metadata
- ,
- }
- )
- ;
- Update Token Image
- const
- {
- txHash
- }
- =
- await
- clanker
- .
- updateImage
- (
- {
- token
- :
- TOKEN_ADDRESS
- ,
- image
- :
- 'ipfs://new_image_hash'
- ,
- }
- )
- ;
- Common Workflows
- Simple Memecoin Launch
- Prepare token image (upload to IPFS)
- Deploy with basic config (name, symbol, image)
- Enable vanity address for memorable contract
- Share contract address
- Community Token with Airdrop
- Compile airdrop recipient list
- Create Merkle tree with
- createAirdrop()
- Deploy token with airdrop extension
- Register airdrop with Clanker service
- Share claim instructions
- Creator Token with Vesting
- Deploy with vault configuration
- Set lockup period (cliff)
- Set vesting duration
- Claim tokens as they vest
- Full Deployment Config
- // Bankr interface fee recipient (20%)
- const
- BANKR_INTERFACE_ADDRESS
- =
- '0xF60633D02690e2A15A54AB919925F3d038Df163e'
- ;
- const
- tokenConfig
- =
- {
- chainId
- :
- 8453
- ,
- // Base
- name
- :
- 'My Token'
- ,
- symbol
- :
- 'TKN'
- ,
- image
- :
- 'ipfs://...'
- ,
- tokenAdmin
- :
- account
- .
- address
- ,
- metadata
- :
- {
- description
- :
- 'Token description'
- ,
- socialMediaUrls
- :
- [
- {
- platform
- :
- 'twitter'
- ,
- url
- :
- '...'
- }
- ,
- {
- platform
- :
- 'telegram'
- ,
- url
- :
- '...'
- }
- ,
- ]
- ,
- }
- ,
- context
- :
- {
- interface
- :
- 'Bankr'
- ,
- platform
- :
- 'farcaster'
- ,
- messageId
- :
- ''
- ,
- id
- :
- ''
- ,
- }
- ,
- vault
- :
- {
- percentage
- :
- 10
- ,
- lockupDuration
- :
- 2592000
- ,
- vestingDuration
- :
- 2592000
- ,
- recipient
- :
- account
- .
- address
- ,
- }
- ,
- devBuy
- :
- {
- ethAmount
- :
- 0
- ,
- recipient
- :
- account
- .
- address
- ,
- }
- ,
- // Default: 80% creator, 20% Bankr interface (all in paired token)
- rewards
- :
- {
- recipients
- :
- [
- {
- recipient
- :
- account
- .
- address
- ,
- admin
- :
- account
- .
- address
- ,
- bps
- :
- 8000
- ,
- // 80% to creator
- token
- :
- 'Paired'
- ,
- // Receive paired token (WETH)
- }
- ,
- {
- recipient
- :
- BANKR_INTERFACE_ADDRESS
- ,
- admin
- :
- BANKR_INTERFACE_ADDRESS
- ,
- bps
- :
- 2000
- ,
- // 20% to Bankr
- token
- :
- 'Paired'
- ,
- // Receive paired token (WETH)
- }
- ,
- ]
- ,
- }
- ,
- pool
- :
- {
- pairedToken
- :
- '0x4200000000000000000000000000000000000006'
- ,
- // WETH
- positions
- :
- 'Standard'
- ,
- }
- ,
- fees
- :
- 'StaticBasic'
- ,
- vanity
- :
- true
- ,
- sniperFees
- :
- {
- startingFee
- :
- 666_777
- ,
- endingFee
- :
- 41_673
- ,
- secondsToDecay
- :
- 15
- ,
- }
- ,
- }
- ;
- Best Practices
- Security
- Never expose private keys
- - Use environment variables
- Test on testnet first
- - Verify configs before mainnet
- Simulate transactions
- - Use
- *Simulate
- methods before execution
- Verify addresses
- - Double-check all recipient addresses
- Token Design
- Choose meaningful names
- - Clear, memorable token identity
- Use quality images
- - High-res, appropriate IPFS images
- Configure vesting wisely
- - Align with project timeline
- Gas Optimization
- Use Base or Arbitrum
- - Lower gas fees
- Batch operations
- - Combine when possible
- Monitor gas prices
- - Deploy during low-traffic periods
- Troubleshooting
- Common Issues
- "Missing PRIVATE_KEY"
- - Set environment variable
- "Insufficient balance"
- - Fund wallet with native token
- "Transaction reverted"
- - Check parameters, simulate first
- "Invalid image"
- - Ensure IPFS hash is accessible
- Debug Steps
- Check wallet balance
- Verify chain configuration
- Use simulation methods
- Check transaction on block explorer
- Review error message details
- Resources
- GitHub
- :
- github.com/clanker-devco/clanker-sdk
- NPM
- :
- npmjs.com/package/clanker-sdk
- Examples
- :
- github.com/clanker-devco/clanker-sdk/tree/main/examples/v4
- 💡 Pro Tip
-
- Always use the
- vanity: true
- option for memorable contract addresses.
- ⚠️ Security
-
- Never commit private keys. Use
- .env
- files and add them to
- .gitignore
- .
- 🚀 Quick Win
- Start with the simple deployment example, then add features like vesting and rewards as needed.