开发工具与数据入口
资料核对:2026-10-05。按开发任务选择工具;安装版本、插件兼容性与网络支持范围应结合项目检查。
EVM:先完成编译、测试和交互
| 任务 | 官方入口 | 使用时关注什么 |
|---|---|---|
| 用 Solidity 编写测试 | Foundry | Forge 负责构建和测试,Anvil 提供本地节点,Cast 用于命令行交互,Chisel 用于交互式实验 |
| 组织插件、脚本与部署流程 | Hardhat 3 | 先确认主版本;测试、网络配置和部署插件需与其兼容 |
| 在浏览器中检查小例子 | Remix | 明确编译器、优化设置、部署环境和当前账户 |
| 引用代币及权限模块 | OpenZeppelin Contracts 5.x | 锁定依赖版本;检查编译器要求、构造参数和升级兼容性 |
| 编写链上交互脚本 | ethers v6或 viem | 区分读取与签名发送;检查 chainId、ABI、整数单位与交易回执 |
| 检查静态风险 | Slither | 结合告警位置、调用路径和测试判断,工具输出不等于安全结论 |
Foundry 与 Hardhat 都能覆盖合约开发流程。选型可以从测试语言、现有依赖、插件需求与部署方式开始,无需先建立“哪个性能最好”的笼统排名。
Hardhat 3 官方入门使用 npx hardhat --init 初始化项目,再运行 npx hardhat test。部署能力通常由对应插件提供;阅读旧教程里的 hardhat deploy 时,要先确认它依赖的插件及版本,见 Hardhat 入门说明。
OpenZeppelin 提供标准实现和模块,但应用新增的权限、组合方式、初始化及升级逻辑仍需要验证。官方文档也提示,不同主版本之间应假定存储布局不兼容,不能直接用于可升级合约的跨主版本替换。
在本站开始练习
可先阅读 ERC-20、ERC-721与 EIP-2612。这些文章引用仓库中的同一组 Solidity 示例,覆盖授权、转移、回调和签名边界。
本地项目位于仓库的 examples/ethereum-signatures/,复现步骤见该目录的 README.md。示例固定 Solidity 0.8.24、OpenZeppelin Contracts 5.2.0 与 Cancun 目标环境,便于重复运行;工具官方文档可能对应更新的版本。
Solana:程序、代币与客户端分别选择
| 任务 | 官方入口 | 核对重点 |
|---|---|---|
| 开发和测试程序 | Anchor | 账户约束、PDA、CPI、IDL,以及程序与客户端版本 |
| 创建和操作代币 | Solana 代币文档 | 原始 Token Program 与 Token-2022 的区别,mint、冻结与扩展权限 |
| 编写 RPC 与交易交互 | Solana SDK 指引 | 官方当前以 @solana/kit 为标准 JavaScript SDK,新项目应按其文档选择客户端与插件 |
| 查询账户和交易 | Solana Explorer | 集群、交易签名、指令、账户 owner 与执行日志 |
Solana 官方将 @solana/web3.js v1 标为 legacy;这与 Ethereum 的同名 web3.js 是不同项目,不能混用停更结论。
迁移 SDK 还需要检查上层库。当前 Anchor TypeScript 文档明确列出其客户端与 legacy @solana/web3.js v1 的兼容约束,因此不能把已有 Anchor 项目的依赖直接替换为 Kit。
Cosmos 与 IBC:先确认协议和组件版本
Cosmos 开发文档将 Cosmos SDK、CometBFT 和 IBC 分别作为入口:它们涉及应用框架、共识引擎和链间通信。开发应用链时,需要核对这些组件的兼容版本和升级流程。
IBC-Go 文档已同时涵盖 Classic 和 v2。跟随跨链教程前,先确认它使用哪种协议、哪种客户端验证模型,以及应用如何处理确认与超时。
历史教程中的工具如何处理
| 工具或库 | 已核对的官方信息 | 阅读旧项目的做法 |
|---|---|---|
| Truffle / Ganache | Consensys 在 2023 年宣布退出维护 | 保留旧项目的依赖记录;新学习项目优先使用 Foundry/Anvil 或 Hardhat |
| Ethereum web3.js | ChainSafe 公告归档日期为 2025-03-04 | 对照迁移文档评估 ethers 或 viem;检查数值类型和签名 API 的差异 |
| Solana web3.js v1 | Solana 官方标为 legacy | 结合程序客户端兼容性迁移;不要将 Ethereum 库的公告套用到这里 |
看到旧教程时,先记录依赖主版本、编译器和网络,再判断代码是否适用于当前项目。工具曾经常用不代表其命令、插件或维护状态仍然相同。
数据入口:先看指标口径,再看数值
DeFiLlama Chains用于观察各链 DeFi 数据。它的 TVL 排名不能当作代币市值排名;聚合口径、资产价格与统计开关也会影响比较结果。
| 指标 | 适合观察什么 | 需要避免的误读 |
|---|---|---|
| TVL | 协议中按统计口径计算的锁定资产价值 | 把价格上涨当作等量资金流入,或忽略跨协议重复计算 |
| 交易量 | 指定时间段与市场范围的交易活动 | 用成交总额代替盈利或独立用户数 |
| Fees / Revenue | 用户付费与协议保留收益的不同口径 | 将付给流动性提供者等参与者的费用全部当作协议收入 |
| 活跃地址 | 指定时间段出现链上活动的地址 | 将地址数直接等同于人数 |
TVL 与费用收入的口径参见 DeFiLlama 数据定义。对比时记录日期、时间窗口、链范围、币种与统计开关,让结论可以复核。
L2BEAT可用于查询 L2 的价值统计、活动和风险信息。阅读项目页时重点看状态验证、数据可用性、排序器故障和退出条件;Stage 表达其阶段分类,不能单独当作项目安全评级。
区块浏览器适合追踪一笔具体交易。Etherscan与 Solana Explorer是相应生态的查询入口;先确认网络和合约或程序地址,再分析调用、日志及状态变化。
一次完整练习的检查顺序
- 写明网络、chainId、编译器、库版本与目标执行环境。
- 在本地运行正常路径及权限、余额不足、重复签名等失败路径。
- 对照 ABI 或 IDL 发起交互,记录交易哈希或签名。
- 核对交易回执、执行日志和状态变化,再检查确认与最终性。
- 保存复现命令与版本记录;升级依赖时重新检查受影响的行为。