mcpField
C
clanker

clanker

github.com/bankrbotその他1.2k228 回インストール5 日前に更新
リポジトリ

clanker について

clanker は、Uniswap V4 の流動性プールとともに ERC20 トークンをデプロイする TypeScript SDK です。ベスティング、エアドロップ、報酬設定に対応し、複数チェーンでデプロイ後の操作も行えます。

主な機能

  1. 01ERC20 トークンのデプロイ設定
  2. 02Uniswap 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(トークンのベスティング)

ロックアップ期間とベスティング期間を設定して、トークンの一定割合をロックします。

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. Dev Buy

デプロイ時に初回のトークン購入を含めます。

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
}

コントラクトの上限と定数

パラメーター値備考
トークン供給量100 billion18 桁で 100,000,000,000 に固定
最大拡張 BPS9000(90%)拡張機能に割り当てられるトークンの最大割合。LP には最低 10%
最大拡張数101 回のデプロイあたりの拡張機能の最大数
Vault の最小ロックアップ期間7 daysベスティングに必要な最小ロックアップ期間
エアドロップの最小ロックアップ期間1 dayエアドロップに必要な最小ロックアップ期間
最大 LP 手数料10%通常の取引手数料の上限
最大スナイパー手数料80%MEV/スナイパー対策手数料の上限
スナイパー手数料の減衰最大 2 minutesスナイパー手数料の減衰にかかる最長時間
最大報酬受取人数7手数料分配の受取人の最大数
最大 LP ポジション数7流動性ポジションの最大数

対応チェーン

チェーンチェーン IDネイティブトークンステータス
Base8453ETH✅ 完全対応
Ethereum1ETH✅ 完全対応
Arbitrum42161ETH✅ 完全対応
Unichain-ETH✅ 完全対応
Monad-MON✅ 固定手数料のみ

デプロイ後の操作

Vault にロックされたトークンを請求する
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',
});

一般的なワークフロー

シンプルなミームコインのローンチ
  1. トークン画像を準備します(IPFS にアップロード)
  2. 基本設定(名前、シンボル、画像)でデプロイします
  3. 覚えやすいコントラクトにするため、バニティアドレスを有効にします
  4. コントラクトアドレスを共有します
エアドロップ付きコミュニティトークン
  1. エアドロップの受取人リストを作成します
  2. createAirdrop() で Merkle ツリーを作成します
  3. エアドロップ拡張機能を付けてトークンをデプロイします
  4. Clanker サービスにエアドロップを登録します
  5. 請求方法を共有します
ベスティング付きクリエイタートークン
  1. Vault 設定を指定してデプロイします
  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. ベスティングを適切に設定してください - プロジェクトのスケジュールに合わせます
ガスの最適化
  1. Base または Arbitrum を使用してください - ガス代を抑えられます
  2. 操作をまとめてください - 可能な場合は組み合わせます
  3. ガス価格を監視してください - トラフィックの少ない時間帯にデプロイします

トラブルシューティング

よくある問題
  • "Missing PRIVATE_KEY" - 環境変数を設定してください
  • "Insufficient balance" - ウォレットにネイティブトークンを入金してください
  • "Transaction reverted" - パラメーターを確認し、まずシミュレーションしてください
  • "Invalid image" - IPFS ハッシュにアクセスできることを確認してください
デバッグ手順
  1. ウォレットの残高を確認する
  2. チェーンの設定を確認する
  3. シミュレーションメソッドを使用する
  4. ブロックエクスプローラーでトランザクションを確認する
  5. エラーメッセージの詳細を確認する

リソース


💡 プロのヒント: 覚えやすいコントラクトアドレスにするため、常に vanity: true オプションを使用してください。

⚠️ セキュリティ: 秘密鍵をコミットしないでください。.env ファイルを使用し、.gitignore に追加してください。

🚀 すぐにできること: シンプルなデプロイの例から始め、必要に応じてベスティングや報酬などの機能を追加してください。

コメント