ZetaChain is a L1 EVM compatible blockchain focused on connecting blockchains.
Unlike other interoperability solutions in general that connect chains end-to-end, ZetaChain acts as a hub where developer can deploy their main DApp logic (called Universal Apps). Developers can interact and deposit assets on Universal Apps directly from connected chains, Universal Apps can withdraw assets to connected chains.
ZetaChain relies on a observer/signer set to support messaging between blockchains (that we can simply call the observer set).
When a transaction on ZetaChain or a connected chain emits a specific event, called inbound event, the observer set congregates and generates a transaction on the destination chain called outbound. The outbound emits an outbound event that is then observed and used to finalize the crosschain transaction.
Sometimes the outbound fails. The observer set will generate on the source chain a new outbound, called the revert outbound.
When the revert outbound fails, the crosschain transaction is aborted.
In summary, the workflow of a crosschain transaction (cctx):
Successful outbound:
inbound tx -> emit inbound event -> observer set generates outbound tx -> emit outbound event -> cctx finalized
Reverted outbound:
inbound tx -> emit inbound event -> observer set generates outbound tx -> outbound fails -> observer set generates revert outbound tx -> emit outbound event -> cctx reverted
Aborted outbound:
inbound tx -> emit inbound event -> observer set generates outbound tx -> outbound fails -> observer set generates revert outbound tx -> revert outbound fails -> cctx aborted
ZetaChain uses a hub and spoke model. ZetaChain is always either the source or destination chain.
ZetaChain architecture is composed of Protocol Contracts deployed on ZetaChain and connected chains to emit inbound and outbound events and initiate outbounds.