- 首先需要一个科学上网的工具,6 元一个月嘎嘎好用
https://mxwljsq.com/user/shop - 安装 WSL,WSL は Linux の Windows サブシステムであり、管理者権限で PowerShell を開き、一度にインストールします。
wsl --install
- コードを書くためのツールである VSCode をインストールし、プラグインをインストールし、左下の小さなアイコンをクリックして WSL に接続します。
- curl をインストールします。curl はコマンドラインで動作するファイル転送ツールです。
mkdir folder
cd folder
sudo apt-get install curl
- nvm をインストールします。nvm は nodejs のバージョン管理に使用できます。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
- nodejs をインストールします。nodejs は JavaScript の実行環境です。
nvm install --lts
hardhat を使用する場合や VSCode で solidity ファイルを編集する場合は、プラグインをインストールする必要があります。黄色のものは hardhat をサポートしています。
solidity
開発ツールを選択します。現在、主流の開発ツールは次のとおりです:Remix、Truffle、Hardhat、Foundry
Remix:最もシンプルな開発ツールで、初心者に非常に適しています。完全な GUI 機能を備えており、コード量を大幅に削減できます。
Truffle:最も古い開発ツールで、Remix と比較してローカルにインストールされ、ネットワークのサポートは必要ありません。GUI も備えています。
Hardhat:現在最も主流の開発フレームワークで、Truffle と比較して GUI はありませんが、柔軟性が高いです。
Foundry:新興の開発フレームワークで、最高の柔軟性を提供します。初心者の場合、契約自体に焦点を当てる場合は、JavaScript の学習は必要ありません。solidity 言語のみを学習すればよいです。
hardhat の使用手順
- プロジェクトを初期化します。
npm init
- hardhat をインストールします(古いバージョンのインタラクティブおよび契約のデプロイ方法はすでに無効になっている可能性があります)。
npm install hardhat
- hardhat プロジェクトを初期化します。
npx hardhat init
- 依存関係をインストールします。
@openzeppelin/contracts erc20、erc21 の標準など
@openzeppelin/contracts-upgradeable アップグレード可能な erc20、erc721 など
@chainlink/contracts ランダム数リクエスト、契約の自動実行などに使用します
dotenv 重要な情報の保存
@nomiclabs/hardhat-ethers 契約のデプロイに使用できます
@openzeppelin/hardhat-upgrades 代理契約のデプロイに使用します
@openzeppelin/hardhat-defender 契約のセキュリティ保護に使用します
@nomiclabs/hardhat-etherscan 契約のデプロイ後、ブロックチェーンエクスプローラで自動的に検証します
chai 契約テスト
@openzeppelin/test-helpers openzeppelin チームの契約テスト
npm install @openzeppelin/contracts
npm install @openzeppelin/contracts-upgradeable
npm install @chainlink/contracts
npm install dotenv
npm install @nomicfoundation/hardhat-toolbox
npm install @nomiclabs/hardhat-ethers
npm install @openzeppelin/hardhat-upgrades
npm install @openzeppelin/hardhat-defender
npm install @nomiclabs/hardhat-etherscan
npm install chai
npm install @openzeppelin/test-helpers
- .env ファイルを作成して重要な情報を保存します。
MNEMONIC=""
ALCHEMY_API_KEY=""
etherscanKey=""
DEFENDER_TEAM_API_KEY=""
DEFENDER_TEAM_API_SECRET_KEY=""
- hardhat.config.js を変更します。
require('dotenv').config()
require("@nomicfoundation/hardhat-toolbox");
require('@nomiclabs/hardhat-ethers');
require('@openzeppelin/hardhat-upgrades');
require("@openzeppelin/hardhat-defender");
require("@nomiclabs/hardhat-etherscan");
module.exports = {
solidity: {
version: '0.8.17',
settings: {
optimizer: {
enabled: true,
runs: 200,
},
},
},
networks: {
sepolia: {
url: `https://eth-sepolia.g.alchemy.com/v2/${process.env.ALCHEMY_API_KEY}`,
accounts: [process.env.MNEMONIC]
},
},
etherscan: {
apiKey: process.env.etherscanKey,
},
defender: {
apiKey: process.env.DEFENDER_TEAM_API_KEY,
apiSecret: process.env.DEFENDER_TEAM_API_SECRET_KEY,
},
};
- Wizard を使用して契約を開発します。https://docs.openzeppelin.com/contracts/4.x/wizard
- 契約をコンパイルします。
npx hardhat compile
- 契約をデプロイするスクリプト(ethers6.0 では動作しない場合があります)。
async function main() {
const [deployer] = await ethers.getSigners();
console.log("Deploying contracts with the account:", deployer.address);
const DragonToken = await ethers.deployContract("DragonToken");
console.log("Token address:", await DragonToken.getAddress());
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});
- hardhat ローカルネットワークを起動します。
npx hardhat node
- hardhat ローカルネットワークにデプロイします。
npx hardhat run ./scripts/deploy.js --network localhost
- sepolia テストネットワークにデプロイします。
npx hardhat run ./scripts/deploy.js --network sepolia