Как проверить, к какой сети подключён Ethereum RPC

Рабочий HTTP-адрес может вести в другую сеть. Перед переключением индексатора сверьте идентификатор сети для подписи транзакций и хеш известного блока.

Сверьте идентификатор сети

Отправьте запрос на проверяемый RPC. Execution-клиент основной сети возвращает 0x1 — шестнадцатеричную запись идентификатора 1. Для сравнения с десятичным значением в конфигурации преобразуйте ответ в число по основанию 16.

{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}

Для этой проверки используйте eth_chainId. Метод net_version возвращает сетевой идентификатор, который может отличаться от chain ID. Храните ожидаемое значение в конфигурации развёртывания, чтобы эталон не зависел от проверяемого RPC. eips.ethereum.org Назначение идентификаторов в EIP-695

Запросите блок с известным хешем

Частная копия сети может унаследовать публичный chain ID и начальный блок. Получите через независимый доверенный RPC номер и хеш недавно финализированного блока. Запросите у проверяемого сервера eth_getBlockByNumber на той же высоте. В примере число 20 000 000 показывает формат параметра. Подставьте высоту своей контрольной точки.

{"jsonrpc":"2.0","id":2,"method":"eth_getBlockByNumber","params":["0x1312d00",false]}

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