mcpField
C
clanker

clanker

github.com/bankrbot其他1.2k228 次安装5 天前更新
代码仓库

关于 clanker

clanker 是用于部署 ERC20 代币及 Uniswap V4 流动性池的 TypeScript SDK,面向代币发行者。它支持配置归属计划、空投和费用奖励,并可在多条链上执行部署后的操作。

主要功能

  1. 01自定义 ERC20 代币部署
  2. 02配置 Uniswap V4 池
  3. 03代币归属与空投
  4. 04交易费用奖励设置
  5. 05部署后领取与元数据更新

适用场景

  1. 01发行并配置流动性池的代币
  2. 02向多个地址分发代币
  3. 03按归属计划锁定代币
  4. 04领取锁定代币或交易奖励

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/bankrbot/skills --skill clanker

安装后在 Claude Code 中输入/clanker确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

catalog.json
references/
airdrops.md
deployment.md
pool-config.md
rewards.md
troubleshooting.md
vesting.md

详细介绍

Clanker SDK

使用官方 Clanker TypeScript SDK 部署生产就绪的 ERC20 代币,并内置流动性池。

概述

Clanker 是一种代币部署协议,可通过单笔交易创建带有 Uniswap V4 流动性池的 ERC20 代币。该 SDK 提供 TypeScript 接口,可部署具有归属期、空投和可自定义奖励分配等高级功能的代币。

快速开始

安装
npm install clanker-sdk viem
# or
yarn add clanker-sdk viem
# or
pnpm add clanker-sdk viem
环境设置

创建包含私钥的 .env 文件:

PRIVATE_KEY=0x...your_private_key_here
基本代币部署
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);

核心功能

1. 代币部署

部署可全面自定义的代币,包括元数据、社交链接和池配置。

基本部署:

  • 代币名称、符号和图片(IPFS)
  • 描述和社交媒体链接
  • 个性化地址生成
  • 自定义池配置

参考: references/deployment.md

2. 金库(代币归属)

锁定一定比例的代币,并设置锁定期和归属期:

vault: {
  percentage: 10,           // 10% of token supply
  lockupDuration: 2592000,  // 30 days cliff (in seconds)
  vestingDuration: 2592000, // 30 days linear vesting
  recipient: account.address,
}

参考: references/vesting.md

3. 空投

使用 Merkle 树证明向多个地址分发代币:

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
}

参考: references/airdrops.md

4. 奖励配置

配置交易手续费分配:

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',
    },
  ],
}
代币类型选项

选择每位接收者从交易手续费中获得的代币:

代币类型描述
'Clanker'仅接收已部署的代币
'Paired'仅接收配对代币(例如,WETH)
'Both'接收两种代币
默认 Bankr 界面手续费

通过 Bankr 部署时,使用此默认奖励配置,界面手续费为 20%:

// 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)
    },
  ],
}

参考: references/rewards.md

5. 开发者买入

在部署中加入初始代币购买:

devBuy: {
  ethAmount: 0.1,           // Buy with 0.1 ETH
  recipient: account.address,
}
6. 自定义市值

设置代币初始价格/市值:

import { getTickFromMarketCap } from 'clanker-sdk';

const customPool = getTickFromMarketCap(5); // 5 ETH market cap

pool: {
  ...customPool,
  positions: [
    {
      tickLower: customPool.tickIfToken0IsClanker,
      tickUpper: -120000,
      positionBps: 10_000,
    },
  ],
}

参考: references/pool-config.md

7. 狙击手防护

配置手续费衰减,以防范狙击手:

sniperFees: {
  startingFee: 666_777,    // 66.6777% starting fee
  endingFee: 41_673,       // 4.1673% ending fee
  secondsToDecay: 15,      // 15 seconds decay
}

合约限制与常量

参数值备注
代币供应量1000 亿固定为 100,000,000,000,精度为 18 位小数
最大扩展比例(BPS)9000(90%)扩展最多可获得的代币数量;流动性池至少获得 10%
最大扩展数量10单次部署的扩展数量上限
金库最短锁定期7 天归属的最短锁定时长
空投最短锁定期1 天空投的最短锁定时长
最大流动性池手续费10%普通交易手续费上限
最大狙击手续费80%MEV/狙击手防护手续费上限
狙击手续费衰减最长 2 分钟狙击手续费衰减的最长时间
最大奖励接收者数量7手续费分配接收者数量上限
最大流动性仓位数量7流动性仓位数量上限

支持的链

链链 ID原生代币状态
Base8453ETH✅ 完全支持
Ethereum1ETH✅ 完全支持
Arbitrum42161ETH✅ 完全支持
Unichain-ETH✅ 完全支持
Monad-MON✅ 仅支持静态手续费

部署后操作

领取已归属代币
const claimable = await clanker.getVaultClaimableAmount({ token: TOKEN_ADDRESS });

if (claimable > 0n) {
  const { txHash } = await clanker.claimVaultedTokens({ token: TOKEN_ADDRESS });
}
收取交易奖励
// 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,
});
更新代币元数据
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,
});
更新代币图片
const { txHash } = await clanker.updateImage({
  token: TOKEN_ADDRESS,
  image: 'ipfs://new_image_hash',
});

常见工作流

简单的 Memecoin 发布
  1. 准备代币图片(上传到 IPFS)
  2. 使用基本配置(名称、符号、图片)进行部署
  3. 启用个性化地址,生成易于记忆的合约地址
  4. 分享合约地址
带空投的社区代币
  1. 整理空投接收者名单
  2. 使用 createAirdrop() 创建 Merkle 树
  3. 部署带空投扩展的代币
  4. 向 Clanker 服务注册空投
  5. 分享领取说明
带归属期的创作者代币
  1. 使用金库配置进行部署
  2. 设置锁定期(悬崖期)
  3. 设置归属时长
  4. 随着代币归属,逐步领取代币

完整部署配置

// 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,
  },
};

最佳实践

安全
  1. 切勿暴露私钥——使用环境变量
  2. 先在测试网上测试——在主网上部署前验证配置
  3. 模拟交易——执行前使用 *Simulate 方法
  4. 验证地址——仔细核对所有收款地址
代币设计
  1. 选择有意义的名称——打造清晰、易记的代币标识
  2. 使用优质图片——选择高分辨率、合适的 IPFS 图片
  3. 合理配置归属期——与项目时间线保持一致
Gas 优化
  1. 使用 Base 或 Arbitrum——降低 Gas 费用
  2. 批量操作——尽可能合并操作
  3. 监控 Gas 价格——在低流量时段部署

故障排除

常见问题
  • "Missing PRIVATE_KEY"——设置环境变量
  • "Insufficient balance"——为钱包充值原生代币
  • "Transaction reverted"——检查参数,并先进行模拟
  • "Invalid image"——确保 IPFS 哈希可访问
调试步骤
  1. 检查钱包余额
  2. 验证链配置
  3. 使用模拟方法
  4. 在区块浏览器上检查交易
  5. 查看错误消息详情

资源


💡 专业提示:始终使用 vanity: true 选项,以生成易记的合约地址。

⚠️ 安全提示:切勿提交私钥。使用 .env 文件,并将其添加到 .gitignore。

🚀 快速上手:从简单的部署示例开始,然后按需添加归属期和奖励等功能。

评论

支持 Markdown