What does “Exonum” mean?
Exonum takes its name from the word "Exonumia". Exonumia are items representing value that are traditionally used to engage in a diverse marketplace.
We chose to name our platform Exonum because you can use it to represent, store, exchange and secure anything of value — any digital asset.
On which platform does Exonum run?
Exonum has been optimized for Linux, MacOS and Windows machines.
What license type do you use?
Exonum is published under an Apache 2.0 license
. You are free to create almost anything you want with Exonum — just make sure to credit The Bitfury Group/Exonum.
How can I request Exonum support?
Please send all support requests to Gitter
. We are here to help, and we want to share anything we learn with the entire developer community. If you have non-technical question, you can fill in the contact form
to connect with Exonum representative.
Does Exonum support smart contracts?
Yes! Exonum was designed to handle smart contracts. Just like other smart contract platforms, Exonum-based smart contracts represent business logic that can capably add to a blockchain immediately. Exonum-based smart contracts also have the highest performance in terms of transaction processing, able to handle up to 5,000 transactions per second with an unprecedented 0.5 seconds of clearing time and up to 15,000 transactions per second in custom situations.
However, your system administrators must review all smart contracts written on Exonum before they are publicly deployed. Contracts are written in Rust and are embedded directly into the code of blockchain nodes. This design guarantees memory safety and ensures smart contracts are optimized for speed.
Where are blockchain configuration and the list of validators stored?
In case the genesis block is absent, the blockchain gets configuration from the config file. If the genesis block has already been formed, then the blockchain reads configuration from said genesis block.
Is it possible to implement Exonum-based solutions containing several units at once, for example those similar to peercoin/peershares?
In principle there is a possibility to realize several units based on Exonum simultaneously due to availability of services (analogous to smart contracts). However, for this purpose currently the developers will have to exclusively realize all high-level interactions between such services.
Is there a possibility to use Exonum with precompiled clients (such as bitcoin, ethereum wallets, etc.) for MacOS, Windows, Linux?
Currently light client
is realized with Node.js only. It is, however, scheduled to provide the client in other languages for the purpose of integration into applications.
How can I contribute?
Exonum team welcomes contribution from the community. Please review the contribution guide
that we have created for such a purpose.
What is the direction of the project development?
What is the Exonum encryption algorithm?
Exonum applies SHA-256 cryptographic hashes and Ed25519 digital signatures over the binary serialization of the transactions. Exonum uses libsodium
library to calculate hashes on full nodes and sha.js to do the same on light clients.
Messages between the nodes are encrypted with the help of Noise Protocol
How does Exonum prevent fork of the anchoring chain?
Before creating an anchoring transaction, the validators come to an agreement as to which anchoring transaction has been the latest in the anchoring chain. Such transaction is called the Latest Expected Correct Transaction (LECT)
. Every validator publishes the results of his choice to the Exonum blockchain. As soon as 2/3+1
LECT results coincide, the validators proceed to creating a new proposal for the anchoring transaction. After at least 2/3+1
validators agree upon the new anchoring proposal, they start building a new anchoring transaction and signing its inputs. When a new anchoring transaction is created and signed by at least 2/3+1
validators, it spends the change output (the output with the remaining balance for making a new Bitcoin transaction) of the LECT so that no other anchoring transaction with the same input could be created.
How does the algorithm of new block acceptance operate?
A new transaction gets into the so-called pool of unconfirmed transactions (memory pool). A round leader node suggests a block (Proposal) and broadcasts it to all the nodes in the network. Validators vote for the proposal by broadcasting messages of the Prevote type. A Prevote message means that the validator has studied all the transactions inside the proposal and that the proposal does not contain transactions unknown to the validator.
Once the validator has received Prevote messages from more than 2/3 of all the validators in the network, it executes the transactions specified in the proposal and broadcasts a message of the Precommit type to all other validators. Precommit messages contain the result of executing proposed transactions in the form of the hash of the new network state (state hash). Said message confirms that its sender is ready to commit the new block to the blockchain but needs to obtain the consent of the majority of other validators in the network. Finally, the new block is committed to the blockchain if the validator receives more than 2/3 Precommit messages which contain the same state hash.
What are the hardware characteristics required for achieving 5000 tps capacity in Exonum?
The speed of transactions processing mainly depends on the launched Exonum services rather than on the network hardware. It is not difficult to achieve capacity of 5000 tps. For example, at the time of benchmarking the cryptocurrency service, it required the hardware with the following characteristics:
- Network — 1Mb capacity, with ~100ms ping between nodes;
- CPU — dual-core 3 GHz;
- RAM — 1–2 Gb;
- HDD — 30Gb (7200 rpm);
- Number of nodes in the network — 4–7.
A suitable cloud analogue for such hardware may be Amazon server EC2 t2.small
Meanwhile, in view of the fact, that since the benchmarking Exonum has undergone considerable reworking, new benchmarks are expected in the near future.
Is use of Exonum payable?
Exonum provides an anchoring service which makes it impossible to revise the transaction history. The essence of the service is that a hash of the entire blockchain state is periodically included ("anchored") to the public source (Bitcoin Blockchain). Enclosure of a new transaction into the Bitcoin Blockchain requires payment of a fee. Said fee is paid in bitcoins.
Is it possible to integrate Exonum-based token into a stock exchange?
Currently integration of the Exonum-based ICO into the stock exchange is not provided. At the same time, principally, such opportunity exists and may be realized by developers.
How to become Exonum Partner?
Please review the section for Partners
on our website and fill in the contact form for further discussion.
Does Exonum have built-in cryptocurrency?
We designed Exonum to be as flexible as possible. You can design your Exonum Blockchain to have a token or coin, or you can create a permissioned blockchain without one. Just in case, we have included a tutorial
on how to create your own Exonum Blockchain cryptocurrency.
Are there any Exonum-based blockchain solutions for technical department internal service/state enterprises/banking service/etc.?
Our team is building a horizontal solution that could be used by technical specialists to elaborate individual specialized software. At the same time we're exploring use cases for Exonum platform to accumulate the common parts that should be incorporated into Core.
What are success projects based on Exonum?
The National Agency of Public Registry in the Republic of Georgia has 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.
Bitfury has provided a blockchain support to the Information System of the Preliminary Qualification Management in Kazakhstan based on Exonum. The blockchain application registers all key events on consideration and introduction of contractors into the list of qualified potential contractors (documents issuance, audit, etc.). The application can also control the proper execution of the approval proceedings and regulations.
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 (by about 34%).
The Bitfury Group concluded an agreement with Insilico Medicine, Inc. on developing novel solutions for healthcare applications
using blockchain technology. The project is aimed at developing blockchain and AI solutions that would collect, share, manage, track and validate healthcare data.
What is the difference between Exonum and IBM Hyperledger?
Exonum uses specific data structures (Merkle and Merkle Patricia trees) to enforce client-side auditability (please note our light client
). We also offer an anchoring service which periodically stores a snapshot of the Exonum network to the Bitcoin blockchain. This prevents node maintainers’ collusion with incentive to rewrite historical data. Finally, we have our own built-in BFT consensus algorithm and use Rust as a less error-prone programming language.
What is the difference between Exonum and Ethereum?
As a private blockchain, Exonum offers a considerably higher speed of operation compared to the public ones. At the same time Exonum private blockchains offer virtually the same level of security as public blockchains due to the 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 predictable at any time.
Besides, the Exonum framework is flexible and adjustable to its users’ needs. For instance, the system allows adjusting several consensus related parameters
, e.g., timeouts.