Dive into Everscale’s unique blockchain design
In this article, developers will learn the essentials of understanding Everscale’s architecture. They will get familiar with the components of the Everscale blockchain, understand why it performs so well, and learn how we’ve solved a long-standing blockchain issue. Most importantly, developers will be well rewarded for the time and effort they put into reading this series and join Everscale’s friendly and professional development team smoothly.
Table of content
- A brief run-down on Everscale’s architecture
- Blockchain components.
- Everscale’s “Distributed Programming” solves the long-standing data storage issue.
A brief run-down on Everscale’s architecture.
To start with, it should be mentioned that Everscale, due to its later arrival and the time lag associated with it, was able to assess the mistakes made on Ethereum and other competing networks. With this expert take, community developers managed to deliver the right solutions for Everscale blockchain architecture.
Unlike most other blockchain networks that actively use synchronous execution environments, Everscale, for its part, has its eyes on asynchrony. It’s a more advanced technology which allows running complex logic and fits modern backend developer needs.
Please see below how messages work at schematic level
Workchains
There are two global “zones” called workchains: masterchain for consensus and other internal functionality, and the main workchain for user facing smart contracts.
The main workchain may be dynamically split into shards (threads) when there are a lot of user messages and contract-2-contract messaging. Each shard is assigned to a random sub-group of validators from the global validator set. Sub-groups are selected for a relatively short period (round). At any given time, the respective sub-group is responsible for executing transactions in a given shard. At the same time, it constantly downloads blocks from all other shards of its workchain.
It is worth mentioning that, in practice, more workchains can be added, up to several hundred. Each new workchain can have its own configuration parameters and native token. This, in turn, allows developers to find the right balance between security and performance.
Each workchain is split into execution shards called “threads.” They contain partitions of the chain’s total set of smart-contracts and accounts. Validators rotate through assigned threads and carry out execution only for transactions in their thread. The number of threads adjusts dynamically based on network load, from 1 to 256.
Blockchain components
We won’t bore you with redundant info about what transactions, blocks, accounts, or validators are. You’ve probably gone through all this stuff hundreds of times before. Instead, we’ll briefly outline the elements that are specific to the Everscale blockchain.
Messages
On Everscale, there are two types of messages. External inbound messages are coming from the outside world to the blockchain, for example, to deploy and execute contracts by user, while, on the other hand, internal messages allow smart-contracts to communicate with each other. The contract may generate up to 255 internal messages to any other contracts (including itself). All messaging is asynchronous.
TVM
Everscale’s masterchain and main workchain use a unique virtual machine called the TON Virtual Machine (TVM). It works in an asynchronous fashion and uses a special Tree of Cells data structure at its core. The code written in Solidity or C++ may be compiled for TVM assembly.
BOC (Bag of Cells)
It is a universal format for data packaging on Everscale. Every object — account, transaction, message, block is stored on the blockchain storage as BoC. By the way, the BoC of the block includes BoCs of all messages and transactions that were executed in the respective block.
Shards
Shards in Everscale are used for solving the classical issue faced by blockchains, which is low throughput. Sharding is implemented both at computational and storage level. Sharding of computation is also known as multithreading. As mentioned above, Everscale implements dynamic multithreading. It allows validators to resist high loads.
Storage partitioning is implemented at workchain level. In the future, multiple multi-threaded workchcains could be deployed on Everscale. Due to these two types of sharding, Everscale has achieved a decent throughput of 4000 TPS for 1 workchain. It is possible to deploy workchains for horizontal scaling, but we are now working on a consensus algorithm to do it in a secure way.
Everscale’s “Distributed Programming” solves the long-standing data storage issue.
The original idea of the blockchain technology lies in the fact that there is a chain of blocks from the very beginning (genesis) to the latest block. It was presumed that there would always be the possibility to view all transactions from the genesis block to the latest one.
However, due to technical limitations, up until recently, there was a solid understanding in the blockchain community affirming that we can only choose from one of the following two options: high throughput or storage history.
Everscale, as one of the leading blockchain developers, never looks for easy and uncostly ways to solve blockchain’s technical issues. The highlighted problem was consequently resolved with the maximum efficiency and accuracy possible.
On the Everscale blockchain, each smart contract is required to pay rent for storing its data in the state. The payment corresponds to the size of the data. When money runs out, the contract is deleted, firstly, with the possibility of recovery, and then completely.
Thus, users can choose not to store small or meaningless transactions if they no longer want to pay for the storage. This approach frees up storage space for more important data and allows users to only pay for their own storage.
We are glad you read this article up to its end and are still with us. Soon we will come up with the next article explaining Everscale’s take on CBDCs and private blockchains.
Learn more about Everscale
Disclaimer — This is a sponsored article. DappRadar does not endorse any content or product on this page. DappRadar aims to provide accurate information, but readers should always do their own research before taking action. Articles by DappRadar can not be considered as investment advice.