mcpField
S
smart-contracts

smart-contracts

github.com/alphaonedev開発49 回インストール
リポジトリ

smart-contracts について

smart-contractsは、Solidityスマートコントラクトの開発、コンパイル、デプロイ、操作を行うスキルです。dAppやEVMチェーンの開発を対象とし、Web3.jsによる操作やSlitherなどを使ったセキュリティ確認も扱います。

主な機能

  1. 01Solidityコントラクトの作成とコンパイル
  2. 02テストネットまたはメインネットへのデプロイ
  3. 03コントラクト状態の読み取りと関数呼び出し
  4. 04Slitherによる脆弱性監査
  5. 05ガス見積もりとトランザクション確認

活用シーン

  1. 01dAppコントラクトの構築とデプロイ
  2. 02NFTまたはDeFiコントラクトの作成
  3. 03状態の読み取りやトークン取引の送信

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill smart-contracts

インストール後、Claude Code で/smart-contractsを入力して読み込まれたか確認します。

詳細

スマートコントラクト

目的

このスキルは、Ethereum などのプラットフォームを対象に、Solidity でのコード記述と Web3.js によるブロックチェーン操作を使用して、安全なスマートコントラクトを開発、コンパイル、デプロイし、操作することに重点を置いています。

使用するタイミング

分散型アプリケーション(dApps)、トークンの作成、EVM 互換ブロックチェーン上の自動契約に関するタスクでこのスキルを使用します。コードのセキュリティを確保したり、トランザクションを処理したり、NFT や DeFi プロトコルの構築など、Web3 エコシステムと連携したりする必要がある場合に適用します。

主な機能

  • 継承、モディファイア、イベントなどの機能を備えた Solidity コントラクトを記述、コンパイルします。
  • Web3.js プロバイダーを使用して、テストネット(例:Sepolia)またはメインネットにコントラクトをデプロイします。
  • RPC 呼び出しを通じてデプロイ済みコントラクトを操作し、状態の読み取りや関数の実行を行います。
  • 脆弱性検出ツールの Slither などを組み込み、セキュリティ監査を実施します。
  • ガスの見積もりとエラーチェックを行いながら、Web3 トランザクションを処理します。

使用パターン

このスキルを使用するには、次のようなワークフローを構成します。まず、.sol ファイルに Solidity コードを記述します。次に、Hardhat や solc などのツールでコンパイルします。Web3 プロバイダー経由でデプロイし、JavaScript を使って操作します。メインネットの前に、必ずローカルノード(例:Ganache)でテストしてください。連携する際は、$ETHEREUM_PROVIDER_URL のようにプロバイダー URL を環境変数として渡します。使用例:Web3.js をインポートしてプロバイダーに接続し、Node.js スクリプトでコントラクトのメソッドを呼び出します。

主なコマンド/API

コンパイルには solc を使用します:solc --optimize --bin input.sol -o build/。Hardhat でデプロイするには、npx hardhat run scripts/deploy.js --network sepolia を実行します。Web3.js API:const web3 = new Web3($ETHEREUM_PROVIDER_URL); でプロバイダーを作成し、web3.eth.getBalance(address) を呼び出します。コントラクトを操作するには ABI を使用します:contract.methods.myFunction().send({from: account, gas: 200000})。設定形式:Hardhat.config.js で、networks: { sepolia: { url: process.env.SEPOLIA_URL, accounts: [process.env.PRIVATE_KEY] } } のようにネットワークを定義します。ここで、$SEPOLIA_URL と $PRIVATE_KEY は環境変数です。Infura で認証するには、プロバイダー URL に $INFURA_API_KEY を設定します。

統合に関する注意

npm install hardhat web3 のように、依存関係をインストールしてこのスキルを統合します。機密データ(例:ETHEREUM_PRIVATE_KEY=$YOUR_PRIVATE_KEY)を保存するための .env ファイルを設定します。外部 API には、https://mainnet.infura.io/v3/$INFURA_API_KEY の形式の URL を使用する Infura や Alchemy などのプロバイダーを利用します。Etherscan 検証との互換性を確保するには、Web3.js バージョン 1.x を使用してください。他のスキルと連携するには、後続の用途(例:React を使ったフロントエンド)向けにコントラクト ABI を JSON としてエクスポートします。

エラー処理

「ParserError: Expected token」のようなメッセージがないか solc の出力を確認し、コンパイルエラーに対処します。デプロイ時は、次のように try-catch ブロックで Web3.js エラーを捕捉します:try { await contract.deploy({data: bytecode}); } catch (e) { if (e.message.includes('gas')) console.error('Insufficient gas'); }。よくある問題:トランザクションがリバートされた場合は、web3.eth.getTransactionReceipt(txHash) でステータスを確認します。非同期のエラーログにはイベントを使用してください。セキュリティ確保のため、require(msg.sender == owner, "Not authorized"); のように Solidity で require 文を使って入力を検証します。必ず資金のあるアカウントを使用し、ガス上限を監視してください。

具体的な使用例

  1. シンプルなストレージコントラクトの作成とデプロイ:SimpleStorage.sol ファイルを作成し、pragma solidity ^0.8.0; contract SimpleStorage { uint storedData; function set(uint x) public { storedData = x; } } を記述します。solc --bin SimpleStorage.sol でコンパイルします。Hardhat を使ってデプロイします。deploy.js に const SimpleStorage = await ethers.getContractFactory("SimpleStorage"); const contract = await SimpleStorage.deploy(); await contract.deployed(); を記述します。npx hardhat run deploy.js --network localhost を実行します。
  2. ERC20 トークンコントラクトとのやり取り:アドレス 0xTokenAddress にトークンがデプロイされているとします。Node.js スクリプトで、const web3 = new Web3($ETHEREUM_PROVIDER_URL); const contract = new web3.eth.Contract(ABI, '0xTokenAddress'); await contract.methods.transfer('0xRecipient', 100).send({from: '0xYourAddress', gas: 50000}); を実行します。資金不足をエラーチェックで処理します。

グラフの関係

  • 関連クラスター:「blockchain」(例:他のブロックチェーンスキルとツールを共有します)。
  • タグによる接続:「solidity」(言語固有のツールにリンクします)、「smart-contracts」(デプロイパターンを相互参照します)、「blockchain」(一般的なブロックチェーン API と連携します)。
  • 出方向のエッジ:「web3」(プロバイダーとのやり取り)、「ethereum」(ネットワーク固有の情報)。

コメント