BitShares Mekong 6.1.0
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 thees_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 themin-blocks-to-keep
and themax-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 correspondingmajor.minor
version tag. Therefore, users using themajor.minor
version tag will always get the latest patch for that version. - Starting from this release, the
bitsharesentry.sh
file is set to the defaultENTRYPOINT
but no longer to the defaultCMD
, which may affect your deployment. - By default, the Docker container will run with the
bitshares
user with UID10000
and GID10001
(instead ofroot
), and all existing files in the data directory will be updated to be owned bybitshares:bitshares
(fromroot
) 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)