Как выбрать шкалу номеров блоков для срока в контракте 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