Exonum Blockchain Framework by the Bitfury Group
We aggregate and tag open source projects. We have collections of more than one million projects. Check out the projects section.
Exonum is an extensible open source blockchain framework for building private blockchains which offers outstanding performance, data security, as well as fault tolerance. The framework does not include any business logic, instead, you can develop and add the services that meet your specific needs. Exonum can be used to build various solutions from a document registry to a DevOps facilitation system.
Public vs Private Blockchains
A blockchain is a list of records, blocks of transactions, where each new block contains the cryptographic hash of the previous one. Therefore, a block cannot be modified or removed without altering the subsequent chain, not to mention an attack of the kind can only be achieved through a collusion of participants of the network.
Anyone can join a public blockchain, receive a copy of its data base and participate in the consensus. Public blockchains are considered secure, as the large number of participants renders a collusion virtually impossible.
On the other hand, only a limited number of participants is admitted to a private blockchain by its owner. Whereas a private blockchain offers a much more efficient performance, it is also less secure and trustworthy. Firstly, the limited number of participants makes nodes vulnerable to hacker attacks, secondly, collusions between node administrators become a reality.
With this in mind, Exonum offers highly efficient private blockchains, which can be just as secure as public ones by means of applying its efficient and flexible authoring tools.
Let’s take a look at some of the main features that contribute to Exonum’s performance and reliability:
Exonum is written in Rust, one of the most secure programming languages. During the framework development it has proven to be a more universal and effective tool in many aspects as compared to Java, C and C++.
Byzantine Fault-Tolerant Consensus Algorithm (BFT Algorithm)
Exonum’s BFT algorithm ensures that the system will continue to operate correctly even if up to 1/3 of the nodes behave maliciously. The consensus algorithm cycle has several stages during which a new block is compiled only if more than 2/3 of validators agree on it. The algorithm can process up to 5000 transactions per second with a clearing latency of 0.5 sec.
The anchoring service periodically sends the hash of the Exonum system state to the public Bitcoin blockchain. If any changes are made to the Exonum blockchain or if it is rewritten from scratch, the existence of anchored data will immediately reveal such actions.
Exonum functionality can be extended by services. Services in Exonum are similar to smart contracts in other platforms; they determine the rules of transaction processing and encapsulate the business logic of a blockchain application. Services are written in the same programming language as the framework core - Rust. Due to this factor, Exonum services have higher performance and speed as compared to the competitors’ analogs. Bitcoin anchoring is an example of a service.
Exonum-powered blockchain presupposes 3 types of roles for its network participants:
- Validators manage consensus - propose and vote for new blocks and sign each new committed block. Typically, an Exonum-powered blockchain has 4-20 validators.
- Auditors have access to the full database of the blockchain, they can generate new transactions and observe the behavior of validators, but do not take part in the consensus process.
- Light Clients, currently implemented as libraries, do not store all the data of the blockchain; they connect to full nodes (validators or auditors) to retrieve only certain data that are of interest to the client.
Approach to Business Logic
Initially, Exonum does not contain any business logic enabling the users to extend its functionality with the help of services. Exonum was not designed to serve one particular goal, rather it is a framework which can be adapted to different needs. The good grounds for that is in its essence - Exonum does not offer a vertical solution with extensive functionality in one sphere, but it is a horizontal solution which can be extended to many spheres at once. In other words, the idea behind Exonum was to select and implement the solutions common for many economic spheres to create a framework for building applications which would serve various purposes.
Although now the services are written in Rust only, they are actively working on implementing Java bindings into Exonum in order to make it handier for the large enterprise community.
Meanwhile, there are already real-life examples of registry, banking and DevOps systems running on Exonum. And there are many more spheres where Exonum-powered private blockchains might prove useful.
Research and Contribution to the Community
With the rise of Bitcoin, the theme of blockchain has gained huge popularity among the software developers community. Various solutions have been introduced that use blockchains instead of regular storages to promote security and productivity. However, not all these solutions are elegant.
Exonum has a dedicated Research and Development team who vigorously study existing solutions and come up with the ways to improve them or introduce completely new ways of solving existing issues.
As Exonum is an open-source software platform, most of the solutions, which appear as a result of extensive research, are shared with the community. Anyone can use the code provided by the Exonum team to learn, experiment and extend it to include the functionality one needs.
Among the many results of Exonum team’s research are:
Exonum 0.5 features time oracle - a time service within the blockchain. The team were faced with two implementation options: either making the time oracle a part of the consensus process or a separate service. The latter method was selected, as research acknowledged it as a more manageable and flexible solution.
Asynchronous Operation Using Tokio
Previously, an Exonum-powered system operated synchronously, which hindered its operation. As a result of research, the team have implemeted the Tokio library into Exonum. The solution significantly increased the speed of operation and enabled Exonum blockchain to function asynchronously as new tasks come in and system resources are freed up.
Another contribution of the Exonum research team is the test kit. This library allows developers to test services without network operation and consensus algorithm involved. Tests run in the same system process as the service code itself to simplify the debugging process of the service business logic.
Currently, the R&D team are looking into WebAssembly that will allow running services written in bytecode and deploying pieces of precompiled code in Exonum without rebuilding the whole system.
Another point of current interest to the team is a 2-way peg as a means of integration with Ethereum. The 2-way peg would enable exchange of information between blockchains and let Exonum interact with Ethereum similarly to a sidechain.
Existing Exonum-powered Systems
Exonum has already been used for building a number of applications, let’s take a look at some of them:
The National Agency of Public Registry in the Republic of Georgia has implemented an Exonum blockchain into their land titling registry in test mode. Blockchain implementation will significantly reduce the service delivery time and operational costs, as well as provide real-time audit capabilities.
Ukraine’s governmental System of Electronic Trading in Seized Property (SETAM) is being shifted to Exonum to apply blockchain. The blockchain system will store records of seized property, a registry of auction participants and a log of auctions. The implementation will enhance citizens’ trust in the system as well as provide extra security.
A pilot project was implemented at Aricent to improve the efficiency of their software development process (DevOps). According to the company’s internal research, the introduction of an Exonum blockchain has led to a considerable acceleration of the product development cycle.
Exonum and Its Main Competitors
The rapidly growing market of blockchain solutions has already resulted in the active race of technologies in the sphere. With more and more players joining this game, Exonum is most often distinguished from others through analyses against such popular projects as Ethereum and Fabric.
As compared to public blockchain solutions, Exonum offers a considerably higher speed of operation, while at the same time Exonum private blockchains offer virtually the same level of security as public blockchains due to its anchoring feature.
Exonum’s BFT consensus algorithm is determined mathematically which means it does not require economic reward for proper functioning. As a result, Exonum does not require mining and does not depend on the exchange rate of any of the cryptocurrencies. This all makes the cost of operation of an Exonum blockchain always predictable.
The Exonum framework is flexible and adjustable to its users’ needs. The system allows adjusting several consensus related parameters, for example, timeouts. Developers can write their own various services for Exonum and incorporate the desired business logic therein. Additionally, Exonum services offer wide possibilities for interaction with applications through web API.
The Exonum framework continuously grows, improves and develops, and you can take part in that process too. To ask questions, communicate your ideas and keep up with the latest developments in the platform, join the official Exonum channels in Gitter and Telegram, as well as the repository in GitHub.