😸
コントラクトdeploy ~ verifyまで
スマートコントラクトをデプロイしてイーサscanなどでコントラクトのデプロイをすることがよくあるので備忘録としてまとめておく。今回はmumabaiテストネットでの方法。
前提としてhardhatを使用
詳細なhardhatの使用方法などはここでは割愛させていただく。
hardhat起動してプロジェクトを開始する手順は下記
mkdir project名
cd hardhat-project名
npm init -y
npm install --save-dev hardhat
npx hardhat
コントラクト作成
contracts
フォルダにコントラクト作成。
hardhat.config.tsに設定値記載
ここも詳細な説明は省く。私の環境では下記のように記載
import { HardhatUserConfig } from "hardhat/config";
import "@nomicfoundation/hardhat-toolbox";
import "@nomiclabs/hardhat-etherscan";
require('dotenv').config();
const config: HardhatUserConfig = {
solidity: {
compilers: [
{ version: "0.8.18" },
{ version: "0.8.20" }
]
},
networks: {
mumbai: {
url: "https://rpc-mumbai.maticvigil.com", // Mumbai RPC URL
accounts: [`0x${process.env.MUMBAI_PRIVATE_KEY}`] // 秘密鍵
}
},
etherscan: {
apiKey: process.env.POLYGONSCAN_API_KEY
}
};
export default config;
コンパイル -> デプロイ -> Verify
コンパイル
npx hardhat compile
このコマンドでコンパイル
mameta test-smart-contract %npx hardhat compile
Generating typings for: 3 artifacts in dir: typechain-types for target: ethers-v5
Successfully generated 36 typings!
Compiled 3 Solidity files successfully (evm target: paris).
デプロイ
最小限のデプロイスクリプトの例を下記に記載しておく。
scripts/deploy.jsとして記載。
import { ethers } from "hardhat";
async function main() {
const TestContract = await ethers.getContractFactory("TestContract");
const testContract = await TestContract.deploy();
await testContract.deployed();
console.log(
`testContract deployed to ${testContract.address}`
);
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});
下記コマンドでデプロイ
mameta test-smart-contract %npx hardhat run scripts/deploy.ts --network mumbai
PassportSBT deployed to 0x35288b---------------------78762
Verify
下記コマンドでVerifyすると mumbai スキャンでコントラクトを確認することができる。
mameta test-smart-contract %npx hardhat verify --network mumbai --contract contracts/PassportSBT.sol:PassportSBT 0x35288bac0777aD7dDA37BE2B0d38873BDDb78762
Nothing to compile
No need to generate any newer typings.
Successfully submitted source code for contract
contracts/PassportSBT.sol:PassportSBT at 0x35288bac0777aD7dDA37BE2B0d38873BDDb78762
for verification on the block explorer. Waiting for verification result...
Successfully verified contract PassportSBT on Etherscan.
https://mumbai.polygonscan.com/address/0x35288bac0777aD7dDA37BE2B0d38873BDDb78762#code
ちなみにこれをする前にhardhat.config.ts
で下記の設定を記載しておく必要あり。apiキーはそれぞれのスキャンに行けば取得できる。
etherscan: {
apiKey: process.env.POLYGONSCAN_API_KEY
}
Discussion