网淘吧来吧,欢迎您!

Solana Swaps技能使用说明

2026-04-01 新闻来源:网淘吧 围观:15
电脑广告
手机广告

Solana 代币兑换

管理您的 Solana 钱包:使用 Jupiter 聚合器检查余额并兑换代币。

环境变量

这些环境变量已预先配置,可供使用:

Solana Swaps

变量描述
SOLANA_KEYPAIR_PATH钱包密钥对 JSON 文件的路径
JUPITER_API_KEY用于身份验证请求的 Jupiter API 密钥(可避免平台费用,处理 Token2022/pump.fun 代币时需要)

注意:这些已在技能配置中设置。只需在命令中直接使用$SOLANA_KEYPAIR_PATH$JUPITER_API_KEY即可。

验证设置

# Check wallet address
solana address --keypair "$SOLANA_KEYPAIR_PATH"

# Check Solana CLI config
solana config get

余额查询

检查 SOL 余额

solana balance --keypair "$SOLANA_KEYPAIR_PATH"

列出所有代币账户

spl-token accounts --owner $(solana address --keypair "$SOLANA_KEYPAIR_PATH")

检查特定代币余额

spl-token balance <TOKEN_MINT_ADDRESS> --owner $(solana address --keypair "$SOLANA_KEYPAIR_PATH")

常见代币铸造地址

代币符号铸造地址小数位数
封装SOLSOLSo111111111111111111111111111111111111111129
USD CoinUSDCEPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v6
TetherUSDTEs9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB6
BonkBONKDezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB2635
JupiterJUPJUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN6
RaydiumRAY4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R6

通过 Jupiter 进行代币兑换

重要提示:在执行任何兑换前,必须始终显示兑换详情并等待用户明确确认。

步骤 1:获取报价

将人类可读的金额转换为原始单位:

  • SOL:乘以 1,000,000,000 (10^9)
  • USDC/USDT:乘以 1,000,000 (10^6)
  • BONK:乘以 100,000 (10^5)
# Example: Get quote for swapping 1 SOL to USDC
INPUT_MINT="So11111111111111111111111111111111111111112"
OUTPUT_MINT="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
AMOUNT="1000000000"  # 1 SOL in lamports
SLIPPAGE_BPS="50"    # 0.5% slippage

# Get quote with API key authentication
curl -s -H "x-api-key: $JUPITER_API_KEY" \
  "https://api.jup.ag/swap/v1/quote?inputMint=${INPUT_MINT}&outputMint=${OUTPUT_MINT}&amount=${AMOUNT}&slippageBps=${SLIPPAGE_BPS}" | jq .

步骤 2:显示报价并请求确认

解析报价响应并显示给用户:

  • 输入:金额和代币名称
  • 输出:预期金额和代币名称
  • 价格影响百分比
  • 滑点容忍度
  • 最小接收金额 (otherAmountThreshold)

重要:询问用户"您想继续执行此兑换吗?",并在继续之前等待明确确认("是"、"继续"、"确认")。

步骤3:构建交换交易

用户确认后,请求交换交易:

USER_PUBKEY=$(solana address --keypair "$SOLANA_KEYPAIR_PATH")

# Save quote response to file
QUOTE_FILE="/tmp/jupiter_quote.json"
curl -s -H "x-api-key: $JUPITER_API_KEY" \
  "https://api.jup.ag/swap/v1/quote?inputMint=${INPUT_MINT}&outputMint=${OUTPUT_MINT}&amount=${AMOUNT}&slippageBps=${SLIPPAGE_BPS}" > "$QUOTE_FILE"

# Request swap transaction
curl -s -X POST \
  -H "x-api-key: $JUPITER_API_KEY" \
  -H "Content-Type: application/json" \
  "https://api.jup.ag/swap/v1/swap" \
  -d "{
    \"quoteResponse\": $(cat $QUOTE_FILE),
    \"userPublicKey\": \"${USER_PUBKEY}\",
    \"dynamicComputeUnitLimit\": true,
    \"prioritizationFeeLamports\": {
      \"priorityLevelWithMaxLamports\": {
        \"maxLamports\": 5000000,
        \"priorityLevel\": \"high\"
      }
    }
  }" > /tmp/jupiter_swap.json

# Extract the swap transaction
SWAP_TX=$(cat /tmp/jupiter_swap.json | jq -r '.swapTransaction')

步骤4:签名并提交交易

使用jupiter-swap.mjs脚本进行签名和提交:

node "$(dirname "$0")/scripts/jupiter-swap.mjs" \
  --keypair "$SOLANA_KEYPAIR_PATH" \
  --transaction "$SWAP_TX"

脚本将输出交易签名和Solscan链接。

安全规则

  1. 始终在执行前显示交换详情并等待用户确认
  2. 绝不要未经明确批准自动执行交换
  3. 始终在尝试交换前检查余额以确保资金充足
  4. 警告如果价格影响超过1%,则警告用户
  5. 警告如果滑点设置高于1%(100个基点),则警告用户
  6. 绝不要记录、显示或传输私钥内容

错误处理

错误原因解决方案
"余额不足"输入代币不足检查余额,减少兑换数量
"滑点容差超出"兑换期间价格变动获取新报价,考虑提高滑点容差
"交易已过期"区块哈希过旧获取新报价并立即重试
"账户未找到"缺少代币账户代币账户将自动创建
"路径未找到"交易对流动性不足尝试更小金额或不同代币
"不支持平台费用"Token2022 代币阻止平台费用使用带有 $JUPITER_API_KEY 请求头的认证 API

重试逻辑

如果兑换因网络问题失败:

  1. 等待 2-3 秒
  2. 获取最新报价(价格可能已变动)
  3. 向用户展示新报价并再次确认
  4. 重试交换

示例交互

查询余额

用户:"我的SOL余额是多少?"

  1. 运行:solana balance --keypair "$SOLANA_KEYPAIR_PATH"
  2. 报告:"您的钱包中有 X.XXX SOL"

代币交换

用户:"将0.5 SOL兑换成USDC"

  1. 获取钱包地址
  2. 获取0.5 SOL(500000000 lamports)兑换USDC的Jupiter报价
  3. 显示报价详情:
    • 从:0.5 SOL
    • 至:约XX.XX USDC(预估)
    • 价格影响:X.XX%
    • 最少收到:XX.XX USDC
  4. 询问:"您是否要继续进行此次交换?"
  5. 等待确认
  6. 当用户回答"是"时:执行交换,报告交易链接
  7. 关于“否”:确认取消操作

列出所有代币

用户:“显示我所有的代币”

  1. 运行:spl-token accounts --owner $(solana address --keypair "$SOLANA_KEYPAIR_PATH")
  2. 格式化并显示代币列表及余额

免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏

文章底部电脑广告
手机广告位-内容正文底部

相关文章

您是本站第393623名访客 今日有1篇新文章/评论