Deprecation Warning

Note: since this blog post was written, we have changed our name to Monax Industries and will be changing the name of our product to "Monax" in early 2017. We have left these posts unedited for the purposes of historical record, as the software was named Eris at the time.

Today I am incredibly pleased to announce that eris version 0.12.0 has been released. This release has taken us longer than any release before and there was a reason for that: we had a lot of changes to make.

Docker Image Optimization

We have worked hard to reduce the footprint which eris takes up on user’s hard drives. Previously our docker images totalled at around 4GB for our 0.11.4 series. This was far from ideal. For 0.12.0 we have reduced that by an order of magnitude. Our docker footprint now clocks in at around 400MB. 200MB of which is the alpine base image. In our next release cycle we will be further optimizing our docker footprint by removing the package manager and chain manager images completely from the platform. The functionality that these two images have will be integrated directly into eris:cli. This will reduce our docker image size by another 80MB or so.

As one long-time user recently said:

eris init got so fast! I almost wanna do that again ;)

Chains Boot Refactor

We have performed a significant refactor of how eris chains boot. We have harmonized various commands that were utilized in this pathway into a more coherent and usable system. Now making and booting a simple chain is as easy as:

eris chains make my_chain
eris chains start my_chain --init-dir my_chain

Boom. Your chain will be started. Obviously, the more complex chain make features are all still available for users to optimize various networks they require in order to build their applications.

We have also simplified the files which both eris:cli and eris:db rely upon to boot. These are now harmonized to three simple files (rather than five confusingly named files in previous versions):

  • a config.toml that contains all of the configuration necessary for eris:cli to start the docker image and for eris:db to boot properly.
  • a genesis.json for establishing the network (no changes here).
  • a priv_validator.json which is the key for a particular node (no changes here).

Tendermint Blockchain Engine Update

The biggest change we’ve made in the 0.12.0 series should be mostly transparent to users. It is an upgrade of the tendermint blockchain engine we use from our previous 0.4 version to a much more recent 0.6 version.

For those interested, we run the tendermint blockchain engine “in process” meaning that we do not connect with it over it’s TMSP socket at this time. We do so in order to have greater control over the boot and events processes which are vital to a smooth running of the entire eris:db blockchain client.

We will be taking a debian:ubuntu like approach to how we syncronize the tendermint blockchain engine we utilize. Namely, after each release we shall sync with tendermint’s current head and utilize that version of tendermint during our development process for a particular release.

Other Changes to eris:db

There have been numerous other changes to eris:db which optimize and harden the code base. This release marks the first time we, as Monax, shall be assuming sole responsibility for the “application engine” of the eris:db blockchain client and utilizing the best in class Tendermint codebase for the “consensus engine” of the eris:db blockchain client. Previous versions of eris:db have been joint efforts between Monax and Tendermint on a more or less unitary codebase.

There are big harmonizations and optimizations (detailed below) coming in our next release of eris:db now that we have the major refactor to a consensus engine codebase and an application engine codebase behind us.

Other Commands Optimizations

We have removed many of the unused commands in order to simplify the cognitive overhead of learning “how to blockchain” for new users. The reduction in surface area for the eris:cli tool allows us to have cleaner testing, cleaner code paths, and also be more responsive to user issues.

Commands that have been removed:

  • eris update,
  • eris actions,
  • eris chains new,
  • eris chains update,
  • eris chains rename,
  • eris chains rm –file,
  • eris services new,
  • eris keys pub

Bug Fixes

There were lots, and lots, of bugs to fix! Thanks to everyone that has been reporting bugs, it may be frustrating at times to face bugs but as a pre-1.0 project we rely on users reporting to us where the platform is not performing as advertised so that we can put in place proper tests and fixes.

Installation and Upgrade

To install eris version 0.12.0 please see our Getting Started page.

If you would like to upgrade from a previous version of eris please note that the previously included eris upgrade is no longer supported and will not work to upgrade to 0.12.0. We have worked hard to integrate with package managers for all major operating systems. We encourage users to update their installations to utilize a package manager for their operating system. Instructions for doing so are included in the getting started page.

If you have utilized the prior installation of eris via our beta apt-get or yum repositories please note that the previous URL’s will no longer be supported going forward. Please update your URLs to reference the following:

Please note that the previously released version of our javascript SDK will not work with 0.12.0 due to quite a few breaking changes in the eris:db RPC server. Users should update their javascript SDK to the following versions for compatibility with eris:db 0.12.0:

  • eris-db.js: 0.15.1
  • eris-contracts.js: 0.15.1

The new versions of the javascript SDK will be released this week.

What’s Next

Our next release will be numbered 0.16.0. From that release forward our javascript SDK will be released alongside and in concert with the platform versioning. Previously we have gotten out of step in number sequencing between the platform and the javascript SDK and this will be rectified in the next sequence.

For that release we will be focusing on the following major areas for improvement:

  • optimization of the eris:db RPC including addition of as much web3 compatibility as our architecture allows for easy porting of ethereum applications to utilize eris:db
  • better, more stable logging by eris:db
  • more sane event handling by eris:db
  • collapsing of the eris:keys repository into the eris:db repository
  • collapsing of the eris:cm, eris:abi, eris:pm toolkits and repositories into the eris:cli repository and binary in order to dramatically improve speed and reduce docker edge cases in providing the eris chains make and eris pkgs functionality.
  • refactoring of the eris chains pipeline to utilize and interface which will allow for more expansive utilization of various blockchain clients as eris chains in the future if demand so requires
  • preliminary package management capabilities built into eris pkgs
  • addition of the eris chains info command for easier understanding of the state of an eris chain

We look forward to your feedback!

(Photo credit: CC-BY-SA: Anne Worner @ Flickr )