wallet-integration について
wallet-integrationは、アプリやスクリプトにブロックチェーンウォレット操作を組み込むスキルです。EthereumやBitcoinのワークフローで、接続、取引、資産照会、鍵の取り扱いを説明します。
主な機能
- 01ブロックチェーンネットワークに接続
- 02ETHとBTCの取引を送信
- 03残高とトークンを照会
- 04鍵とハードウェアウォレットを扱う
- 05ウォレットイベントを監視
活用シーン
- 01dAppにウォレット接続を追加
- 02アプリから暗号資産を送信
- 03対応ネットワークの残高を追跡
- 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ではガス代も見積もれます。
- 資産を管理します。残高の照会、トークンの一覧表示、マルチチェーンウォレットの処理が可能です。
- 鍵を安全に保管します。鍵をメモリ内で暗号化し、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には16進文字列を使用します。--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。
- 本文:JSON形式:
-
CLIコマンド:
claw wallet send --to 0xRecipientAddress --amount 0.1 --network ethereum- フラグ:
--toは受取人を指定します。--amountはETH単位です。カスタムのガス代には--gas-limit 21000を追加します。
- フラグ:
-
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())
- 本文: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を使用してください。Ethereum用のweb3.pyやBitcoin用のbitcoinlibなどの依存関係を、pip install openclaw-blockchainでインストールします。マルチチェーンに対応する場合は、設定でネットワークを明示してください。鍵をコードに保存せず、安全なボールトまたはハードウェアデバイスを使用してください。他のサービスと統合する場合は、WebSocket(例:ws://api.openclaw.com/events)を使って、ウォレットイベントをOpenClawのイベントバスに連携します。操作の前に、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 を送金するには:
- 環境変数を設定します:
export ETH_PRIVATE_KEY=0xYourHexKey - CLI を実行します:
claw wallet connect --network ethereum --key $ETH_PRIVATE_KEY - トランザクションを送信します:
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:Bitcoin 資産の照会と管理 残高を確認して BTC を送金するには:
- 環境変数を設定します:
export BTC_PRIVATE_KEY=YourBitcoinKey - 残高を照会します:
claw wallet balance --address bc1YourAddress --network bitcoin - 送金します:
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(ウォレットベースのコントラクト操作)