部署与节点运维
部署、监控、Infura/Alchemy、Geth 节点。
30 分钟
部署与节点运维
从本地 Hardhat 到测试网、主网,需要理解部署脚本、RPC 提供商、区块浏览器验证与节点同步。本课介绍 Infura/Alchemy、自建 Geth 节点与基本监控。见 /roadmaps/blockchain。
学习目标
- 用环境变量安全管理私钥与 RPC URL
- 完成测试网部署并在 Etherscan 验证源码
- 了解全节点、归档节点与 RPC 服务的区别
部署脚本
// scripts/deploy.js
const hre = require("hardhat");
async function main() {
const Token = await hre.ethers.getContractFactory("LessonToken");
const token = await Token.deploy();
await token.waitForDeployment();
console.log("LessonToken:", await token.getAddress());
}
main().catch((err) => {
console.error(err);
process.exit(1);
});
# .env(切勿提交到 Git)
SEPOLIA_RPC_URL=https://sepolia.infura.io/v3/YOUR_KEY
PRIVATE_KEY=0x...
ETHERSCAN_API_KEY=...
npx hardhat run scripts/deploy.js --network sepolia
npx hardhat verify --network sepolia DEPLOYED_ADDRESS
RPC 提供商
| 服务 | 用途 |
|---|---|
| Infura | 托管 JSON-RPC,免费额度适合开发 |
| Alchemy | 增强 API、Webhook、调试工具 |
| 公共 RPC | 方便但可能限流,不适合生产 |
生产 DApp 应配置备用 RPC,客户端自动 failover。
节点类型
- 全节点:验证区块、存储近期状态;可对外提供 RPC
- 归档节点:保存全部历史状态;适合区块浏览器与分析
- 轻节点:只同步区块头;手机钱包常用
自建 Geth 示例:
geth --sepolia --syncmode snap --http --http.api eth,net,web3
监控要点
- 合约关键事件:
Transfer、Paused、OwnershipTransferred - 钱包 Gas 余额告警
- 交易失败率与 revert reason 聚合
- 第三方服务(The Graph)索引链上事件供前端查询
练习
- 将 LessonToken 部署到 Sepolia 并在浏览器验证源码
- 配置 hardhat.config 读取
.env中的网络 - 用 cast 或 ethers 查询部署账户余额与 nonce