Object:
阶段目标:搭建最小Hardhat项目。
Key Result:
功能一:部署合约
[x] 本地部署
[x] 远程部署
功能二:验证合约
功能二:测试合约
功能三:创建并引用库
合约部署
配置网络
隐藏敏感信息
部署合约
合约验证
verify()函数数据准备
@nomiclabs/hardhat-etherscan包ETHERSCAN_API_KEY
td 更改 etherscan apiKey 的配置,方便应用能同时使用 Georli 和 Rinkeby URL
td 了解 Hardhat run 组件
verify()函数调用
成功完成了合约的远程部署。
成功纵览了一遍合约验证的逻辑,需要通过写代码来践行一遍。
成功使用 Alchemy RPC URL 在 Goerli 测试链上部署合约。
1️⃣ 配置网络
进入
hardhat.contract.js配置文件修改默认网络:
defaultNetworks: "<network_name>"添加网络信息:
身份 (Who):
chainId位置 (Where):
url: RPC_URL使用方式 (How)::
accounts: PRIVATE_KEY
2️⃣ 隐藏敏感信息
.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_URL
cm
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 频道
