Releases: bnb-chain/bsc
v1.1.14
BSC v1.1.14 is a maintenance release that consists of several bug fixes.
Changelog
IMPROVEMENT
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
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
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
Description
Release v1.1.12 is a performance release. the following two features are introduced in this release.
Separate Processing and State Verification.
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
--yolov3
--vm.ewasm
--vm.evm
--rpc
(use --http)--rpcaddr
(use --http.addr)--rpccorsdomain
(use --http.port)--rpcvhosts
(use --http.corsdomain)--rpcapi
(use --http.vhosts)
Added
--dev.gaslimit
Initial block gas limit--sepolia
Sepolia network: pre-configured proof-of-work test network--override.arrowglacier
Manually specify Arrow Glacier fork-block, overriding the bundled setting--override.terminaltotaldifficulty
Manually specify TerminalTotalDifficulty, overriding the bundled setting--rpc.evmtimeout
Sets a timeout used for eth_call (0=infinite)--gpo.ignoreprice
Gas price below which gpo will ignore transactions--metrics.influxdbv2
Enable metrics export/push to an external InfluxDB v2 database--metrics.influxdb.token
Token to authorize access to the database (v2 only)--metrics.influxdb.bucket
InfluxDB bucket name to push reported metrics to (v2 only)--metrics.influxdb.organization
InfluxDB organization name (v2 only)
Changed
--syncemode
removed thefast
mode
Changelog
FEATURE
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
Assets | Sha256 Checksum |
---|---|
mainnet.zip | 6dd6976b9c8d407e95ed99cd46f7badfa410f3f374ea3e360defab0f63fa3ed2 |
testnet.zip | c9c20ceb98911cc3fa7ceda3e5efbf17a3791fdc46f2f6ab13af7ac77f1a65eb |
geth_linux | 4811b0959a1bbd87b97b2d894550561f4296c29630c1d6213398f6955ea0a6e5 |
geth_mac | 15d0c3c94c2ab085f241c8c50b40d786f8f8e63f9307e7e7b1985c97729fb360 |
geth_windows | 74d605f96cba651a272384440128746efc87c341b4c220db00563fa0f2da5964 |
v1.1.11
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
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 |