Skip to content
Pre-release

@blockone-devops blockone-devops released this May 15, 2019 · 316 commits to master since this release

This is a RELEASE CANDIDATE for version 1.8.0. The latest STABLE release is v1.7.3.

This release includes an EOSIO consensus upgrade which necessitates a replay from genesis. Please see this guide for important upgrade instructions.

A blog post providing more information can be found here.

Changes

Nodeos bug fixes

Nodeos was using chainbase in a manner that could have exposed security vulnerabilities if the REPLACE_DEFERRED protocol feature was activated. The way the chainbase indices are used have now changed (#7266) to close this potential vulnerability even with the REPLACE_DEFERRED protocol feature activated.

Due to the changes in how chainbase indices are used, a shared_memory.bin file created by v1.8.0-rc1 is not compatible with v1.8.0-rc2.

The fork database serialized its blocks to disk in the wrong order in certain circumstances thus creating a fork_db.dat file that could not be opened during nodeos startup. The issue has been fixed (#7326) to not serialize the blocks to disk in the wrong order, but the fix cannot allow nodeos to open any fork_db.dat file that is already corrupted.

Updates to state history plugin

The state history plugin logged all values in traces including subjective ones that varied from node to node, e.g. the elapsed time to locally execute an action. The default behavior of the state history plugin is now to modify these subjective values to get consistent results across all nodes (#7298). The new default behavior enables state history nodes on the same version to generate identical trace and table delta logs assuming they both end at the same head block. The old behavior (which can enable access to action console logs and error messages) can be recovered by setting the trace-history-debug-mode to true which puts the state history plugin into a debug mode.

Notes on using the build script

Users of the build scripts may have run into build issues under certain environments. The first thing to try if running into build issues is to pass the -P -f flags to the build script which will force the script to build pinned versions of EOSIO dependencies (which may add significant time to the build process) before building EOSIO itself.

With this release, version 1.70 of Boost is also supported and is the preferred version that the build script will pin to if the -P flag is passed in. While Boost version 1.67 is still supported, the minimum version of Boost supported in EOSIO is expected to increase to 1.70 in the future. Since this release requires a replay from genesis for everyone upgrading from v1.7.x and earlier, users should consider forcing their EOSIO build to use Boost 1.70 by passing in the -P -f flags to the build script. Doing so will make it less likely to require portable snapshots in order to upgrade an existing chain state database to work with a future version of EOSIO.

Upgrading from v1.8.0-rc1

Upgrading from v1.8.0-rc1 to v1.8.0-rc2 for a nodeos configured to run with plugins that handle history requires a replay from genesis similar to the upgrade from v1.7.x to v1.8.0-rc2 (see the upgrade guide).

If nodeos is not configured with any history-related plugins, it is possible to upgrade from v1.8.0-rc1 to v1.8.0-rc2 without doing a replay from genesis. The snapshots generated and accepted by both versions are identical. So the operator could:

  1. Launch nodeos v1.8.0-rc1 in irreversible mode and with the producer_api_plugin enabled by passing the --read-mode=irreversible --plugin=eosio::producer_api_plugin command-line options. (Note that producers cannot be configured when launching nodeos in irreversible mode.)
  2. Create a snapshot of the last irreversible block by calling the create_snapshot RPC (for example by using the command curl -X POST http:/127.0.0.1:8888/v1/producer/create_snapshot -d '{}' | jq). Record the path to the generated snapshot file in snapshot_name field of the returned JSON object.
  3. Shut down nodeos and delete the blocks/reversible and state sub-directories within the data directory.
  4. Launch nodeos v1.8.0-rc2 from the generated snapshot using --snapshot command line option.

Other changes

  • (#7246) Change default log level from debug to info. - v1.8.x
  • (#7256) Move Test Metrics Code to Agent
  • (#7242) Created Universal Pipeline Configuration File
  • (#7265) use protocol-features-sync-nodes branch for LRT pipeline - v1.8.x
  • (#7280) build unittests in c++17, not c++14 - 1.8
  • (#7283) Fix cleos REX help - v1.8.x
  • (#7274) restrict range of error codes that contracts are allowed to emit
  • (#7281) Update EosioTester.cmake.in
  • (#7296) Modify the pipeline control file for triggered builds
  • (#7297) added sudo -E to installs for Ben on automation + zlib if fix
  • (#7298) add debug_mode to state history plugin
  • (#7311) when unable to find mongo driver stop cmake - 1.8
  • (#7334) Use debug level logging for --verbose - 1.8.x
  • (#7335) Anka for 1.8.x + new linux vm image labels
  • (#7324) Look in both lib and lib64 for CMake modules when building EOSIO Tester
  • (#7347) Anka 1.8.x fixes
  • (#7351) correct signed mismatch warning in chain controller - 1.8
  • (#7344) correct signed mismatch warning in http_plugin - 1.8
  • (#7345) (softfloat sync) clean up strict-aliasing rules warnings - 1.8
  • (#7357) Boost 1.70.0 changes - v1.8.x
  • (#7358) Fixes for Boost 1.70 to compile with our current CMake (release 1.8.x)
  • (#7360) update to use boost 1.70 (release 1.8.x)

Deprecation notice reminder

Please refer to the v1.8.0-rc1 Release Notes for the currently active set of deprecation notices.

Thanks!

Special thanks to the community contributors that submitted patches for this release:

Disclaimer: Block.one makes its contribution on a voluntary basis as a member of the EOSIO community and is not responsible for ensuring the overall performance of the software or any related applications. We make no representation, warranty, guarantee or undertaking in respect of the releases described here, the related GitHub release, the EOSIO software or any related documentation, whether expressed or implied, including but not limited to the warranties or merchantability, fitness for a particular purpose and noninfringement. In no event shall we be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or documentation or the use or other dealings in the software or documentation. Any test results or performance figures are indicative and will not reflect performance under all conditions. Any reference to any third party or third-party product, resource or service is not an endorsement or recommendation by Block.one. We are not responsible, and disclaim any and all responsibility and liability, for your use of or reliance on any of these resources. Third-party resources may be updated, changed or terminated at any time, so the information here may be out of date or inaccurate. Any person using or offering this software in connection with providing software, goods or services to third parties shall advise such third parties of these license terms, disclaimers and exclusions of liability. Block.one, EOSIO, EOSIO Labs, EOS, the heptahedron and associated logos are trademarks of Block.one. All other trademarks referenced herein are the property of their respective owners.

Assets 2
You can’t perform that action at this time.