像专业人士一样部署智能合约!!!

  • BuildBear
  • 发布于 2022-04-13 17:49
  • 阅读 31

本文介绍了一种改进智能合约部署脚本的方法,重点介绍使用 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 installyarn 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;

在添加上述文件后,你的文件夹结构应如下所示:

hardhat-deploy folder structure 1

!你已经升级了自己 🥳🥳🥳🥳🥳

让我们来看看我们所做的魔法。

  1. 在文件夹位置打开一个终端,运行命令: npx hardhat node —-no-deploy 这将启动一个带有多个账户的 hardhat 节点,用于部署目的
  2. 在同一文件夹位置打开一个新的终端,现在运行以下命令: npx hardhat deploy —-network localhost
  3. 如果一切顺利,你应该在终端中看到以下内容:
正在部署 "NFT" (tx: 0x5c8faff64acb214523566f9fa0d1168159c0c380d71cc5486828e34aff085a19)...: 部署到 0x5FbDB2315678afecb367f032d93F642f64180aa3,使用 gas 2525550

AND,你会在你的目录结构中看到一个名为 deployments 的新文件夹。就像这样:

hardhat-deploy folder structure 2

深入 deployments 文件夹中的文件,你会注意到它保存了合约被部署地址及其他详细信息。deployments 文件夹中保存的详细信息是针对合约被部署到的每个链的。

我们在终端中运行另一个命令 npx hardhat deploy --network mumbai-matic 将合约部署到 Mumbai Matic 测试网络。之后我们的目录结构如下所示:

hardhat-deploy folder structure 3

正如你所注意到的,我们现在有一个名为 mumbai-matic 的新文件夹,并且在该目录中保存了详细信息。

就这样!!!你现在是一个更优秀的区块链开发者。

我们希望你喜欢我们在这里所做的。如果你喜欢,请在文章末尾鼓掌 👏,并与朋友分享。

此外请注意:你可以从这里下载并运行我们将在教程 (aka tuts) 中使用的相同代码 👉 Github repository . 如果你喜欢我们的内容,也请在 Github 上给我们一个星星 🌟。

祝你编码愉快!!!

作者(欢迎反馈):👇

Amateur-DevPari Tomar

  • 原文链接: medium.com/buildbear/dep...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
BuildBear
BuildBear
https://medium.com/buildbear