⛑️
ポリゴン - Hardhat mumbaiへのデプロイと実行
Hardhat
を使用して、ポリゴンのテストネットのmumbai
にスマートコントラクトをデプロイし、実行する手順になります。
こちらのHardhat
のクイックスタートの続きから説明しますので、まずはこちらの手順に沿ってプロジェクトの作成を済ませておいてください。
Mumbai
hardhat.config.ts
に、mumbai
ネットワークとetherscan
を設定します。
hardhat.config.ts
import {HardhatUserConfig} from "hardhat/config";
const config: HardhatUserConfig = {
defaultNetwork: "localhost",
solidity: "0.8.19",
networks: {
mumbai: {
url: "https://rpc-mumbai.maticvigil.com",
accounts: [process.env.PRIVATE_KEY!]
},
},
etherscan: {
apiKey: {
polygonMumbai: process.env.POLYSCAN_KEY!
}
}
};
export default config;
polygonscan > APIキーから、APIキーの新規作成をします。デプロイ先はmumbai
ですが、APIキーはpolyscan(mumbaiではなく)から作成します。
環境変数PRIVATE_KEY
とPOLYSCAN_KEY
を設定します。
環境変数
export PRIVATE_KEY=f58e... (メタマスクのアカウント詳細からプライベートキーをコピペ)
export POLYSCAN_KEY=93ZR... (先ほど作成したpolygonscanのAPIキーをコピペ)
mumbaiへデプロイします。
デプロイ
npx hardhat run scripts/deploy.ts --network mumbai
デプロイが成功すると、アンロック・タイムスタンプとコントラクト・アドレスが表示されるので、これを控えます。
デプロイ結果
Lock with 0.01ETH and unlock timestamp 1704078355 deployed to 0x3D6D4...De98f
次にverify
をします。タイムスタンプとアドレスをご自身の値に置き換えてください。
ライブラリのインストール
pnpm install --save-dev @nomicfoundation/hardhat-verify
verify
npx hardhat verify --network mumbai 0x3D6D4...De98f 1704079784
成功すると以下のように表示されます。最後に表示されるURLをブラウザから開きます。
以下のように緑のチェックマークがつきます。
アンロックされる60秒後まで待ちます。
新規にファイルscripts/withdraw.ts
を作成し、スマコンのwithdraw()
を呼び出す実装をします。その際にconnect(signer)
で呼び出すアカウントを指定します。
scripts/withdraw.ts
import {ethers} from "hardhat";
async function main() {
try {
const Lock = await ethers.getContractFactory("Lock");
// ご自身のスマートコントラクトのアドレスを設定する
const contractAddress = "0x063B...577";
const contract = await Lock.attach(contractAddress);
// デプロイしたアカウントで実行する。
const privateKey = process.env.PRIVATE_KEY!;
const wallet = new ethers.Wallet(privateKey);
const signer = wallet.connect(ethers.provider);
await contract.connect(signer).withdraw(); // スマコンの呼び出し
console.log("done");
} catch (error) {
console.error(error);
process.exit(1);
}
}
main();
スクリプトを実行し、スマート・コントラクトを呼び出します。
スマコンの実行
npx hardhat run scripts/withdraw.ts --network mumbai
正常に成功すると、スマコンのバランスがゼロになり、正常にMaticが引き出されたことが確認できます。イベントを開くとWithdrawal
とインターナル・トランザクションが作成されたのが確認できます。
Discussion