Introduction
Below you'll find a high-level overview of the Omni Network, its design, and its functionality.
Components

- The Omni network is responsible for operating the Omni EVM and facilitating cross-network messages (
XMsg
). It consists of two internal chains, a consensus layer and an execution layer, similar to post-merge Ethereum.- Execution layer - is implemented by a standard Ethereum execution client, like
geth
,erigon
, etc, providing the Omni EVM. - Consensus layer - is implemented by the Omni Consensus client,
halo
, that uses CometBFT to provide security for cross-chain messaging and for the Omni execution layer.
- Execution layer - is implemented by a standard Ethereum execution client, like
- EigenLayer smart contracts exist on Ethereum L1 and connect the Omni network with its re-staking participants. The Omni network is registered with EigenLayer as an “Actively Validated Service” AVS and Omni validators serve the role of “Operators” of the AVS.
- Portal contracts implement the on-chain logic of the Omni protocol and serve as the main interface for creating cross-network messages. They are deployed to all supported rollup VMs as well as the Omni EVM on the Omni network. They all have the same address and calls to and from are abstracted with the solidity interface.
- Relayer responsible for delivering attested cross-network messages from the Omni network to destination rollup VMs. Monitors the Omni Consensus Layer until ⅔ (>66%) of the validator set attested to the “next” block on each source chain, then proceeds to forwarding the respective
XMsg
list included in the block.
Following a User Cross-Rollup Action
If we were to follow a simple initiating cross-rollup user call from a rollup (in this example Arbitrum) to another rollup (Optimism), the path taken by the information would look as shown below from a high level.
Stepwise Walkthrough
Note: we refer to an xapp
as a smart contract application that exists on multiple chains. In this example, we'll use Arbitrum as the "source chain" and Optimism as the "destination chain".
- User calls a function on the xapp contract on Arbitrum that intends to interact with a contract on Optimism
- The source xapp contract calls the
xcall
method on the Omni Portal contract on Arbitrum[^1] - The Portal contract emits a
XMsg
Event containing relevant data for the destination chain contract call - Validators read the emitted Event, create an
xBlock
& attest to it. - The Relayer service reads the attestations and pushes the information from the
XMsg
in the attestedxBlock
to the destination chain by calling the destination Portal contract'sxsubmit
method - The Portal Contract on the destination chain performs the a contract call to the specified method in the destination contract as specified by the original call
xcall
in 2.
To read further on this message traversal see the XMsg
Lifecycle section.
Finality
After verifying the contents of a proposed consensus block and appending XBlock
hash attestations, halo
clients use CometBFT consensus to vote on the validity of the block.
If the proposal is determined valid by ⅔ of the active validator set, the block is finalized and becomes the latest block committed to the network. These confirmed blocks contain all transactions from the Omni EVM along with the hashes of attested XBlock
s, allowing anyone with a validator node for a given rollup VM to reconstruct any XBlock
and verify its contents.
Omni’s Parallelized Consensus processes state transitions for both the Omni EVM and external VMs, preventing both complementary sub-processes from interfering with one another prior to block finalization. ABCI++ allows validators to keep XBlock
attestations separate from the single CometBFT transaction within each block.
Fee Model
Omni fees start with a basic, Solidity-based fee payment interface and an uncomplicated pricing mechanism, with room for future enhancements. The network only supports $ETH for fee payments presently. In the future, developers will also be able to pay with $OMNI and potentially other tokens if they desire, but $ETH will always be supported.
Fees are paid in $ETH and calculated in real-time during transactions via the payable xcall
function on the portal contracts, ensuring simplicity for developers and compatibility with existing Ethereum tooling. This setup allows for easy off-chain fee estimations and the possibility for developers to pass the cost on to users, with a straightforward upgrade path to a more dynamic fee structure that can adapt to the network's evolving needs without necessitating changes to developer contracts.
For more information on how fees are handled read the fees protocol section