ZetaChain Architecture Overview
At a high level, ZetaChain is a Proof of Stake (PoS) blockchain built on the Cosmos SDK and Tendermint PBFT consensus engine. As a result, ZetaChain enjoys fast block time (~5s) and instant finality (no confirmation needed, no re-organization allowed). The Tendermint PBFT consensus engine has shown to scale to ~300 nodes in production. With future upgrades with BLS threshold signatures the number can potentially increase to 1000+. The throughput of transactions on ZetaChain can potentially reach 100 TPS due to the efficient Tendermint consensus protocol. The ZetaChain architecture consists of a distributed network of nodes, often referred to as validators. Validators act as decentralized observers that reach consensus on relevant external state and events, and can also update external chain state via distributed key signing. ZetaChain accomplishes these functions in a decentralized (without a single point of failure, trustless, permissionless), transparent, and efficient way. Contained within each validator is the ZetaCore and ZetaClient. ZetaCore is responsible for producing the blockchain and maintaining the replicated state machine. Validator operators run different components of this architecture (see below).
Validators are comprised of 3 different roles: Basic Validators, Observers, and TSS signer. Fees from transactions and rewards are distributed to Validators in return for their service of processing transactions and keeping the network secure. Observers and TSS Signers scale separately from Basic Validators due to varying security and bond requirements.
ZetaChain uses the Tendermint consensus protocol which is a partially synchronous Byzantine Fault Tolerant (BFT) consensus algorithm. Each validator node can vote on block proposals with voting power proportional to the staking coins (ZETA) bonded/delegated. Each validator is identified by its consensus public key. Validators need to be online all the time, ready to participate in the constantly growing block production. In exchange for their service, validators will receive block rewards and transaction fees.
Another set of important participants for ZetaChain consensus are the observers who reach consensus on external chain events and states. The observers watch externally connected chains for certain relevant transactions/events/states at particular addresses via their full nodes of external chains. Observers will divide into two roles: sequencer and verifier. The sequencer discovers relevant external trans-actions/events/states and reports to verifiers; the verifiers verify and vote on ZetaChain to reach consensus. The system requires at least one sequencer and multiple verifiers. The sequencer does not need to be trusted, but at least one honest sequencer is needed for liveness.
ZetaChain collectively holds standard ECDSA/EdDSA keys for authenticated interaction with external chains. The keys are distributed among multiple signers in such a way that only a super majority of them can sign on behalf of the ZetaChain. It's important to ensure that at no time is any single entity or small fraction of nodes able to sign messages on behalf of ZetaChain on external chains. The ZetaChain system uses bonded stakes and positive/negative incentives to ensure economic safety.
Zeta EVM (zEVM) and Omnichain Smart Contracts
Zeta EVM (zEVM) is an Ethereum-compatible virtual machine where you can deploy and use Omnichain Smart Contracts, built on top of ZetaChain’s core blockchain. Contracts on zEVM are connected to ZetaChain’s interoperability layer and are able to orchestrate assets on external chains as if they were all on a single chain. Get started building on zEVM here.
Through ZetaChain’s interoperability architecture, you can send messages (data and value) from any chain to any chain by implementing 3 functions into existing smart contracts on connected chains. ZetaChain’s messaging system allows for native value transfer without the need for new bridges or wrapped assets via the ZETA coin's one-way peg mechanism. Fees and gas can all be paid in a single bundle by a user, enabling developers to provide a seamless UX. Messaging also creates a more predictable and intuitive developer experience because it supports revert on transaction failures. Learn more about how to use messaging here.