Skip to content

BitShares Mekong 6.1.0

Compare
Choose a tag to compare
@abitmore abitmore released this 01 Dec 14:25
· 227 commits to master since this release
7aaa577

The BitShares Core software has been updated to the 6.1.0 Feature Release. The codename of the 6.x releases is "Mekong". The Core software is used to build the validation nodes that perform consensus of all transactions on the BitShares blockchain, and a command-line wallet tool to interact with nodes. This release includes improvements but does not include any changes to the consensus protocol.

Documentation for users may be be found at How BitShares Works.

Documentation for BitShares developers may be found at the BitShares Developer Portal.

Who Should Upgrade

It is recommended that all nodes and all command-line wallets be upgraded, although it is not required.

All nodes will benefit from the P2P network security improvements.

API nodes will benefit from the new APIs.

Docker image users will benefit from security updates and reduced Docker image size.

Command-line wallet users will benefit from command-line wallet improvements.

ElasticSearch nodes will benefit from new data, new program options and bug fixes.

Account history plugin users will benefit from new program options.

How To Upgrade

Precautions

  • A blockchain replay will automatically be performed after the validation node software is restarted. This typically takes a few hours on a modern CPU.
  • This release contains breaking changes about the elasticsearch plugin and the es_objects plugin. For nodes with one of those 2 plugins enabled, please check the Node Plugins section before upgrade.
  • Due to the changes in PR 2648 and PR 2642, nodes with the account_history plugin enabled will have increased memory usage and higher spikes by default. It is a trade-off for better serving certain APIs. Node operators can set the min-blocks-to-keep and the max-ops-per-acc-by-min-blocks startup options to different values to achieve different behaviors.
  • Docker users please refer to the following section for breaking changes regarding Docker.

How to Upgrade with Docker

The pre-built Docker image can be found on the BitShares Core Docker page and can be downloaded with the following command.

docker pull bitshares/bitshares-core:6.1

or

docker pull bitshares/bitshares-core:6.1.0

Note:

  • Starting from this release, when we add a new image to Docker Hub with a major.minor.patch version tag, we also add or update the corresponding major.minor version tag. Therefore, users using the major.minor version tag will always get the latest patch for that version.
  • Starting from this release, the bitsharesentry.sh file is set to the default ENTRYPOINT but no longer to the default CMD, which may affect your deployment.
  • By default, the Docker container will run with the bitshares user with UID 10000 and GID 10001 (instead of root), and all existing files in the data directory will be updated to be owned by bitshares:bitshares (from root) on startup.

How to Upgrade from Source Code

Note:

  • The code base requires a compiler that supports the C++ 14 standard
  • The minimum supported boost version is 1.58, the maximum is 1.74
  • The minimum supported CMake version is 3.2
  • For Ubuntu users, it is recommended to build in Ubuntu 20.04 LTS (Focal Fossa). Ubuntu 16.04 LTS (Xenial Xerus) may still work, but it is no longer tested.

Obtain the Source Code

The source code may be obtained by checking out the 6.1.0 tag. Download the source at:

Build the Binaries

The binaries may be built by using your pre-existing process, or by following the standard instructions that can be found in the wiki:

Deploy the Binaries

Your standard process for deploying the node software and the command-line wallet software may be used. No additional requirements or precautions will be required to deploy the new release.

Binaries for download

Binaries of the node software and the command-line wallet software are pre-built and available for download.

Note:

  • These binary builds are reproducible and were built using Gitian. Please check the README of Gitian if you want to verify and/or contribute.
  • Starting from version 6.0.0, pre-built Linux binaries will not run on Ubuntu 16.04 LTS (Xenial).
Platform SHA256 Checksum
Linux 36e24b86b5493981b6774cc7f58194a3f0f31eea6b1b40aeda4f989b5bd324e1
macOS 7796e05314c78e155e67081f8157cfb476901af7cf038bf96465792c1cc6a83f
Windows 4e9d7387dc29846bdcb5715adfd43f67817ef317439b2029a5e42c1305a59893

Changes

The changes for 6.1.0 Feature Release are summarized below.

Node Functionality

Description Issue Pull Request
Improve P2P security, add new node startup options 659 FC-244, 1764 (main), 2640
Add creation block number and timestamp for accounts and assets 2586 2639
Show more detailed error messages about static_variant static_cast<size_t>(tag) < count() 2578 FC-243, 2579
Update seed nodes - 2590, 2592, 2684, 2685

Node Performance and Stability

Description Issue Pull Request
Suppress p2p logging about liquidity pool "Unable to exchange at expected price" 2543 2625
Update p2p call statistics collector log level to debug - 2694

Node Plugins

Description Plugins Issue Pull Request
Fix "Specifying types in bulk requests is deprecated" (with breaking changes) ElasticSearch Operations, ElasticSearch Objects 2240 1997
Fix data deletion in es_objects plugin, update program options (with breaking changes) ElasticSearch Objects 2464 2570 (main), 2623
Store some data in ES as objects instead of just as strings ElasticSearch Operations, ElasticSearch Objects 1400, 2380, 2680 2565 (main), 2681
Store budget records in ES ElasticSearch Objects 2298 2573
Add fee payer to account history in ElasticSearch database ElasticSearch Operations 2583 2624
Add block_time and is_virtual fields to operation_history_object Account History, ElasticSearch Operations 487 2642
Add option to account history plugin to keep operations that happened in last X blocks in memory Account History 2268 2648
Update api_helper_indexes plugin to support database_api::get_next_object_id API API Helper Indexes 2649 2653
Limit recursion depth when adapting objects for ES ElasticSearch Operations 2577 2609
Update default es-objects-max-mapping-depth to 10 ElasticSearch Objects 2612 2616
Add logging about sending bulk data in replay mode ElasticSearch Objects - 2636
Fix "413 request too large" error ElasticSearch Operations, ElasticSearch Objects 2682 2683, 2688

API

Please check the linked pull requests for more info and documentation.

Description Issue Pull Request
Add history_api::get_block_operation_history API 243 1899
Add api-limit-get-market-history and api-limit-get-full-accounts-subscribe node startup options - 2613
Update database_api::get_margin_positions API to only return the first page (use database_api::get_call_orders_by_account API to get more data) - 2613
Add login_api::get_info API to return data defined by a new api-node-info node startup option 626 2617
Add login_api::get_config API to return configured API limits 626 2617
Add login_api::get_available_api_sets API 1689 2617
Add login_api::logout API - 2617
Fix some issues related to login_api 2614 2617 (main), 2679
Add creation block number and timestamp for accounts and assets 2586 2639
Add block_time and is_virtual fields to operation_history_object 487 2642
Add history_api::get_account_history_by_time API 2647 2650
Add history_api::get_block_operations_by_time API 2498 2651
Add database_api::get_next_object_id API 2649 2653
Extend custom_operations_api::get_storage_info API with pagination and optional parameter support, add api-limit-get-storage-info node startup option 2139 2620
Extend get_order_book API to return limit order owners and other info 2637 2638
Extend get_block_header and get_block_header_batch APIs to optionally return witness signatures 2588 2641, 2652 (main)
Use configured limit as API page size if omitted 2619 2622

Command-Line (CLI) Wallet

Description Issue Pull Request
Display operation history IDs for CLI wallet commands related to account history - 2645
Simplify help info in cli_wallet - 2661
Extend transaction_handle_type to 32 bits and handle overflow - 2661

Software Design

Description Issue Pull Request
Fix compiler warnings 2340, 2501, 2567 2566, 2660
ElasticSearch related code refactory - 2576
Update connection_rejected_message member order 112 2605
Refactor API code - 2613
Change address constructors to explicit - 1151
Refactor code about object_id and object_id_type - 2658
Fix code smells - FC-246, FC-247, 2661, 2663, 2675

Build Process and Continuous Integration (CI)

Description Issue Pull Request
Update Dockerfile and build-docker workflow 2011 2666
Support building with curl v7.77 or higher in mac - 2665
Fix SonarScanner version detection - 2598
Remove .travis and related files - 2664
Use GITHUB_REF_NAME variable provided by Github - 2664
Run sonar-scan workflow with Ubuntu 20.04 instead of ubuntu-latest - 2664
Update dependency versions used in Github Actions, Dockerfile and Gitian Gitian-63 Gitian-58, Gitian-59, Gitian-64, Gitian-65, Gitian-66, Gitian-68, 2594, 2611, 2664, 2676

Documentation

Description Issue Pull Request
Update README - 2615, 2646, 2672
Update license year to 2022 2572 2626
Fix Doxygen documentation warnings and errors 2545, 2552 2659, 2675
Update docs - 2695

Release Contributors

@abitmore (https://github.com/abitmore)
@ioBanker (https://github.com/ioBanker)
@jmjatlanta (https://github.com/jmjatlanta)
@oxarbitrage (https://github.com/oxarbitrage)