首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏深入浅出区块链技术

    使用Echidna测试智能合约库

    原文:https://blog.trailofbits.com/2020/08/17/using-echidna-to-test-a-smart-contract-library/ 译文出自:登链翻译计划 代码库 所以,看the code for our example[10], 并且用它检查 this tutorial on using Echidna[11]. Echidna 测试工具:hasDuplicate 测试库的代码最明显的一点是它比库本身大!在这种情况下,这种情况并不少见。 就是这样——由此产生的失控循环将耗尽你的 gas 预算,Crytic/Echidna 会告诉你失败。当 Echidna 将故障最小化为可能的最简单序列时,会产生“0x0”地址。 使用 Crytic 启动并运行 您可以通过下载和安装该工具或使用我们的 docker build 自行运行 Echidna 测试——但使用 Crytic 平台集成了基于 Echidna 属性的测试、Slither

    85620编辑于 2022-04-11
  • 来自专栏网络安全技术点滴分享

    Echidna:以太坊智能模糊测试工具详解

    Echidna:以太坊智能模糊测试工具今天我们在EthCC大会上发布了Echidna——我们的下一代EVM智能模糊测试工具。 针对不同应用的多种接口Echidna提供了两种使用方式:echidna-test可执行文件:无需复杂配置,仅需简单Solidity断言即可在几分钟内开始检测代码漏洞,并配备直观的UI展示测试结果。 观看演示视频)功能完备的分析库:支持为复杂合约编写定制化分析脚本,例如:模拟时间推移测试代币发行合约构建合约底层状态机的符号模型更多高级功能可通过Empire Hacking社区探讨实现开箱即用的强大工具Echidna 不仅具备强大的模糊测试能力,我们还精心设计了:美观的用户界面最小化测试用例生成持续集成测试支持丰富的使用示例快速开始指南通过stack工具链安装Echidna仅需满足:与合约匹配的solc版本stack 工具本身安装完成后,执行echidna-test solidity/cli.sol即可启动测试。

    27510编辑于 2025-08-14
  • 来自专栏深入浅出区块链技术

    手把手教你用Echidna测试智能合约

    下面介绍下 Echidna 的使用。 准备 下载 docker,并且安装。 ,在合约内部加入如下逻辑,返回 false 即可 function echidna_test_fails() public view returns(bool){ return false; --test-limit 5000 当修改源码为 uint delay =70 days; 说明 Echidna 无法快进 70 天,因此没有修改 pass 的状态。 设置快进时间,time.yaml,可以快进 70 天 ethsec@36ba204276db:/code$ echidna-test TestEchidnaTestTimeAndCaller.sol //github.com/darrenli6/echidna_example/blob/master/TestEchidnaTestTimeAndCaller.sol

    1.1K20编辑于 2022-04-11
  • 来自专栏FreeBuf

    Echidna:功能强大的以太坊模糊测试框架

    Echidna Echidna是一款针对以太坊虚拟机EVM代码的模糊测试框架,该工具基于Haskell代码库实现,并支持相对复杂的基于语法的模糊测试任务。 当然了,用户也可以自行下载最新版本的Echidna,我们建议大家使用Docker: $docker build -t echidna . Echidna的核心功能通过一个名叫echidna-test的可执行文件实现,echidna-test接受一份智能合约和一份固定属性值列表作为输入数据。 运行下列命令即可使用样本合约: $echidna -test examples/solidity/basic/flags.sol Echidna还可以找出一个调用序列,并让echidna_sometimesfalse TEST ... echidna_convert:failed!

    1.3K20发布于 2019-09-03
  • 来自专栏网络安全技术点滴分享

    智能合约模糊测试器性能优化实战

    最终,Echidna的运行速度提升了超过六倍!Echidna概述用户使用Echidna时需提供智能合约和必须始终满足的条件列表(例如"用户代币数量永不为负")。 Echidna会生成大量随机交易序列,用这些序列调用合约,并验证合约执行后条件是否仍然满足。 然而许多用户注意到,开启覆盖率功能后Echidna运行速度显著变慢(在我的电脑上慢六倍以上)。我的实习任务就是找出执行缓慢的根源并提升Echidna的运行效率。 对样本输入运行Echidna生成的分析结果主要显示了预期中的常规函数:运行智能合约的函数、生成输入的函数等。 结论我非常享受在冬季实习期间参与Echidna代码库的工作。我深入学习了Haskell、Solidity和Echidna,并获得了处理性能问题和大型代码库的宝贵经验。

    26210编辑于 2025-08-22
  • 来自专栏网络安全技术点滴分享

    释放美杜莎:快速可扩展的智能合约模糊测试技术

    Medusa基于我们首款模糊测试工具Echidna以及在区块链系统安全审查中积累的丰富经验。通过提升模糊测试的可扩展性和效率,Medusa为开发者和安全工程师带来了智能合约测试方法的重大飞跃。 通过Homebrew安装(macOS系统):brew install medusa初始化新项目:medusa init该命令会生成可定制的medusa.json配置文件启动测试:medusa fuzz与Echidna 的对比Medusa采用Go语言编写并基于Geth实现,相比Echidna具有显著优势:可维护性:原生API设计更易于集成到其他项目EVM等效性:基于Geth确保准确的虚拟机行为模拟性能优化:内部基准测试显示其覆盖率和语料库规模与 Echidna相当(如图1所示)智能合约安全的未来Medusa通过并行执行、链上数据集成等创新,使模糊测试成为行业标准安全实践。

    24110编辑于 2025-08-10
  • 模糊测试 vs. 形式化验证:为何选择前者?

    (bool) { return debt == vice + sumOfDebt();}图1:Solidity中DAI不变式的基本方程我们在Solidity中实现了相同的不变式,如图1所示,并用Echidna 令我们惊讶的是,Echidna违反了不变式并找到了触发违规的唯一路径。我们的实现在存储库的Testvat.sol文件中可用。实现不变式很容易,因为被测源代码很小,仅需要计算所有债务总和的逻辑。 Echidna在i5 12-GB RAM Linux机器上用了不到一分钟就违反了不变式。 function echidna_used_collateral() public view returns (bool) { for (uint8 i = 0; i < assets.length Echidna通过生成随机交易序列来存入抵押并检查不变式,在几分钟内打破了不变式。形式化验证注定失败吗?形式化验证工具需要大量领域特定知识才能有效使用,并需要显著的工程努力来应用。

    24310编辑于 2025-08-25
  • 来自专栏深入浅出区块链技术

    每周以太坊进展 2022/12/10

    ]:Helios 轻客户端的包装器,可在 Expo 中运行 Semaphore boilerplate[41]:供用户创建 ID 和留下反馈的 Web 应用程序组件;演示[42] 安全 Hybrid Echidna [43]:Echidna(基于属性的模糊器)+ Maat(符号执行框架)通过使用符号分析生成模糊输入来改进随机模糊测试 ---- (编者注:本翻译不代表登链社区的立场,也不代表我们(有能力并且已经)核实所有的事实并把他的观点分离开来 semaphore-protocol/boilerplate#readme [42] 演示: https://main.d3rb6vhozk5q4b.amplifyapp.com/ [43] Hybrid Echidna : https://blog.trailofbits.com/2022/12/08/hybrid-echidna-fuzzing-optik-maat/ Twitter : https://twitter.com

    58720编辑于 2023-01-09
  • 来自专栏C/C++基础

    Linux命令(21)——cd命令(builtin)

    cd .. (2)回到根目录: cd / (3)回到上次使用的目录: cd – (4)回到用户家目录: cd ~ #或 cd -- 注意: (1)登录Linux主机后,命令行最左侧[lvlv@echidna echidna表示当前主机的名称,lvlv则表示当前登录的用户名称。查看当前主机名称用hostname命令。 ---- 参考文献 [1]Linux命令大全.cd命令 [2]man cd

    4.2K21发布于 2018-08-03
  • 来自专栏AI SPPECH

    159_区块链安全与智能合约攻防:从漏洞挖掘到安全审计的实战指南

    模糊测试: 使用Echidna进行模糊测试: // Echidna测试合约 contract AuditTargetEchidnaTest is AuditTarget { // 测试存款后的余额是否正确 function echidna_deposit_correctness() public returns (bool) { uint oldBalance = balances return balances[address(this)] == oldBalance + 1; } // 测试取款不会导致余额为负 function echidna_withdraw_safety Slither: 开源的静态分析框架 可以检测常见漏洞如重入、溢出、访问控制等 支持自定义检测器开发 Mythril: 基于符号执行的安全分析工具 可以检测深层次的漏洞 支持EVM字节码分析 Echidna

    49111编辑于 2025-11-16
  • 来自专栏深入浅出区块链技术

    关于审计技术和工具 101事

    Echidna[9]和Harvey[10]是两个流行的智能合约模糊测试工具。 打印变量的数据依赖性 echidna: 导出 Echidna 的信息 evm: 打印函数中节点的 evm 指令 function-id: 打印函数的 keccack256 签名 function-summary 执行测试运行器: Echidna 的核心功能是一个叫做 echidna-test 的可执行程序。echidna-test 接收一个合约和一个不变式(应该永远保持真实的属性)列表作为输入。 编写不变式: 不变量可以用 Solidity 函数表达,其名称以 echidna_ 开头,没有参数,并返回一个布尔值。 /master/program-analysis/echidna#echidna-tutorial [61] Eth-security-toolbox: https://github.com/crytic

    1.4K10编辑于 2023-01-09
  • 来自专栏深入浅出区块链技术

    每周以太坊进展2022/11/26

    身份验证 app 的指南[20] OPCraft[21]:构建链上体素(体素表示三维空间中规则网格上的值,类似 2D 位图中的像素)世界 Norswap:使用 zk 证明进行洗牌和加密的心理扑克[22] Echidna 心理扑克: https://twitter.com/norswap/status/1594748863574732800 [23] v2.0.4: https://github.com/crytic/echidna

    45020编辑于 2023-01-09
  • 来自专栏深入浅出区块链技术

    每周以太坊进展 2022/10/8

    Hypervisor,允许任意字节码执行 samczsun 的交易查看器[35]; 前端开源[36] Ethereum utils[37]: 单位转换, 校验和, 十六进制 , Keccak256 用 Echidna samczsun/ethereum-transaction-viewer-frontend#readme [37] Ethereum utils: https://eth-utils.com [38] 用 Echidna 进行模糊处理: https://blog.pessimistic.io/fuzzing-solidity-smart-contracts-with-echidna-die-hard-level-tips

    59920编辑于 2022-11-07
  • 来自专栏网络安全技术点滴分享

    以太坊安全工具套件全解析 - 从静态分析到符号执行

    /echidna-test contract.sol验证不变量是否成立建议达到80%以上的测试覆盖率。4. ManticoreManticore通过符号执行模拟多合约/多交易攻击。

    31810编辑于 2025-07-30
  • 来自专栏AI SPPECH

    77_二进制安全高级技术:模糊测试(Fuzzing)深度解析与实战指南——从随机测试到智能漏洞挖掘的系统化方法

    -g solhint slither-analyzer # 分析智能合约 solhint contract.sol slither contract.sol 5.4.2 智能合约模糊测试设置 使用Echidna 设置智能合约模糊测试: # 安装Echidna wget https://github.com/crytic/echidna/releases/download/v2.0.0/echidna-test- 2.0.0-Ubuntu-18.04.tar.gz tar -xvf echidna-test-2.0.0-Ubuntu-18.04.tar.gz 创建测试合约: // TestContract.sol target.function2(addr); } } 5.4.3 执行智能合约模糊测试 # 编译测试合约 solc --bin --abi TestContract.sol -o build/ # 使用Echidna /echidna-test TestContract.sol --contract TestTarget # 查看测试结果 cat echidna_output.txt 5.4.4 漏洞确认与修复 #

    62110编辑于 2025-11-16
  • 来自专栏深入浅出区块链技术

    每周以太坊进展 2021/12/31

    语言服务器解释器[13]:每个支持语言服务器的IDE都可以对Solidity提供开箱即用的支持 Foundry forge run[14]命令,以脚本形式运行单文件合约,支持作弊码、主网分叉和调试日志 使用 Echidna foundry/pull/324 [15]Fuzzing: https://ventral.digital/posts/2021/12/21/fuzzing-complex-projects-with-echidna-sushi-bentobox

    74640编辑于 2022-01-05
  • 来自专栏深入浅出区块链技术

    每周以太坊进展2022/4/9

    GateRepo[29]: ERC20 代币 gated 私有 GitHub 存储库 深入研究web3.py 内部结构[30]: JSON-RPC 往返 Echidna v2.0.1[31]: 添加了 snakecharmers.ethereum.org/web3py-internals-json-rpc-round-trips/ [31] v2.0.1: https://github.com/crytic/echidna

    49930编辑于 2022-05-25
  • 来自专栏Ethereum

    《纸上谈兵·solidity》第 36 课:去中心化交易所(DEX)实战 — 上线

    广泛测试:包含大量 fuzz 测试(Foundry fuzz)、Slither 静态检查、Echidna 模糊测试。8.

    29010编辑于 2025-09-20
  • 测试用例精简技术全解析:从原理到实践

    AFL和libFuzzer虽内置精简功能,但现代工具(如Echidna智能合约模糊测试器中的精简器)能处理更复杂的API调用序列。

    23710编辑于 2025-08-11
  • 来自专栏Ethereum

    《纸上谈兵·solidity》第 34 课:多签钱包(Multisig Wallet)-- 上线

    代码是否经过静态分析(Slither)与模糊测试(Echidna / Foundry fuzz)?是否对 gas 进行压力测试(大量者、并发 confirmations)?7.

    36910编辑于 2025-09-16
领券