用 Rust 编写的以太坊智能合约开发工具集,包含 Forge、Cast、Anvil 和 Chisel。
crytic/echidna
Echidna 是一款用 Haskell 编写的以太坊智能合约模糊测试工具,通过生成调用序列来验证不变量和断言。
- Star
- 3,189
- Fork
- 436
- 未关闭 Issue
- 107
- 最近提交
- 23小时前
这是什么?
Echidna 是一款面向以太坊智能合约的模糊测试与基于属性的测试工具。它根据合约 ABI 生成基于语法的调用序列,检查用户定义的不变量(以 echidna_ 开头、返回 bool 的函数)或 Solidity 的 assert() 断言。一旦找到能使属性失效的调用序列,工具会输出该序列,并可对测试用例进行最小化,便于快速定位问题。
工具支持多种测试模式,包括属性测试、断言测试、Foundry 风格测试、单交易符号化验证、整数溢出检测、int256 返回值优化以及仅收集覆盖率的探索模式。它通过 crytic-compile 支持 Foundry、Hardhat 和 Truffle 项目,并借助 Slither 在模糊测试前提取合约信息。结果可通过交互式终端界面、纯文本或 JSON 输出查看,覆盖率最大化的语料库也能保存,并标注到源代码上。
核心功能
- 01根据合约 ABI 和源码生成针对性的调用序列。
- 02测试以 echidna_ 开头的布尔不变量和 Solidity 断言。
- 03对失败的测试用例进行最小化,便于快速分析。
- 04输出带源码标注的覆盖率信息。
- 05支持文本、JSON 以及交互式终端界面输出。
- 06通过 crytic-compile 兼容 Foundry、Hardhat 和 Truffle 项目。
适用场景
- 在部署前发现 DeFi 协议合约中的不变量违规问题。
- 检查代币合约是否存在余额或整数溢出漏洞。
- 在 GitHub Actions 工作流中运行智能合约属性测试。
- 在 Solidity 合约上复现模糊测试相关的研究案例。
快速上手
- 1
使用 Homebrew 安装 Echidna(macOS / Linux)
brew install echidna - 2
在 README 中的示例合约上运行 Echidna
echidna tests/solidity/basic/flags.sol
使用前须知
- 对 Vyper 的支持有限。
- 对测试库的支持有限。
- 安装 Echidna 需要额外配置 Slither 依赖。
- 容器镜像目前仅支持 x86 系统构建。
收录于专题
标签
常见问题
- echidna 是什么?
- Echidna 是一款用 Haskell 编写的以太坊智能合约模糊测试工具,通过生成调用序列来验证不变量和断言。 Echidna 是一款面向以太坊智能合约的模糊测试与基于属性的测试工具。它根据合约 ABI 生成基于语法的调用序列,检查用户定义的不变量(以 echidna_ 开头、返回 bool 的函数)或 Solidity 的 assert() 断言。一旦找到能使属性失效的调用序列,工具会输出该序列,并可对测试用例进行最小化,便于快速定位问题。
- echidna 可以免费使用吗?用的什么许可证?
- echidna 以 AGPL-3.0 许可证开源。用于商业产品前,请先确认许可证条款。
- echidna 还在维护吗?
- 活跃维护中。echidna 最近一次提交是在 2026年11月6日。
- echidna 适合用来做什么?
- 在部署前发现 DeFi 协议合约中的不变量违规问题。 检查代币合约是否存在余额或整数溢出漏洞。 在 GitHub Actions 工作流中运行智能合约属性测试。 在 Solidity 合约上复现模糊测试相关的研究案例。
- echidna 怎么安装和运行?
- 使用 Homebrew 安装 Echidna(macOS / Linux): brew install echidna 在 README 中的示例合约上运行 Echidna: echidna tests/solidity/basic/flags.sol
- 在哪里获取 echidna?
- 源代码和安装说明在 GitHub 上:https://github.com/crytic/echidna
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
1.1万+31 本周2719RustApache-2.0更新于 23小时前
用于编译、部署、测试和调试以太坊智能合约与去中心化应用的开发环境。
8521+5 本周1745TypeScriptOther更新于 22小时前
Go 语言实现的以太坊执行层客户端,可运行全节点或归档节点,并提供 JSON-RPC 接口。
5.1万+16 本周2.2万GoLGPL-3.0维护活跃更新于 24小时前
Solidity 是一门静态类型、面向合约的高级语言,用于在以太坊平台上编写智能合约。
2.6万+1 本周6178C++GPL-3.0维护活跃更新于 昨天
《精通以太坊》第二版,系统讲解以太坊开发、智能合约及网络底层技术的图书。
2.2万+9 本周5154无许可证更新于 26天前