{
  "schemaVersion": "1.0",
  "item": {
    "slug": "solana-token-distribution",
    "name": "solana-token-distribution",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/tilo-14/solana-token-distribution",
    "canonicalUrl": "https://clawhub.ai/tilo-14/solana-token-distribution",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/solana-token-distribution",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=solana-token-distribution",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/simple-airdrop.md",
      "references/batched-airdrop.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/solana-token-distribution"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/solana-token-distribution",
    "agentPageUrl": "https://openagent3.xyz/skills/solana-token-distribution/agent",
    "manifestUrl": "https://openagent3.xyz/skills/solana-token-distribution/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/solana-token-distribution/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Airdrop",
        "body": "Distribute compressed tokens to multiple recipients using TypeScript client.\n\nDisclaimer: This guide demonstrates efficient token distribution on Solana using ZK compression. It does not constitute financial advice and does not endorse any specific token or project."
      },
      {
        "title": "Workflow",
        "body": "Clarify intent\n\nRecommend plan mode, if it's not activated\nUse AskUserQuestion to resolve blind spots\nAll questions must be resolved before execution\n\n\nIdentify references and skills\n\nMatch task to distribution approaches below\nLocate relevant documentation and examples\n\n\nWrite plan file (YAML task format)\n\nUse AskUserQuestion for anything unclear — never guess or assume\nIdentify blockers: permissions, dependencies, unknowns\nPlan must be complete before execution begins\n\n\nExecute\n\nUse Task tool with subagents for parallel research\nSubagents load skills via Skill tool\nTrack progress with TodoWrite\n\n\nWhen stuck: ask to spawn a read-only subagent with Read, Glob, Grep, and DeepWiki MCP access, loading skills/ask-mcp. Scope reads to skill references, example repos, and docs."
      },
      {
        "title": "Distribution via Client",
        "body": "ScaleApproach<10,000 recipientsSingle transaction - see simple-airdrop.md10,000+ recipientsBatched with retry - see batched-airdrop.mdNo-codeAirship by Helius (up to 200k)"
      },
      {
        "title": "Cost Comparison",
        "body": "CreationSolanaCompressedToken Account~2,000,000 lamports5,000 lamports"
      },
      {
        "title": "Claim Program Reference Implementations",
        "body": "Customize token distribution and let users claim.\n\nSimple Implementation: simple-claim - Distributes compressed tokens that get decompressed on claim.\n\nAdvanced Implementation: distributor - Distributes SPL tokens, uses compressed PDAs to track claims. Based on jito Merkle distributor.\n\ndistributorsimple-claimVestingLinear VestingCliff at Slot XPartial claimsYesNoClawbackYesNoFrontendREST API + CLINone\n\nThe programs are reference implementations and not audited. The Light Protocol Programs are audited and live on Solana Mainnet."
      },
      {
        "title": "Cost",
        "body": "Per-claim100k claimssimple-claim~0.00001 SOL~1 SOLdistributor (compressed)~0.00005 SOL~5 SOLdistributor (original)~0.002 SOL~200 SOL"
      },
      {
        "title": "Core Pattern",
        "body": "import { CompressedTokenProgram, getTokenPoolInfos, selectTokenPoolInfo } from \"@lightprotocol/compressed-token\";\nimport { bn, createRpc, selectStateTreeInfo, buildAndSignTx, sendAndConfirmTx } from \"@lightprotocol/stateless.js\";\nimport { ComputeBudgetProgram } from \"@solana/web3.js\";\n\nconst rpc = createRpc(RPC_ENDPOINT);\n\n// 1. Get infrastructure\nconst treeInfo = selectStateTreeInfo(await rpc.getStateTreeInfos());\nconst tokenPoolInfo = selectTokenPoolInfo(await getTokenPoolInfos(rpc, mint));\n\n// 2. Build compress instruction (SPL → compressed to multiple recipients)\nconst ix = await CompressedTokenProgram.compress({\n  payer: payer.publicKey,\n  owner: payer.publicKey,\n  source: sourceAta.address,           // SPL associated token account holding tokens\n  toAddress: recipients,                // PublicKey[]\n  amount: recipients.map(() => bn(amount)),\n  mint,\n  tokenPoolInfo,\n  outputStateTreeInfo: treeInfo,\n});\n\n// 3. Send with compute budget (120k CU per recipient)\nconst instructions = [\n  ComputeBudgetProgram.setComputeUnitLimit({ units: 120_000 * recipients.length }),\n  ix,\n];\nconst { blockhash } = await rpc.getLatestBlockhash();\nconst tx = buildAndSignTx(instructions, payer, blockhash, []);\nawait sendAndConfirmTx(rpc, tx);"
      },
      {
        "title": "Setup: Create Mint",
        "body": "import { createMint } from \"@lightprotocol/compressed-token\";\nimport { getOrCreateAssociatedTokenAccount, mintTo } from \"@solana/spl-token\";\n\nconst { mint } = await createMint(rpc, payer, payer.publicKey, 9);\nconst ata = await getOrCreateAssociatedTokenAccount(rpc, payer, mint, payer.publicKey);\nawait mintTo(rpc, payer, mint, ata.address, payer.publicKey, 100_000_000_000);"
      },
      {
        "title": "Compute Units",
        "body": "Recipients/instructionCU1120,0005170,000Batched tx500,000"
      },
      {
        "title": "Lookup Tables",
        "body": "Reduce transaction size:\n\nNetworkAddressMainnet9NYFyEqPkyXUhkerbGHXUXkvb4qpzeEdHuGpgbgpH1NJDevnetqAJZMgnQJ8G6vA3WRcjD9Jan1wtKkaCFWLWskxJrR5V"
      },
      {
        "title": "Advanced: Claim-Based",
        "body": "For vesting, clawback, or user-initiated claims:\n\nImplementationFeaturesMerkle DistributorLinear vesting, partial claims, clawback, REST APISimple ClaimCliff vesting at slot X"
      },
      {
        "title": "Resources",
        "body": "Docs: Airdrop Guide\nCode: examples-light-token\nTool: Airship by Helius"
      },
      {
        "title": "SDK references",
        "body": "PackageLink@lightprotocol/stateless.jsAPI docs@lightprotocol/compressed-tokenAPI docs"
      },
      {
        "title": "Security",
        "body": "This skill provides code patterns and documentation references only.\n\nDeclared dependencies. Reference examples require HELIUS_API_KEY (RPC provider key) and a payer keypair for signing transactions. Neither is needed for read-only or localnet testing. In production, load both from a secrets manager — never hard-code private keys.\nFilesystem scope. Read, Glob, and Grep must be limited to the current project directory and skill references. Do not read outside these paths.\nSubagent scope. When stuck, the skill asks to spawn a read-only subagent with Read, Glob, Grep scoped to skill references, example repos, and docs.\nInstall source. npx skills add Lightprotocol/skills from Lightprotocol/skills.\nAudited protocol. Light Protocol smart contracts are independently audited. Reports are published at github.com/Lightprotocol/light-protocol/tree/main/audits."
      }
    ],
    "body": "Airdrop\n\nDistribute compressed tokens to multiple recipients using TypeScript client.\n\nDisclaimer: This guide demonstrates efficient token distribution on Solana using ZK compression. It does not constitute financial advice and does not endorse any specific token or project.\n\nWorkflow\nClarify intent\nRecommend plan mode, if it's not activated\nUse AskUserQuestion to resolve blind spots\nAll questions must be resolved before execution\nIdentify references and skills\nMatch task to distribution approaches below\nLocate relevant documentation and examples\nWrite plan file (YAML task format)\nUse AskUserQuestion for anything unclear — never guess or assume\nIdentify blockers: permissions, dependencies, unknowns\nPlan must be complete before execution begins\nExecute\nUse Task tool with subagents for parallel research\nSubagents load skills via Skill tool\nTrack progress with TodoWrite\nWhen stuck: ask to spawn a read-only subagent with Read, Glob, Grep, and DeepWiki MCP access, loading skills/ask-mcp. Scope reads to skill references, example repos, and docs.\nDistribution via Client\nScale\tApproach\n<10,000 recipients\tSingle transaction - see simple-airdrop.md\n10,000+ recipients\tBatched with retry - see batched-airdrop.md\nNo-code\tAirship by Helius (up to 200k)\nCost Comparison\nCreation\tSolana\tCompressed\nToken Account\t~2,000,000 lamports\t5,000 lamports\nClaim Program Reference Implementations\n\nCustomize token distribution and let users claim.\n\nSimple Implementation: simple-claim - Distributes compressed tokens that get decompressed on claim.\n\nAdvanced Implementation: distributor - Distributes SPL tokens, uses compressed PDAs to track claims. Based on jito Merkle distributor.\n\n\tdistributor\tsimple-claim\nVesting\tLinear Vesting\tCliff at Slot X\nPartial claims\tYes\tNo\nClawback\tYes\tNo\nFrontend\tREST API + CLI\tNone\n\nThe programs are reference implementations and not audited. The Light Protocol Programs are audited and live on Solana Mainnet.\n\nCost\n\tPer-claim\t100k claims\nsimple-claim\t~0.00001 SOL\t~1 SOL\ndistributor (compressed)\t~0.00005 SOL\t~5 SOL\ndistributor (original)\t~0.002 SOL\t~200 SOL\nCore Pattern\nimport { CompressedTokenProgram, getTokenPoolInfos, selectTokenPoolInfo } from \"@lightprotocol/compressed-token\";\nimport { bn, createRpc, selectStateTreeInfo, buildAndSignTx, sendAndConfirmTx } from \"@lightprotocol/stateless.js\";\nimport { ComputeBudgetProgram } from \"@solana/web3.js\";\n\nconst rpc = createRpc(RPC_ENDPOINT);\n\n// 1. Get infrastructure\nconst treeInfo = selectStateTreeInfo(await rpc.getStateTreeInfos());\nconst tokenPoolInfo = selectTokenPoolInfo(await getTokenPoolInfos(rpc, mint));\n\n// 2. Build compress instruction (SPL → compressed to multiple recipients)\nconst ix = await CompressedTokenProgram.compress({\n  payer: payer.publicKey,\n  owner: payer.publicKey,\n  source: sourceAta.address,           // SPL associated token account holding tokens\n  toAddress: recipients,                // PublicKey[]\n  amount: recipients.map(() => bn(amount)),\n  mint,\n  tokenPoolInfo,\n  outputStateTreeInfo: treeInfo,\n});\n\n// 3. Send with compute budget (120k CU per recipient)\nconst instructions = [\n  ComputeBudgetProgram.setComputeUnitLimit({ units: 120_000 * recipients.length }),\n  ix,\n];\nconst { blockhash } = await rpc.getLatestBlockhash();\nconst tx = buildAndSignTx(instructions, payer, blockhash, []);\nawait sendAndConfirmTx(rpc, tx);\n\nSetup: Create Mint\nimport { createMint } from \"@lightprotocol/compressed-token\";\nimport { getOrCreateAssociatedTokenAccount, mintTo } from \"@solana/spl-token\";\n\nconst { mint } = await createMint(rpc, payer, payer.publicKey, 9);\nconst ata = await getOrCreateAssociatedTokenAccount(rpc, payer, mint, payer.publicKey);\nawait mintTo(rpc, payer, mint, ata.address, payer.publicKey, 100_000_000_000);\n\nCompute Units\nRecipients/instruction\tCU\n1\t120,000\n5\t170,000\nBatched tx\t500,000\nLookup Tables\n\nReduce transaction size:\n\nNetwork\tAddress\nMainnet\t9NYFyEqPkyXUhkerbGHXUXkvb4qpzeEdHuGpgbgpH1NJ\nDevnet\tqAJZMgnQJ8G6vA3WRcjD9Jan1wtKkaCFWLWskxJrR5V\nAdvanced: Claim-Based\n\nFor vesting, clawback, or user-initiated claims:\n\nImplementation\tFeatures\nMerkle Distributor\tLinear vesting, partial claims, clawback, REST API\nSimple Claim\tCliff vesting at slot X\nResources\nDocs: Airdrop Guide\nCode: examples-light-token\nTool: Airship by Helius\nSDK references\nPackage\tLink\n@lightprotocol/stateless.js\tAPI docs\n@lightprotocol/compressed-token\tAPI docs\nSecurity\n\nThis skill provides code patterns and documentation references only.\n\nDeclared dependencies. Reference examples require HELIUS_API_KEY (RPC provider key) and a payer keypair for signing transactions. Neither is needed for read-only or localnet testing. In production, load both from a secrets manager — never hard-code private keys.\nFilesystem scope. Read, Glob, and Grep must be limited to the current project directory and skill references. Do not read outside these paths.\nSubagent scope. When stuck, the skill asks to spawn a read-only subagent with Read, Glob, Grep scoped to skill references, example repos, and docs.\nInstall source. npx skills add Lightprotocol/skills from Lightprotocol/skills.\nAudited protocol. Light Protocol smart contracts are independently audited. Reports are published at github.com/Lightprotocol/light-protocol/tree/main/audits."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/tilo-14/solana-token-distribution",
    "publisherUrl": "https://clawhub.ai/tilo-14/solana-token-distribution",
    "owner": "tilo-14",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/solana-token-distribution",
    "downloadUrl": "https://openagent3.xyz/downloads/solana-token-distribution",
    "agentUrl": "https://openagent3.xyz/skills/solana-token-distribution/agent",
    "manifestUrl": "https://openagent3.xyz/skills/solana-token-distribution/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/solana-token-distribution/agent.md"
  }
}