写点什么

以太坊合约可复用属性指南 - 提升智能合约安全的模糊测试技术

作者:qife
  • 2025-08-07
    福建
  • 本文字数:1103 字

    阅读完需:约 4 分钟

以太坊合约的可复用属性

随着智能合约安全技术的持续演进,基于属性的模糊测试已成为开发者和安全工程师的核心技术。该技术依赖于代码属性(通常称为不变量)的创建,这些属性描述了代码的预期行为。为帮助社区定义属性,我们发布了 168 个预构建属性集,可直接用于我们的智能合约模糊测试工具 Echidna,或通过单元测试调用。

属性覆盖范围

该资源库包含以下测试内容:


  • ABDKMath64x64 数学库

  • ERC-20 代币标准

  • ERC-4626 代币化金库标准

ERC20 属性

  • 标准接口函数属性

  • 基础合理性属性(例如:用户余额不应大于代币总供应量)

  • 可销毁、可铸造和可暂停代币的扩展属性

ERC4626 属性

  • 验证舍入方向符合规范的属性

  • 必须永不回退的函数回退属性

  • 差分测试属性(例如 deposit()必须匹配 previewDeposit()预测功能)

  • 功能属性(例如 redeem()从正确账户扣除份额)

  • 非规范安全属性(份额通胀攻击、代币授权检查等)

ABDKMath64x64

  • 交换律、结合律、分配律和恒等属性

  • 差分测试属性(例如 2^(-x) == 1/2^(x))

  • 特定输入范围应回退的验证属性

  • 不应回退的负向验证属性

  • 区间属性(例如 min(x,y) <= avg(x,y) <= max(x,y))

实战工作坊

我们将通过两场直播提供实操指导:


  • 3 月 7 日:ERC20 属性、示例用法和 Echidna 作弊码(Guillermo Larregay 主讲)

  • 3 月 14 日:ERC4626 属性、示例用法和有效模糊测试技巧(Benjamin Samuels 主讲)

立即开始

安装步骤

  1. 安装 Echidna

  2. 将属性导入项目:

  3. Hardhat 项目:npm install https://github.com/crytic/properties.git

  4. Foundry 项目:forge install crytic/properties

  5. 根据文档创建测试合约

示例测试合约

pragma solidity ^0.8.0;import "./path/to/YetAnotherCashEquivalentToken.sol";import {ICryticTokenMock} from "@crytic/properties/contracts/ERC20/external/util/ITokenMock.sol";import {CryticERC20ExternalBasicProperties} from "@crytic/properties/contracts/ERC20/external/properties/ERC20ExternalBasicProperties.sol";
contract CryticERC20ExternalHarness is CryticERC20ExternalBasicProperties { constructor() { token = ICryticTokenMock(address(new CryticTokenMock())); }}
复制代码

Echidna 配置文件示例

corpusDir: "tests/crytic/erc20/echidna-corpus-internal"testMode: assertiontestLimit: 100000deployer: "0x10000"sender: ["0x10000", "0x20000", "0x30000"]multi-abi: true
复制代码


运行命令:echidna-test . --contract CryticERC20ExternalHarness --config tests/echidna-external.yaml

未来计划

  • 扩展对 PRBMath 等数学库的测试

  • 增加更多 ERC 标准测试

  • 创建 AMM 和流动性池等非标准合约的测试集


更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)公众号二维码


办公AI智能小助手


用户头像

qife

关注

还未添加个人签名 2021-05-19 加入

还未添加个人简介

评论

发布
暂无评论
以太坊合约可复用属性指南 - 提升智能合约安全的模糊测试技术_区块链_qife_InfoQ写作社区