Recon 扩展路线图

  • Recon
  • 发布于 1天前
  • 阅读 77

Recon 旨在通过 invariant testing 成为 Solidity 开发者的默认选择,从而发现难以推断的 bug,并降低在生产环境中被利用的风险。

Recon帮助你构建和运行不变性测试

Recon 扩展路线图

未来更新、透明度报告和我们的众筹工作

Recon 的理由

Recon 的目标是使不变性测试成为所有 Solidity 开发者的默认选择,因为它能发现难以推断的漏洞,而这些漏洞如果在生产环境中被利用,可能会造成数百万美元的损失。

在努力实现这个目标的过程中,我们意识到阻碍大多数开发者使用不变性测试的主要原因是设置时间。我们创建了 Recon 扩展来减少设置时间,让开发者的工作更轻松,只需点击一下,你就可以:搭建一个新的不变性测试套件,运行fuzzers和形式化验证工具,并自动将损坏的不变性 reproducers 转换为 Foundry 单元测试,从而将设置时间从几天减少到几小时。

持续开发

我们当前筹款的目标是为开发者对其扩展和扩展所使用的工具的贡献提供报酬。

下面我们详细介绍了低垂的果实(如果解决这些问题,将为扩展带来边际附加值),我们对此有明确的路线图,以及登月计划(这将显著提高扩展的能力并推进现有技术水平),但尚未得到充分探索。

低垂的果实 - 扩展

Recon 扩展仓库中的以下问题概述了一些可以直接对扩展进行的改进想法:

低垂的果实 - Solidity

我们还在我们的 setup-helpers 代码库中确定了需要改进的领域,我们的扩展程序在使用我们的 Chimera 框架设置测试套件时会使用该代码库,以简化重复的测试套件设置。这些改进将解锁当前使用不变性测试无法轻松访问的新的测试功能。

我们在这方面的主要目标是:

  • 在我们现有的 AssetManager 中模拟奇怪的 token 行为(对于异常的 token 行为,例如 这个代码库 中描述的那些行为)

  • 在我们的 ActorManager 中模拟一个可重入的 actor

高级研究

以下部分描述了将分配收到的资金以推进不变性测试技术水平的研究主题。

OracleManager

创建一个新的 manager 合约,该合约实现一个 token 和一个 oracle,并能够设置 token 的价格。这使得可以更轻松地跟踪和管理协议使用的定价机制如何在经济攻击中使用。

Corpus Scoring

一种算法,用于评估语料库(fuzzer 用于探索系统状态的已保存函数调用序列)的质量和彻底性。拥有语料库质量的定量指标可以通过生成可以优化的目标函数来改进 AI 驱动的工作流程中的反馈循环。

标准化语料库定义和重用

标准化不同工具(Echidna、Foundry、Halmos 等)生成的语料库将通过允许将一个工具的输出作为另一个工具的输入,从而有助于使所有工具更兼容。通过共享语料库的实现,不同工具的使用变得具有累加性,因为它们都可以扩展彼此的工作,这使得可以更轻松地基于其优势在特定用例的工具之间切换(例如,用于测试数学库的形式化验证,用于查找与截断相关的问题 fuzzing)。

Raycasting

目抢跑 fuzzer 相当长的时间(1-2 小时)以确定 handler 可以达到的覆盖率(调用期间访问的源代码行)。这是反馈循环缓慢的一部分,首先需要定义函数 handlers,等待 fuzzer 运行,然后评估覆盖率输出以确定需要实施哪些更改以提高覆盖率。

使用 raycasting 直接确定 handler 可以通过统计确定性达到的覆盖率的能力是 invariant 工程师更好的反馈机制,因为它具有即时性,并允许他们在运行 fuzzer 之前确定 fuzzer 的功效。

Autoclamping

类似于 raycasting 减少花费在运行 fuzzer 的反馈循环中以评估覆盖率的目标,autoclamping 的目标是使用形式化方法来识别和探索某些输入及其允许的状态空间探索之间的依赖关系。

使用形式化方法的输出允许生成 clamped handlers(减少 fuzzer 探索的搜索空间),这些 handlers 可证明不会过度约束传递给目标函数的输入。这确保 handlers 仍然可以完全探索整个可能的状态空间,而无需调用系统来探索恢复路径。

AlexAutoclamping 进行了广泛的研究,其背后的思想将在 DeFi Security Summit 的此演示文稿中讨论。此 gist 概述了演示文稿中将涵盖的 autoclamping 背后的总体思路。

ErrorManager Library

目前,通过 properties that check for errors 的标准实现,只能捕获调用给定 target function 之后的错误。这不允许足够高的特异性来识别在目标函数的调用跟踪中发生一般错误(如算术 panic)的位置。然而,捕获特定行的恢复对于断言系统在特定条件下的行为方式很有用。

因此,一个允许管理生产和开发环境的错误和断言的库,使得编写检查特定行特定恢复的 properties 明显容易。

Storage Subscriptions

执行静态分析可以确定给定函数可以修改的特定存储槽。然后,fuzzer 可以订阅这些存储槽,以确定是否已访问给定的存储槽。

这允许 fuzzer 基于它修改的存储槽可以探索的新的理论覆盖率,以编程方式定位函数。通过提供更好的算法,通过该算法可以探索整个状态空间,这应该可以显着优化 fuzzer 的性能。

透明度

我们将把筹集到的 100% 的资金投入到 merit.systems 帐户中。该帐户将用于资助扩展的开发以及上面提到的有助于更快、更有效的 fuzzing 的其他存储库。

Recon 的创始人不会从该 merit systems 帐户或他们对上述工具的贡献中获得任何资金,因为该资金旨在奖励开发扩展的开发人员,这可能包括 Recon 的开发人员(可能是 0kn0t,扩展的创建者和维护者)。

方法论

首先,我们将等待筹款完成并发送付款。

然后,我们将汇总收到的资金总额,并根据转移当天的名义价值将其转移到 merit.systems 帐户(这可以防止必须收集多个小额捐款),然后将用于支付贡献者和维护者。

支持我们

扩展的资助页面在此。这是 Giveth 和 Gitcoin 的 Developer Tooling Quadratic Founding Round 的一部分。


  • 原文链接: getrecon.substack.com/p/...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Recon
Recon
江湖只有他的大名,没有他的介绍。