Skip to content

Operator Architecture

A single SKALE Chain has a number of management pieces that have to be taken into account in addition to the broader network pieces. The following outlines the high-level architecture information for chain operators.

Network Architecture

SKALE is a multi-chain network full of EVM blockchains. The network itself can grow linearly to theoretically an infinite number of chains as long as the validator pool continues to grow. This section contains a key not related to how HubChains are related to dedicated AppChains.

With parts of SKALE being built directly on the Ethereum Network, including the native bridge, it is not feasible for each chain to have it’s own siloed liquidity. For this reason many dedicated AppChains choose to connect to the Hubs for various purposes including DeFi, NFT Marketplaces, or 3rd-party bridges.

In addition, it is important for chain owners to understand that every chain in the SKALE Network is connected to Ethereum by default.

Default Contracts

Every SKALE Chain comes with a set of predeployed or default contracts. These contracts are at the core of SKALE Chain Operations. It is important to note that all of these contracts are upgradeable by the chain owner and initially can only be managed by the chain owner.

Who is the SKALE Chain Owner?

When a SKALE Chain is created there are two addresses provided to the SKALE Manager contract:

  1. The Ethereum Mainnet SKALE Chain Owner
  2. The SKALE Chain Backup Key

The interesting part is that Marionette is the actual owner of a SKALE Chain.

Why? β€” When a SKALE Chain is created, there are a number of default contracts created. Three of these contracts: Marionette and MultisigWallet are directly related to chain operations and ownership, while a third β€” MessageProxyForSchain β€” is used for both operations and bridging/message passing.

The flow of ownership looks like this:

	
flowchart TD
  Marionette
  MultisigWallet
  MessageProxyForSchain
  ChainOwnerOnEthereum

ChainOwnerOnEthereum --> MessageProxyForSchain --> Marionette
BackupWallet --> MultisigWallet --> Marionette
1Marionette --> DefaultContracts