# 编程日记:Hardhat远程部署(2022-08-29) **Published by:** [Corror](https://paragraph.com/@corror/) **Published on:** 2022-08-29 **URL:** https://paragraph.com/@corror/hardhat-2022-08-29 ## Content 编程学习行动指南阶段OKRObject:阶段目标:搭建最小Hardhat项目。Key Result:功能一:部署合约[x] 本地部署[x] 远程部署功能二:验证合约功能二:测试合约功能三:创建并引用库行动框架合约部署配置网络隐藏敏感信息部署合约合约验证verify() 函数数据准备@nomiclabs/hardhat-etherscan 包ETHERSCAN_API_KEYtd 更改 etherscan apiKey 的配置,方便应用能同时使用 Georli 和 Rinkeby URLtd 了解 Hardhat run 组件verify() 函数调用做了什么?成功完成了合约的远程部署。成功纵览了一遍合约验证的逻辑,需要通过写代码来践行一遍。成功使用 Alchemy RPC URL 在 Goerli 测试链上部署合约。收获了什么知识?部署合约的步骤1️⃣ 配置网络进入 hardhat.contract.js 配置文件修改默认网络:defaultNetworks: ""添加网络信息:身份 (Who):chainId位置 (Where): url: RPC_URL使用方式 (How):: accounts: PRIVATE_KEY2️⃣ 隐藏敏感信息.env 文件添加 PRIVATE_KEY 和 RPC_URL 的具体内容hardhat.contract.js 文件安装 dotenv 包:yarn add --dev dotenv引入 dotenv 模块:require("dotenv").config()cm 为什么需要调用 require() 的 .config() 方法? Patrick 解释的 "to enable the config" 是什么意思?隐藏敏感信息:隐藏私钥:const PRIVATE_KEY = process.env.PRIVATE_KEY隐藏网址:const RPC_URL = process.env.RPC_URLcm process 的作用是什么?为什么可以接 .env? 可以谷歌搜索 "what is process.env.PRIVATE_KEY" 或者 "dotenv process"3️⃣ 部署合约创建工厂:const Factory = ethers.getContractFactory()部署合约:const contract = await Factory.deploy()确认合约:await contract.deployed()cm 为什么在 Hardhat 当中,确认合约是 .deployed() 而非 ethers.js 中的 wait()? 两者有什么区别?显示合约地址:console.log(contract.address)收获了什么资源?今天探索到了一批优秀的 Web3 开发者,重点提及两位:郭宇,一位优秀的程序员,有很棒的编程功底,同时认知半径广阔,虽说对新领域的预测可能会被李笑来吐槽,但是作为看家本领的编程还是很牛逼的。关注:Twitter,Mirror, 代表作:Web3 DApp 最佳编程实践指南shep, NextDAO 的技术创始人,他为我打开了一片新的程序员大门。推荐关注:link3, Twitter, 以及 NextDAO 中的 web3-develp 频道 ## Publication Information - [Corror](https://paragraph.com/@corror/): Publication homepage - [All Posts](https://paragraph.com/@corror/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@corror): Subscribe to updates