关于区块链:如何审计一个智能合约

48次阅读

共计 3066 个字符,预计需要花费 8 分钟才能阅读完成。

智能合约审计用于整个 DeFi 生态系统,通过对协定代码的深刻审查,能够帮忙解决辨认谬误、低效代码以及这些问题。智能合约具备不可篡改的特点,这使得审计成为任何区块链我的项目平安流程的要害局部。

代码审计对任何应用程序都很重要,但它们对去中心化应用程序 (dApp) 尤其重要,因为它们建设在其之上的区块链是不可变的。如果代码破绽导致用户资金失落,这些资金将无奈找回。迄今为止,DeFi 中的黑客曾经损失了超过 50 亿美元。

在本文中,咱们钻研了智能合约审计到底是什么、如何进行审计、须要留神的常见智能合约破绽、Solidity gas 优化策略、风行的审计工具等等。

每个月在 Defi 被盗的资金.

在 2023 年 2 月 20 日前,在 Defi 中被盗的总资金是 51.3 亿美元

什么是智能合约审计?

智能合约审计包含对一个协定的智能合约代码进行详细分析,以辨认安全漏洞、不良的编码实现形式和低效代码,而后再提出解决这些问题的解决方案。审计有助于确保跨 Web3 的去中心化应用程序的安全性、可靠性和性能。

在智能合约审核期间,平安专家团队将以主动和人工的形式,审查应用程序的代码、逻辑、架构和安全措施,以辨认任何潜在问题。他们专门寻找可能容易受到歹意攻打的任何代码,以及任何须要改良的局部。

智能合约代码最终将部署到 Avalanche、BNB Chain 或 Ethereum 等区块链中。一旦合约失效,任何人都能够拜访它们——从终端用户到歹意攻击者——这就是为什么在启动或更新去中心化应用程序之前必须解决所有破绽。

审计实现后,审计师会公布一份摘要报告,其中提供无关审计后果、解决办法和任何其余问题的详细信息,以及将来解决现存问题的路线图。通过全面的智能合约审计后,我的项目能够释怀地部署他们的合约,因为应用程序的安全性有了保障,用户资金也受到爱护。

如何审计智能合约

智能合约审计利用各种技术和工具来缩小危险点并使协定更加强壮。

步骤 1. 收集文档

被审计的我的项目必须先解冻代码,并向审计员提供技术文档,包含代码库、白皮书、架构和任何其余相干资料。该文档应该为审计员提供无关代码旨在实现的指标、范畴和具体实施的具体指南。

步骤 2. 自动化测试

也称为形式化验证引擎,自动化测试查看智能合约的每个可能状态,并针对可能攻打合约功能性或安全性的问题收回警报。审计人员还能够对单个性能进行集成测试、单元测试,以及探测安全漏洞的浸透测试。

步骤 3. 人工审核

平安专家团队仔细检查每一行代码,找出谬误和破绽。尽管自动化测试能够很好地辨认代码中的谬误,但人类工程师更有能力检测合约逻辑或架构的问题、技术上正确且通过自动化测试的不良编码实现、gas 优化以及常见攻击点(比如说领先交易)。

步骤 4. 合约谬误分类

每个谬误都依据它可能被利用的破绽严重性进行分类:

  • 重大 – 影响协定的平安运行。
  • 重大 – 可能导致用户资金或协定管制损失的中心化和逻辑谬误。
  • 中等 — 影响平台的性能或可靠性。
  • 主要 – 不会使应用程序的平安受到威逼的低效代码。
  • 信息性 — 与代码格调或行业最佳实际相干的谬误。

第 5 步。初始报告

审计员起草一份初步报告,总结代码缺点和其余问题,以及我的项目团队如何解决这些问题的反馈。一些智能合约服务提供商领有一个专家团队,能够帮忙修复发现的每个谬误。通过解决所有问题,我的项目能够确保其智能合约的安全性,并且做好部署的筹备。

第 6 步。公布最终审计报告

审计人员在具体将所有发现的问题写入最终报告中,所有问题都被标记为已解决或未解决。该报告将提供给我的项目团队并同时会被公开,以便协定的用户和其余利益相关者具备齐全的透明度。

本指南全面剖析了如何评估区块链预言机的安全性。

常见的智能合约破绽

以下是以后智能合约审计清单的一部分的常见破绽。

重入问题

当智能合约函数被不受信赖的内部合约调用时,可能会产生重入攻打。重入攻打中,使该内部合约可能通过递归调用原始合约来耗尽用户资金或进行其余歹意操作。

整数上溢和下溢

当智能合约执行算术运算输入超过以后存储容量的数字时,可能会产生整数溢出或下溢,从而导致计算错误。

领先交易机会

设计不合理的代码可能会泄露无关 dApp 尚未产生的的交易信息,其余用户能够后行运行这些信息,以就义协定为代价锁定利润。

重放攻打

当数据被歹意提早或反复时,就会产生重播攻打,尤其是在硬分叉事件期间,攻击者能够应用新的零碎上的音讯从遗留零碎中提取资金。

随机数破绽

如果 dApp 应用公开的数字(例如块哈希)来收获随机数,则它很容易受到利用,这就是为什么许多协定应用 Chainlink VRF 来实现随机性。

函数可见性谬误

打算公有的函数必须定义为公有的,因为 Solidity 中的默认可见性属性是公共的。如果是公开的,任何人都能够调用该函数。

中心化危险

核心化机制有单点故障的问题,如果单个私钥或相似密钥被泄露,可能会毁坏协定的安全性。工夫锁和授予 DAO 特权是解决中心化危险的罕用技术。

未锁定编译器版本

Solidity 有许多编译器版本。dApps 应该锁定他们应用的编译器版本,这样用户就不能用不同的版本编译它,否则这可能会导致不同的字节码和意想不到的问题。

Solidity gas 优化

Gas 是指在以太坊网络上进行特定操作所需的费用。Gas 优化是升高智能合约代码执行老本的过程,随着我的项目规模的扩充和须要更多的 Gas 来运行,这一点变得越来越重要。它还有助于避免协定被滥用。

Solidity gas 优化技术包含:

  • 启用 Solidity 编译器优化器,最大限度地缩小代码的大小。
  • 最小化所需的链上数据量。
  • 开释未应用的存储空间。

智能合约审计工具

风行的智能合约平安审计工具包含:

  • Echidna – 一个 Haskell 程序,专为含糊测试的以太坊智能合约而设计。
  • Ethlint — 剖析 Solidity 代码的格调和平安问题并帮忙解决这些问题。
  • Mythril – EVM 字节码平安剖析工具,应用符号执行(symbolic execution)、SMT 求解(SMT solving)和污点剖析(taint analysis)来检测各种安全漏洞。
  • MythX – 主动扫描以太坊和其余基于 EVM 的区块链智能合约中的安全漏洞。
  • Rattle — 一个应用流敏感剖析(flow-sensitive analysis)的 EVM 二进制动态剖析框架。
  • Slither – 针对安全漏洞和最佳实际对 Solidity 源代码进行动态剖析。
  • Solgraph — 生成一个 DOT 图,可视化性能控制流并显示潜在的安全漏洞。
  • Scribble – 标准语言和运行时验证工具,可将高级标准转换为 Solidity 代码。

常见问题

智能合约审计的费用是多少?

智能合约审计通常须要破费 5,000 到 15,000 美元,依据代码复杂性和技术支持要求,还有可能更高。

如何成为智能合约审计师?

智能合约审计员必须对软件工程有高层次的了解,理解特定区块链环境的特定语言,如以太坊的 Solidity,并理解去中心化金融等要害垂直畛域。审计师的支出通常在 10 万到 25 万美元之间,有些人的支出超过 40 万美元。

如何筹备智能合约审计?

通过清理代码库、收集所有文档而后解冻代码来筹备智能合约审计。在 Hacken 的这篇文章中理解更多信息。

审计智能合约须要多长时间?

实现智能合约平安审计的工夫取决于代码的大小和复杂性。尽管能够在 48 小时内审核一个简略的通证合约,但一个残缺的去中心化应用程序可能须要数周的工夫来审核。

如何抉择智能合约审计师?

如果你正在寻找合约审计人员倡议,也能够分割咱们的技术专家。

欢送关注 Chainlink 预言机并且私信退出开发者社区,有大量对于智能合约的学习材料以及对于区块链的话题!

正文完
 0