L1 to L2 messaging
In the Transaction Lifecycle section, we covered how users interact with child chain contracts. They submit transactions by putting messages into the chain’s inbox or having a full node Sequencer or aggregator do so on their behalf.
Parent and child chain chains run asynchronously from each other, so it is not possible to make a cross-chain call that produces a result within the same Transaction as the caller. Instead, cross-chain calls must be asynchronous, meaning that the caller submits the call at some point in time, and the call runs later. Consequently, a cross-chain contract-to-contract call can never produce a result available to the calling contract (except for acknowledgment of a successful call submitted for later execution).
In this section, we will discuss how contracts interact between parent chain and child chain, how a parent chain contract is called a child chain contract, and vice versa.