EOSIO Version 1.4.0 Release: Deterministic Snapshots, Cloud Server Performance, and updates to the EOSIO Contract Development Toolkit

Today we are pleased to announce the next version of EOSIO, V1.4.0. We have also addressed a major update to the EOSIO.CDT, which you can read more about below. For EOSIO V1.4.0 you can view the detailed release notes here on Github, and find documentation on the EOSIO Developer Portal.

We are continually collecting feedback on how the community is building applications on the platform and are consistently improving the developer experience on EOSIO. Going forward, we will be targeting the second Tuesday of each month (in the middle of the month) for an update to the EOSIO software.

In addition to release notes and documentation, the Block.one Developer Relations team — in coordination with the C++ Development and Marketing & Communications teams — will provide easy-to-digest summaries of the features and benefits of each release and their implications on our goals for the platform.

Continue reading below to learn more about EOSIO V1.4.0 and major updates to the EOSIO Contract Development Toolkit.

Highlights in EOSIO V1.4.0:

Deterministic Snapshots (#5956)

In the EOSIO V1.2.0 release, we introduced Replay and Resync optimizations (#5130) to address the issue that as the blockchain grows, the time needed to set up a new node and replay the chain will also continue to rise. Building on that, in V1.3.0 we introduced more performance enhancements called Trusted Producer Light Validation (#5631).

To complete the journey for new users on-boarding as EOSIO developers, we’ve released the ability to create Snapshots and use them when starting a new node. This will allow regular users to get up and running with EOSIO in just a few minutes instead of spending hours waiting to download the blockchain data and set up their node. Downloading a snapshot of the blockchain offers a verifiable path to having a version of the blockchain from last week or even a few hours ago, for example. From this point, syncing up to the network will bring you up to date with the latest version.

To compliment this feature, we’ve introduce a deterministic integrity hash which can prove that two nodes have exactly the same state. This makes verifying new nodes as easy as fetching a string from a trusted public node and comparing it to the local copy and works whether you use snapshots or not.

Since the release of EOSIO, one of the fastest and most scalable blockchain platforms to date, Block.one has been focused on driving mass adoption for blockchain technology. Simplifying the developer experience and lowering barriers for new developers to adopt the platform remains our primary goal for improvements. Recent releases have following this theme by helping to improve the efficiency of the chain for more performant application development and ease of use for the EOSIO developer community.

Ongoing Performance Improvements

In addition to enhancements to the developer experience on EOSIO, we are making continual progress towards EOSIO staying one of the fastest and most efficient blockchain technologies. In our EOSIO V1.3 release last month we introduced wabt (pronounced “wabbit”), a suite of tools for WebAssembly to replace the existing binaryen interpreter, and saw considerable performance increases. Some block producers, after implementation, were utilizing 50% less CPU resources to run the main EOSIO public blockchain.

Kernel Timer-Based Checktime (#5799)

In this release we’ve optimized how contract execution time is monitored by nodeos. Previously nodeos would frequently poll the operating system to determine if a contract should be interrupted due to exceeding its resource allocation. Now, a timer is used so the operating system asynchronously notifies nodeos it is time to interrupt contract execution. On bare metal hardware this improvement typically provides a performance increase over 10%. On certain cloud server configurations the improvement is even higher.

EOSIO.CDT — Contract Development Toolkit Update

Earlier last week we also released an update to the EOSIO Contract Development Toolkit — you can read more about it here in our initial announcement. EOSIO.CDT provides support for EOSIO smart contract development, utilizing Gnu & C++ 11 style attributes to mark C++ contracts for ABI generation, creating a more flexible and reliable way of declaring your smart contract structure and associated data structures.

There were a number of substantial changes made in last week’s release that we wanted to outline in detail here. One of the main changes is that to support binary releases we needed to remove the concept of a core symbol from EOSIO.CDT. This meant drastic changes to symbol, asset and other types/functions that were connected to them. Since we knew these changes would be disruptive, we decided to add as many as we could in one go, so that the disruption should only occur once. Please be sure to read the Differences between Version 1.2.x and Version 1.3.x section of the readme.

Additional Issues:

A full list of issues for this release can be found in the Official Release Notes.

Stay Connected

If you are interested in providing feedback and working more closely with our team to improve EOSIO for the community, you can send our developer relations team an email at developers@block.one. You can also hear about future updates by subscribing to our mailing list on the EOSIO Developer Portal. We are excited to be continually improving the usability of the software for EOSIO developers as we continue laying a foundation for the mass adoption of blockchain technology.

Read disclaimer