Почему запрос к NodeInterface Arbitrum работает только через RPC
Симулированный вызов адреса 0xc8 может вернуть данные ноды, хотя контракт приложения не способен вызвать тот же интерфейс во время исполнения EVM. Это важно при переносе диагностики в контракт.
Определите границу исполнения
NodeInterface — виртуальный интерфейс Arbitrum-ноды для RPC. Верхнеуровневый RPC-вызов на его адрес может выполнять служебные операции, включая поиск пакета и построение доказательства. Вызов Solidity из исполняемой транзакции идёт другим путём через EVM.
off-chain client → child RPC eth_call → NodeInterface at 0xc8
on-chain Solidity caller → EVM call to 0xc8
Если внешний клиент получил ответ, а контракту нечего декодировать, сначала проверьте эту границу до изменения ABI или увеличения газа. Передача виртуального адреса как зависимости не устанавливает на него исполняемый код.
Спроектируйте проверку отдельно
Постройте доказательство с помощью ноды вне цепочки и передайте настоящему проверяющему контракту нужного протокола. Для поддерживаемых внутриконтрактных запросов используйте реальный прекомпайл, например ArbSys. Ответ RPC сам по себе не удостоверяет значение для контракта. docs.arbitrum.io Arbitrum documentation