evm-swiss-knife について
EVM Swiss Knifeは、Foundryの`cast`コマンドラインツールでEVM互換ブロックチェーンを操作するスキルです。開発者や運用担当者向けに、読み書き、ネットワーク確認、コントラクトのデプロイ、データのデコードを扱います。
主な機能
- 01ネイティブ通貨とERC20残高の照会
- 02コントラクト関数の呼び出し
- 03トランザクションの送信
- 04ブロックとトランザクションの確認
- 05コントラクトのデプロイ
- 0616進データのデコード
活用シーン
- 01アカウントのトークン残高の確認
- 02EVMネットワーク上のコントラクト状態の読み取り
- 03トランザクションやコントラクト呼び出しの送信
- 04ブロックの確認と返却データのデコード
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ kukapay/ crypto-skills --skill evm-swiss-knifeインストール後、Claude Code で/evm-swiss-knifeを入力して読み込まれたか確認します。
詳細
EVM Swiss Knife
このスキルを使用すると、Foundry の cast コマンドラインツールを通じて、EVM 互換ブロックチェーンとやり取りできます。残高の照会、コントラクトの呼び出し、トランザクションの送信、ネットワークの調査など、一般的なブロックチェーン操作に対応しています。
インストール
このスキルを使用するには、cast コマンドを提供する Foundry がインストールされている必要があります。
公式インストールガイドに従ってください:https://getfoundry.sh/introduction/installation
クイックインストール(Linux/Mac)
-
Foundryup をインストールします:
curl -L https://foundry.paradigm.xyz | bash -
シェル設定を読み込むか、新しいターミナルを起動します:
source ~/.bashrc # or ~/.zshrc -
Foundry をインストールします:
foundryup -
インストールを確認します:
cast --version
その他のプラットフォームや詳しい手順については、完全なガイド https://getfoundry.sh/introduction/installation をご覧ください。
前提条件
- Foundry がインストールされている(
castコマンドを使用できる) - RPC エンドポイントが設定されている(
--rpc-urlまたは環境変数を使用) - トランザクション操作用の秘密鍵(トランザクションを送信する場合)
RPC URL の選択
さまざまな EVM ネットワークとやり取りするには、信頼性の高い RPC エンドポイントが必要です。ChainList の API(https://chainlist.org/rpcs.json)を使用して、サポートされているすべてのチェーンの RPC URL をまとめた包括的な JSON リストを取得できます。
RPC URL の選び方:
-
RPC データを取得します:
curl -s https://chainlist.org/rpcs.json | jq '.[] | select(.chainId == 1)' # For Ethereum (chain ID 1) -
次の条件に合う RPC URL を探します:
- 公開されていて無料:API キーが不要
- 追跡がない、または限定的:「tracking": "yes」を含む URL は避ける
- 高速で信頼性が高い:レイテンシーが低い、またはスコアの高い URL を優先
- オープンソース:コミュニティが保守しているエンドポイントを優先
-
よく使われる選択肢(ChainList から抜粋):
- Ethereum(ID 1):https://ethereum-rpc.publicnode.com
- BNB Smart Chain(ID 56):https://bsc-dataseed.binance.org
- Base(ID 8453):https://mainnet.base.org
- Polygon(ID 137):https://polygon-rpc.com
-
本番環境で使用する場合は、信頼性とレート制限の向上のため、Alchemy、Infura、QuickNode などの有料 RPC サービスを検討してください。
-
誤ったチェーンへの接続を避けるため、チェーン ID が目的のネットワークと一致することを必ず確認してください。
一般的な操作
アカウント残高の照会
アドレスの ETH 残高を取得します:
cast balance <address> --rpc-url <rpc_url>
ERC20 トークンの残高を取得します:
cast call <token_contract> "balanceOf(address)(uint256)" <address> --rpc-url <rpc_url>
コントラクト関数の呼び出し(読み取り専用)
view/pure 関数を呼び出します:
cast call <contract_address> "<function_signature>" [args...] --rpc-url <rpc_url>
例 - トークンの総供給量を取得します:
cast call 0xA0b86a33E6441e88C5F2712C3E9b74B6F3f5a8b8 "totalSupply()(uint256)" --rpc-url <rpc_url>
トランザクションの送信
ETH を送信します:
cast send --private-key <pk> --rpc-url <rpc_url> <to_address> --value <amount_in_wei>
コントラクト関数を呼び出します(書き込み):
cast send --private-key <pk> --rpc-url <rpc_url> <contract_address> "<function_signature>" [args...]
ブロックチェーンの調査
最新のブロック番号を取得します:
cast block-number --rpc-url <rpc_url>
ブロックの詳細を取得します:
cast block <block_number> --rpc-url <rpc_url>
トランザクションの詳細を取得します:
cast tx <tx_hash> --rpc-url <rpc_url>
コントラクトのデプロイ
コントラクトをデプロイします:
cast send --private-key <pk> --rpc-url <rpc_url> --create <bytecode> [constructor_args...]
データのデコード
16 進数データをデコードします:
cast --to-ascii <hex_string>
cast --to-dec <hex_string>
ネットワーク別の例
Ethereum メインネット
export ETH_RPC_URL=https://eth-mainnet.alchemyapi.io/v2/YOUR_API_KEY
cast balance 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
Polygon
cast balance <address> --rpc-url https://polygon-rpc.com/
ローカル開発(Anvil)
cast balance <address> --rpc-url http://127.0.0.1:8545
エラー処理
- RPC エラー:エンドポイント URL とネットワーク接続を確認してください
- 残高不足:アカウントにガス代と送金額を賄えるだけの ETH があることを確認してください
- コントラクトエラー:関数シグネチャとパラメーターの型を確認してください
- 秘密鍵エラー:形式が正しいことを確認してください(0x が先頭に付いた 16 進数)
高度な使い方
一括操作
複数の照会にはシェルループを使用します:
for addr in addr1 addr2 addr3; do
echo "Balance of $addr: $(cast balance $addr --rpc-url $RPC_URL)"
done
ガスの見積もり
トランザクションのガスを見積もります:
cast estimate --rpc-url <rpc_url> <to_address> --value <amount>
ABI の操作
複雑なコントラクトでは、ABI をファイルに保存して次のように使用します:
cast call --abi <abi_file> <contract> <function> [args...]
セキュリティに関する注意
- スクリプトやログに秘密鍵を決して公開しないでください
- 機密データには環境変数を使用してください
- メインネットで操作する前にテストネットでテストしてください
- コントラクトアドレスと関数シグネチャを確認してください
- トランザクションを送信するタイミングに備えてガス価格を監視してください