Как выбрать шкалу номеров блоков для срока в контракте Arbitrum

При переносе из Ethereum легко смешать высоту Solidity block.number и собственную высоту Arbitrum из RPC. Эти счётчики продвигаются с разной скоростью.

Установите источник высоты

В сетях со стандартной семантикой Arbitrum One block.number возвращает приближённый номер родительского блока. Для собственной высоты Arbitrum вызовите интерфейс ArbSys по адресу 100, как в примере. При компиляции импортируйте интерфейс.

uint256 parentLikeHeight = block.number;
uint256 childHeight = ArbSys(address(100)).arbBlockNumber();

Если начало интервала записано через arbBlockNumber(), сравнивайте его с поздним результатом arbBlockNumber(). Вычитание Ethereum-подобной высоты из дочерней даст бессмысленную длительность или арифметическую ошибку.

Опишите шкалу для потребителей

Подписывайте источник номера блока в событиях и внешних API. У других сетей Arbitrum проверьте конфигурацию и документацию. Фиксированное количество блоков любого из двух видов не гарантирует заданное число секунд. docs.arbitrum.io Arbitrum documentation