setup-solidity-contracts について
HardhatまたはFoundryを使うSolidityプロジェクトのセットアップスキルです。既存プロジェクトの判別、OpenZeppelinの導入、FoundryのRemappings設定に加え、アップグレード可能なコントラクトのインポート方法を扱います。
主な機能
- 01HardhatまたはFoundryプロジェクトの判別
- 02各フレームワークの初期化
- 03標準版・アップグレード可能版OpenZeppelinの導入
- 04Foundry Remappingsの設定
- 05プロキシ用と通常用のインポート選択
活用シーン
- 01新しいSolidityプロジェクトの初期化
- 02既存のFoundryプロジェクトへのOpenZeppelin追加
- 03プロキシデプロイ用の依存関係設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ openzeppelin/ openzeppelin-skills --skill setup-solidity-contractsインストール後、Claude Code で/setup-solidity-contractsを入力して読み込まれたか確認します。
詳細
Solidity のセットアップ
既存のプロジェクトでは、hardhat.config.*(Hardhat)または foundry.toml(Foundry)を探してフレームワークを特定します。新しいプロジェクトでは、ユーザーに希望するフレームワークを尋ねます。
Hardhat のセットアップ
- プロジェクトを初期化します(新しいプロジェクトを始める場合のみ)
npx hardhat init # Hardhat v2
npx hardhat --init # Hardhat v3
- OpenZeppelin Contracts をインストールします。
npm install @openzeppelin/contracts
- アップグレード可能なコントラクトを使用する場合は、アップグレード可能版もインストールします。
npm install @openzeppelin/contracts-upgradeable
Foundry のセットアップ
- Foundry をインストールします。
curl -L https://foundry.paradigm.xyz | bash
foundryup
- プロジェクトを初期化します(新しいプロジェクトを始める場合のみ)
forge init my-project
cd my-project
- OpenZeppelin Contracts を追加します。
forge install OpenZeppelin/openzeppelin-contracts@v<VERSION>
- アップグレード可能なコントラクトを使用する場合は、アップグレード可能版も追加します。
forge install OpenZeppelin/openzeppelin-contracts-upgradeable@v<VERSION>
https://github.com/OpenZeppelin/openzeppelin-contracts/releases で最新バージョンを確認してください。リリースタグを指定してください。指定しない場合、
forge installはデフォルトブランチを取得するため、不安定な可能性があります。
remappings.txt(アップグレード可能なコントラクトを使用しない場合)
@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/
remappings.txt(アップグレード可能なコントラクトを使用する場合)
@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/
@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/
注記 上記のリマッピングでは、
@openzeppelin/contracts/(プロキシコントラクトを含む)と@openzeppelin/contracts-upgradeable/の両方が、openzeppelin-contracts-upgradeableサブモジュールとそのサブディレクトリから提供されます。これには、同じリリースバージョン番号のopenzeppelin-contractsの推移的なコピーも含まれます。この形式は、Etherscan の検証を機能させるために必要です。特に、別途インストールされたopenzeppelin-contractsのコピーは一切使用されません。
インポート規約
- 標準:
@openzeppelin/contracts/token/ERC20/ERC20.sol - アップグレード可能版:
@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol - アップグレード可能版は、プロキシ経由でデプロイする場合にのみ使用してください。それ以外の場合は、標準コントラクトを使用してください。