跳转到主要内容
在使用代理合约模拟交易时,Tenderly 会同时显示代理合约以及它所委托的合约中的所有函数,方便您更轻松地进行调试和源码编辑
代理合约基本上只包含一个变量,即用于转发交易的目标地址。它们主要用于简化合约版本管理或错误修复:如果您想更改智能合约,可以进行新的部署而无需担心依赖关系,只需将代理合约中的目标地址更改为新更新的合约即可。 您可以通过标准流程导入任何合约: Tenderly 会自动检测代理合约,并为您提供同时添加其最新实现的选项: 您还可以查看为您的代理合约设置过的所有历史目标地址: 此外,如果您的合约用作代理但未符合当前行业标准,您可以将任何合约转换为代理合约: 如果您导入的代理合约不符合 Tenderly 自动检测的两种行业标准(EIP-1967 和 EIP-1167),您现在可以轻松地将该代理合约转换为 Tenderly 可识别的形式。 如果您使用的是上述两种标准之外的其他标准,您可以提供合约中定义的、返回实现地址的 view 函数。您还可以手动设置包含实现地址的存储槽位,将该合约转换为代理。 Tenderly 会列出所有不带参数且返回类型为 address 的函数,您可以选择一个返回被代理合约实现地址的函数。您还可以选择发送该交易的账户,这一点很重要——如果您选择的代理合约函数具有特定的执行规则(例如仅可从特定地址调用),此设置就尤为关键。 如果您更喜欢通过实现槽位哈希导入代理合约的方式,仍然可以通过切换 use storage slot 开关来使用该方式。