mcpField
T
token-distribution

token-distribution

github.com/lightprotocol开发736 次安装20 周前更新
代码仓库

关于 token-distribution

面向 Solana 开发者的压缩代币分发指南,介绍如何使用 TypeScript 客户端向多个接收者空投代币。内容涵盖单笔或批量分发,以及带领取流程的参考实现。

主要功能

  1. 01使用 TypeScript 客户端分发压缩代币
  2. 02按接收者规模选择单笔或批量方式
  3. 03提供 Merkle Distributor 与 Simple Claim 参考
  4. 04涵盖线性归属、部分领取和撤回
  5. 05介绍代币创建与交易设置

适用场景

  1. 01向少量接收者发起单笔空投
  2. 02向大量接收者分批发送代币
  3. 03设置带线性归属或部分领取的分发
  4. 04构建按领取操作的代币分发

安装

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

$npx skills add https://github.com/lightprotocol/skills --skill token-distribution

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

包含的文件

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

references/
batched-airdrop.md
simple-airdrop.md
spl-to-light.md

详细介绍

空投

使用 TypeScript 客户端向多个接收方分发压缩代币。

免责声明: 本指南演示如何使用 ZK 压缩在 Solana 上高效分发代币。本指南不构成财务建议,也不为任何特定代币或项目背书。

工作流

  1. 明确意图
    • 如果尚未启用,建议使用计划模式
    • 使用 AskUserQuestion 弥补信息盲点
    • 执行前必须解决所有问题
  2. 确定参考资料和技能
    • 将任务与下方的分发方式对应起来
    • 查找相关文档和示例
  3. 编写计划文件(YAML 任务格式)
    • 对任何不清楚的内容使用 AskUserQuestion 提问,绝不猜测或擅自假设
    • 确定阻碍因素:权限、依赖项、未知事项
    • 执行开始前必须完成计划
  4. 执行
    • 使用 Task 工具和子 Agent 并行开展研究
    • 子 Agent 通过 Skill 工具加载技能
    • 使用 TodoWrite 跟踪进度
  5. 遇到阻碍时:请求启动一个只读子 Agent,允许其使用 Read、Glob、Grep 和 DeepWiki MCP 访问权限,并加载 skills/ask-mcp。将读取范围限定为技能参考资料、示例代码仓库和文档。

通过客户端分发

规模方式
少于 10,000 个接收方单笔交易——参见 simple-airdrop.md
10,000 个及以上接收方分批并重试——参见 batched-airdrop.md
SPL 与 Light 对比并排比较设置操作——参见 spl-to-light.md
无代码Helius 的 Airship(最多 200k)
成本对比
创建Solana压缩版
代币账户~2,000,000 lamports5,000 lamports

领取程序参考实现

自定义代币分发方式,并允许用户领取。

简单实现:simple-claim - 分发压缩代币,领取时会将其解压。

高级实现:distributor - 分发 SPL 代币,并使用压缩 PDA 跟踪领取情况。基于 jito Merkle distributor。

distributorsimple-claim
归属安排线性归属在 Slot X 一次性归属
部分领取是否
撤回是否
前端REST API + CLI无

这些程序是参考实现,未经审计。Light Protocol Programs 已通过审计并部署在 Solana Mainnet 上。

成本
每次领取100k 次领取
simple-claim~0.00001 SOL~1 SOL
distributor(压缩版)~0.00005 SOL~5 SOL
distributor(原版)~0.002 SOL~200 SOL

核心模式

import { CompressedTokenProgram, getTokenPoolInfos, selectTokenPoolInfo } from "@lightprotocol/compressed-token";
import { bn, createRpc, selectStateTreeInfo, buildAndSignTx, sendAndConfirmTx } from "@lightprotocol/stateless.js";
import { ComputeBudgetProgram } from "@solana/web3.js";

const rpc = createRpc(RPC_ENDPOINT);

// 1. Get infrastructure
const treeInfo = selectStateTreeInfo(await rpc.getStateTreeInfos());
const tokenPoolInfo = selectTokenPoolInfo(await getTokenPoolInfos(rpc, mint));

// 2. Build compress instruction (SPL → compressed to multiple recipients)
const ix = await CompressedTokenProgram.compress({
  payer: payer.publicKey,
  owner: payer.publicKey,
  source: sourceAta.address,           // SPL associated token account holding tokens
  toAddress: recipients,                // PublicKey[]
  amount: recipients.map(() => bn(amount)),
  mint,
  tokenPoolInfo,
  outputStateTreeInfo: treeInfo,
});

// 3. Send with compute budget (120k CU per recipient)
const instructions = [
  ComputeBudgetProgram.setComputeUnitLimit({ units: 120_000 * recipients.length }),
  ix,
];
const { blockhash } = await rpc.getLatestBlockhash();
const tx = buildAndSignTx(instructions, payer, blockhash, []);
await sendAndConfirmTx(rpc, tx);

设置:创建 Mint

import { createMint } from "@lightprotocol/compressed-token";
import { getOrCreateAssociatedTokenAccount, mintTo } from "@solana/spl-token";

const { mint } = await createMint(rpc, payer, payer.publicKey, 9);
const ata = await getOrCreateAssociatedTokenAccount(rpc, payer, mint, payer.publicKey);
await mintTo(rpc, payer, mint, ata.address, payer.publicKey, 100_000_000_000);

计算单元

接收方/指令CU
1120,000
5170,000
批量交易500,000

查找表

缩小交易体积:

网络地址
Mainnet9NYFyEqPkyXUhkerbGHXUXkvb4qpzeEdHuGpgbgpH1NJ
DevnetqAJZMgnQJ8G6vA3WRcjD9Jan1wtKkaCFWLWskxJrR5V

高级:基于领取

用于归属安排、撤回或由用户发起的领取:

实现功能
Merkle Distributor线性归属、部分领取、撤回、REST API
Simple Claim在 slot X 一次性归属

资源

SDK 参考

软件包链接
@lightprotocol/stateless.jsAPI 文档
@lightprotocol/compressed-tokenAPI 文档

安全

此技能仅提供代码模式和文档参考。

  • 声明的依赖项。 参考示例需要 HELIUS_API_KEY(RPC 提供商密钥)和用于签署交易的付款方密钥对。只读或 localnet 测试不需要这两项。在生产环境中,请从密钥管理器加载二者,切勿将私钥硬编码。
  • 文件系统范围。 Read、Glob 和 Grep 必须仅限于当前项目目录和技能参考。不要读取这些路径之外的内容。
  • 子 Agent 范围。 遇到困难时,该技能会要求启动只读子 Agent,并将 Read、Glob、Grep 的范围限定为技能参考、示例仓库和文档。
  • 安装来源。 从 Lightprotocol/skills 运行 npx skills add Lightprotocol/skills。
  • 已审计的协议。 Light Protocol 智能合约已由独立机构审计。审计报告发布于 github.com/Lightprotocol/light-protocol/tree/main/audits。

评论

支持 Markdown