Перейти к основному содержанию
Network Mirror Mode постоянно поддерживает Virtual Environment выровненной с её родительской сетью. Новые блоки mainnet поглощаются в Virtual Environment по мере их появления, а mempool, видимый в UI, собирает все транзакции, которые вы отправляете. Ваши транзакции добавляются в начало следующего синхронизированного блока в порядке поступления.
Network Mirror Mode доступен на платном тарифе. Чтобы включить его для вашего аккаунта, свяжитесь с отделом продаж.
Network sync status panel showing Mainnet head vs Virtual Environment head block numbers, block lag chart, and time-control buttons

Когда его использовать

Используйте Network Mirror Mode, когда нужно оценить поведение при живых сетевых условиях, а не на замороженном форке:
  • Тестируйте, как ваши контракты ведут себя при сегодняшних ценах оракулов, резервах пулов или состоянии управления.
  • Разместите транзакцию и контролируйте, когда она исполнится относительно следующего синхронизированного блока.
  • Приостановите живую сеть на конкретном блоке, чтобы изучить состояние, и продолжите воспроизведение.
  • Сравнивайте хранилище и балансы вашей Virtual Environment с базовыми значениями mainnet с течением времени.
Если вам нужен замороженный форк на конкретный момент времени, используйте стандартную Virtual Environment. Если нужно состояние в реальном времени без семантики mempool или поблочного тикания, используйте State Sync.

Как работает синхронизация

Тик mainnet вызывает тик Virtual Environment примерно за 12 секунд. Каждый тик вносит транзакции следующего блока и применяет их поверх текущего состояния вашей Virtual Environment. Транзакции, которые вы отправляете, находятся в mempool 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

Управление временем

Полоса управления временем позволяет двигать часы Virtual Environment относительно mainnet. Каждый элемент управления соответствует RPC-вызову, который можно вызвать и из вашего кода:
Элемент управленияRPC-вызовПоведение
Rewindtenderly_revertSyncОтматывает N блоков (по умолчанию 10)
Playtenderly_startSyncВозобновляет непрерывную синхронизацию с текущего блока
Pausetenderly_stopSyncОстанавливает цикл тиков
Steptenderly_syncNextСинхронизирует только следующий блок
Выбор скорости (, , , realtime) соответствует задержке тика между вызовами синхронизации (12s, 6s, 3s и без задержки соответственно).
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.timestamp, baseFee, coinbase и prevrandao отражают значения mainnet.
  • Паритет рынка газа: к транзакциям, которые вы отправляете, применяется текущая цена газа mainnet.
  • Задержка меньше тика: тик mainnet вызывает тик Virtual Environment примерно за 12 секунд.

Поведение чит-кодов

Поскольку Network Mirror Mode постоянно импортирует реальные блоки, некоторые чит-коды Admin RPC ведут себя иначе, чем в стандартной Virtual Environment.
ПоведениеКогда Virtual Environment в Network Mirror Mode
Чит-коды Admin RPC (tenderly_setBalance, tenderly_setErc20Balance, tenderly_setStorageAt и т. д.)Отключены, пока активна живая синхронизация. Приостановите синхронизацию, чтобы использовать их.
Solidity precompile cheatcodesРаботают, но исполняются на границе следующего синхронизированного блока, а не немедленно.
tenderly_sendBlockОтключён, пока активна синхронизация.
Начальный пустой блок при создании Virtual EnvironmentПропускается.
Стандартные 10 пополненных аккаунтов при создании Virtual EnvironmentНе создаются.
Полный список чит-кодов см. в справочнике Admin RPC.

Сравнение режимов

Стандартная Virtual EnvironmentState SyncNetwork Mirror Mode
Начальное состояние из родительской сетиДа (снимок)ДаДа
Отслеживание новых блоков родительской сетиНетПер-слот, при чтенииДа, блок в блок
Видимый пользователю mempoolНетНетДа
Блочный контекст совпадает с родительской сетьюНет (независимые часы)НетДа
Чит-коды работают через Admin RPCДаДаТолько когда синхронизация приостановлена
Управление временем (rewind / play / step)НетНетДа
Линза state driftНетНетДа
Хорошо подходит дляИнтеграционных тестов на замороженной точкеСвежих значений оракулов, состояний пуловРепетиций живой сети, тестов mempool

Известные ограничения

  • Только одна сеть. Network Mirror Mode применяется к отдельной Virtual Environment; совмещение с multichain Virtual Environments в настоящее время не поддерживается.

См. также