跳转到主要内容
Network Mirror Mode 让 Virtual Environment 与其父网络持续保持一致。新的 Mainnet 区块在产生时被吸收到 Virtual Environment 中,UI 中可见的内存池会收集您提交的任何交易。您的交易会按到达顺序被前置到下一个同步的区块中。
Network Mirror Mode 仅在付费计划中可用。要为您的账户启用它,请联系我们的销售团队
Network sync status panel showing Mainnet head vs Virtual Environment head block numbers, block lag chart, and time-control buttons

何时使用

当您需要针对实时网络条件(而不是冻结的 fork)评估行为时,请使用 Network Mirror Mode:
  • 测试您的合约在当前预言机价格、资金池储备或治理状态下的行为。
  • 暂存一笔交易并控制它相对于下一个同步区块的执行时机。
  • 在特定区块处暂停实时网络以检查状态,然后继续重放。
  • 随时间将您 Virtual Environment 的存储和余额与 Mainnet 基线进行比较。
如果您需要冻结的时间点 fork,请使用标准 Virtual Environment。如果您需要不带内存池语义或逐块滴答的实时状态,请使用 State Sync

同步如何工作

Mainnet 的一次滴答会在大约 12 秒内产生一次 Virtual Environment 滴答。每次滴答都会引入下一个区块的交易,并将其应用到您 Virtual Environment 的当前状态之上。 您提交的交易会停留在 Virtual Environment 的内存池中,直到下一次同步滴答,此时它们会被按 FIFO 顺序前置到同步区块中。您的交易先执行;同步的 Mainnet 交易在其之后针对由此产生的状态执行。 “live” 指示灯显示 Virtual Environment 是否跟得上:
状态含义
Live滴答活跃,滞后一个区块或更少
Catching up滴答活跃,滞后超过一个区块
Paused滴答循环已停止
Network sync status showing Mainnet head 25,239,023 and Virtual Environment head 25,237,977 with 1,046 blocks behind mainnet in orange

时间控制

时间控制条允许您相对于 Mainnet 移动 Virtual Environment 的时钟。每个控件直接对应于您也可以从自己的代码中调用的 RPC 调用:
控件RPC 调用行为
Rewindtenderly_revertSync回退 N 个区块(默认 10)
Playtenderly_startSync从当前区块恢复持续同步
Pausetenderly_stopSync停止滴答循环
Steptenderly_syncNext仅同步下一个区块
速度选择器(realtime)映射到同步调用之间的滴答延迟(分别为 12s6s3s,以及无延迟)。
Network sync page showing Rewind, Sync block, and Start auto-sync 1x buttons in the top-right of the status card
要以编程方式检查同步进度,请使用 tenderly_getSyncStatus

状态漂移视图

State Drift 视图显示您的 Virtual Environment 与 Mainnet 之间发生偏离的位置。对于查找您的测试实际改动的合约或钱包很有用。 三个子视图共享同一个界面:
子视图显示内容
State每个合约的存储槽漂移
Balance相对于 Mainnet 的钱包和代币余额差异
该视图的范围限定为您正在监控的合约和钱包,加上当前会话已触及的任何合约。
State drift view inside Network Sync, showing the State and Balance tabs and the Track variable / Track balance buttons

区块上下文保真度

Network Mirror Mode 在最常影响合约行为的维度上承诺与父网络一对一对等:
  • 区块上下文对齐block.timestampbaseFeecoinbaseprevrandao 反映 Mainnet 的值。
  • Gas 市场对等:当前 Mainnet 的 gas 定价适用于您提交的交易。
  • 亚滴答延迟:Mainnet 的一次滴答会在大约 12 秒内产生一次 Virtual Environment 滴答。

作弊码行为

由于 Network Mirror Mode 持续导入真实区块,一些 Admin RPC 作弊码的行为与标准 Virtual Environment 上的行为不同。
行为当 Virtual Environment 处于 Network Mirror Mode 时
Admin RPC 作弊码(tenderly_setBalancetenderly_setErc20Balancetenderly_setStorageAt 等)在实时同步激活时被禁用。 暂停同步以使用它们。
Solidity 预编译作弊码有效,但在下一个同步区块边界执行,而不是立即执行。
tenderly_sendBlock在同步激活时被禁用。
Virtual Environment 创建时的初始空区块跳过。
Virtual Environment 创建时默认的 10 个已注资账户不创建。
完整的作弊码列表参见 Admin RPC 参考

模式比较

标准 Virtual EnvironmentState SyncNetwork Mirror Mode
来自父网络的初始状态是(快照)
跟踪新的父网络区块按槽、读取时是,逐块
用户可见的内存池
区块上下文与父网络匹配否(独立时钟)
作弊码通过 Admin RPC 工作仅在同步暂停时
时间控制(rewind / play / step)
状态漂移视图
适用于冻结时间点集成测试最新预言机值、资金池状态实时网络演练、内存池测试

已知限制

  • 仅单一网络。 Network Mirror Mode 按每个 Virtual Environment 应用;目前不支持将其与多链 Virtual Environments 组合使用。

另请参阅