Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Send SOL or SPL tokens on the Solana blockchain from OpenClaw agents for payments, rewards, or on-chain transaction settlements.
Send SOL or SPL tokens on the Solana blockchain from OpenClaw agents for payments, rewards, or on-chain transaction settlements.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
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.
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.
Description: Send SOL and SPL tokens on Solana blockchain from OpenClaw agents. Location: /root/.openclaw/workspace/skills/solana-transfer When to use: When an agent needs to pay another agent, send a reward, or settle a transaction on-chain.
cd /root/.openclaw/workspace/skills/solana-transfer npm install
Generate a keypair (or use an existing one): solana-keygen new --outfile keypair.json This creates a Solana wallet. Get your address: node index.js address
For mainnet: Transfer SOL to your address from your main wallet For devnet/testnet: Use the Solana faucet
In an agent's task or skill code: import { sendSOL } from '../skills/solana-transfer/index.js'; // Send 0.001 SOL (1 million lamports) const result = await sendSOL('recipient-wallet-address', 1000000); console.log(`Sent ${result.amount} SOL`); console.log(`Transaction: ${result.signature}`);
Scenario: A cheap agent asks an expert agent a question. The expert quotes a price, the cheap agent pays. // In cheap agent's code import { sendSOL } from '../skills/solana-transfer/index.js'; // After expert responds with quote... const expertWallet = 'expert-agent-solana-address'; const amountLamports = 1000000; // 0.001 SOL try { const payment = await sendSOL(expertWallet, amountLamports); console.log(`Paid expert ${payment.amount} SOL for query`); console.log(`Tx: ${payment.signature}`); } catch (error) { console.error(`Payment failed: ${error.message}`); }
Scenario: A coordinator agent awards SOL to agents that complete work. // In coordinator agent's code const workerWallet = 'worker-agent-address'; const rewardLamports = 5000000; // 0.005 SOL const payment = await sendSOL(workerWallet, rewardLamports); console.log(`Rewarded worker with ${payment.amount} SOL`);
Scenario: Pay with USDC or other SPL tokens instead of native SOL. import { sendSPLToken } from '../skills/solana-transfer/index.js'; const recipientWallet = 'recipient-address'; const tokenMint = 'EPjFWdd5Au17LS7bF8hgGhXMdGGZ5gLtaWh3yzXXQ3g4'; // USDC mainnet const amountSmallestUnits = 1000000; // 1 USDC (6 decimals) const payment = await sendSPLToken(recipientWallet, tokenMint, amountSmallestUnits); console.log(`Sent USDC payment: ${payment.signature}`);
Edit config.json to change RPC endpoint or network: { "rpc": "https://api.mainnet-beta.solana.com", "network": "mainnet-beta" } Common endpoints: Mainnet: https://api.mainnet-beta.solana.com Devnet: https://api.devnet.solana.com Testnet: https://api.testnet.solana.com Custom: Use your own Solana node RPC
Once payments are sent on-chain, you can: Query transaction history: View all payments sent/received Build a local ledger: Monitor the chain and log queries + payments Dispute resolution: If an expert doesn't deliver, agents can reference the tx hash Analytics: Track which agents pay whom, average rates, etc. Example: Monitor the blockchain for txs from/to an agent's wallet: const walletAddress = 'agent-solana-address'; const signatures = await connection.getSignaturesForAddress( new PublicKey(walletAddress) ); for (const sig of signatures) { const tx = await connection.getParsedTransaction(sig.signature); console.log(`Agent transaction: ${sig.signature}`); }
Keypair: Keep keypair.json safe. Treat it like a private key (because it is). Amounts: Always verify recipient and lamports before sending. No undo. RPC: Use a trusted RPC provider. Don't hardcode URLs in agent code. Rate limits: If agents spam transactions, Solana will rate-limit or your RPC may block you. Add delays between payments if needed.
"Insufficient funds" Check balance: node index.js balance. Fund the wallet. "Invalid public key" Recipient address is malformed. Solana addresses are 44-character base58 strings. "Connection timeout" RPC endpoint is unreachable. Try a different endpoint in config.json. "Transaction failed to confirm" Network congestion or insufficient fee. Retry after a few seconds.
Cheap agent in IRC: @expert, analyze this data Expert agent responds: Quote: 0.001 SOL (Tx settle onchain) [quote_id: xyz] Cheap agent approves: const result = await sendSOL(expertWalletAddress, 1000000); console.log(`Paid expert. Tx: ${result.signature}`); Expert agent confirms payment received and delivers work Both agents log: query_id, expert_address, tx_hash for audit trail
Set up your keypair and fund with SOL Test sending a small amount to verify setup Integrate with IRC skill for automatic expert payments Build transaction history viewer Create agent wallet registry (who has what address?)
Agent frameworks, memory systems, reasoning layers, and model-native orchestration.
Largest current source with strong distribution and engagement signals.