Cross-chain messaging overview
The Arbitrum protocol and related tooling makes it easy for developers to build cross-chain applications; i.e., applications that involve sending messages from Ethereum to an Arbitrum chain, and/or from an Arbitrum chain to Ethereum.
Ethereum-to-Arbitrum messaging
Arbitrary parent to child chain contract calls can be created via the Inbox
's createRetryableTicket
method; upon publishing the parent chain transaction, the child chain side will typically get included within minutes. Happily / commonly, the child chain execution will automatically succeed, but if reverts, and it can be rexecuted via a call to the redeem
method of the ArbRetryableTx precompile.
For details and protocol specification, see Parent to child chain Messages.
For an example of retryable tickets in action, see the Greeter tutorial, which uses the Arbitrum SDK.
Arbitrum-to-Ethereum messaging
Similarly, child chain contracts can send Arbitrary messages for execution on the parent chain. These are initiated via calls to the ArbSys precompile contract's sendTxToL1
method. Upon confirmation (about one week later), they can executed by retrieving the relevant data via a call to NodeInterface
contract's constructOutboxProof
method, and then executing them via the Outbox
's executeTransaction
method.
For details and protocol specification, see Child to parent chain Messages.
For a demo, see the Outbox Tutorial.