Перейти к основному содержанию
Для определённых типов тестов удобно перепрыгивать во времени. Это возможно за счёт двух методов Admin RPC, доступных в Virtual Environments: evm_setNextBlockTimestamp и evm_setNextBlockTimestamp.

Получение правильного времени

Во время выполнения транзакции или eth_call при обращении к block.timestamp внутри контракта значение будет зависеть от того, целевой ли блок latest или pending:
  • Для блока pending: block.timestamp == time.now() + adjustment_offset. Это текущее время, скорректированное методами настройки времени.
  • Для блока latest: block.timestamp == latest_block.timestamp. Это временная метка самого последнего майнинга блока.
adjustment_offset формируется методами настройки времени:
  1. evm_setNextBlockTimestamp: Перепрыгивает время до временной метки следующего блока: adjustment_offset = timestamp - time.now().
  2. evm_increaseTime: Продвигает время на относительную величину. adjustment_offset += increase_value

Примеры

Увеличение времени на смещение

showLineNumbers

Установка временной метки для pending-блока

showLineNumbers