Skip to content

Releases: bnb-chain/bsc

v1.1.14

30 Sep 00:52
3354924
Compare
Choose a tag to compare

BSC v1.1.14 is a maintenance release that consists of several bug fixes.

Changelog

IMPROVEMENT

  • #1057 ci: allow merge pull request
  • #1063 ci: fix the pattern of commit lint

BUGFIX

  • #1062 test: fix TestOfflineBlockPrune failed randomly
  • #1076 bug: pick some patches from go-ethereum on v1.10.18
  • #1079 core: fix potential goroutine leak

Assets

Assets Sha256 Checksum
mainnet.zip 6dd6976b9c8d407e95ed99cd46f7badfa410f3f374ea3e360defab0f63fa3ed2
testnet.zip c9c20ceb98911cc3fa7ceda3e5efbf17a3791fdc46f2f6ab13af7ac77f1a65eb
geth_linux ff5e15cddcab6bd010a594587b4e058241c15a504bccfafae6d6c75064738539
geth_mac 0a7ceb1b9a2ab6bb07a49989d8866812edf6c8e8eebeb919b9cb693009bd4cf0
geth_windows 925c3aa68499bb06d64463d29bde670058301a4914efe87373bd47abcfc9baeb

v1.1.13

02 Sep 04:03
6f6bbcf
Compare
Choose a tag to compare

Changelog

BSC release v1.1.13 is a hardfork release for testnet. The hardfork upgrade named Gibbs is expected to happen at block height 22,800,220. The current block generation speed forecasts this to occur around 13 Sep. 2022 at 7:00 AM (UTC). The validators and full node operators on Testnet should switch their software version to v1.1.13 by 13 Sep.

Before Gibbs upgrade, the BNB holders could only stake their assets on the BNB Beacon Chain. It means that if their assets are on the BNB Smart Chain, they must transfer them across-chain to the BNB Beacon Chain first, which is not user-friendly enough.

Gibbs upgrade introduces a new staking system contract on the BSC side, all staking-related operations on the BSC side should be initiated through this contract, and then applied across-chain to BNB Beacon Chain through the native cross-chain communication mechanism. With this BEP, the BNB holders can stake in the BSC directly, and dApps can launch their staking service based on the protocol introduced by this BEP, which can diversify the BSC ecosystem.

FEATURE

  • #1051 Implement BEP153: Native Staking
  • #1066 Upgrade cross chain logic of native staking

IMPROVEMENT

  • #952 Improve trie prefetch
  • #975 broadcast block before commit block and add metrics
  • #992 Pipecommit enable trie prefetcher
  • #996 Trie prefetch on state pretch

BUGFIX

  • #1053 state: fix offline tool start failed when start with pruneancient
  • #1060 consensus: fix the GasLimitBoundDivisor
  • #1061 fix: upstream patches from go-ethereum
  • #1067 fix:fix potential goroutine leak
  • #1068 core trie rlp: patches from go-ethereum
  • #1070 txpool: reheap the priced list if london fork not enabled

Assets

Assets Sha256 Checksum
mainnet.zip 6dd6976b9c8d407e95ed99cd46f7badfa410f3f374ea3e360defab0f63fa3ed2
testnet.zip c9c20ceb98911cc3fa7ceda3e5efbf17a3791fdc46f2f6ab13af7ac77f1a65eb
geth_linux de07d1f8179c92b82e62bb04a07f2078ef307deba2612697a92d5f89f6615a1c
geth_mac a65ac858786e367760b9fff36bdfa3b05f9361dbd7519ab30fa956c3ff3ffc54
geth_windows c11cdb057a7c387845ef1d7fcf64d0ec81221cfe73580563ab40331dabbbf1b1

v1.1.12

28 Jul 11:11
f68965a
Compare
Choose a tag to compare

Description

Release v1.1.12 is a performance release. the following two features are introduced in this release.

  1. Separate Processing and State Verification.
  2. Pruning AncientDB inline at runtime.

Fast Node

Fast Node is introduced in #926, it is a new syncing protocol to lower the hardware requirement and improve the syncing efficiency.

This release introduces two types of nodes to make full use of different storage, one is called fast node, and the other is called verify node. The fast node will do block processing with a flattened key-value DB, it will do all verification against blocks except the state root. The verify node receives diffhash from the fast node and then responds MPT root to assist with the state root verification. If you want to learn more about this feature, please refer to the docs.

It turns out that the fast node can slow down the storage growth by 60%~90% according to different settings and increase the syncing efficiency by about 30%. We encourage node operators who do not care about 100% state consistency to enable fast nodes by appending --tries-verify-mode none to the node command.

Note: fast node can never revert to full node.

Pruning AncientDB inline at runtime

A new flag is introduced to prune ancient undesired block data at runtime, it will discard block, receipt, header in the ancient DB to save space.

Example: geth --config ./config.toml --datadir ./node --cache 8000 --rpc.allow-unprotected-txs --txlookuplimit 0 --syncmode full --pruneancient.

Note:

  • once turned on, the ancient data will not be recovered again
  • only under '--syncmode full' mode supports --pruneancient flag

Command Changes

After merging the Go-Ethereum v1.10.15, some Flag parameters have changed, please refer to the following list.

Removed

  1. --yolov3
  2. --vm.ewasm
  3. --vm.evm
  4. --rpc (use --http)
  5. --rpcaddr (use --http.addr)
  6. --rpccorsdomain (use --http.port)
  7. --rpcvhosts(use --http.corsdomain)
  8. --rpcapi (use --http.vhosts)

Added

  1. --dev.gaslimit Initial block gas limit
  2. --sepolia Sepolia network: pre-configured proof-of-work test network
  3. --override.arrowglacier Manually specify Arrow Glacier fork-block, overriding the bundled setting
  4. --override.terminaltotaldifficulty Manually specify TerminalTotalDifficulty, overriding the bundled setting
  5. --rpc.evmtimeout Sets a timeout used for eth_call (0=infinite)
  6. --gpo.ignoreprice Gas price below which gpo will ignore transactions
  7. --metrics.influxdbv2 Enable metrics export/push to an external InfluxDB v2 database
  8. --metrics.influxdb.token Token to authorize access to the database (v2 only)
  9. --metrics.influxdb.bucket InfluxDB bucket name to push reported metrics to (v2 only)
  10. --metrics.influxdb.organization InfluxDB organization name (v2 only)

Changed

  1. --syncemode removed the fast mode

Changelog

FEATURE

  • #862 Pruning AncientDB inline at runtime
  • #926 Separate Processing and State Verification on BSC

IMPROVEMENT

  • #816 merge go-ethereum v1.10.15
  • #950 code optimizations for state prefetcher
  • #972 redesign triePrefetcher to make it thread safe
  • #998 update dockerfile with a few enhancement
  • #1015 disable noisy logs since system transaction will cause gas capping

BUGFIX

  • #932 fix account root was not set correctly when committing mpt during pipeline commit
  • #953 correct logic for eip check of NewEVMInterpreter
  • #958 define DiscReason as uint8
  • #959 update some packages' version
  • #983 fix nil pointer issue when stopping mining new block
  • #1002 Fix pipecommit active statedb
  • #1005 freezer batch compatible offline prunblock command
  • #1007 missing contract upgrades and incorrect behavior when miners enable pipecommit
  • #1009 resolve the concurrent cache read and write issue for fast node
  • #1011 Incorrect merkle root issue when enabling pipecommit with miner
  • #1013 tools broken because of writting metadata when open a readyonly db
  • #1014 fast node can not recover from force kill or panic
  • #1019 memory leak issue with diff protocol
  • #1020 remove diffhash patch introduced from separate node
  • #1024 verify node is not treated as verify node

Assets

Docker Images

Assets Sha256 Checksum
mainnet.zip 6dd6976b9c8d407e95ed99cd46f7badfa410f3f374ea3e360defab0f63fa3ed2
testnet.zip c9c20ceb98911cc3fa7ceda3e5efbf17a3791fdc46f2f6ab13af7ac77f1a65eb
geth_linux 4811b0959a1bbd87b97b2d894550561f4296c29630c1d6213398f6955ea0a6e5
geth_mac 15d0c3c94c2ab085f241c8c50b40d786f8f8e63f9307e7e7b1985c97729fb360
geth_windows 74d605f96cba651a272384440128746efc87c341b4c220db00563fa0f2da5964

v1.1.11

08 Jun 14:07
70d08a5
Compare
Choose a tag to compare

This is a hard fork release that will enable BEP127 and BEP131 on the BSC mainnet. This upgrade is named after Leonhard Euler in honor of his key contributions to mathematics and mechanics. The Euler upgrade is scheduled to go live on the BNB Smart Chain Mainnet at block 18907621 after months of planning and effort. The current block generation speed forecasts the upgrade at 2022-06-22 08:00:00 (UTC).

Upcoming Changes

BEP-127 Temporary Maintenance Mode for Validators

Due to the design of the Parlia consensus, the absence of the validator, even if it is due to scheduled maintenance, will result in instability and capacity loss of the BSC Mainnet as a result of the extra waiting time and chain reorganization required for other validators.

Euler upgrade will enable BEP127 to stabilize the blocking rotation and maintain the network capacity. A validator can set itself to enter temporary maintenance mode by sending a transaction to interact with the ValidatorSet smart contract. Temporary maintenance is supposed to last up to a few hours. A validator that enters the temporary maintenance mode will be temporarily dropped from the block-producing rotation until it quits the maintenance mode. If a validator remains in the maintenance mode for too long, it will be slashed. Poorly-operating validators who fail/forget to enter maintenance mode will be forced to enter temporary maintenance mode. A validator can claim to exit the maintenance mode by sending another transaction. The validator should sign both the transactions for entering and exiting temporary maintenance mode using the consensus key.

Check BEP-127 for more details.

BEP-131 Introduce candidate validators onto BNB Smart Chain

BNB Smart Chain currently has 21 active validators and several inactive validators. In the present setup, inactive validators have no reward; hence, they have no incentive to remain active or upgrade their hardware. Euler Upgrade will enable BEP131 to introduce a maximum of 21 new candidate validators onto BNB Smart Chain to enhance the network's liveness and robustness while also increasing decentralization.

BEP-131 will introduce more validators, including 21 inactive validators, to the validator set as backup, called "Candidates." Candidates will compete to produce blocks and earn gas fees on BNB Smart Chain Mainnet, but they will have a lower chance of succeeding than the active validator set of the 21 elected validators. It is expected that a decent motivation will be maintained so that the candidate validators are willing to ensure the quality and help secure BNB Smart Chain.

The number of candidate validators is subject to the BSC governance. After the Euler upgrade, the BSC Mainnet will keep the same number of active validators and 0 candidate validators. Future governance actions will be required to grow the candidate validator set to allow new candidate validators to join.

Check BEP-131 for more details.

Assets

Assets Sha256 Checksum
mainnet.zip 6dd6976b9c8d407e95ed99cd46f7badfa410f3f374ea3e360defab0f63fa3ed2
testnet.zip c9c20ceb98911cc3fa7ceda3e5efbf17a3791fdc46f2f6ab13af7ac77f1a65eb
geth_linux 2ef3dfc9a98de11a111d091a5b1f0b3cae814c772afb40a6c2070fd1f79118dd
geth_mac 001a286f10ff46cbaafedf5a4db6ab0996ff590eb1377b3642e9b0e39a65d413
geth_windows 5d5750d25015b0067e3229ad46432bd5ff763ab65e983ac8f4a51ea1d24910ae
geth_linux_arm5 d63342a3c88238121b707eb4507e4e823a210588c8dc6975f5c0b646080bec12
geth_linux_arm6 6ad70473575a3901082eed8b1594a1ea68cc3db19a5eb8a5d4760beb7721afd1
geth_linux_arm7 f04d758ed5c8aac78c06bbd92d4beab40b5f55ac688ee8d0bba1b8c1b09d1223
geth_linux_arm64 ec079e44a418e91b2653323f91a58fbecda3e7f79d8f387a8ada9bc90d00953f

v1.1.10

05 May 09:34
2f2b98a
Compare
Choose a tag to compare

This is a hardfork release that will enable BEP127 and BEP131 on the Chapel testnet. This upgrade is named after Leonhard Euler in honor of his key contributions to mathematics and mechanics. The current block generation speed forecasts this to occur around May 11th at 03:18:00 AM (UTC). The validators and full node operators on testnet should switch their software version to this release by May 11th.

Upcoming Changes

BEP-127 Temporary Maintenance Mode for Validators

Due to the design of Parlia consensus, the absence of the validator, even if it is due to scheduled maintenance, will cause instability and capacity loss of BSC due to the extra waiting time and chain reorganization for other validators. Introducing Temporary Maintenance mode will stabilize the blocking rotation and maintain the capacity of BSC.

A validator can claim itself to enter temporary maintenance mode by sending a transaction to interact with ValidatorSet smart contract. Temporary maintenance is supposed to last one or a few hours. The validator seat will be temporarily dropped from the block producing rotation during the maintenance. Since long-time offline maintenance is not encouraged, the validator will still be slashed if the maintenance lasts too long. To lower the impact from poorly-operating validators who forget to claim its maintenance, they will be forced to enter temporary maintenance mode too.

Check BEP-127 for more details.

BEP-131 Introduce candidate validators onto BNB Smart Chain

This BEP introduces candidate validators onto BSC testnet to improve the liveness and robustness of the network.

BSC testnet will introduce more validators, e.g. another 10 inactive validators, into the validator set as backups, which will be called "Candidates". Candidates will produce blocks and charge gas fees on BNB Smart Chain mainnet, but with a much less chance than the active validator set of 11 elected. A decent motivation is expected to be maintained so that the candidate validators are willing to ensure the quality and help secure BNB Smart Chain.

The number of Candidate Validators is subjected to the BSC testnet governance. The BSC Chapel Testnet will keep the same number of Active Validators and 0 Candidate Validators right after Euler upgrade, and the later governance action will enlarge the Candidate Validator Set to allow new Candidate Validator to be set up.

Check BEP-131 for more details.

Changelog

FEATURE

  • #885 add Euler Hardfork, including BEP-127 and BEP-131

BUGFIX

  • #856 fix logic issue: handlers.removePeer() is called twice
  • #860 fix:defer bloomprocessor close
  • #877 fix validator pipecommit issue
  • #870 fix:Shift panic for zero length of heads

Assets

Assets Sha256 Checksum
mainnet.zip 6dd6976b9c8d407e95ed99cd46f7badfa410f3f374ea3e360defab0f63fa3ed2
testnet.zip c9c20ceb98911cc3fa7ceda3e5efbf17a3791fdc46f2f6ab13af7ac77f1a65eb
geth_linux ba89651ddadc243162b8d8cca263e87cd3663f15217d78784a0e286b7e8fddca
geth_mac e900220ec49c6981831a01fe1d962f8a9901f5eb181130e41d121de75a7bf7fc
geth_windows e87d284318ec8a4dbd65112499d81627de0608213df04a09afb2c06d740c92d3
geth_linux_arm5 e5df7f86603b81ce58996b80bf35d8faf5b1fc2accb2c443097aace9bfe1cec1
geth_linux_arm6 f24d11cbcdc28c68debbcf2dc243f1c0489752ebf40511feb37086162ee93a03
geth_linux_arm7 f4512009af5d21c562a3b30f23c4c87ffd11e39cfbea20810744e336b43338a5
geth_linux_arm64 a93604dcca3e42d83e0d762f962e8c5e99409e6711073f16ecca2fd4662fd4aa

v1.1.9

12 Apr 02:40
74ecbf2
Compare
Choose a tag to compare

Release v1.1.9 is a maintenance release. It includes several performance improvement and bug fix.

Changelog

IMPROVEMENT

  • #792 add shared storage for prefetching state data
  • #795 implement state verification pipeline in pipecommit
  • #803 prefetch state data during the mining process
  • #812 skip verification on account storage root to tolerate with fastnode when doing diffsync
  • #818 add shared storage to the prefetcher of miner
  • #820 disable diffsync when pipecommit is enabled
  • #830 change the number of prefetch threads

BUGFIX

  • #797 fix race condition on preimage in pipecommit
  • #808 fix code of difflayer not assign when new smart contract created
  • #817 fix bugs of prune block tool
  • #834 fix deadlock when failed to verify state root in pipecommit
  • #835 fix deadlock on miner module when failed to commit trie
  • #842 fix invalid nil check of statedb in diffsync

Assets

Assets Sha256 Checksum
mainnet.zip 6dd6976b9c8d407e95ed99cd46f7badfa410f3f374ea3e360defab0f63fa3ed2
testnet.zip c9c20ceb98911cc3fa7ceda3e5efbf17a3791fdc46f2f6ab13af7ac77f1a65eb
geth_linux c69ade6eb11399aa2296933279a2760f947092d77ddc4b4c1a8bda95707db107
geth_mac 5648f57f988752a2e0cd8fc5a6cfccdc905d01e2604788766e59ca66e9316066
geth_windows 6389751c6464ca67239816d6a14740ce78e9b5f6fe5d33ced6fa768027def908
geth_linux_arm5 7463c0db02b51f0810107a50cf254cda7a466a4d0dc8d7c4486e31966e2f984c
geth_linux_arm6 aff8da399c909f5fa94ca2651eecb7dcda844e9b3d6e5c8c23f9ebcb3f530db7
geth_linux_arm7 0bdf125b52d32b593675bc3dc1b4a41448114138f3c3ed0b94c3fc633c75351a
geth_linux_arm64 fa770b25cba39855a638661ed19b8fa2d28a3d880855e5b25d374f36a436b0d9

v1.1.8

28 Jan 03:54
859186f
Compare
Choose a tag to compare

Description

Release v1.1.8 is a performance release. Verification && Commit Pipeline, Go Native Tracer and Block Prune are introduced in this release.

Change log

FEATURES

  • #668 implement State Verification && Snapshot Commit pipeline
  • #581 implement geth native trace
  • #543 implement offline block prune tools

IMPROVEMENT

  • #704 prefetch state by applying the transactions within one block
  • #713 add ARM binaries for release pipeline

BUGFIX

  • #667 trie: reject deletions when verifying range proofs
  • #643 add timeout for stopping p2p server to fix can not gracefully shutdown issue
  • #740 update discord link which won't expire

Changes

State Verification && Commit Pipeline

State verification and storage commit pipeline is introduced in #668. It is an experimental feature that is expected to improve the performance, enable it by appending --pipecommit to the process command.

Ancient Data Prune

A new tool is introduced to prune ancient undesired block data, it will discard block, receipt, header in the ancient db to save space.
Example: ./geth snapshot prune-block --datadir ./node --datadir.ancient ./chaindata/ancient --block-amount-reserved 1024.

Note: 1. Stop the client before pruing; 2. datadir.ancient is based on datadir, ./chaindata/ancient means ${datadir}/geth/chaindata/ancient actually

Go Native Tracer

The default tracer is now based Golang implementation rather than Js implementation.

Assets

Assets Sha256 Checksum
mainnet.zip 6dd6976b9c8d407e95ed99cd46f7badfa410f3f374ea3e360defab0f63fa3ed2
testnet.zip c9c20ceb98911cc3fa7ceda3e5efbf17a3791fdc46f2f6ab13af7ac77f1a65eb
geth_linux 73a30eb9d12b82374bf8d1f39369be27f8bee97095b8ad9ba89b1bb8662e3e2a
geth_mac 556ad673d9aa4e5daf32a15a6dcdc34d34a0711a6afb1878dbe51b6c013ce1e5
geth_windows 402bf3587411b445d0b4c6918453caa660af8daf9167693442d441e8343d03b7
geth_linux_arm5 5158e00c073574caf080c9272b7b6ef11b14ac8baee0f391b4f3b11967a2b0e8
geth_linux_arm6 d2f8ec1c94461f0bc1c78b2ea8d8722ea341b1e5b525361ca1b3b445fdf330c5
geth_linux_arm7 87aa64d0d54275c4e28eb6c67d8103f6bba7ebcc1121d21da44f14c6f8168372
geth_linux_arm64 c328dba014e0bc4fa8f2ebd90e37dcc4e7512f6b2c0901d6d32798f1800da2c1

v1.1.7

05 Dec 04:30
74f6b61
Compare
Choose a tag to compare

This is a hot fix release for a syncing issue during diffsync, check #628 for more details. All clients are suggested to upgrade.

If you come across with Bad Block error with a log message like: expected tx hash xx, get xx, nonce xx, to xx, value xx, gas xx, gasPrice xx, data xx. Following is the guide to recover the node:

  1. Stop The node.
  2. Upgrade the binary to the latest release.
  3. Start the node with --snapshot=false
  4. Wait for a few minutes(it depends on how fast the node is), until the block height is 128 higher than where it stopped.
  5. Restart the node with --snapshot=true
  6. The node will continue to sync and repair the corrupt data.

Changelog

BUGFIX

  • #628 fix state inconsistent when doing diffsync

Assets

Assets Sha256 Checksum
mainnet.zip 4a2ad47362afa6c387ed9acd7f8f050b356e61ac77b8094b6116aa17ae90972b
testnet.zip c9c20ceb98911cc3fa7ceda3e5efbf17a3791fdc46f2f6ab13af7ac77f1a65eb
geth_linux 3e5a73d46ee944c89c45adc92a1f7347bc83658a64a1595ba7635c05c0600715
geth_mac 9d9e78a1411a43a1c3cfe0fe6320c67d500ab91692164fbde07f32e3f6c12aff
geth_windows 9fe9ce7cf540fcb1171c9e75b9ae8ad917907657d1d0b47072e07e172b0a3b3e

v1.1.6

29 Nov 06:14
Compare
Choose a tag to compare

Description

This is a security release, including a DoS issue fix from go-ethereum, leveldb improvement from go-ethereum, and a feature to improve p2p tx broadcast function.

Example

This feature is introduced to handle some extreme situations, it won't affect the original function, and it is disabled by default. Users can enable this feature by setting TxPool.ReannouceTime according to their needs.

geth --config ./config.toml --datadir ./node --cache 8000 --rpc.allow-unprotected-txs --txlookuplimit 0 --txpool.reannouncetime 5m

Changelog

BUGFIX

  • #582 the DoS vulnerabilities fixed in go-ethereum v1.10.9

IMPROVEMENT

  • #578 reduce memory allocation and upgrade snappy version

FEATURES

  • #570 reannounce local pending transactions

Assets

Assets Sha256 Checksum
mainnet.zip 541028a68a26dc1d0828b144626e8d064ac9d0b6db1ad499700ec6f62559c336
testnet.zip c9c20ceb98911cc3fa7ceda3e5efbf17a3791fdc46f2f6ab13af7ac77f1a65eb
geth_linux 7209ab26df6d70bcc7094353f73d0ad694e2816efae59c04848629ccd5bf9bd7
geth_mac 2f3a698f82186fd86144ae933f4244ade70faaa2436aeb8b3f8156cb445e7d1d
geth_windows 00b58653857ae9c7c5cd5e02183ca328b99f6dc9d874b670a02d1a606271a923

v1.1.5

16 Nov 07:03
8ff7d53
Compare
Choose a tag to compare

v1.1.5 is a hard fork release.

v1.1.5 brings Bruno hard fork which introduces a real-time burning mechanism into the economic model of BSC. Please refer to BEP95 for more details. The Bruno hard fork is expected to happen at block height 13082000. The current block generation speed forecasts this to occur around November 30th at 08:00 AM (UTC). All clients are recommended to upgrade by November 30th.

We improved the diffsync protocol in this release and rolled it out as a stable feature. Diff sync improves the syncing speed by 60%~70% approximately according to the test. All full nodes are suggested to enable it by adding --diffsync in the starting command. Refer to BEP93 for more details.

Changelog

BUGFIX

  • #509 fix graceful shutdown bug

IMPROVEMENT

  • #536 get diff accounts by replaying block when diff layer not found
  • #527 improve diffsync protocol in many aspects
  • #493 implement fast getDiffAccountsWithScope API

Assets

Assets Sha256 Checksum
mainnet.zip 0e0f1185050428124011edab31df40d94db40e521fedd9279ee77bcb6fde3b14
testnet.zip 0259269be86fbdfce14efe40e99874b95a4a3ed30949463c0cef9e776eb6b1b2
geth_linux 37018164e1af4ceecef528e9efcecbb79f62bb1ec5dd0a40a76e7a44a4ff4fbd
geth_mac b72974f906e45ab67febcc7e21813c3ca302dc6cd4810c723daf7e247d337d10
geth_windows 5f948be5ceda3eb3da9cd94cf6652b5913d266cdcf39e07eea8c4ef57516d3ad