When a client makes a call to a contract running on Arbitrum, and gets a result back, here is what happens inside Arbitrum:
- Client software submits a transaction to Ethereum specifying the Arbitrum transaction call it wants to make
- The client's transaction gets into an Ethereum block. This puts the call into the Arbitrum chain's Inbox.
- One of the chain's validators sees the call arriving in the Inbox and builds an assertion in which the Arbitrum Chain receives the call message and executes the call (probably in a batch with a bunch of other call messages).
- The validator submits an Ethereum transaction containing the assertion
- The assertion transaction appears in an Ethereum block and the chain's validators see it.
- The chain's validators, having verified the correctness of the assertion, extract the transaction result.
- A validator serves out the transaction result to the client.