コーディングエージェントからブロックチェーンを操作する CLI Wallet Skill を作った

by fujimura
開発ブロックチェーン
#Web3#ブロックチェーン#Ethereum#ERC-4337#AccountAbstraction#ClaudeCode#Codex#AIエージェント#Web3Auth#Pimlico

CodexやClaude Codeのようなコーディングエージェントが日常的なツールになりつつある今、そのチャットインターフェースからブロックチェーンを操作したいシーンが増えてきています。開発用途だけではありません。たとえば:

  • エージェントのチャットから直接 ETH で支払いをする、あるいは受け取る
  • NFT を発行したり、送付されたものを受け取る
  • AI エージェントがユーザーに代わって決済を実行する
  • AI エージェント同士がブロックチェーンを使って互いを認証する

さらに先を見ると、ユーザーが AI エージェントに一定の権限や資産を委譲し、エージェントが自律的に仕事をこなす時代も遠くありません。そのとき、エージェントが自分のウォレットを持ち、ブロックチェーン上でトランザクションを送れることは基本的な能力の一つになるはずです。

そのような時代を見据えて開発したのが CLI Wallet Skill です。CodexやClaude Codeのチャットインターフェースから自然言語でブロックチェーンを操作できる仕組みを、2種類のバージョンで提供しています。

2つのバージョンの違い

開発したSkillは、技術的なアプローチの異なる2バージョンです:

シンプル版
cli-wallet-skill
  • 通常の EOA アカウント
  • 秘密鍵を .env.local に保管
  • Alchemy API を使用
  • ガス代はユーザー負担
  • 設定が簡単
Smart Account 版
cli-aa-wallet-skill
  • MetaMask Smart Account (ERC-4337)
  • Google ログインで鍵を管理(Web3Auth)
  • Pimlico のペイマスターでガスレス
  • 秘密鍵をディスクに保存しない
  • より本番に近い設計

主な機能

以下は参考例として実装されているコマンドです。コーディングエージェントは秘密鍵と API エンドポイントさえあれば幅広いアクションをコーディングして実行できるため、実際にできることはこれに限りません。

コマンド 機能
address ウォレットアドレスを表示
balance ETH 残高を確認
send <to> <eth> ETH を送信(確認フラグが必要)
tx <hash> トランザクションの確認
nft <address> NFT 保有状況の確認(ERC721/ERC1155)
login Google ログイン(ブラウザが開く)
logout セッションを削除

※ ソーシャルログインのための機能(Smart Account版のみ)

cli-wallet-skill(EOA版)

EOA(Externally Owned Account)ベースのシンプルな版です。Alchemy API キーと秘密鍵を設定するだけで動き始めます。

Claude Code のグローバルSkillとしてインストールする場合:

git clone https://github.com/kofujimura/cli-wallet-skill \
  ~/.claude/skills/cli-wallet-skill
cd ~/.claude/skills/cli-wallet-skill
npm install
cp .env.example .env.local  # ALCHEMY_API_KEY と PRIVATE_KEY を設定

あとはClaude Codeのチャットに話しかけるだけです:

チャット例
> 残高を確認して
→ 現在の ETH 残高を表示
> 0x1234... に 0.005 ETH 送って
→ 署名確認後、送信を実行
> このアドレスが持ってる NFT を見せて
→ ERC721/ERC1155 の保有NFTとメタデータを取得

読み取り系の操作は確認なしで実行され、ETH 送信などの署名が必要な操作は --confirm-signature フラグで明示的な承認を求める設計です。エージェントが勝手にトランザクションを飛ばすことを防ぎます。

cli-aa-wallet-skill(Smart Account版)

アカウント抽象化(ERC-4337)を活用した上位版です。Smart AccountやAccount Abstractionの概念については、以前書いた「inapp-wallet——アプリに埋め込めるブロックチェーン」で詳しく解説しているのであわせて読んでみてください。

このSkillでは、その仕組みを CLI から利用できるよう以下のサービスを組み合わせています:

Google ログイン Web3Auth で鍵を再構築 MetaMask Smart Account Pimlico でガスレス送信

鍵はディスクに保存されず、Google 認証を経て Web3Auth がその場で再構築します。Pimlico のペイマスターがガス代を肩代わりするので、ETH をあらかじめ用意しなくてもトランザクションを送れます。

まず試してみたい場合は、Google ログインの設定なしに秘密鍵モードで動かせます:

git clone https://github.com/kofujimura/cli-aa-wallet-skill \
  ~/.claude/skills/cli-aa-wallet-skill
cd ~/.claude/skills/cli-aa-wallet-skill
npm install
cp .env.example .env.local
# PIMLICO_API_KEY を設定(https://dashboard.pimlico.io)
# PRIVATE_KEY に openssl rand -hex 32 で生成した値を設定
# WEB3AUTH_CLIENT_ID は空のまま

node wallet.js address  # スマートアカウントアドレスを表示
node wallet.js send 0xABCD... 0.001 --confirm  # ガスレスで送信

スマートアカウントは最初の送信時に自動でオンチェーンにデプロイされます。

なぜ「Skill」として作るのか

単体のCLIツールとしても動作しますが、Claude CodeやCodexの Skill として設計した理由があります。

ユーザーが「支払いをして」「NFTを送って」「このアドレスの残高を確認して」と自然な言葉で指示できること——それが出発点です。ブロックチェーンの知識がなくても、チャットの延長で資産を動かせる体験を作りたいと考えました。

また、AI エージェントがユーザーに代わってブロックチェーン上で動くシナリオでは、エージェントと資産管理の仕組みが密に連携している必要があります。Skillとして統合することで、エージェントが会話のコンテキストを保ちながら資産操作を実行できます。「この請求書の金額を確認して、問題なければ支払って」といった指示を一連の流れの中で完結させられるのが強みです。

リポジトリ

どちらも MIT ライセンスで公開しています。Sepolia テストネットで動作確認済みで、本番環境での使用は現時点では非推奨です。

おわりに

「AI エージェントにウォレットを持たせる」という考え方は、今はまだ実験的ですが、その必然性は着実に高まっています。支払い、認証、資産の委譲——これらはすべて、エージェントが単なる「会話の相手」から「仕事を任せられるパートナー」になるための基盤です。

このSkillはその第一歩として作りました。EOA版のシンプルな構成から始め、Smart Account版のガスレス・ソーシャルログインという現代的なアーキテクチャまで段階的に試せる構成にしています。ぜひ使ってみて、感想やフィードバックをもらえると嬉しいです。