Explain why an Arbitrum NodeInterface query works only over RPC
A simulated call to address 0xc8 can return valid node-level data even though an application contract cannot invoke the same interface during EVM execution. This distinction matters when moving a diagnostic into a contract.
Identify the execution boundary
NodeInterface is a virtual interface provided by the Arbitrum node over RPC. A top-level RPC call addressed to it can obtain utilities such as batch lookup or proof construction. A Solidity call from an executed transaction follows the EVM path instead.
off-chain client → child RPC eth_call → NodeInterface at 0xc8
on-chain Solidity caller → EVM call to 0xc8
If an off-chain client succeeds but the contract receives no decodable output, first check this boundary before changing ABI offsets or increasing gas. Supplying the virtual address as a dependency does not install executable code there.
Design the verification step explicitly
Perform node-assisted proof construction off chain and use the actual on-chain verifier appropriate to the application. For in-contract network information use an applicable real precompile, such as ArbSys for its supported functions. Returning a value through an RPC server does not authenticate it to a contract. docs.arbitrum.io Arbitrum documentation