Releases: bnb-chain/bsc
v1.1.10
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
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
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
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:
- Stop The node.
- Upgrade the binary to the latest release.
- Start the node with
--snapshot=false
- Wait for a few minutes(it depends on how fast the node is), until the block height is 128 higher than where it stopped.
- Restart the node with
--snapshot=true
- 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
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
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 |
v1.1.4
V1.1.4 is a release mainly for testnet. V1.1.4 brings a hard fork Bruno
that introduces a real-time burning mechanism into the economic model of BSC. For detail, you can refer to bep 95.
The fork height of Bruno
in testnet is 13837000
, around 2021 11-05 02:00 UTC
.
The fork height of Bruno
in mainnet will come along with the next release.
It also contains some improvements and bug fixes.
Changelog
IMPROVEMENT
BUGFIX
- #491 fix prefetcher related bugs
FEATURES
- #480 implement bep 95
Assets
Assets | Sha256 Checksum |
---|---|
mainnet.zip | 541028a68a26dc1d0828b144626e8d064ac9d0b6db1ad499700ec6f62559c336 |
testnet.zip | 0259269be86fbdfce14efe40e99874b95a4a3ed30949463c0cef9e776eb6b1b2 |
geth_linux | b3966d354333bde25c3cb8d6b4f553669f55859047fb11556ba3c32b58214de1 |
geth_mac | 4c421841507810d2a93813c0873d0ee0fc7c9871a50481dc87e0248a003e87df |
geth_windows | 201c0655bf6c8a7da379358eded3b68bcfe90db6f2b55b48849fc92113ae9d4a |
v1.1.3
Release v1.1.3 is a performance improvement release. It introduces diff sync protocol to help nodes sync faster, try to enable it by adding --diffsync
flag to the node. The performance of diff sync depends on how many nodes have enabled it within the network, so it may take weeks to actually take effect.
Changelog
FEATURES
- #431 Export get diff accounts in block api
- #412 add extension in eth protocol handshake to disable tx broadcast
- #376 implement diff sync
Improvement
- #456 git-flow support lint, unit test, and integration testnet.zip
- #449 cache bitmap and change the cache type of GetCode
- #454 fix cache key do not have hash func
- #446 parallel bloom calculation
- #442 ignore empty tx in GetDiffAccountsWithScope
- #426 add block proccess backoff time when validator is not in turn and received in turn block
- #398 ci pipeline for release page
BUGFIX
- #446 fix concurrent write of subfetcher
- #444 fix blockhash not correct for the logs of system tx receipt
- #409 fix nil point in downloader
- #408 core/state/snapshot: fix typo
Assets
Assets | Sha256 Checksum |
---|---|
mainnet.zip | 541028a68a26dc1d0828b144626e8d064ac9d0b6db1ad499700ec6f62559c336 |
testnet.zip | 0259269be86fbdfce14efe40e99874b95a4a3ed30949463c0cef9e776eb6b1b2 |
geth_linux | 646152e9ed610e72c831ad4589729a2142d5e8a9a539e9cfa5dff1d6cca83da2 |
geth_mac | 308e900880c9d7f6f7cb3ca172b85312fdf5713554ea75304822732bbedba1bd |
geth_windows | 1d55ad103d9bb054d12d566cefcada51eacb58cd0013399d428161a1ed904fd3 |
v1.1.2
A hotfix release to patch a vulnerability in the EVM (CVE-2021-39137).
Check ethereum/go-ethereum#23446 to follow the attack vector update.
Changelog
Security
- #379 A pre-announced hotfix release to patch a vulnerability in the EVM (CVE-2021-39137).
Assets
Assets | Sha256 Checksum |
---|---|
mainnet.zip | 541028a68a26dc1d0828b144626e8d064ac9d0b6db1ad499700ec6f62559c336 |
testnet.zip | 0259269be86fbdfce14efe40e99874b95a4a3ed30949463c0cef9e776eb6b1b2 |
geth_linux | 8ba9f4afe6522608144a5fd4d280142cb7e12e244a00158bfee1a58eb78275c4 |
geth_mac | 9f78b4d3bd1655a2fd308bfd7beeec3b6c3b3399f1b24894447f2f41cfedb4cb |
v1.1.1
This release is a bug fix release.
All clients are recommended to upgrade.
CHANGELOG
IMPROVEMENT
- #355 miner should propose block on a proper fork
BUGFIX
- #350 flag: fix TriesInmemory specified but not work
- #358 miner: fix null pending block
- #360 pruner: fix state bloom sync permission in Windows
- #366 fix double close channel of subfetcher
Reducing Storage Occupation
If the storage occupation of the bsc client increasing dramatically, you may consider increasing the TrieTimeout
setting in config.toml.
What does TrieTimeout
means?
The bsc client will keep MPT(Merkle Patricia Tree) in memory. Once the block processing time exceeds the TrieTimeout
, the client will persis MPT into disk. If the client crash, it can recover from recent persisted MPT. Increasing the TrieTimeout
setting will reduce storage occupation, in exchange, it will need more time to recover from a crash.
The default setting before release v1.1.1 is 100000000000, it will persist MPT about every 35 minutes.
We change the default setting to 2000000000000 in this release, it will persist MPT about every 12 hours.
Assets
Assets | Sha256 Checksum |
---|---|
mainnet.zip | fa3984a2e81f92f87448baef6b70c711f64800eda30bb3f38eea9e2d1a270c97 |
testnet.zip | 0259269be86fbdfce14efe40e99874b95a4a3ed30949463c0cef9e776eb6b1b2 |
geth_linux | 9ebf3e8ced77bfefe63d603f5e97a860e302b96443717a8a0e43dabc54fe6582 |
geth_mac | 1de3fd8f5322a94732f2f2b83cf77ff06bb5218a69991890a15e8f1ecf8de7f7 |