为什么智能合约安全与普通软件安全不同?
智能合约的安全问题有所不同,因为代码是公开的,通常直接掌管资金,而且部署后通常无法修改。网页应用中的缺陷可以连夜修复;合约中的缺陷却可能被任何阅读代码的人发现,并在团队醒来之前遭到利用。Ethereum.org 估计,智能合约缺陷造成的损失已超过十亿美元,并以 2016 年 DAO 黑客攻击事件作为早期案例。
以一家虚构的四人工作室“飞燕草实验室”为例。它正在开发一个简单的储蓄资金池,成员可以存入资金并提取自己所占的份额。开发人员科菲在部署前留下了审查笔记:'withdraw先转出资金,再将余额设为0。setFee是公开的,以后再限制访问。使用教程里的旧版编译器。奖励代币的价格从一个小型交易池读取。测试:手动试了一次存入 + 提取,能用'。每一条都属于已知的漏洞类型。
智能合约最常见的漏洞有哪些?
最常见的智能合约漏洞包括访问控制缺陷、价格预言机操纵、逻辑错误、缺少输入验证和重入攻击,这些在 2025 年 OWASP 智能合约十大风险中位居前列。Ethereum.org 也涵盖了相同的核心类别。
重入
合约在更新自身记录前,先转出资金或调用另一个合约。恶意接收方会趁余额尚未更新时再次调用该合约,重复提款。科菲的提款函数先付款、再将余额设为零,就是这种问题的典型形式。常见的修复方法是先更新状态,最后再与其他合约交互,通常称为“检查—生效—交互”模式。
访问控制
任何人都能调用的敏感函数。科菲的公开函数 setFee 允许任何陌生人修改费用。Ethereum.org 介绍了所有者角色、基于角色的访问控制和多重签名审批等模式。
整数上溢和下溢
运算结果超出范围后发生回绕,导致低于零的余额变成一个巨大的数值。Ethereum.org 指出,Solidity 0.8.0 及更高版本默认会拒绝这类运算,而旧代码需要显式检查,这就是科菲使用旧版编译器这件事值得关注的原因。
预言机操纵
从单个交易深度不足、可被攻击者操纵的市场读取价格。攻击者通常会使用闪电贷,即在同一笔交易内借入并偿还的贷款。稳健的设计会使用去中心化预言机或时间平均价格。
逻辑与验证错误
与预期设计不符的规则,或从未经过检查的输入,例如金额为零或不符合预期的地址。
团队如何测试和审计智能合约?
团队会分层测试和审查智能合约,因为没有哪一种方法能发现所有问题:自动化测试、分析工具、部署到测试网络、独立审查;对于承载较高资产价值的合约,还会进行外部审计并设立漏洞赏金计划。
1. 单元测试和基于属性的测试
为每个函数编写测试,包括接收方回调等恶意场景。模糊测试会自动尝试数千个随机输入。
2. 静态分析
Ethereum.org 列举了 Slither、Mythril 和 Aderyn 等工具,它们会扫描代码,查找已知的风险模式。
3. 测试网络
先部署到公开测试网,再部署到主网。Ethereum.org 推荐使用 Sepolia 进行应用和合约开发;测试网以太币按设计不应具有实际价值,因此出错不会造成资金损失。
4. 同行评审与经过审计的库
使用版本控制,每次变更都由独立审核人员审核,并采用经过充分审查的库,例如 OpenZeppelin Contracts,而不是从头编写访问控制功能。
5. 审计、漏洞赏金与监控
独立审计能加强审查,但正如 ethereum.org 所指出的,它无法发现所有漏洞。漏洞赏金计划、紧急暂停功能和事件监控可用于弥补不足。
较差的安全审查和改进后的审查分别是什么样的?
薄弱的审核:“已手动测试存入和提取,运行正常,可以部署。”正常路径测试只能证明合约对诚实用户有效,而攻击者恰恰不是诚实用户。
改进后的审查:重入:withdraw 现在会在转账前将余额归零,并通过测试,用恶意接收合约尝试回调。访问控制:setFee 仅限经审计代码库中的所有者角色调用,并通过测试确认无权限者的调用会失败。编译器:升级至较新的 0.8 版本,启用溢出检查。预言机:用去中心化价格数据源替代单一流动性池报价,并对价格突变设置合理范围限制。测试:完成单元测试、一轮模糊测试及一次静态分析,对每项发现都作出说明;随后在 Sepolia 上运行两周,由同事尝试找出问题。已安排外部审计,在此之前不接收任何真实资金。
智能合约安全方面有哪些常见错误?
最常见的错误是只测试正常流程,仿佛每个调用者都诚实可信。其他错误包括:先开放管理功能,打算以后再限制;用过时的编译器复制运行教程代码;只信任一个价格来源;把审计当成保证;跳过测试网阶段;以及部署时没有暂停或升级方案。
这节课在 Tosheo.ai 中属于哪一部分?
这是区块链分类和区块链课程中的一节编程课。这个免费页面用文字说明每个步骤;完整的实操版本需要你审查和修复真实的合约代码,并在测试网络上运行测试,注册后可在选修编程学习路径中学习。如果你还不熟悉基础知识,请先学习智能合约详解。Tosheo.ai 不是全日制集训营,也不提供专业审计师资格培训,这里的任何内容都不构成投资建议;承载真实资产价值的合约需要由专业人员审计。
来源与范围
ethereum.org,智能合约安全(核查日期:19 October 2026) ↗