Skip to main content

Chromia architecture

The Chromia platform is organized into clusters, each consisting of multiple nodes. Nodes are individual computers or servers responsible for processing transactions, validating blocks, and maintaining the blockchain ledger. Providers manage the nodes and contribute computing power to Chromia.

Chromia employs an adapted version of the PBFT protocol known as eBFT to achieve consensus in the network. This protocol involves multiple nodes validating transactions and blocks, ensuring the network's security and reliability.

Let's look at the high-level architecture of Chromia:

Chromia architectureChromia architecture

Chromia strategically groups nodes into clusters to divide areas of responsibility and streamline operations. Each cluster focuses on running specific blockchains. There are two cluster types:

  • System Cluster - An integral part of Chromia that orchestrates the whole ecosystem. The system cluster consists of nodes that run Chromia's core system services.
  • Dapp Cluster - Represents an environment where nodes run decentralized applications (dapps). Every dapp in the cluster has its own blockchain and computational resources leased by the network. Each dapp cluster runs its own Cluster Anchoring Chain, which stores hashed block headers. This allows verifying the state of all underlying blockchains that each dapp operates.

Blockchain anchoring

Chromia employs an effective mechanism called Blockchain Anchoring to secure the System Cluster, Dapp Clusters, and dapps. and the dapps. This means a blockchain can increase security by storing its hashed block headers on another blockchain. The other blockchain becomes a strong point of reference, which can be used to resolve a consensus failure. This mechanism works hierarchically. Here is how it functions:

  1. Each Cluster Anchoring Chain waits for block headers from the cluster’s dapp blockchains. Once received, it hashes the block headers and creates blocks.
  2. The System Anchoring Chain follows an identical process: It waits for block headers from the Cluster Anchoring Chains, hashes the received block headers, and creates blocks.

In the event of a consensus failure, the System Anchoring Chain can validate the state of all clusters by referring to the hashed block headers. The System Anchoring Chain is further anchored to Ethereum for additional security.

Dapp cluster

A dapp cluster is an environment where nodes host decentralized applications (dapps). Each hosted dapp has dedicated vCPU, memory, and storage resources, allowing for high and predictable performance while avoiding network congestion scenarios.

Each dapp has its own blockchain where the data associated with the dapp’s operations is stored. Nodes in the cluster are responsible for validating transactions and routing these validated transactions to the appropriate dapp’s blockchain.

After the deployment, the dapp gets replicated across all nodes in a cluster.

This approach makes the dapp truly decentralized and resilient.

Directory Chain Replica

Directory Chain Replica represents a full copy of Directory Chain running in the System cluster. It stores configuration details and Rell code for all dapps, as well as hierarchical information about the Dapp Clusters, nodes, dapps, and dapps' blockchains. Each Dapp Cluster has a separate Directory Chain Replica that reads the information from the original Directory Chain.

Dapp nodes heavily rely on the data that they source from this blockchain replica to determine what dapps they must run within the Dapp Cluster. The main idea of having a separate replica within the Dapp Cluster is to ensure that, in any negative circumstance, the dapp nodes will have a reference point to ensure all dapps within the cluster remain operational.

Cluster Anchoring Chain

A dapp cluster relies on its cluster anchoring chain to manage data integrity across all dapp blockchains. For each new block created on the dapp blockchains, the corresponding block headers are sent to the Cluster Anchoring Chain, hashed, and then used to create blocks that play a major role in the state verification of all underlying blockchains.

Once the Cluster Anchoring Chain creates a new block, its block header gets transferred to the System Anchoring Chain, and the process repeats for all the other dapp clusters. Then, the System Anchoring Chain hashes the retrieved block headers and creates blocks.

System cluster

The System cluster serves as the central hub of the Chromia network. It runs five system chains: the Directory Chain, the Economy Chain, the System Anchoring Chain, the Transaction Submitter Chain, and the EVM Event Receiver Chain.

Each blockchain is responsible for specialized functions, such as network resource management, billing for hosting operations, network security, sending block headers to the Ethereum blockchain for anchoring, and managing CHR account balances for cross-chain Ethereum transfers.

Additionally, the System cluster hosts Cluster Anchoring Chain Replicas that source and store data from the Dapp Clusters. For each Cluster Anchoring Chain Replica hosted in the System cluster, there is a corresponding unique Cluster Anchoring Chain in the Dapp cluster. These replicas are used by the System cluster to verify the state of the network and keep the whole ecosystem secure.

Dapp Cluster Anchoring Chain Replica

Each Dapp Cluster has a Cluster Anchoring Chain that sources block headers from all dapp blockchains within the cluster to build blocks and keep all dapps secure. In this context, the Cluster Anchoring Chain Replica is simply a copy of the Cluster Anchoring Chain, hosted in the System cluster. It functions as the source of block headers for the System Anchoring Chain, which uses them to verify the state of the entire ecosystem and include them in newly created blocks for anchoring purposes.

System Anchoring Chain

The System Anchoring Chain is a central repository for all validated data collected across all dapp Clusters. Its primary responsibility is to ensure the security and integrity of all data on the network by collecting block headers from all Cluster Anchoring Chains and using them to create blocks.

Cluster Anchoring Chain

Cluster Anchoring Chain sources block headers from all blockchains running in the System Cluster and produces blocks. Then the System Anchoring Chain queries the headers of those blocks and produces a new set of anchoring blocks. The ecosystem requires this anchoring process to keep the network tamperproof.

Transaction Submitter Chain

The Transaction Submitter is an independent blockchain operating within the System Cluster that reads block headers from the System Anchoring Chain to produce blocks. It is responsible for securing the entire Chromia ecosystem by anchoring the state of the network to the Ethereum blockchain. Transaction Submitter Chain periodically submits transactions to the Ethereum blockchain for anchoring purposes.

Economy chain

The Economy Chain manages hosting prices, provider rewards, and dapp payments through leases and incentivizes node providers. When a developer leases computational resources from the network, the Economy Chain sends the corresponding information to the Directory Chain using the ICMF protocol to allocate a specific number of resources in a dapp cluster for dapp deployment.

EVM Event Receiver Chain

The Economy Chain retrieves data from the EVM Event Receiver Chain using the ICMF. When a user deposits CHR tokens into the Ethereum CHR contract, the EVM Event Receiver Chain reads the updated state of the smart contract and informs the Economy Chain of the new deposit. After the deposit is confirmed and the Economy Chain has been notified, it must allocate the corresponding number of CHR tokens to the specific account on the Chromia network.

Directory chain

The directory chain stores hierarchical information about the dapp clusters, nodes, dapps, and dapps’ blockchains, as well as configurations for dapps and blockchains. The directory Chain creates data records, associating each node with the corresponding cluster and each dapp with the corresponding nodes.

The Directory Chain stores the code and configurations of dapps. In the event of an issue affecting a cluster or dapp, its configuration and code can be promptly restored. Additionally, it facilitates state validation by providing transaction history and a history of the deployed code at any given block height.

The Directory Chain communicates with the Economy Chain through the ICMF protocol to allocate the corresponding number of resources that a developer has leased to deploy a dapp in the selected cluster.

Scalability of the network

Chromia's unique architecture allows the network to scale horizontally. As demand for the network increases, Providers (Chromia's validators) add more nodes and more dapp clusters, thus allowing more dapps to deploy and run. With each dapp receiving its dedicated compute, memory, and storage resources, a traffic spike on one dapp doesn't cause congestion or performance degradation for the rest of the dapps on the network. Dapps themselves can scale by leasing more resources on the network or even sharding into multiple blockchains that communicate with each other.

Cross-chain communication

Blockchains within the Chromia network can send events and data between them using Chromia's Interchain Messaging Facility (ICMF) and [Interchain Confirmation Facility (ICCF)]/docs/(../../intro/cross-chain/iccf) protocols, both within clusters and between different clusters. Some dapp clusters also have access to Chromia's extensive EVM interoperability framework, allowing dapps to bridge tokens, events, and other forms of data to and from Ethereum and other EVM chains.

Next up

Next, we'll look at the Chromia cross-chain capabilities and explore its inner workings, including the EIF Rell module and the unique pegged bridge system.