经过19章的系统学习,相信你已经对区块链技术的核心概念有了全面理解。然而,知识最终要落地为工程实践——你需要知道在什么场景下选用什么工具、在哪个网络部署合约。本附录不提供新的理论,而是将所有开发环节的核心工具梳理为“一张桌面速查表”,开发时翻开即可找到所需命令。
A.1 智能合约开发框架与CLI
Hardhat(推荐新手与全栈开发者)
Hardhat 是目前以太坊生态系统中最广泛使用的智能合约开发框架,以其JavaScript/TypeScript生态的灵活性和丰富的插件著称。
| 命令 | 功能 |
|---|---|
npx hardhat | 交互式初始化新项目 |
npx hardhat compile | 编译 contracts/ 目录下所有Solidity文件 |
npx hardhat test | 运行 test/ 目录下所有测试脚本 |
npx hardhat node | 启动本地Hardhat Network(类似Ganache,随调随用) |
npx hardhat run scripts/deploy.js --network | 在指定网络上运行部署脚本 |
npx hardhat verify --network | 验证已部署合约的源码 |
Foundry(推荐高级与安全审计方向)
Foundry 是一套基于Rust构建的原生工具链,测试直接以Solidity编写,执行速度极快,是安全审计人员的首选。
| 命令 | 功能 |
|---|---|
forge init | 初始化新项目 |
forge build | 编译合约 |
forge test | 运行Solidity测试(支持fuzzing,Gas报告自动生成) |
cast send | 链上发送交易或调用合约函数 |
anvil | 启动本地EVM节点(等效于Hardhat Network) |
选型建议:
- 如果你是全栈DApp开发者,或团队使用JavaScript/TypeScript前后端统一,选择 Hardhat。
- 如果你专注于安全审计、需要快速运行大量模糊测试(Fuzzing),或偏好Solidity原生测试,选择 Foundry。
A.2 核心合约库与依赖
OpenZeppelin Contracts
OpenZeppelin 的合约库是行业安全标准,基本所有生产级的ERC-20/ERC-721合约都基于它构建。
npm install @openzeppelin/contracts| 合约路径 | 用途 |
|---|---|
@openzeppelin/contracts/token/ERC20/ERC20.sol | 标准ERC-20代币实现 |
@openzeppelin/contracts/token/ERC721/ERC721.sol | 标准NFT实现 |
@openzeppelin/contracts/token/ERC721/ERC721A.sol | Azuki优化的ERC-721(批量铸造省Gas) |
@openzeppelin/contracts/security/ReentrancyGuard.sol | 重入攻击防护 |
@openzeppelin/contracts/access/Ownable.sol | 所有权管理 |
始终从官方源安装,并定期升级到最新版本以获取安全补丁。
A.3 前端与合约交互库
ethers.js v6(当前推荐标准)
在19.5节我们已经使用了v6的核心API。以下是速查:
| API | 用途 |
|---|---|
new ethers.BrowserProvider(window.ethereum) | 连接MetaMask钱包 |
await provider.getSigner() | 获取当前账户的签名器 |
new ethers.Contract(address, abi, signer) | 构造合约交互实例 |
ethers.parseUnits("1.5", 18) | 字符串/数字 → wei(BigInt) |
ethers.formatUnits(weiValue, 18) | wei(BigInt) → 可读字符串 |
await tx.wait() | 等待交易被链上确认 |
viem(新兴替代,类型安全优先)
npm install viemviem 是Wagmi团队推出的轻量库,具备完整的TypeScript类型推导,体积比web3.js小一个数量级,适合新项目。
web3.js(Legacy兼容场景)
npm install web3web3.js v4.x 已全面支持ESM和TypeScript,但在新项目中的市场份额正逐渐被 ethers.js 和 viem 取代。仅在维护老项目时使用。
选型建议:新项目优先 ethers.js v6,强TypeScript项目可尝试 viem。
A.4 测试、调试与模拟工具
Hardhat Network 高级操作
// 操纵区块时间(模拟时间流逝)
await network.provider.send("evm_increaseTime", [3600]);
await network.provider.send("evm_mine"); // 挖一个新块
// 快照与回滚(测试隔离)
const snapshotId = await network.provider.send("evm_snapshot");
// ... 执行可能改变状态的测试 ...
await network.provider.send("evm_revert", [snapshotId]);Anvil(Foundry配套本地节点)
anvil --fork-url https://eth-mainnet.g.alchemy.com/v2/YOUR_KEYForking 主网的能力使你可以在本地环境中模拟真实链状态,是调试复杂DeFi协议的利器。
Tenderly
在线调试平台(https://tenderly.co),支持:
- 交易模拟(Simulation):在实际执行前预测交易结果。
- Gas分析:逐条指令的Gas消耗细分。
- 调试器:逐步跟踪EVM执行栈。
推荐Hardhat插件
| 插件 | 功能 |
|---|---|
hardhat-verify | 自动Etherscan源码验证 |
hardhat-gas-reporter | 测试后生成Gas消耗表格 |
hardhat-ethers | ethers.js v5/v6 集成 |
A.5 区块链浏览器与API服务商
区块浏览器
| 名称 | 主网 | 测试网 | 特色 |
|---|---|---|---|
| Etherscan | etherscan.io | sepolia.etherscan.io | 最权威,验证首选 |
| BscScan | bscscan.com | testnet.bscscan.com | BNB Smart Chain |
| PolygonScan | polygonscan.com | amoy.polygonscan.com | Polygon PoS |
| Arbiscan | arbiscan.io | sepolia.arbiscan.io | Arbitrum L2 |
| Optimistic Etherscan | optimistic.etherscan.io | sepolia-optimism.etherscan.io | Optimism L2 |
RPC节点服务商
| 服务商 | 免费额度 | 特点 |
|---|---|---|
| Alchemy | 开发级免费 | 稳定、仪表盘完善 |
| Infura | 开发级免费 | 老牌服务商,IPFS集成 |
| QuickNode | 有限免费 | 全球多区域节点 |
生产环境务必使用付费RPC套餐或自建节点。免费额度在DApp流量突增时极易被限流。
附录B 主流公链与测试网络参数
B.1 以太坊与测试网
| 参数 | 以太坊主网 | Sepolia测试网 |
|---|---|---|
| Chain ID | 1 | 11155111 |
| 共识机制 | PoS(Merge后) | PoS |
| 出块时间 | ~12秒 | ~12秒 |
| 原生代币 | ETH | SepoliaETH(测试币,无价值) |
| 典型Gas价格 | 10-50 gwei | 1-10 gwei |
| 水龙头 | 无(主网) | sepoliafaucet.com、sepolia-faucet.pk910.de |
| 浏览器 | etherscan.io | sepolia.etherscan.io |
开发流程推荐:
- 本地Hardhat Network完成所有单元测试与集成测试。
- Sepolia测试网部署并邀请真实用户参与封闭测试。
- 以太坊主网部署最终版本。
B.2 EVM兼容链
| 网络 | Chain ID | 共识 | 出块时间 | 原生代币 | 典型Gas | 特点 |
|---|---|---|---|---|---|---|
| BNB Smart Chain | 56 | PoSA | ~3秒 | BNB | 3-10 gwei | 低Gas、高吞吐,但去中心化程度较低 |
| Polygon PoS | 137 | Bor + Heimdall | ~2秒 | MATIC | 50-150 gwei | 侧链方案,以太坊扩展老牌选手 |
| Arbitrum | 42161 | Nitro Rollup | ~0.25秒 | ETH | 0.1-1 gwei | Optimistic Rollup,兼容EVM |
| Optimism | 10 | Bedrock | ~2秒 | ETH | 0.1-1 gwei | Optimistic Rollup,Superchain愿景 |
| Avalanche C-Chain | 43114 | Snowman | ~2秒 | AVAX | 1-5 gwei | 子网架构灵活,共识速度快 |
| Base | 8453 | Bedrock Rollup | ~2秒 | ETH | 0.1-1 gwei | Coinbase推出的L2,生态增长迅速 |
L1 vs L2 的选择建议
- 需要最高安全性和通用性:以太坊主网(高Gas)。
- 需要低成本面向普通用户:Arbitrum / Optimism / Base(L2生态最成熟)。
- 需要极高吞吐量和极低确认延迟:BNB Smart Chain / Polygon(侧链/准L1方案)。
- 需要特定社区或机构许可:Avalanche子网、Hyperledger Fabric(联盟链)。
B.3 非EVM链概览
| 网络 | 共识 | 出块时间 | 原生代币 | 合约语言 | 特点 |
|---|---|---|---|---|---|
| 比特币 | PoW | ~10分 | BTC | 脚本(非图灵完备) | "数字黄金",非智能合约平台 |
| Solana | PoH + PoS | ~400ms | SOL | Rust / C | 超高吞吐,中心化质疑存在 |
| 以太坊(非EVM不适用) | - | - | - | - | - |
注意:本教程所有代码与工具均围绕 EVM 生态(Solidity + Hardhat/Foundry + ethers.js)。若你的目标链是Solana,需要学习Rust与Anchor框架,生态工具链完全不同。
A+B 衔接说明
- 附录A解决"用什么"的问题:从编译器到测试框架,从合约库到RPC节点,为开发者的技术选型提供参考。
- 附录B解决"在哪里"的问题:Chain ID、出块时间、Gas价格、水龙头——这些参数是跨链部署时的必查信息。
两者结合,构成一份开发者的"桌面参考卡片"。在实际工程工作中,建议将常用的 hardhat.config.js 配置模板、Chain ID速查表、以及各浏览器API key申请链接保存到自己的笔记系统中,随用随查。
要点总结:
- Hardhat适合全栈DApp开发,Foundry适合安全与高性能测试。
- 新项目优先使用
ethers.js v6或viem。- 测试先用本地Hardhat Network,再用Sepolia,最后部署主网。
- L2(Arbitrum/Optimism/Base)正在取代侧链成为低成本交易的主流方案。
评论
0评论加载中…