ローカル環境に コントラクトをデプロイしよう
🐣 ローカル環境でスマートコントラクトをデプロイする
実際には、今までrun.js
でテストを行うたび、下記が行われていました。
-
ローカル環境でイーサリアムネットワークを新規に作成する。
-
ローカル環境でコントラクトをデプロイする。
-
プログラムが終了すると、Hardhatは自動的にそのイーサリアムネットワークを削除する。
このレッスンでは、ローカル環境でイーサリアムネットワークを削除せず、存続させる方法を学びます。
ターミナルで、新しいウィンドウを作成します。
packages/contract/package.json
のscript
部分を以下のように編集してください。
"scripts": {
"run:script": "npx hardhat run scripts/run.js",
"test": "npx hardhat test",
"deploy": "npx hardhat run scripts/deploy.js --network sepolia",
"start": "npx hardhat node"
},
では下のコマンドを実行してみましょう。
yarn contract start
これにより、ローカルネットワークでイーサリアムネットワークを立ち上がります。
ターミナルの出力結果を見て、あなたにHardhatから20個のアカウント(Account
)が提供されていること、それらすべてに10000 ETH
が付与されていることを確認してください。
このローカルネットワークで、スマートコントラクトをデプロイしていきます。
scripts
ディレクトリの中にあるdeploy.js
を以下のとおり更新します。
-
deploy.js
は、今後あなたの構築するフロントエンドと、あなたのスマートコントラクト(WavePortal.sol
)を結び付ける役割を果たします。 -
run.js
がテスト用のプログラムなら、deploy.js
は本番用です。
const main = async () => {
const [deployer] = await hre.ethers.getSigners();
const accountBalance = await deployer.getBalance();
const waveContractFactory = await hre.ethers.getContractFactory("WavePortal");
const waveContract = await waveContractFactory.deploy();
const wavePortal = await waveContract.deployed();
console.log("Deploying contracts with account: ", deployer.address);
console.log("Account balance: ", accountBalance.toString());
console.log("Contract deployed to: ", wavePortal.address);
console.log("Contract deployed by: ", deployer.address);
};
const runMain = async () => {
try {
await main();
process.exit(0);
} catch (error) {
console.error(error);
process.exit(1);
}
};
runMain();
コードの中身は、run.js