SuperAPI AI 工具集

echidna

安全与审计

查看项目

更新于 10-15 23:43

技能介绍

Echidna 是 Trail of Bits 开发的以太坊智能合约属性模糊测试工具,通过生成随机交易序列并配合覆盖率引导变异,寻找用户自定义属性的违反情况。与静态分析或符号执行不同,它执行真实 EVM 字节码,并学习哪些输入能到达新代码路径。

主要能力:属性模式(默认)检查以 echidna_ 开头、无参数、返回 bool 的 public/external 函数;断言模式捕获 assert() 失败与 Solidity panic;优化模式寻找以 echidna_optimize_ 开头、返回 int256 的函数的最大/最小值;dapptest 模式兼容 ds-test/forge-std 风格测试。Echidna 是有状态的,会生成多笔交易序列并在每步后检查属性。

使用方式:可从 GitHub 下载预编译二进制、使用 Docker 镜像 ghcr.io/crytic/echidna/echidna:latest,或从源码用 Stack 构建。需在 PATH 中提供 solc。基本运行命令为 echidna test/CounterTest.sol --contract CounterTest。配置通过 echidna.yaml 设置 testLimit、seqLen、shrinkLimit、testMode、corpusDir、workers、sender 等。语料目录保存达到新覆盖率的交易序列,可跨运行复用。

适用场景:ERC20/金库/拍卖等协议的不变量测试,包括守恒性、访问控制、状态机、偿付能力等属性;多合约系统测试;与 Foundry 项目集成。

限制:不支持 Foundry 作弊码(vm.prank、vm.deal、vm.warp 等);属性模式必须使用 echidna_ 前缀;断言模式不检查 echidna_* 函数;属性设计质量决定测试价值,运行次数多并不必然带来更好覆盖。