Перейти к основному содержанию
Откат состояния может быть полезен при тестировании контрактов и протоколов, когда вы хотите отбросить все изменения состояния до позиции снимка.
Вместо отката состояния рассмотрите вариант форка существующей Virtual Environment и проводите тестирование на одноразовой рабочей копии.

Откат к снимку

Ограничение дистанции отката

Одиночный evm_revert может откатить не более 2000 блоков. Если снимок находится более чем на 2000 блоков позади текущего блока, вызов завершается ошибкой:
Это касается Virtual Environments, непрерывно производящих блоки (например, при выполнении запланированного задания, добывающего блоки), где целевой снимок может быстро выйти за пределы окна в 2000 блоков. Чтобы вернуться к точке, находящейся ещё дальше, вместо отката клонируйте Virtual Environment на целевом историческом блоке.

Клонирование на историческом блоке

Чтобы получить Virtual Environment, состояние которой соответствует конкретному прошлому блоку, клонируйте её на этом блоке. Клон — это новая, независимая Virtual Environment, форкнутая в выбранной точке, при этом источник остаётся неизменным. Ограничения по дистанции нет, поэтому это способ добраться до блока более чем на 2000 блоков в прошлом. В панели откройте вкладку Activity и используйте действие клонирования на транзакции в том блоке, к которому хотите вернуться. Новая Virtual Environment создаётся с состоянием на блок этой транзакции.
Placeholder для скриншота: действие «клонировать» по транзакции на вкладке Activity.
Клонирование на историческом блоке также является правильным подходом, когда вы хотите «форкнуть на конкретном номере блока». Форк всегда начинается с последнего блока, тогда как клон может быть направлен на любой исторический блок.