Tenderly 推出了 Evaluate Expression 功能,旨在简化和加速以太坊智能合约的调试过程。该功能允许开发者在调试会话期间高效地评估表达式,分析可读代码,收集合约状态信息,并测试各种自定义场景。通过 Evaluate Expression,开发者可以更便捷地检查变量、函数、条件等参数,从而更快地定位和解决问题。
Tenderly 推出 Evaluate Expression:一种加速调试过程的直接方法。通过探索 4 种常见的用例场景,了解如何使用此功能。
调试是开发过程任何阶段的关键步骤,从创建业务逻辑和编写算法到代码测试。对于以太坊开发者来说,调试也是最耗时的任务之一。
调试区块链交易不同于调试使用 JavaScript 等编程语言构建的传统应用程序。使用 Web3 应用程序,你不是在实时运行代码。相反,区块链概述了与关联代码映射的历史交易执行,因此工程师需要全面了解此类数据才能调试交易。
此外,调试智能合约需要逐步分析交易。开发者需要检查智能合约内部函数的逻辑,确定交易失败的原因和位置,然后继续调试问题。如果手动完成,这将花费大量时间。
这就是为什么我们要在已经广为人知的 Tenderly Debugger 功能中引入一个新功能——Evaluate Expression。
Evaluate Expression 是一个直接的功能,允许你在调试会话期间有效地评估交易表达式。你可以轻松分析人类可读的代码,收集有关合约状态的信息,并在运行时测试各种自定义场景。它还允许你检查全局和局部变量、函数、条件和其他重要的交易参数。
这种节省时间的功能结合了多个 Tenderly 功能,包括 Run Simulation
和 Edit Contract Source
。基本上,可以将 Evaluate Expression 视为在精确的跟踪点注入到你的合约源代码中的 console.log
。
此外,Evaluate Expression 在战情室场景中特别有用,因为它允许你显着加快调试过程。在过滤交易跟踪中的外部调用后,你可以使用此功能检查可疑的代码部分。在这些情况下,快速行动对于减轻损害和节省资金至关重要。Evaluate Expression 使这成为可能。
我们开始注意到始终使用 console.log
来读取合约状态是多么令人烦恼。要将 console.log
添加到 Tenderly,你需要单击 Re-Simulate 按钮 -> 单击 Edit Contract Source -> 添加 console.log
-> 单击 Apply Changes,然后单击 Simulate Transaction 按钮。
你只能 console.log
原始类型,这也涉及相当多的点击次数。因此,我们提出了一个节省时间的想法,让你只需单击 Tenderly Debugger 中的一个按钮 Evaluate,即可轻松检查交易跟踪中的任何值。
之前:要检查生产中合约的变量值,你需要手动收集数据。收集所有信息后,你需要完成多个计算。由于这涉及多个步骤和更多的点击次数,许多开发者因时间限制而中途放弃。
之后:要检查交易错误并调试问题,你只需转到 Tenderly Debugger 中的 Evaluate Expression。之后,输入一个表达式并单击 Evaluate 以获得人类可读格式的所需信息。就是这样!
你可以将 Evaluate Expression 视为 hardhat 的 console.log
,但你可以 console.log
任何内容,包括方法、结构体、枚举、函数、复杂表达式和状态变量。你无需编写代码或部署合约的新版本。相反,只需单击 Evaluate 并读取表达式结果。之后,你可以运行 Tenderly Simulation 来测试你的自定义场景或检查你是否已成功解决问题。
Evaluate Expression 使你能够检查不同的表达式并测试许多自定义场景。以下是一些常见的示例,可帮助你入门:
例如,假设你想检查你的代码是否进入了 if block
。你可以通过在跟踪调用时评估整个语句来做到这一点。
这是一个示例交易:
在这里,你可以检查你的代码是否进入了 if block
。要查看 if 语句的结果,请单击 Evaluate -> 输入 step.tickNext < TickMath.MIN_TICK
表达式,然后单击 Enter。在此示例中,结果为 false
,这意味着你没有进入 if block
逻辑。
另一个可能的用例是使用 Evaluate Expression 进行计算。例如,让我们检查以下交易步骤来计算下一个 feeGrowthGlobalX128
:
Evaluate Expression 功能还允许你检查整个结构的内容。例如,你可以评估 state
:
使用 Evaluate Expression,你还可以检查整个函数。让我们检查 _blockTimestamp
函数:
此用户友好的功能使你能够评估全局和局部变量,包括枚举和结构。在以下示例中,你可以看到 Evaluate Expression 如何帮助你识别合约调用者:
标准的调试过程涉及许多复杂且耗时的步骤,这些步骤通常会让你偏离轨道并在速度最重要时减慢你的速度。Evaluate Expression 可让你更快地到达目的地,让你更深入地了解交易和相关表达式。
此功能将帮助你充分利用 Tenderly Debugger 并处理各种场景,从调试交易错误和可能减少智能合约 gas 费用到在时间敏感的战情室场景中快速做出反应。使用 Evaluate Expression 完成后,调试将从一项耗时的任务变成一项简单的任务。准备好尝试了吗?
- 原文链接: blog.tenderly.co/how-use...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!