December 7, 2018
The SKALE Tech-Stack
After months of heads down research, development, and benchmarking, we are proud to present a peek into SKALE's architecture!
Built to SKALE
SKALE is a network of SKALE Chains run by independent validators located around the world. Validators run “Nodes”, which contain a number "Virtualized Subnodes", and can participate in multiple SKALE Chains.
One SKALE Validator can run multiple SKALE Chains simultaneously, whereby the number of validators and capacity of each SKALE Chain is configurable by users of the system. SKALE Chains are created and managed through the SKALE Manager located on the Ethereum blockchain. This SKALE Manager is a series of smart contracts responsible for:
- The registration of validators with the SKALE Network
- The orchestration and creation of SKALE Chains
- The performance measuring of virtualized subnodes in the network
Developers can interact with the SKALE Manager directly or through the Developer Portal provided by SKALE. To create a SKALE Chain, users can rent space on SKALE nodes by depositing SKALE tokens into the SKALE Manager either directly or through the Developer Portal.
When creating a SKALE Chain, we leverage a source of randomness (hash of the block number on the testnet, Verifiable Delay Function (VDF) on the mainnet) for the selecting of a committee of participating virtualized subnodes. This, combined with a randomized shuffling mechanism for moving nodes between various SKALE Chains, thwarts any attempts by nodes to collude with one another.
Each SKALE Chain ships with a Byzantine Fault Tolerant (BFT) consensus which can tolerate < ⅓ nodes acting malevolently or going offline. In the case where > ⅓ nodes are malicious or go offline, the SKALE Chain will halt. Once there are < ⅓ offline due to nodes coming back online or new resources being reallocated to serve the chain, consensus resumes. For more on our consensus, check out this article!
The main star of our architecture, though, are the virtualized subnodes which ship with each and every node!
SKALE Virtualized Subnodes
Each SKALE Chain is comprised of a collective of randomly appointed virtualized subnodes which run the SKALE daemon and run SKALE consensus. Unlike other protocols, virtualized subnodes are not restricted to a one-to-one mapping between participating nodes in the network. This is made possible through the containerized virtualized subnode architecture deployed on each node in the SKALE Network which allows each node to run multiple SKALE Chains simultaneously.
Subnodes within a SKALE Node are referred to as Virtualized SubNodes. Each Virtualized Subnode participates in independent SKALE Chains. Below is a diagram of a container running on a SKALE virtualized subnode.
This containerized architecture was selected as a means to bring enterprise grade performance and optionality to decentralized application developers on par with centralized systems, which offer elasticity, configurability, and modularity. Containers are divided into five main components that ship with a dockerized Linux OS - allowing for each node to be hosted in a OS-agnostic manner. Each container is encapsulated within one of the following services.
SKALE Admin Service
The SKALE Admin Service serves as the human-facing interface for virtualized subnodes with the SKALE Manager (located on the Ethereum Mainnet). Functionality shipping with this interface includes the ability for nodes to see which SKALE Chains they are participating in as well as the ability to deposit, withdraw, stake, and claim SKALE tokens. Because virtualized subnodes within nodes are appointed randomly to participate in SKALE Chains, there is no interface for being able to join / leave SKALE Chains within the network.
Node Monitoring Service
The NMS (Node Monitoring Service) is run on each SKALE Node and facilitates the performance tracking of each of that node’s peer nodes. Performance tracking is measured in both uptime and latency through a regular process which pings each peer node and logs these measurements to a local database. At the end of each SKALE Chain epoch, these metrics will be averaged and submitted to the SKALE Manager which will use them to determine the payout to each node.
Virtualized Subnode Orchestration Service
The VSOS (Virtualized Subnode Orchestration Service) orchestrates node computation and storage resources to instantiate virtualized subnodes using a dynamically created virtualized subnode image consisting of the SKALE daemon (skaled), the catchup agent for syncing an SKALE Chain, and the transfer agent for interchain messaging. This service also performs respawning of failed virtualized subnodes as well as deallocation of resources to virtualized subnodes who have been decommissioned.
If you are interested in trying out SKALE Chains, check out out Getting Started Guide. Also, feel free to also check out he rest of our blog for a deeper dive into how SKALE works and is able to provide 20,000 TPS.
SKALE’s mission is to make it quick and easy to set up a cost-effective, high-performance SKALE Chain that runs full-state smart contracts. We aim to deliver a performant experience to developers that offers speed and functionality without giving up security or decentralization. Follow us here on Telegram, Twitter, Discord, and sign up for updates via this form on the SKALE website.