Исходные данные

EIP-2935 добавляет в Ethereum системный контракт, который хранит хеши недавних блоков исполнения. При обработке очередного блока протокол записывает хеш его родителя. Изменение вошло в Pectra. У существующего опкода BLOCKHASH сохранилось прежнее поведение. Ethereum EIP-2935 ↗ Ethereum Pectra specification ↗

Как работает окно из 8191 блока

Номер запрашиваемого блока передают системному контракту в 32 байтах. При высоте N допустимый диапазон составляет от N − 8191 до N − 1. Запрос за пределами диапазона завершается ошибкой. Записи хранятся в кольцевом буфере. Сразу после активации требуется время, чтобы заполнить его новыми хешами. Более ранняя история задним числом в буфер не попадает, за исключением хеша родителя первого блока с активным правилом.

Условный пример при высоте 100 000

Номер 92 000 входит в окно системного контракта при условии, что буфер к этому моменту заполнен. До него 8000 блоков. Такой вызов выходит за прежний диапазон в 256 блоков опкода BLOCKHASH, поэтому замена одного способа чтения другим в приложении даёт конкретное расширение горизонта.

Хеш связывает проверку с определённым заголовком, но приложение должно отдельно установить, что нужная транзакция или запись относится к этому блоку. Если требуется финальность, необходимо определить соответствующее условие протокола. Для долгоживущих доказательств важен срок проверки. Доказательство, собранное вовремя, может перестать проверяться через этот буфер после выхода исходного блока из окна.