{
  "schemaVersion": "1.0",
  "item": {
    "slug": "solana-transfer",
    "name": "Solana Transfer",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/Vortitron/solana-transfer",
    "canonicalUrl": "https://clawhub.ai/Vortitron/solana-transfer",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/solana-transfer",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=solana-transfer",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "config.example.json",
      "index.js",
      "package-lock.json",
      "package.json"
    ],
    "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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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-transfer"
    },
    "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-transfer",
    "agentPageUrl": "https://openagent3.xyz/skills/solana-transfer/agent",
    "manifestUrl": "https://openagent3.xyz/skills/solana-transfer/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/solana-transfer/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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Solana Transfer Skill",
        "body": "Description: Send SOL and SPL tokens on Solana blockchain from OpenClaw agents.\n\nLocation: /root/.openclaw/workspace/skills/solana-transfer\n\nWhen to use: When an agent needs to pay another agent, send a reward, or settle a transaction on-chain."
      },
      {
        "title": "1. Install",
        "body": "cd /root/.openclaw/workspace/skills/solana-transfer\nnpm install"
      },
      {
        "title": "2. Set Up Keypair",
        "body": "Generate a keypair (or use an existing one):\n\nsolana-keygen new --outfile keypair.json\n\nThis creates a Solana wallet. Get your address:\n\nnode index.js address"
      },
      {
        "title": "3. Fund the Wallet",
        "body": "For mainnet: Transfer SOL to your address from your main wallet\nFor devnet/testnet: Use the Solana faucet"
      },
      {
        "title": "4. Use from an Agent",
        "body": "In an agent's task or skill code:\n\nimport { sendSOL } from '../skills/solana-transfer/index.js';\n\n// Send 0.001 SOL (1 million lamports)\nconst result = await sendSOL('recipient-wallet-address', 1000000);\n\nconsole.log(`Sent ${result.amount} SOL`);\nconsole.log(`Transaction: ${result.signature}`);"
      },
      {
        "title": "Pattern 1: Pay for Expert Query",
        "body": "Scenario: A cheap agent asks an expert agent a question. The expert quotes a price, the cheap agent pays.\n\n// In cheap agent's code\nimport { sendSOL } from '../skills/solana-transfer/index.js';\n\n// After expert responds with quote...\nconst expertWallet = 'expert-agent-solana-address';\nconst amountLamports = 1000000; // 0.001 SOL\n\ntry {\n  const payment = await sendSOL(expertWallet, amountLamports);\n  console.log(`Paid expert ${payment.amount} SOL for query`);\n  console.log(`Tx: ${payment.signature}`);\n} catch (error) {\n  console.error(`Payment failed: ${error.message}`);\n}"
      },
      {
        "title": "Pattern 2: Reward Agents for Task Completion",
        "body": "Scenario: A coordinator agent awards SOL to agents that complete work.\n\n// In coordinator agent's code\nconst workerWallet = 'worker-agent-address';\nconst rewardLamports = 5000000; // 0.005 SOL\n\nconst payment = await sendSOL(workerWallet, rewardLamports);\nconsole.log(`Rewarded worker with ${payment.amount} SOL`);"
      },
      {
        "title": "Pattern 3: SPL Token Payments",
        "body": "Scenario: Pay with USDC or other SPL tokens instead of native SOL.\n\nimport { sendSPLToken } from '../skills/solana-transfer/index.js';\n\nconst recipientWallet = 'recipient-address';\nconst tokenMint = 'EPjFWdd5Au17LS7bF8hgGhXMdGGZ5gLtaWh3yzXXQ3g4'; // USDC mainnet\nconst amountSmallestUnits = 1000000; // 1 USDC (6 decimals)\n\nconst payment = await sendSPLToken(recipientWallet, tokenMint, amountSmallestUnits);\nconsole.log(`Sent USDC payment: ${payment.signature}`);"
      },
      {
        "title": "Configuration",
        "body": "Edit config.json to change RPC endpoint or network:\n\n{\n  \"rpc\": \"https://api.mainnet-beta.solana.com\",\n  \"network\": \"mainnet-beta\"\n}\n\nCommon endpoints:\n\nMainnet: https://api.mainnet-beta.solana.com\nDevnet: https://api.devnet.solana.com\nTestnet: https://api.testnet.solana.com\nCustom: Use your own Solana node RPC"
      },
      {
        "title": "Ledger Integration (Future)",
        "body": "Once payments are sent on-chain, you can:\n\nQuery transaction history: View all payments sent/received\nBuild a local ledger: Monitor the chain and log queries + payments\nDispute resolution: If an expert doesn't deliver, agents can reference the tx hash\nAnalytics: Track which agents pay whom, average rates, etc.\n\nExample: Monitor the blockchain for txs from/to an agent's wallet:\n\nconst walletAddress = 'agent-solana-address';\nconst signatures = await connection.getSignaturesForAddress(\n  new PublicKey(walletAddress)\n);\n\nfor (const sig of signatures) {\n  const tx = await connection.getParsedTransaction(sig.signature);\n  console.log(`Agent transaction: ${sig.signature}`);\n}"
      },
      {
        "title": "Security Notes",
        "body": "Keypair: Keep keypair.json safe. Treat it like a private key (because it is).\nAmounts: Always verify recipient and lamports before sending. No undo.\nRPC: Use a trusted RPC provider. Don't hardcode URLs in agent code.\nRate limits: If agents spam transactions, Solana will rate-limit or your RPC may block you. Add delays between payments if needed."
      },
      {
        "title": "Troubleshooting",
        "body": "\"Insufficient funds\"\nCheck balance: node index.js balance. Fund the wallet.\n\n\"Invalid public key\"\nRecipient address is malformed. Solana addresses are 44-character base58 strings.\n\n\"Connection timeout\"\nRPC endpoint is unreachable. Try a different endpoint in config.json.\n\n\"Transaction failed to confirm\"\nNetwork congestion or insufficient fee. Retry after a few seconds."
      },
      {
        "title": "Example: Full IRC + Solana Flow",
        "body": "Cheap agent in IRC: @expert, analyze this data\nExpert agent responds: Quote: 0.001 SOL (Tx settle onchain) [quote_id: xyz]\nCheap agent approves:\nconst result = await sendSOL(expertWalletAddress, 1000000);\nconsole.log(`Paid expert. Tx: ${result.signature}`);\n\n\nExpert agent confirms payment received and delivers work\nBoth agents log: query_id, expert_address, tx_hash for audit trail"
      },
      {
        "title": "Next Steps",
        "body": "Set up your keypair and fund with SOL\n Test sending a small amount to verify setup\n Integrate with IRC skill for automatic expert payments\n Build transaction history viewer\n Create agent wallet registry (who has what address?)"
      }
    ],
    "body": "Solana Transfer Skill\n\nDescription: Send SOL and SPL tokens on Solana blockchain from OpenClaw agents.\n\nLocation: /root/.openclaw/workspace/skills/solana-transfer\n\nWhen to use: When an agent needs to pay another agent, send a reward, or settle a transaction on-chain.\n\nQuick Start\n1. Install\ncd /root/.openclaw/workspace/skills/solana-transfer\nnpm install\n\n2. Set Up Keypair\n\nGenerate a keypair (or use an existing one):\n\nsolana-keygen new --outfile keypair.json\n\n\nThis creates a Solana wallet. Get your address:\n\nnode index.js address\n\n3. Fund the Wallet\n\nFor mainnet: Transfer SOL to your address from your main wallet For devnet/testnet: Use the Solana faucet\n\n4. Use from an Agent\n\nIn an agent's task or skill code:\n\nimport { sendSOL } from '../skills/solana-transfer/index.js';\n\n// Send 0.001 SOL (1 million lamports)\nconst result = await sendSOL('recipient-wallet-address', 1000000);\n\nconsole.log(`Sent ${result.amount} SOL`);\nconsole.log(`Transaction: ${result.signature}`);\n\nCommon Patterns\nPattern 1: Pay for Expert Query\n\nScenario: A cheap agent asks an expert agent a question. The expert quotes a price, the cheap agent pays.\n\n// In cheap agent's code\nimport { sendSOL } from '../skills/solana-transfer/index.js';\n\n// After expert responds with quote...\nconst expertWallet = 'expert-agent-solana-address';\nconst amountLamports = 1000000; // 0.001 SOL\n\ntry {\n  const payment = await sendSOL(expertWallet, amountLamports);\n  console.log(`Paid expert ${payment.amount} SOL for query`);\n  console.log(`Tx: ${payment.signature}`);\n} catch (error) {\n  console.error(`Payment failed: ${error.message}`);\n}\n\nPattern 2: Reward Agents for Task Completion\n\nScenario: A coordinator agent awards SOL to agents that complete work.\n\n// In coordinator agent's code\nconst workerWallet = 'worker-agent-address';\nconst rewardLamports = 5000000; // 0.005 SOL\n\nconst payment = await sendSOL(workerWallet, rewardLamports);\nconsole.log(`Rewarded worker with ${payment.amount} SOL`);\n\nPattern 3: SPL Token Payments\n\nScenario: Pay with USDC or other SPL tokens instead of native SOL.\n\nimport { sendSPLToken } from '../skills/solana-transfer/index.js';\n\nconst recipientWallet = 'recipient-address';\nconst tokenMint = 'EPjFWdd5Au17LS7bF8hgGhXMdGGZ5gLtaWh3yzXXQ3g4'; // USDC mainnet\nconst amountSmallestUnits = 1000000; // 1 USDC (6 decimals)\n\nconst payment = await sendSPLToken(recipientWallet, tokenMint, amountSmallestUnits);\nconsole.log(`Sent USDC payment: ${payment.signature}`);\n\nConfiguration\n\nEdit config.json to change RPC endpoint or network:\n\n{\n  \"rpc\": \"https://api.mainnet-beta.solana.com\",\n  \"network\": \"mainnet-beta\"\n}\n\n\nCommon endpoints:\n\nMainnet: https://api.mainnet-beta.solana.com\nDevnet: https://api.devnet.solana.com\nTestnet: https://api.testnet.solana.com\nCustom: Use your own Solana node RPC\nLedger Integration (Future)\n\nOnce payments are sent on-chain, you can:\n\nQuery transaction history: View all payments sent/received\nBuild a local ledger: Monitor the chain and log queries + payments\nDispute resolution: If an expert doesn't deliver, agents can reference the tx hash\nAnalytics: Track which agents pay whom, average rates, etc.\n\nExample: Monitor the blockchain for txs from/to an agent's wallet:\n\nconst walletAddress = 'agent-solana-address';\nconst signatures = await connection.getSignaturesForAddress(\n  new PublicKey(walletAddress)\n);\n\nfor (const sig of signatures) {\n  const tx = await connection.getParsedTransaction(sig.signature);\n  console.log(`Agent transaction: ${sig.signature}`);\n}\n\nSecurity Notes\nKeypair: Keep keypair.json safe. Treat it like a private key (because it is).\nAmounts: Always verify recipient and lamports before sending. No undo.\nRPC: Use a trusted RPC provider. Don't hardcode URLs in agent code.\nRate limits: If agents spam transactions, Solana will rate-limit or your RPC may block you. Add delays between payments if needed.\nTroubleshooting\n\n\"Insufficient funds\" Check balance: node index.js balance. Fund the wallet.\n\n\"Invalid public key\" Recipient address is malformed. Solana addresses are 44-character base58 strings.\n\n\"Connection timeout\" RPC endpoint is unreachable. Try a different endpoint in config.json.\n\n\"Transaction failed to confirm\" Network congestion or insufficient fee. Retry after a few seconds.\n\nExample: Full IRC + Solana Flow\nCheap agent in IRC: @expert, analyze this data\nExpert agent responds: Quote: 0.001 SOL (Tx settle onchain) [quote_id: xyz]\nCheap agent approves:\nconst result = await sendSOL(expertWalletAddress, 1000000);\nconsole.log(`Paid expert. Tx: ${result.signature}`);\n\nExpert agent confirms payment received and delivers work\nBoth agents log: query_id, expert_address, tx_hash for audit trail\nNext Steps\n Set up your keypair and fund with SOL\n Test sending a small amount to verify setup\n Integrate with IRC skill for automatic expert payments\n Build transaction history viewer\n Create agent wallet registry (who has what address?)"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Vortitron/solana-transfer",
    "publisherUrl": "https://clawhub.ai/Vortitron/solana-transfer",
    "owner": "Vortitron",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/solana-transfer",
    "downloadUrl": "https://openagent3.xyz/downloads/solana-transfer",
    "agentUrl": "https://openagent3.xyz/skills/solana-transfer/agent",
    "manifestUrl": "https://openagent3.xyz/skills/solana-transfer/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/solana-transfer/agent.md"
  }
}