mcpField
W
wallet-integration

wallet-integration

github.com/alphaonedev开发47 次安装
代码仓库

关于 wallet-integration

wallet-integration 是用于在应用和脚本中加入区块链钱包操作的技能,介绍钱包连接、交易发送、资产查询与密钥处理,涵盖 Ethereum 和 Bitcoin 工作流。

主要功能

  1. 01连接区块链网络中的钱包
  2. 02发送 ETH 和 BTC 交易
  3. 03查询余额与代币
  4. 04处理密钥和硬件钱包
  5. 05监听钱包事件

适用场景

  1. 01为 dApp 加入钱包连接
  2. 02从应用发送加密货币
  3. 03跟踪支持网络中的余额
  4. 04响应收到的交易事件

安装

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

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill wallet-integration

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

详细介绍

用途

此技能集成区块链钱包,为 Ethereum 和 Bitcoin 等网络提供安全的加密货币交易、资产管理和密钥处理功能。它抽象化钱包交互,确保密钥安全管理和交易签名。

适用场景

构建需要连接钱包的应用程序时,例如用于代币转账、NFT 管理或查询区块链余额的 dApp,请使用此技能。在涉及使用钱包进行用户身份验证(例如集成 MetaMask)或用于资产跟踪的自动化脚本的场景中应用此技能。

主要功能

  • 使用私钥或助记词连接区块链网络(例如通过 RPC 连接 Ethereum,通过 electrum 连接 Bitcoin)。
  • 执行交易:发送 ETH 或 BTC,包括 Ethereum 的 Gas 费用估算。
  • 管理资产:查询余额、列出代币并处理多链钱包。
  • 安全存储密钥:在内存中加密密钥,并支持 Ledger 等硬件钱包。
  • 监听事件:通过 WebSocket 订阅钱包事件,例如收到交易。

使用模式

始终使用网络和身份验证方式初始化钱包。使用环境变量存储密钥,避免将其硬编码。对于 CLI 命令,请在命令前加上 claw wallet。在代码中,导入 OpenClaw 库并创建钱包实例。使用 async/await 处理网络调用等异步操作。投入生产前,请在沙盒环境中测试集成。

常用命令/API

使用以下 CLI 命令或 API 端点执行钱包操作。通过 $WALLET_API_KEY 环境变量设置身份验证。

  • CLI 命令:claw wallet connect --network ethereum --key $ETH_PRIVATE_KEY --rpc-url https://mainnet.infura.io/v3/your-project-id

    • 标志:--network 用于指定链(例如 ethereum、bitcoin);--key 使用十六进制字符串;--rpc-url 用于指定自定义节点。
    • 示例:连接到 Ethereum 并返回会话 ID。
  • API 端点:POST /api/v1/wallet/connect

    • 请求体:JSON 格式:{"network": "ethereum", "privateKey": "$ETH_PRIVATE_KEY", "rpcUrl": "https://mainnet.infura.io/v3/your-project-id"}
    • 响应:包含 { "status": "connected", "address": "0xYourAddress" } 的 JSON。
  • CLI 命令:claw wallet send --to 0xRecipientAddress --amount 0.1 --network ethereum

    • 标志:--to 用于指定收款方;--amount 的单位为 ETH;添加 --gas-limit 21000 可自定义 Gas 限额。
  • API 端点:POST /api/v1/wallet/transaction

    • 请求体:JSON:{"to": "0xRecipientAddress", "amount": "0.1", "network": "ethereum", "gasLimit": 21000}
    • 代码片段:
      import requests
      import os
      response = requests.post('https://api.openclaw.com/api/v1/wallet/transaction', 
                               json={"to": "0xRecipient", "amount": "0.1"}, 
                               headers={"Authorization": f"Bearer {os.environ['WALLET_API_KEY']}"})
      print(response.json())
      
  • CLI 命令:claw wallet balance --address 0xYourAddress --network bitcoin

    • 标志:--address 用于查询;支持使用 --unit satoshi 提高精度。

配置格式:钱包配置使用 JSON,例如:

{
  "network": "ethereum",
  "rpcUrl": "https://mainnet.infura.io/v3/your-id",
  "privateKeyEnv": "ETH_PRIVATE_KEY"
}

通过 CLI 加载:claw wallet load-config path/to/config.json。

集成说明

API 调用或 CLI 命令始终使用 $WALLET_API_KEY 进行身份验证,避免密钥暴露。使用 pip install openclaw-blockchain 安装依赖项,例如用于 Ethereum 的 web3.py 或用于 Bitcoin 的 bitcoinlib。要支持多条链,请在配置中明确指定网络。避免将密钥存储在代码中;请使用安全保险库或硬件设备。如果要与其他服务集成,请通过 WebSocket 将钱包事件接入 OpenClaw 的事件总线(例如 ws://api.openclaw.com/events)。操作前请验证输入(例如使用 web3.utils.isAddress() 检查地址格式)。

错误处理

捕获常见错误,例如网络故障、密钥无效或资金不足。对 API 调用使用 try-except 代码块。对于 CLI,检查退出代码。

  • 错误:私钥无效 – 代码:400 Bad Request

    • 处理方法:在代码中使用 if not wallet.validate_key(key): raise ValueError("Invalid key") 进行检查
    • 代码片段:
      try:
          wallet.connect(key=os.environ['ETH_PRIVATE_KEY'])
      except ConnectionError as e:
          print(f"Network error: {e}. Retrying in 5s...")
          time.sleep(5)
      
  • 错误:资金不足 – 代码:402 Payment Required

    • 处理方法:先使用 claw wallet balance 查询余额,余额不足时中止操作。
    • CLI 示例:通过管道传递输出:claw wallet balance --address 0xAddr && claw wallet send || echo "Funds low"

始终记录包含上下文的错误(例如网络和时间戳),并对瞬时错误最多重试 3 次,每次重试采用指数退避。

具体使用示例

示例 1:连接并发送 ETH 连接钱包并发送 0.1 ETH:

  1. 设置环境变量:export ETH_PRIVATE_KEY=0xYourHexKey
  2. 运行 CLI:claw wallet connect --network ethereum --key $ETH_PRIVATE_KEY
  3. 发送交易:claw wallet send --to 0xRecipient --amount 0.1
    • 代码:
      import openclaw
      wallet = openclaw.Wallet(network='ethereum')
      wallet.connect(key=os.environ['ETH_PRIVATE_KEY'])
      tx_hash = wallet.send(to='0xRecipient', amount=0.1)
      print(f"Transaction sent: {tx_hash}")
      

示例 2:查询和管理比特币资产 检查余额并转移 BTC:

  1. 设置环境变量:export BTC_PRIVATE_KEY=YourBitcoinKey
  2. 查询余额:claw wallet balance --address bc1YourAddress --network bitcoin
  3. 转移:claw wallet send --to bc1Recipient --amount 0.001 --network bitcoin
    • 代码:
      import openclaw
      wallet = openclaw.Wallet(network='bitcoin')
      wallet.connect(key=os.environ['BTC_PRIVATE_KEY'])
      balance = wallet.get_balance(address='bc1YourAddress')
      if balance > 0.001:
          tx_id = wallet.send(to='bc1Recipient', amount=0.001)
          print(f"Transferred: {tx_id}")
      

图关系

  • 相关:transaction-processing(用于交易后处理)
  • 依赖:blockchain-explorer(用于查询区块数据)
  • 聚类:smart-contracts(用于基于钱包的合约交互)

评论

支持 Markdown