The Bitfury Group released version 0.2 of Exonum

19 September 2017

The notable release of Exonum framework in July this year, causing resonance among the blockchain society, put the developing team onto the yielding route of regular product updates and releases of which the latest came out on September 14.

The software package versions are numbered according to the semantic versioning system in order to make source code content and its modifications clearer. So as 0.2 version number implies apart from regular fixes dealing with obvious drawbacks this time the release covered some substantial features among which are the following:

  • RocksDB support has been added. RocksDB is a persistence layer that saves blockchain data into the permanent memory. So far it has been implemented simply as an alternative to its predecessor LevelDB, that had been realized in Exonum before, and will be applied concurrently with it. Further development is targeted at introduction of new features specific to RocksDB storage, completely shifting to its exclusive use in the end. Such features include among others:

    • Column Families which allow to logically partition the database and simplify data management therein, i.e. to configure, read and write data, etc.
    • Transactions - a comfortable out-of-the-box solution that was absent in LevelDB and is, hence, more secure and operable. Transactions provide that a batch of changes can be applied atomically to the database due to that their data may be modified concurrently with the conflict check executed by RocksDB.
    • Backup and Checkpoints - the ability to take a point-in-time snapshot of a running RocksDB database that, for instance, can be used as a backup to easily deploy a new node.
    • Statistics - an administrative feature providing dynamic statistics of the database that can be used for expedient system management and set-up.
  • Support of dynamic timeouts has been added. Before the current release timeouts were firmly set up in configuration remaining the same under any network conditions. The new implementation introduces two more adjustment options along with the old ‘firm’ one:

    • Dynamic – the choice is made between the maximum and minimum timeout depending on the system load;
    • Moving Average – the option is similar to dynamic option but allows for intermediate values.

    Said implementation is expected to make the system operation more flexible and efficient improving management of system workload. For example, it allows to accept less blocks into the blockchain when the load is low (and not to overload the database with empty blocks) and accept more blocks whenever the load increases.

  • Stream hashing has been implemented. The issue deals with memory optimization. Specifically, the feature allows to hash the data stored in different memory parts 'on the go' without extra copying it to RAM.

In addition to what is mentioned above the release covers other internal features improving the framework operation flow and usability. Besides, some fields and variants have been renamed in order to make the code and documentation look smoother.

You may find the full content of fixes and updates following the link.

The minor releases of the product are expected to take place once in a month on average so next release is scheduled for mid-October 2017. To keep up to date with the news on development visit our website or feel free to contact our team through Gitter or GitHub.