コントラクトをローカルにデプロイする
前回、作成したクイズコントラクトをHardhatのローカルにデプロイしていきます。
scriptsフォルダーを作成して、フォルダー内にdeploy.jsファイルを作成します。
mkdir scripts
touch deploy.js
deploy.jsに以下のコードを貼り付けます。
const { ethers } = require("hardhat");
const main = async () => {
const [deployer] = await ethers.getSigners();
const quizAppFactory = await ethers.getContractFactory("QuizApp");
const quizAppContract = await quizAppFactory.deploy();
const quizApp = await quizAppContract.waitForDeployment();
const deployedContractAddress = await quizApp.getAddress();
console.log("Contract deployed to:", deployedContractAddress);
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();
デプロイするアドレスをdeployerに入れます。
const [deployer] = await ethers.getSigners();
QuizAppコントラクトのインスタンスを生成するためのファクトリを取得します。
const quizAppFactory = await ethers.getContractFactory("QuizApp");
コントラクトをブロックチェーン上にデプロイします。
const quizAppContract = await quizAppFactory.deploy();
トランザクションがマイニングされ、コントラクトのデプロイが完了するまで待機します。
const quizApp = await quizAppContract.waitForDeployment();
コントラクトアドレスを取得して、ログに出力します。
const deployedContractAddress = await quizApp.getAddress();
コマンドを短縮するためpackage.jsonのscriptsにデプロイコマンドを追加します。
"scripts": {
"test": "npx hardhat test",
"local_deploy": "npx hardhat run scripts/deploy.js --network localhost"
}
local_deployを実行します。
npm local_deploy
> contract@1.0.0 local_deploy
> npx hardhat run scripts/deploy.js --network localhost
Contract deployed to: 0x5FC8d32690cc91D4c39d9d3abcBD16989F875707
Contract deployed by: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
ローカルにデプロイできたことが確認できました!