Bitshares-core: Release Notes: BitShares Core 4.0.0

Created on 17 Oct 2019  路  7Comments  路  Source: bitshares/bitshares-core

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.
  2. get_key_references
  3. get_account_references
  4. get_proposed_transactions
  5. get_full_accounts (for fetching proposals)
  6. is_public_key_registered

  7. 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|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

All 7 comments

Is the custom_operations_plugin meant to be active on public API nodes? If so we should mention it.

Please make sure that all pull requests listed in https://github.com/bitshares/bitshares-fc/milestone/3?closed=1 are included in the release notes. Thanks.

Done (in anticipation of #2042)

Updated with changes from test-4.0.3

Updated with changes from test-4.0.4

Note: #2041, #2042, #2090, #2212 and the pull requests about merging branches are not included in the release notes intendedly.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

abitmore picture abitmore  路  9Comments

abitmore picture abitmore  路  4Comments

abitmore picture abitmore  路  6Comments

bitcoiners picture bitcoiners  路  7Comments

MichelSantos picture MichelSantos  路  9Comments