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:db rely upon to boot. These are now harmonized to three simple files (rather than five confusingly named files in previous versions):
config.tomlthat contains all of the configuration necessary for
eris:clito start the docker image and for
eris:dbto boot properly.
genesis.jsonfor establishing the network (no changes here).
priv_validator.jsonwhich 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
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
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:
For that release we will be focusing on the following major areas for improvement:
- optimization of the
eris:dbRPC including addition of as much web3 compatibility as our architecture allows for easy porting of ethereum applications to utilize
- better, more stable logging by
- more sane event handling by
- collapsing of the
eris:keysrepository into the
- collapsing of the
eris:pmtoolkits and repositories into the
eris:clirepository and binary in order to dramatically improve speed and reduce docker edge cases in providing the
eris chains makeand
- refactoring of the
eris chainspipeline to utilize and interface which will allow for more expansive utilization of various blockchain clients as
eris chainsin the future if demand so requires
- preliminary package management capabilities built into
- addition of the
eris chains infocommand for easier understanding of the state of an
We look forward to your feedback!