本文介绍了一种改进智能合约部署脚本的方法,重点介绍使用 hardhat-deploy
插件提升部署过程的质量和专业性。文章提供了详细的步骤、代码示例和目录结构,以帮助读者理解和实现这一技术。
本文考虑了我们之前的两个文章:第 1 部分 和 第 2 部分;在其中我们学习了智能合约的部署。
这篇文章的目的是 展示一种更好的智能合约部署方式。你可以将这种新方法视为一种可选策略;但是,如果你正在努力成为一名专业的智能合约开发者——那么我建议你将其作为一项 必学实践。
概述
到目前为止,我们一直在使用我们 /scripts
文件夹中的一个简单脚本来部署智能合约。我们部署最后一个 NFT 智能合约的脚本如下:
const { ethers } = require("hardhat");async function main() {
const NFT = await ethers.getContractFactory("NFT");
const deployedNFT = await NFT.deploy();
console.log(`合约部署到地址: ${deployedNFT.address}`)
}main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});
是时候升级了!
十天 GIF 键盘 - 为你的对话带来个性 | 用 Tenor 说得更多►
抱歉,该内容在你所在的地区不可用。
第一:我们将从 这里 安装 hardhat-deploy
。根据你的使用方式,将使用 npm install
或 yarn add
。
第二:将 require('hardhat-deploy')
添加到我们的 hardhat-config.js
文件中。
我们的更新配置文件将如下所示:
require('dotenv').config();
require('@nomiclabs/hardhat-ethers');
require('hardhat-deploy'); // <--- 这是新添加的内容const {API_URL, PRIVATE_KEY} = process.env;
....
....
第三:在项目根目录中创建一个新的 deploy
文件夹,并在其中添加以下文件。 注意文件名,这很重要。
// 文件位置: ./deploy/00_deploy_NFT.jsconst func = async function (hre) {
const { getNamedAccounts, deployments } = hre;
const { deployer } = await getNamedAccounts();
const { deploy } = deployments;
await deploy("NFT", {
from: deployer,
log: true,
});
}func.tags = ["NFT"];module.exports = func;
在添加上述文件后,你的文件夹结构应如下所示:
瞧!你已经升级了自己 🥳🥳🥳🥳🥳
让我们来看看我们所做的魔法。
npx hardhat node —-no-deploy
这将启动一个带有多个账户的 hardhat 节点,用于部署目的npx hardhat deploy —-network localhost
正在部署 "NFT" (tx: 0x5c8faff64acb214523566f9fa0d1168159c0c380d71cc5486828e34aff085a19)...: 部署到 0x5FbDB2315678afecb367f032d93F642f64180aa3,使用 gas 2525550
AND,你会在你的目录结构中看到一个名为 deployments
的新文件夹。就像这样:
深入 deployments
文件夹中的文件,你会注意到它保存了合约被部署地址及其他详细信息。deployments
文件夹中保存的详细信息是针对合约被部署到的每个链的。
我们在终端中运行另一个命令 npx hardhat deploy --network mumbai-matic
将合约部署到 Mumbai Matic 测试网络。之后我们的目录结构如下所示:
正如你所注意到的,我们现在有一个名为 mumbai-matic
的新文件夹,并且在该目录中保存了详细信息。
就这样!!!你现在是一个更优秀的区块链开发者。
我们希望你喜欢我们在这里所做的。如果你喜欢,请在文章末尾鼓掌 👏,并与朋友分享。
此外请注意:你可以从这里下载并运行我们将在教程 (aka tuts) 中使用的相同代码 👉 Github repository . 如果你喜欢我们的内容,也请在 Github 上给我们一个星星 🌟。
祝你编码愉快!!!
作者(欢迎反馈):👇
- 原文链接: medium.com/buildbear/dep...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!