将EigenLayer集成到你的测试套件中

  • Recon
  • 发布于 2024-07-20 13:41
  • 阅读 21

本文介绍了在EigenLayer协议上构建测试用例的方法,特别是如何使用eigenlayer-fuzzing库来进行集成测试。作者详细阐述了如何将该库作为子模块添加到已有项目中,以及如何设置环境并集成目标函数,以便模拟EigenLayer的外部行为,确保兼容性和可靠性。文章还提供了代码示例和步骤指南,适合有一定基础的读者。

Jul 18, 2024

1

用例

在 EigenLayer 之上构建协议时,你可能希望通过集成测试来测试你的系统在实际 EigenLayer 系统下的表现,或者你只想测试你的系统,而不太关心 EigenLayer 方面的实际正确行为,在这种情况下,你就会选择模拟 EigenLayer 系统。但你如何知道你的模拟不会引入一些意想不到的行为?并且你真的想经历设置整个 EigenLayer 系统的过程,只是为了测试你的系统吗?

现在,你可以通过使用 eigenlayer-fuzzing repo 获得两全其美的结果,而无需额外的工作。

如何使用

在本篇文章中,我们将使用 renzo-fuzzing repo 作为如何集成 eigenlayer-fuzzing repo 以设置你的模糊/测试套件的示例。

请注意,此 repo 是使用 Foundry 构建的,并与使用 Foundry/Echidna/Medusa 进行不变性/单元测试的协议集成。

1. 作为子模块依赖添加

在你想要添加 EigenLayer 设置的项目中,使用以下命令将其作为 Foundry 子模块依赖添加:

forge install Recon-Fuzz/eigenlayer-fuzzing

2. 添加到系统设置

在你的项目中,从 EigenLayerSystem 合约继承,以便在你的设置/测试合约中使用。

对于 renzo-fuzzing 示例,它是 使用 Recon 搭建的,因此包含一个用于定义 setup 函数的 Setup 合约,该函数用于以与 Foundry 和 Echidna/Medusa 兼容的方式部署系统:

由于 Renzo 系统的部署非常广泛,它已被分离到一个不同的合约 (RenzoSetup) 中,因此它从 EigenLayerSystem 继承,允许在 Setup 合约中调用 deployEigenLayerLocal 函数。

3. 为 EigenLayer 外部性添加目标

现在两个系统都已部署并相互集成,剩下的就是在我们的 TargetFunctions 合约中添加处理函数,以允许模糊测试器模拟可能影响集成系统行为的 EigenLayer 外部性。

这些函数也由 EigenLayerSystem 合约暴露为 slashNativeslashAVS,因为我们在 Setup 合约中继承了这些,因此将它们添加到 Renzo 模糊测试套件只是针对特定用户调用函数的问题。

在 Renzo 示例中,用户是一个 OperatorDelegator,因为他们保持 Renzo 中由单个用户进行的所有存款的份额,这些存款在 EigenLayer 上执行。

打破常规

在添加目标函数后,你拥有一个测试套件,可以使用实际的 EigenLayer 实现来测试你的集成系统的行为。此外,你可以直接通过 slashNativeslashAVS 函数操纵 EigenLayer 状态,或通过直接调用 EigenLayer 合约来定义其他潜在的外部性,从而操纵它们的状态。

接下来的唯一步骤是在定义目标函数和属性后允许模糊测试器运行,等待查看是否有任何行为不符合预期。


订阅 Recon

十个月前推出

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

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

0 条评论

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