solidity について
solidity スキルは、Ethereum のスマートコントラクト開発やブロックチェーンのプロトタイピング向けに、AI による Solidity コードの作成、コンパイル、デバッグを支援します。solc によるコンパイルと ABI 生成も扱います。
主な機能
- 01Solidity コントラクトコードの作成
- 02solc によるバイトコードのコンパイル
- 03ABI の生成
- 04コントラクトの型・イベント・関数の利用
活用シーン
- 01トークンコントラクトの開発
- 02分散型取引所コントラクトの構築
- 03投票システムやオンチェーン状態ロジックの実装
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill solidityインストール後、Claude Code で/solidityを入力して読み込まれたか確認します。
詳細
solidity
目的
このスキルを使うと、Ethereum ブロックチェーン上で安全なスマートコントラクトを実現する Solidity コードの作成、コンパイル、デバッグができます。分散型アプリケーションとやり取りする Solidity スクリプトの生成と操作に重点を置いています。
使用する場面
トークンの実装、分散型取引所、投票システムなど、Ethereum ベースのスマートコントラクトを開発するときに使用します。トランザクションや状態変更の処理など、オンチェーンロジックが必要なタスク、特に Web3 統合やブロックチェーンのプロトタイピングに関わるプロジェクトで活用してください。
主な機能
- 継承、ライブラリ、修飾子に対応した静的型付けコードを作成します。
- solc コンパイラーを使用して Solidity ファイルをバイトコードにコンパイルします。
- コントラクトとのやり取りに使用する ABI(Application Binary Interface)を生成します。
- 安全なストレージに使用する uint、address、mapping などのデータ型を扱います。
- ログの出力やロジックの実行に使用するイベントと関数に対応しています。
使用パターン
タスクを実行するには、コントラクト定義、状態変数、関数を含むコードを構成します。たとえば、「シンプルなトークン用の Solidity コントラクトを書いてください」のようなプロンプトを指定して、このスキルを呼び出します。コードでは必ず Solidity のバージョンを指定してください(例:pragma solidity ^0.8.0;)。コードのコンパイル、エラーの確認、再デプロイといった反復的な開発で使用できます。エンドツーエンドのワークフローには、Hardhat や Truffle などのテストフレームワークを統合してください。
よく使うコマンド/API
コントラクトのビルドには solc コンパイラーを使用します。ファイルをコンパイルするには、solc --optimize --bin YourContract.sol --output-dir build/ を実行します。ABI を生成するには、solc --abi YourContract.sol を実行します。OpenClaw では、JSON ボディを指定して POST /api/solidity/compile などの API エンドポイントから呼び出します:{"source": "pragma solidity ^0.8.0; contract Simple {}"}。設定形式には、{"language": "Solidity", "sources": {"YourContract.sol": {"content": "..."}}} を含む solc.json ファイルを使用します。Ethereum とのやり取りでは、RPC ノード用に $ETHEREUM_API_KEY などの環境変数を設定し、web3.js を使用します:const web3 = new Web3(new Web3.providers.HttpProvider(https://mainnet.infura.io/v3/${process.env.ETHEREUM_API_KEY}))。
統合に関する注意
プロンプトにコードスニペットを渡して Solidity を OpenClaw に統合します(例:「この Solidity コードをコンパイルしてください:pragma solidity ^0.8.0; contract Example {}。」)。プロジェクトのセットアップには Hardhat を使用します。npm install --save-dev hardhat でインストールし、ワークフロー内で npx hardhat compile を実行します。API を呼び出す場合は、$SOLC_VERSION が設定されていることを確認してください(例:export SOLC_VERSION=0.8.19)。solc-select $SOLC_VERSION などのコマンドで使用します。デプロイする場合は、認証情報を設定した Infura または Alchemy のエンドポイントを指定します:export ALCHEMY_API_KEY=yourkey を実行し、web3 経由で接続します。エラー処理を行わずにブロックチェーンと直接やり取りすることは避けてください。
エラー処理
コンパイル時には、未宣言変数などの構文エラーを確認します。solc --optimize YourContract.sol 2>&1 を実行して出力を取得し、「Parser error: Expected token」のようなメッセージを解析してください。実行時エラーを防ぐには、次の例のように関数を require 文でラップします:function safeTransfer(uint amount) public { require(amount > 0, "Amount must be positive"); }。OpenClaw では、レスポンスコードを確認して API エラーを処理します:if (response.status === 400) { retry with corrected code; }。よくある問題として、ガス上限の超過があります。不要な計算を削除してコードを最適化してください。型の不一致には、uint8(myUint) = 255; のように明示的な型変換を使用します。イベントでエラーを記録します:event Error(string message); emit Error("Transaction failed")。
具体的な使用例
- シンプルなコントラクトを作成してコンパイルする:基本的なストレージコントラクトを作成するには、次のようにプロンプトを入力します:「数値を保存するコントラクトの Solidity コードを生成してください。」出力:pragma solidity ^0.8.0; contract Storage { uint public number; function set(uint _number) public { number = _number; } } 次に、次のコマンドでコンパイルします:solc --bin Storage.sol。デプロイ用のバイトコードが得られます。
- トークンコントラクトをデプロイする:ERC20 トークンの場合は、次のように入力します:「Solidity で ERC20 トークンコントラクトを書いてください。」出力:pragma solidity ^0.8.0; import "OpenZeppelin/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol"; contract MyToken is ERC20 { constructor() ERC20("MyToken", "MTK") { _mint(msg.sender, 1000 * 10 ** 18); } } 署名用に $PRIVATE_KEY が設定されていることを前提に、次のコマンドでデプロイします:npx hardhat run scripts/deploy.js --network sepolia。
グラフの関係
- 関連クラスター:ブロックチェーン(例:web3.js など、ほかのブロックチェーンスキルとノードを共有します)。
- 関連タグ:solidity(直接一致)、smart-contracts(コントラクト固有のツール向け)、ethereum(Ethereum エコシステムのスキルへのリンク)。
- 外向きリンク:ethereum(デプロイ用)、smart-contracts(監査ツール用)。
- 内向きリンク:programming(言語スキルとして)、blockchain(サブカテゴリとして)。