Releases: bnb-chain/bsc
v1.2.14(Deprecated)
Changelog
BUGFIX
fix: remove sharedPool
Assets
Assets | Sha256 Checksum |
---|---|
mainnet.zip | aeeae3392bd51af57fb1e2eddeefff7e84d58a37f87513495348d82deee5824f |
testnet.zip | bcb79b8731c50ddaa3a5a2e3e92afa4f04b0c04c72b6b37b8a69ecd776304f15 |
geth_linux | 5b06ded57f1bc033feedae8b07500c2c3b49f4f0e75688a1dca4638229ab63fb |
geth_mac | f58bcc3805728e9df3b2a9c89f403187da2c6e722d92a98125b1371fa8746783 |
geth_windows | 00b8d018aa681ad91795f0d5a13afd6bfac0b7adbb00872ea5fdf71b6b317fcb |
geth_linux_arm64 | c3a9cac849620cf59b91b257dd51651ed9d65360dd4baac1d97715a1173fa1ad |
v1.3.1-beta
We will use version control suffix like: "-alpha", "-beta" to show the status of the release.
For this release: v1.3.1-beta, it means this release is basically fine but validators or node operators would better use it cautiously.
Description
Release v1.3.1-beta is another maintenance release, it mainly has these changes:
- 1.Support PBSS
- 2.Performance Improvement, it reduced the validation cost dramatically.
- 3.Dependency upgrade, especially upgrade Golang from v1.19 to v1.20 and several other dependencies.
About PBSS
PBSS stands for: Path-Based-Storage-Scheme, which is used to optimize the MPT trie tree access, to improve its efficiency and also brings the inline state prune. You could refer this post on how it works: Geth Path-Based Storage Model and Newly Inline State Prune
Currently, PBSS is disabled by default, use this new flag to enable it: --state.scheme path
Important
Before use PBSS, you need to make sure your MPT storage in levelDB are already in PBSS format. There are 2 options to get the PBSS storage:
- 1.Full sync from genesis with the flag:
--state.scheme path
. // Not recommend, could take 3 months to catch up the latest block. - 2.Use the converting tool, refer: #1882. // Recommend, could take ~3 days to complete the MPT convert from HashBased to PBSS.
Another thing worth to note is that in the high-pressure situation of the BSC validator scenario, the nodebuffer
disk writing of PBSS will become a performance bottleneck. We have optimized this and made the disk writing operation become asynchronous in the background by using asynnodebuffer
.
Compatibility
PBSS will have a new MPT storage scheme, although it is still based the Key/Value database, like LevelDB. HashBased storage could not use PBSS and vice versa.
Changelog
FEATURE
- #1881 feat: active pbss
- #1882 cmd/geth: add hbss to pbss convert tool
- #1916 feat: cherry-pick pbss patch commits from eth repo in v1.13.2
- #1939 dependency: go version to 1.20 and some dependencies in go.mod
- #1955 eth, trie/triedb/pathdb: pbss patches
- #1962 cherry pick pbss patches from go-ethereum
BUGFIX
- #1923 consensus/parlia: fix nextForkHash in Extra filed of block header
- #1950 fix: 2 APIs of get receipt related
- #1951 txpool: fix a potential crash issue in shutdown;
- #1963 fix: revert trie commited flag after delete statedb mpt cache
IMPROVEMENT
- #1948 performance: commitTire concurrently
- #1949 code: remove accountTrieCache and storageTrieCache
- #1954 trie: keep trie prefetch during validation phase
Assets
Assets | Sha256 Checksum |
---|---|
mainnet.zip | a7e17cbd8533a5735bca57a03fd7519687a6de6f7484e99bcbf1d50721200716 |
testnet.zip | b26fe88ccb52f540a95cbf749503130f6dd38eb8d361b7ef87aaf9ee2d473ed9 |
geth_linux | e946aba5a84351081c4c1bff25e374a5b17c89f1437383b0fe989f0498ba1c77 |
geth_mac | 3b3f020716f9b2b2a1967a9e5f4a181ce79c2c5d7bebee08dcd0b0513d144de8 |
geth_windows | 03ccd2728a1810e6e4fb1a4237d507ba622337b65d16414a1b4c504f328a9cf9 |
geth_linux_arm64 | 72f69b0e6b79cd5ca97d7b791dd985b2ee4f5db13b359360070649cfda998344 |
v1.2.13
Release v1.2.13 is a maintenance release.
It is based on v1.2.12 with only 2 PRs: one is for performance enhancement, the other one is to fix 2 RPC APIs.
It does not contain the large code changes of v1.3.0, so it could be more reliable.
v1.2.13 has great performance improvement to calculate the root hash of some big contracts. Validator and full node operators are suggested to upgrade to this version.
Changelog
IMPROVEMENT
- #1954 performance: keep trie prefetch during validation phase
BUGFIX
Assets
Assets | Sha256 Checksum |
---|---|
mainnet.zip | a7e17cbd8533a5735bca57a03fd7519687a6de6f7484e99bcbf1d50721200716 |
testnet.zip | b26fe88ccb52f540a95cbf749503130f6dd38eb8d361b7ef87aaf9ee2d473ed9 |
geth_linux | 25d8dc6a863409446f1183af18b337859976d6578f98354e3b81c2027fcd2b4d |
geth_mac | 311563a18be604187f94b993b3a6d7074eb4f9255739861148492fa494a8dd26 |
geth_windows | d5a8fd49087701103d48a837dd23aea1d5d9e586788b9402c325bec20899053b |
geth_linux_arm64 | 53c0c3e883b84619e9a87666587e023bbc0a8981c67c50e0e9ffd07bcb2d1b36 |
v1.3.0
Attention
Do not use this version on critical business!!!
This is a maintenance release with huge code changes for upstream catch up.
Although many tests have been done before release, there could still have many potential bugs and need more time to verify its reliability.
It's better to use this version cautiously and it is not recommended to use it on critical business. User can help try it out on some none critical environment and would be appreciated to report issues that you found.
We have already found some performance decline in this release and we will improve it in the following releases.
Usage Changes
** OptionUltraLightFraction
& Noverify
are no longer supported and should be removed from config.toml
** Options of [Eth.Ethash]
are no longer supported and should be removed from config.toml
** Validators need to specify the etherbase address by add this argument on node start up: --miner.etherbase <your coinbase addr>
Changelog
RPC
- internal/ethapi: add debug_getRawReceipts RPC method (#24773)
- node, rpc: add ReadHeaderTimeout config option (#25338)
- rpc: check that "version" is "2.0" in request objects (#25570)
- rpc: support injecting HTTP headers through context (#26023)
- rpc: websocket should respect the "HTTP_PROXY" by default (#27264)
- rpc: change BlockNumber constant values to match ethclient (#27219)
- eth: make debug_StorageRangeAt take a block hash or number (#27328)
- eth,core: add api debug_getTrieFlushInterval (#27303)
- rpc: add limit for batch request items and response size (#26681)
- core/types: support yParity field in JSON transactions (#27744)
- eth/filters: send rpctransactions in pending-subscription (#26126)
Flag
- cmd/geth: rename --whitelist to --eth.requiredblocks (#24505)
- cmd: migrate to urfave/cli/v2 (#24751)
- cmd/utils: print warning when --metrics.port set without --metrics.ad…
- cmd/devp2p: add --extaddr flag (#26312)
- core,eth: adddebug_setTrieFlushInterval to change trie flush frequ
- miner, cmd, eth: require explicit etherbase address (#26413)
- cmd/geth: Add[--log.format] cli param (#27001)
- cmd/geth: rename --vmodule to --log.vmodule (#27071)
- params, trie: add verkle fork management + upgrade go-verkle (#27464)
GraphQL
- graphql: fee history fields (#24452)
- graphql: add rawReceipt field to transaction type (#24738)
- graphql: add raw fields to block and tx (#24816)
- graphql: return correct logs for tx (#25612)
- graphql: add query timeout (#26116)
- graphql, node, rpc: improve HTTP write timeout handling (#25457)
- graphql: implement withdrawals (EIP-4895) (#27072)
Client
- ethclient: add CallContractAtHash (#24355)
- ethclient: add PeerCount method (#24849)
- ethereum, ethclient: add FeeHistory support (#25403)
- eth/filters, ethclient/gethclient: add fullTx option to pending tx fi…
- ethclient: include withdrawals in ethclient block responses (#26778)
Tracer
- eth/tracers/js: drop duktape engine (#24934)
- eth/tracers: add support for block overrides in debug_traceCall (#24871)
- eth/tracers: add onlyTopCall option to callTracer (#25430)
- eth/tracers: remove revertReasonTracer, add revert reason to callTracer
- eth/tracers: add diffMode to prestateTracer (#25422)
- eth/tracers: add multiplexing tracer (#26086)
- core/vm: set tracer-observable value of a delegatecall to match parent
value
- eth/tracers: add native flatCallTracer (aka parity style tracer) (#26…
- eth/tracers/native: set created address to nil in case of failure (#2…
- eth/tracers: report correct gasLimit in call tracers (#27029)
- eth/tracers: addtxHashfield on txTraceResult (#27183)
- eth/tracers: add ReturnData in the tracer's response (#27704)
Command
- cmd/geth: inspect snapshot dangling storage (#24643)
- core/state/snapshot: detect and clean up dangling storage snapshot in generation
- internal/ethapi: add db operations to api (#24739)
- cmd/geth: adddb check-state-contentto verify integrity of trie nodes (#24840)
- ethdb/remotedb, cmd: add support for remote (readonly) databases
- cmd/abigen: accept combined-json via stdin (#24960)
- cmd/geth: extend traverseRawState command (#24954)
- cmd/geth, core/state/snapshot: rework journal loading, implement account-check (#24765)
- cmd/geth: add a verkle subcommand (#25718)
- cmd/geth, cmd/utils: geth attach with custom headers (#25829)
- core/rawdb: refactor db inspector for extending multiple ancient storage
- cmd/clef: addlist-accountsandlist-walletsto CLI (#26080)
- [cmd/clef: add importraw feature to clef (#26058)](17744639dafc...
v1.2.12
Description
Release v1.2.12 is a maintenance release for BSC mainnet and testnet.
It mainly support BootNodes on BSC mainnet, it would be easier for user to sync with the BSC network. User no longer need to setup the StaticNodes
in config.toml any more, just leave empty and make sure delete the BootstrapNodes
field in config.toml, may check the mainnet.zip
of this release.
And it also fixed three bugs to make the node more reliable, not critical bugs, pls check the change log for detail.
You may refer this post on how to use BootNodes: https://forum.bnbchain.org/t/try-bootnodes-after-bsc-release-v1-2-12/1998
Changelog
FEATURE
- #1852 discov: add hardcoded bootnodes
BUGFIX
- #1844 crypto: Update BLST to v0.3.11
- #1854 fetcher: no import blocks before or equal to the finalized height
- #1855 eth/tracers: trace system tx should add intrinsicGas
IMPROVEMENT
Assets
Assets | Sha256 Checksum |
---|---|
mainnet.zip | 4fc78d0a1f2e15764ed2ec72ada5cb3d0e0f2d59fdf873fedd8f5057be8198f1 |
testnet.zip | b26fe88ccb52f540a95cbf749503130f6dd38eb8d361b7ef87aaf9ee2d473ed9 |
geth_linux | fc51b3c67893effa5236cf707495286257bdfa98a024b166c3c540d3b83bb0c7 |
geth_mac | 2d6b016ee594a4b6b891821221ed4a117a95276fee50f9963862b6cf2728954f |
geth_windows | 07f32d1ef3e591273818eb129b4880a3769949dc323b2d43b852b4467e8f149b |
geth_linux_arm64 | 870daa20e25c088748d6f290fb1244ae4bf0a86d9b22707507bf9f63cfd5e914 |
v1.2.11
This is another maintenance release for BSC mainnet and testnet.
It mainly fixed a sync bug, for peers that are lagging behind too much blocks(>90,000), it may not be able to sync.
And it also provides a new option to disable attestation: --disablevoteattestation on some special cases and the option --disablebscprotocol was abandoned.
Changelog
FEATURE
- #1797 client: add FinalizedHeader/Block to use the fast finality
- #1805 vote: remove DisableBscProtocol and add flag to skip votes assmebling
BUGFIX
- #1829 fix: lagging nodes failed to sync
Assets
Assets | Sha256 Checksum |
---|---|
mainnet.zip | 4fc78d0a1f2e15764ed2ec72ada5cb3d0e0f2d59fdf873fedd8f5057be8198f1 |
testnet.zip | b26fe88ccb52f540a95cbf749503130f6dd38eb8d361b7ef87aaf9ee2d473ed9 |
geth_linux | 5829efd0f866ec2726c260f4c840bcfecb9faff36257a0ff62b0f5a50346a75d |
geth_mac | 3f22170b5e2f3eefcea45f7709c800a291c294bd7e38656aac7254629db83cdb |
geth_windows | 480b7a3bc48712d34424cef8dddd1a95a0e16793fea762579b7fdb136cef3c53 |
geth_linux_arm64 | 714a0160dc17963343002eb9dfa8a3ea9b31db63aac534899d88deec3ad9c221 |
v1.2.10
Description
Release v1.2.10 is a maintenance release for BSC mainnet and testnet.
It fixed one bug for bootnode and two bugs for FastFinality feature. And it did some enhancement to FastFinality feature, like less log, attestation check, new RPC API and a tool to decode the BlockHeader.extra.
Validators are encouraged to use this version, other full node operators can skip this version if they have already upgraded to v1.2.9
Changelog
FEATURE
- #1780 log: reduce logs when receiving too much votes from a peer
- #1788 metrics: add txpool config into metrics server
- #1789 rpc: add GetFinalizedHeader/Block to simplify using the fast finality feature
- #1791 finality: add more check to ensure result of assembleVoteAttestation
- #1795 tool: add a tool extradump to parse extra data after luban
BUGFIX
- #1773 discov: do not filter out bootnodes
- #1778 vote: backup validator sync votes from corresponding mining validator
- #1784 fix: exclude same votes when doing malicious voting check
Assets
Assets | Sha256 Checksum |
---|---|
mainnet.zip | 4fc78d0a1f2e15764ed2ec72ada5cb3d0e0f2d59fdf873fedd8f5057be8198f1 |
testnet.zip | b26fe88ccb52f540a95cbf749503130f6dd38eb8d361b7ef87aaf9ee2d473ed9 |
geth_linux | 01c226683d0aa6ff1523d159c4c7bc8edfa8b382b97d7cd9909ac82c5581fc3a |
geth_mac | b5432157db60a2360e1b5453c9c77a516ee484bca005ac02fa0fd4f05780a91f |
geth_windows | 2f7a011118c394079d1c389b50561c780eb876fafe3d6900d3b4cd4c7234bfdb |
geth_linux_arm64 | ab3a07fc9153116a26d802c63e411d58adc2b681d50069b854f89dc6b1088465 |
v1.2.9
Attention
Important: For validators, please follow the steps to setup your vote key to enable fast finality: How To Set Up The Vote Key
Description
It is a hard-fork release for BSC mainnet.
It sets up the hard fork height for both Plato and Hertz(Berlin,London).
The two hard forks have been running on Testnet for a while and their hard fork height are close, so we decide to put them within a single release to save the upgrade effort.
For the detail changes of the two hard fork, pls refer: https://forum.bnbchain.org/t/bnb-chain-upgrades-mainnet/936
The validators and full node operators on mainnet should switch their software version to v1.2.9 before Aug-10th-2023.
Plato
The mainnet is expected to have a scheduled hardfork upgrade named Plato at block height 30,720,096. The current block generation speed forecasts this to occur around Aug-10th-2023.
The Plato hardfork includes 1 BEPs:
- BEP-126: Introduce Fast Finality Mechanism, the 2nd part.
Hertz
The mainnet is expected to have 3 scheduled hardfork upgrades named (Hertz, London, Berlin)
at same block height 31,302,048. The current block generation speed forecasts this to occur around Aug-30th-2023.
The Hertz
hardfork will port some of London&Berlin
upgrades from Ethereum to BSC for compatiblity. But due to the difference between the 2 networks, there would inevitably has difference in implementation, especially the difference in EIP-1559, the BaseFee will be zero on BSC, so this hard fork will neither introduce new burn mechanism nor the concept of GasTip. In short words, it only provides the interface, but actually no change to the current BSC Gas mechanism.
Here is the list of Hertz
upgrade:
-
Berlin Upgrades Ported:
a.BEP-225: Implement EIP-2565 ModExp Gas Cost
b.BEP-229: Implement EIP-2718 Typed Transaction Envelope
c.BEP-230: Implement EIP-2929 Gas cost increases for state access opcodes
d.BEP-231: Implement EIP-2930: Optional access lists -
London Upgrades Ported:
a.BEP-227: Implement EIP-3198: BASEFEE opcode
b.BEP-226: Implement EIP-1559 with base fee of 0
c.BEP-228: Implement EIP-3541: Prevent deploying contracts starting with 0xEF
d.BEP-212: Implement EIP-3529: Reduction in Refunds
There are many changes with these BEPs, DApp developers & users needs to make sure they clearly understand these changes and the potential impact to their business.
- New transaction types are supported, i.e. AccessList & DynamicFee(1559), by BEP-229, BEP-231, BEP-226
- The gas metering mechanism has been changed, by BEP-225, BEP-230, BEP-212;
- New EVM opcode(BASEFEE) is supported, by BEP-227
- Prevent deploying contracts starting with 0xEF, by BEP-228
Change Log
FEATURE
- #1735 log: added option to rotate logs based on number of hours with a maximum of 24
- #1727 discov: increase bucket size for bootnodes
- #1739 eth/tracers: add multiplexing tracer
- #1775 upgrade: several hardfork block height on mainnet: Plato, Hertz(Berlin, London)
BUGFIX
- #1741 fix: defend ddos voting attack with other mini fix according to audit
IMPROVEMENT
- #1725 log: uncomment some trace log
Assets
Assets | Sha256 Checksum |
---|---|
mainnet.zip | 4fc78d0a1f2e15764ed2ec72ada5cb3d0e0f2d59fdf873fedd8f5057be8198f1 |
testnet.zip | b26fe88ccb52f540a95cbf749503130f6dd38eb8d361b7ef87aaf9ee2d473ed9 |
geth_linux | fbbf6e6f0abef96cd2cf230afaef1656929e2ee2b78adc901e0dfbecd254b0fc |
geth_mac | c8837921878b13efe933cf6033609da82f2bd3796cc613e005a2f50c7c9f1e47 |
geth_windows | a19a6863b4158f1797a5eef24bc59f5b0cbe4943f7d35530c4b9b4c2bb187aa5 |
geth_linux_arm64 | 6eda77dc7422b79581d14d65e4647a1913818f919fd94dba9feffd5232f3df25 |
v1.2.8
v1.2.8 is a maintenance release, it mainly fixes a potential deadlock on FastFinality VotePool and provides 2 other features(FastFinality & Web3 API related).
Changelog
FEATURE
- #1626 eth/filters, ethclient/gethclient: add fullTx option to pending tx filter
- #1726 feat: support password flag when handling bls keys
BUGFIX
- #1734 fix: avoid to block the chain when failed to send votes
Assets
Assets | Sha256 Checksum |
---|---|
mainnet.zip | 4fc78d0a1f2e15764ed2ec72ada5cb3d0e0f2d59fdf873fedd8f5057be8198f1 |
testnet.zip | b26fe88ccb52f540a95cbf749503130f6dd38eb8d361b7ef87aaf9ee2d473ed9 |
geth_linux | 903f2dc9a4621de36c24eebdad0e152443dc01838c60b5fa0ce4160e0465ed2e |
geth_mac | 8d03b99de532359fe3d695eaa4b6fce3baa35ea158499e990a72e9480cde1164 |
geth_windows | 51ce63c885452bf5899bcbaacd33437592a4dcd891d71da8bf665e7c37c453ad |
geth_linux_arm64 | 4555afd19eb298d082859bd4c58caa4beedfa8b4f4ac6ac0fa27f8b4a23815e6 |
v1.2.7
Attention
- SELFDESTRUCT will no longer be refunded
- There are 3 hard forks, node operators need to set them up at the same fork height, i.e.
BerlinBlock = 31103030
,LondonBlock = 31103030
,HertzBlock = 31103030
Description
v1.2.7 is a hard-fork release for BSC testnet.
The testnet is expected to have 3 scheduled hardfork upgrades named Hertz, London, Berlin)
at same block height 31,103,030. The current block generation speed forecasts this to occur around 29th Jun 2023.
The validators and full node operators on testnet should switch their software version to v1.2.7 before 29th Jun 2023.
The Hertz
hardfork will port some of London&Berlin
upgrades from Ethereum to BSC for compatiblity. But due to the difference between the 2 networks, there would inevitably has difference in implementation, especially the difference in EIP-1559, the BaseFee will be zero on BSC, so this hard fork will neither introduce new burn mechanism nor the concept of GasTip. In short words, it only provides the interface, but actually no change to the current BSC Gas mechanism.
Here is the list of Hertz
upgrade:
-
Berlin Upgrades Ported:
a.BEP-225: Implement EIP-2565 ModExp Gas Cost
b.BEP-229: Implement EIP-2718 Typed Transaction Envelope
c.BEP-230: Implement EIP-2929 Gas cost increases for state access opcodes
d.BEP-231: Implement EIP-2930: Optional access lists -
London Upgrades Ported:
a.BEP-227: Implement EIP-3198: BASEFEE opcode
b.BEP-226: Implement EIP-1559 with base fee of 0
c.BEP-228: Implement EIP-3541: Prevent deploying contracts starting with 0xEF
d.BEP-212: Implement EIP-3529: Reduction in Refunds
There are many changes with these BEPs, DApp developers & users needs to make sure they clearly understand these changes and the potential impact to their business.
- New transaction types are supported, i.e. AccessList & DynamicFee(1559), by BEP-229, BEP-231, BEP-226
- The gas metering mechanism has been changed, by BEP-225, BEP-230, BEP-212;
- New EVM opcode(BASEFEE) is supported, by BEP-227
- Prevent deploying contracts starting with 0xEF, by BEP-228
Changelog
FEATURE
- #1697 upgrade: block height of Hertz(London&Berlin) on testnet
- #1686 eip3529tests: refactor tests
- #1676 EIP-3529 (BEP-212) Unit tests for Parlia Config
- #1660 feat: add a tool for submitting evidence of maliciousvoting
- #1623 P2P: try to limit the connection number per IP address
- #1608 feature: Enable Berlin EIPs
- #1597 feature: add malicious vote monitor
- #1422 core: port several London EIPs on BSC
- #1717 feat: support creating a bls keystore from a specified private key
- #1720 metrics: add counter for voting status of whole network
IMPROVEMENT
- #1662 consensus, core/rawdb, miner: downgrade logs
- #1654 config: use default fork config if not specified in config.toml
- #1642 readme: update the disk requirement to 2.5TB
- #1621 upgrade: avoid to modify RialtoGenesisHash when testing in rialtoNet
BUGFIX
- #1682 fix: set the signer of parlia to the most permissive one
- #1681 fix: not double GasLimit of block upon London upgrade
- #1679 fix: check integer overflow when decode crosschain payload
- #1671 fix: voting can only be enabled when mining
- #1663 fix: ungraceful shutdown caused by malicious Vote Monitor
- #1651 fix: remove naturally finality
- #1641 fix: support getFilterChanges after NewFinalizedHeaderFilter
- #1645 lightclient: fix validator set change
Assets
Assets | Sha256 Checksum |
---|---|
mainnet.zip | 13563cb06b18accd4b3b9df43ca94ffcef56992c56dc479c9bfe4a74ab72caba |
testnet.zip | 9a81824dfdfae976edceee646691fb8ed262f4d5adbff74f444770da5e2793e5 |
geth_linux | 798ffe167895d2998e2e4a482a5c0364032fa917f53b6e8446f3f2ccad00ce4e |
geth_mac | bf0d477989790aa137155146e072c02e928bd1526ee1b5ed8721b10e9ed6f79e |
geth_windows | c2015fafbd83dc5b1c1374fce1b667bcb20c52aefea299c9ba2dcadde9d152b5 |
geth_linux_arm64 | a7e3a7db7ffa4eb464ae850305ba9f5b9a44277ea34c1cefe33034c454332a29 |