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 формируется методами настройки времени:
-
evm_setNextBlockTimestamp: Перепрыгивает время до временной метки следующего блока:adjustment_offset = timestamp - time.now(). -
evm_increaseTime: Продвигает время на относительную величину.adjustment_offset += increase_value
Примеры
Увеличение времени на смещение
showLineNumbers
Установка временной метки для pending-блока
showLineNumbers