Skip to content

BitShares Core 4.0.0

Compare
Choose a tag to compare
@abitmore abitmore released this 30 Jun 02:50
· 1484 commits to master since this release
c9e2bf4

Release Notes

The BitShares Core software has been updated to the 4.0.0 Protocol Release. The Core software is used to build the validation nodes that perform consensus of all transactions on the BitShares blockchain. This release includes additions, improvements, and changes to the consensus protocol.

The scheduled protocol upgrade time is Thursday, July 30, 2020 13:55:00 UTC (2020-07-30T13:55:00Z).

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?

All operators must upgrade to handle the protocol upgrade and to benefit from performance improvements.

Operators of API nodes will be able to configure custom limitations on their API nodes as described in the API section.

Upgrade Process

Precautions

  • All validation nodes must complete their upgrade prior to Protocol Activation: Thursday, July 30, 2020 13:55:00 UTC
  • A blockchain replay will automatically be performed after the validation node software is restarted. This typically takes a few hours on a modern CPU.

Upgrading from Any Version

Delayed Node

The witness_node program can be configured to serve the features that were previously provided by the delayed_node program. Therefore the delayed_node program is no longer supported. Instructions for configuring a witness node to act as delayed node can be found in the Wiki.

Elastic Search Plugin

The default values for the Elastic Search Plugin have been changed. These changes are summarized under Elastic Search Plugin.

Custom Operations Plugin

A new custom_operations plugin is added in this release which is enabled by default for new nodes. The plugin stores account catalogs of key=>value data using custom operations. The feature is expected to be utilized by several client applications including the reference UI and the BTS++ mobile App in the near future. Existing public API nodes should enable it.

API Helper Indexes Plugin

The api_helper_indexes plugin is now required for serving several existing critical APIs. Public API nodes should enable it. Please check the API section for more info.

Upgrading from 3.2.0

Operators of API nodes need to edit their configuration file per the instructions in the 3.3.0 Release Notes API section.

Upgrading from before 3.2.0

Please check the 3.2.0 Release Notes for more information if you are upgrading from a version prior to 3.2.0.

How to Upgrade from Source Code

Note: the minimum build requirements have changed starting from the 3.3.0 Feature Release:

  • The code base requires a compiler that supports the C++ 14 standard (previously C++ 11).
  • The minimum supported boost version is 1.58 (previously 1.57).
  • The minimum supported CMake version is 3.2 (previously 3.1).

Obtain the Source Code

The source code may be obtained by checking out the 4.0.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 may be used. No additional requirements or precautions will be required to deploy the new release.

How to Upgrade with Docker

The latest Docker image may be found at BitShares Core Docker page and updated with

docker pull bitshares/bitshares-core

Binaries for download

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

Note: These binary builds are reproducible and were signed using Gitian. Please check the README if you want to verify and/or contribute.

Platform SHA256 Checksum
Microsoft Windows 9482f0ef03e4df2fdd08c30e535709940925fd2ac0eccbe19c399316e57f0961
Mac 25a28802d6bd44f9d516ade2b605ea6e5c55fdbddcf801c638be11f1c92ca0a7
Linux 5d62f634633693e0a89dd86fdc0314ac0edb2fdc0d9b1437b84c62c5167270b7

Changes

The changes for 4.0.0 Protocol Release are summarized below.

Protocol

Description Issue Pull Request
Margin Call Fee Ratio (BSIP-74) BSIP-74, 2129 2159, 2180
Asset Owner Defines MCR and MSSR Values (BSIP-75) BSIP-75 2176
Require Higher CR When Creating / Adjusting Debt Positions (BSIP-77) BSIP-77 2157
Simple Maker-Taker Market Fees (BSIP-81) BSIP-81 2136, 2155
Maker order creation fee discount (BSIP-85) BSIP-85 2145
Share Market Fees to the Network (BSIP-86) BSIP-86 2128, 2140
Force settlement fee (BSIP-87) BSIP-87 2151, 2159, 2172
Add HTLC related features: HASH160 support, optional memo, optional preimage size 1967 FC-143, 1998
Share market fees of force-settle orders to the referral program 1780 1842, 2132
Redirect market fees sharing to temp-account to committee-account 1800 1870, 2133
Asset precision can be updated when asset has zero supply - 2176
New asset issuer permission and flag to disable updating of maximum supply - 2176
New asset issuer permission and flag to disable creation of new supply - 2176
Independent asset creation fee for assets with a prefix - 2176
Fix 250M supply issue 2103 2104
Fix additional authorities checking on custom_operation 210, 2087 1629, 2138
Fix overabundant balance check for bid_collateral_operation 1692 1830
Fix prediction markets suffering black swan 460 2019
Fix too restrictive check in market fee sharing 1774 1848, 2131, 2135
Fix a bug that undefined bits can be set in asset flags - 2176
Fix a bug that an asset's maximum supply could be smaller than current supply - 2176
Fix a bug that a prediction market may be unable to be globally settled - 2176
Stop using call_price when globally settling for future performance improvement 1669 1672
Partial work for Custom Active Authorities (BSIP-40) 1285 1860, 2028

Node Functionality

Description Issue Pull Request
Make more API limitations configurable 1733, 2141 1903, 2154
Log rotation bugfix 1982, 2078 FC-162, FC-184, 2083
Fixed debug function wrt HTLC - 2072
Enable a stacktrace dump when the SIGSEGV signal is raised - 1985
Update seed nodes - 1990, 2022, 2089, 2126, 2152, 2191, 2192

Node Performance and Stability

Description Issue Pull Request
Skip updating unneeded secondary indexes during replay 452, 682, 683 1918, 2142
Check witness signature of block before pushing to fork db 831 1987
Fix a P2P connection issue when there are misbehaving peers in the network 2105 2107
Fix a P2P connection issue while large message is being delivered 2015 2119, 2120
Periodically re-check addresses of seed nodes 2153 2164
Improve get_account_stats_by_owner performance - 2174
Fix testnet macOS crash 2199 2200

Node Plug-ins

Description Issue Pull Request
Add custom operations plugin 1847, 2032, 2092 1926, 2033, 2079, 2108, 2143
Fix an issue that ES_objects plugin inserts genesis data even when configured es-objects-start-es-after-block 1951 1960
Update ES plugins' default values 2024 2012

Elastic Search Plugins

Default settings for the Elastic Search Plugin have changed.

elasticsearch plugin:

  • _elasticsearch_operation_object is defaulted to true
  • _elasticsearch_operation_string is defaulted to false

es_objects plugin:

  • _es_objects_limit_orders is defaulted to false

General instructions for configuring Elastic Search are available here.

API

  1. The api_helper_indexes plugin is now required for several critical APIs. For API node operators, please enable the plugin if these APIs are used by your clients.
  • get_key_references
  • get_account_references
  • get_proposed_transactions
  • get_full_accounts (for fetching proposals)
  • is_public_key_registered
  1. API Node operators can customize the maximum limit values for several API calls by setting numerical values that differ from that default values in the configuration file.
api-limit-lookup-accounts = 1000
api-limit-lookup-witness-accounts = 1000
api-limit-lookup-committee-member-accounts = 1000
api-limit-lookup-vote-ids = 1000
api-limit-get-account-limit-orders = 101
...
Description Issue Pull Request
Add get_limit_orders_by_account API 463 2146
Add preimage info to virtual htlc_redeemed_operation 1739 2161
Add refund info to virtual htlc_refund_operation 1887 1950
Extend get_all_workers API to query only worker objects that have expired or not expired. 2121 2149
Return top order sizes in market ticker 2001 2166
Add info about who sold what to whom in get_trade_history API and get_trade_history_by_sequence API 2163 2175, 2181
Increase default limits for get_full_accounts API 2165 2190
Return a user-friendly message on RPC execution error - FC-186, 2111
Handle exceptions when formatting log messages - FC-167
Update wording of an error message about asset creation - 2109
Update an error message about updating debt position - 2206

Command Line Interface Wallet (CLI)

Description Issue Pull Request
Fix cli_wallet TLS handshaking issue in Windows 314 FC-159
Add sign_transaction2 and sign_builder_transaction2 commands to explicitly specify keys for signing transactions 2048 2049
Show block numbers in account history in CLI - 2113
Update an error message about unable to find an asset - 2206

Software Design

Description Issue Pull Request
Reflection/static_variant updates - FC-154, FC-156, FC-158, 1968
Remove Deprecated Files 1219 1989
Remove obsolete code about unsupported boost versions 1584 FC-171
Minor code style changes and typos - 1955, 2007
Split wallet.cpp file into several smaller files 950, 1432, 2003 2013, 2198
Post-hardfork cleanups 1743 1751
Remove copy construct/assign for openssl wrappers - FC-166
Move FC_REFLECT_DERIVED_NO_TYPENAME into fc - FC-160
Fix build error: static assertion failed: Failed to reserve enough space in fc::fwd<T,S> 1935 FC-150, 1946
Update bool serialization - FC-192
Replace int with 64-bit types in static_variant - FC-195, FC-196
Fix potential infinity loop in exception::to_detail_string() - FC-193
Warning and Infotext Fixes - 1959
Fix warnings - 1964, FC-155, FC-175
Minor fixes for 4.0 - 2134
Remove standalone delayed_node program 1986, 2014 1988, 2016
Update copyright and contributors 1524 1525, 2209

Build Process and Continuous Integration

Description Issue Pull Request
Remove custom FindBoost.cmake - FC-149
Fix macOS build, reset flag after testing compiler - 1929
Support Building on OpenBSD - FC-148, FC-153, FC-194, 1910
Replace build tools for cat-parts and embed_genesis - 1923, 2029
CMake cleanup & MinGW support 2055, 2065 FC-121, 1706, 2069
Use appropriate static/dynamic openssl libs for curl - 1980
Fix compilation for macOS 2070 FC-181, 2071
Improve Sonar Scanning 2025, 2095 2039, 2096, 2102, 2124

Documentation

Description Issue Pull Request
Change Graphene Witness Node to BitShares Witness Node - 1994
Move some classes into namespaces 1895 1992, FC-164
Update README 1897 2060, 2207
Update Doxyfile - 2210
Update Wiki - 2211

Unit Tests

Description Issue Pull Request
Remove witness plugin from cli test - 1962
Unit tests for BSIP-40 - 2044, 2081
Supplement fix for cli_test crash 2067 2068

Docker

Description Issue Pull Request
Fix issue: logging.ini does not symlinked inside docker CT 1723 2010
Set default docker cfg max-ops-per-account to 100 - 2091

Release Contributors

@abitmore
@christophersanborn
@crazybits
@crypto-ape
@heifner
@ioBanker
@jmjatlanta
@manikey123
@MichelSantos
@mvandeberg
@nathanhourt
@OpenLedgerApp (Alexey Frolov and ddylko)
@oxarbitrage
@pmconrad
@ryanRfox
@spartucus