Releases: bnb-chain/bsc
v1.6.6
This release ports critical security fixes from go-ethereum v1.16.8, resolving two P2P vulnerabilities.
We have already deployed this version to our internal RPC nodes for verification. We expect to complete the final stability checks and issue a formal community-wide upgrade notification this coming Monday(Jan. 19th).
Upgrade Instructions
From v1.6.x: A simple binary replacement is sufficient.
From v1.5.x: Please refer to the v1.6.5 Release Announcement for specific migration steps.
Changelog
BUGFIX
core/txpool: drop peers on invalid KZG proofs
crypto/ecies: use aes blocksize
Assets
| Assets | Sha256 Checksum |
|---|---|
| mainnet.zip | 522cb9902437df2368008b28bebb6b5c35ec026bf2ec41af40117ff507f53fa7 |
| testnet.zip | 0d9de8b7f1bafc36711eed80e97bf33f906fadc2ceb5457361645941d7ad19f7 |
| geth_linux | fbdb8ef71be5cb392e689a8d54dea10667feaaa03d2889173263a0dd209877e0 |
| geth_mac | 50c1144d2d48c20c5f3f2896e7f4878ef6df26e41910248684de1a6a1b9f8fd7 |
| geth_windows | 31f620d87d02d167ae443387ccc92b8c8995786116d4573c50080012d46adf4d |
| geth_linux_arm64 | 6ebd4b8fcfc6fe0a141df8d445fccdc2d5b25ea321763cfd59f06a5597ce7105 |
v1.6.5
v1.6.5 is a maintenance release that introduces an optional gas limit cap for transactions.
Changelog
FEATURE
#3488 miner: optional transaction gas limit cap
IMPROVEMENT
#3483 feat: remove the handshake from the bsc protocol
#3486 feat: update filtermaps checkpoints
Notice regarding upgrade from v1.5.x to v1.6.5
Snapshot Regeneration
The upgrade will trigger snapshot regeneration. Please expect reduced node performance until this process finishes. On our reference hardware (8-core AMD EPYC 7R13, 32GB RAM, SSD), regeneration took approximately 5 hours.
Log Indexing
v1.6.x introduces a new log indexing mechanism. For v1.6.5, the index is constructed starting from block 71,126,721. This operation consumes significant CPU resources, and the node may appear unresponsive during startup. If you do not need the full index, add the flag --history.logs 576000 to limit indexing to the last 3 days, or disable it entirely using --history.logs.disable.
Assets
| Assets | Sha256 Checksum |
|---|---|
| mainnet.zip | ce8507bfff1ed585777d248794a4a8f5142b8f2414600a369410b370da261744 |
| testnet.zip | 0d9de8b7f1bafc36711eed80e97bf33f906fadc2ceb5457361645941d7ad19f7 |
| geth_linux | f2ede52daf7a011494d28ff24bfa4c96c8b74e52239a0d1f024190ce9c666f18 |
| geth_mac | a3f5c75c29e39e320d46be3be2cf19b85b1b82f333eef8c3ac0f4fdf23c62230 |
| geth_windows | 088ecd85fcacd613856d312286f80a7eec359fc25528af558381d4de5bf10fa7 |
| geth_linux_arm64 | 269af3615bfd0d499d0d4cc52a1834402bd8d0f3d203db8990249c6872b820a7 |
v1.6.4-feature-BAL7928
Description
This is an experimental feature release based on v1.6.4, with binary version: v1.6.102.
This feature release implemented the none consensus based Block-Access-List. It is based on EIP-7928 and using the non-consensus method, which similar to BEP-592
Deviations from EIP-7928:
- Consensus-level changes were removed, include BAL hash in block header.
- BALs now transfer only via the block propagation payload (ETH/BSC P2P messages) to help peers import blocks faster.
- If the BAL-driven parallel execution path fails (missing data, validation mismatch, etc.), the importer falls back to the legacy serial execution pipeline to guarantee correctness, so enabling BAL never jeopardizes block processing.
The feature is disabled by default, to try it, you may add this flag: --experimental.bal.
Kindly note that our current implementation shows an approximate 18.6% performance improvement in average mgas/s within our local test environment. However, the actual benefits are contingent upon the complete upgrade of the entire network to support BAL; otherwise, your node will not receive blocks with BAL, resulting in no performance gain. We believe there is significant potential to further enhance this feature and achieve even greater performance improvements in the future. For more information, pls refer: https://www.bnbchain.org/en/blog/boosting-bnb-smart-chain-performance-with-block-access-list
Change Log
Assets
| Assets | Sha256 Checksum |
|---|---|
| mainnet.zip | ce8507bfff1ed585777d248794a4a8f5142b8f2414600a369410b370da261744 |
| testnet.zip | 0d9de8b7f1bafc36711eed80e97bf33f906fadc2ceb5457361645941d7ad19f7 |
| geth_linux | 54168bee96720ab3f2db6d3c48485af351220b73944e9f5dc6ffd2e6fe0c5683 |
| geth_mac | a3962e6911657488d60724274708fafac2b3deaa5d185663d0326c3109ee664e |
| geth_windows | 30fc067e5e9fddf66a846f2a9ebbf969479e03bf20376aec432c0a532cd49db1 |
| geth_linux_arm64 | e8e2e32fb040a7eef1e3fadf5f12e708f354f399f24999a706aff3e013eacb73 |
v1.6.4
v1.6.4 is the release for the BSC Mainnet Fermi hard fork, which is expected to be activated at 2026-01-14 02:30:00 AM UTC. All BSC Mainnet nodes must upgrade to v1.6.4 before the hard fork time. Upgrading from v1.6.3 only requires a binary replacement.
v1.6.4 includes two BEPs, primarily aimed at reducing the block interval from 0.75 seconds to 0.45 seconds:
- BEP-619: Short Block Interval Phase Three: 0.45 Seconds
- BEP-590: Extended Voting Rules for Fast Finality Stability
In addition to the block interval reduction, several other key parameters will be updated.
Please refer to BEP-619: Parameter Changes for details.
Beyond the hard-fork-related changes, this release also includes multiple improvements and bug fixes.
For the full list, please refer to the changelog below.
Changelog
FEATURE
- #3466 config: update BSC Mainnet hard fork time: Fermi
- #3454 eth: support fetching commit ID information from extra data
BUGFIX
- #3448 TxPool: revert transaction lifetime back to 3 hours
- #3457 cmd/geth: remove support for the
multidatabaseflag - #3467 go.mod: downgrade bls-eth-go-binary to restore Windows compatibility
IMPROVEMENT
- #3445 eth: improve prefetching by using cached reader
- #3459 feat: implement auto-unsubscribe for
transactionReceipts - #3468 metric: add metric for vote count
Notice regarding upgrade from v1.5.x to v1.6.4
Snapshot Regeneration
The upgrade will trigger snapshot regeneration. Please expect reduced node performance until this process finishes. On our reference hardware (8-core AMD EPYC 7R13, 32GB RAM, SSD), regeneration took approximately 5 hours.
Log Indexing
v1.6.x introduces a new log indexing mechanism. For v1.6.4, the index is constructed starting from block 59,484,738. This operation consumes significant CPU resources, and the node may appear unresponsive during startup. If you do not need the full index, add the flag --history.logs 345600 to limit indexing to the last 3 days, or disable it entirely using --history.logs.disable.
Assets
| Assets | Sha256 Checksum |
|---|---|
| mainnet.zip | ce8507bfff1ed585777d248794a4a8f5142b8f2414600a369410b370da261744 |
| testnet.zip | 0d9de8b7f1bafc36711eed80e97bf33f906fadc2ceb5457361645941d7ad19f7 |
| geth_linux | c02e80e483c73d1e805856f72205a777c03699e4ecb8b1b87c72586d309c4fb6 |
| geth_mac | daf11f9591ab6b4666b1b0be8041bfde0c26f2b1cf4aba83f0c9589a197b1fef |
| geth_windows | 4e2f2633c632df9c8d4e90263da331f067b45646f8c98a4f5c364626228a87a5 |
| geth_linux_arm64 | 45234dca7c564c1b40ef09c4a9321a4eca6d3a98273438cc9c5ed64a14c8bb8b |
v1.6.3
Description
v1.6.3 is a maintenance release, which fixes 2 RPC issues and with several enhancements, pls refer change log for detail.
ChangeLog
FEATURE
NA
BUGFIX
#3429 build(deps): bump github.com/consensys/gnark-crypto
#3433 internal/ethapi: fix eth_simulateV1
#3431 eth/tracers: fix crasher in TraceCall with BlockOverrides
IMPROVEMENT
#3436 revert: revert the nano check in parlia
#3435 eth: fix stuck when handleBlockBroadcast
Assets
| Assets | Sha256 Checksum |
|---|---|
| mainnet.zip | ce8507bfff1ed585777d248794a4a8f5142b8f2414600a369410b370da261744 |
| testnet.zip | 0d9de8b7f1bafc36711eed80e97bf33f906fadc2ceb5457361645941d7ad19f7 |
| geth_linux | 25abae5a3ca0804fb153a2eeaac30fb9dd4713dd5310e4d4f3b023fa2d41fc3a |
| geth_mac | 12a82a56cc4dfb67ba0bbb78af7e3e4a6248f71b5bc3d4b7bb655e04d22723df |
| geth_windows | 3fe0727c6ec217cebbfcb77cbe075454f1251cc62424d26589ff1e0a4ff6f4d7 |
| geth_linux_arm64 | df6cbc552a6432ecf3733ba6c38c1d0e7d0856f552ad020be86c9309c217bc17 |
v1.6.2
Description
v1.6.2 is for BSC testnet Fermi hardfork: Fermi. Fermi hard fork is a critical upgrade to further reduce block interval from 750ms to 450ms, so users will have even better experience. Here is the list of Fermi BEPs:
- BEP-590: Extended Voting Rules for Fast Finality Stability
- BEP-619: Short Block Interval Phase Three: 0.45 Seconds
- BEP-592: Non-Consensus Based Block-Level Access List
- BEP-593: Incremental Snapshot
- BEP-610: Implement EVM Super Instruction
Here is the timeline of BSC Fermi hard fork
- Testnet: 2025-11-10 02:25:00 AM UTC
- Mainnet: TBD
Besides the BEPs, v1.6.2 also include several improvements for miner, MEV and performance, and also includes two new features. Here is the description of the two new features:
- new websocket RPC filter API for transaction receipts. (#3363)
- new configuration "ProxyedNodeIds" to improve block propagation efficiency.(#3417)
Compatibility
- flag
--light.**was removed, include: --light.egress, --light.ingress, --light.maxpeers, --light.nopruning, --light.nosyncserve, --light.serve
ChangeLog
FEATURE
#3363 websocket: add transactionReceipts for receipts notification
#3367 BEP-619: Short Block Interval Phase Three: 0.45 Seconds
#3368 BEP-590: Extended Voting Rules for Fast Finality Stability
#3374 Implement BEP-592: Non-Consensus Based Block-Level Access List
#3372 core/systemcontracts: define fermiUpgrade
#3390 feat: implement incremental snapshot
#3395 feat: EVM execution opcode level optimization
#3400 consensus/parlia: set kAncestorGenerationDepth to 3 in BEP-590
#3397 consensus/parlia: fix updateAttestation&improve assembleVoteAttestation
#3417 p2p: define ProxyedNodeIds in Config
BUGFIX
#3373 ethapi: reject oversize storage keys before hex decode
IMPROVEMENT
#3388 miner/minerconfig: update config to adapt 100M gaslimit
#3404 miner: validator not inturn backoff before mining
#3407 fix: change lock to read lock in legacy pool
#3415 eth: broadcast votes to evn peers regardless of deltaTdThreshold
#3416 cmd/geth: improve config for sentry nodes when init network
#3419 miner: use latest block as pending block for simplicity
#3426 eth: increase the delta td threshold to broadcast votes
Assets
| Assets | Sha256 Checksum |
|---|---|
| mainnet.zip | ce8507bfff1ed585777d248794a4a8f5142b8f2414600a369410b370da261744 |
| testnet.zip | 9f79a1b6ea0751fbd516bc213a64c3efc802321b6cdae020e60964c7688de55c |
| geth_linux | 4434ccec0cb7db38766fa240e595e9add00642b36b8bee16fe71e62e8066d209 |
| geth_mac | 938d85e262f1642b662874f3f195f2418f96dc43f5095890c01304846e8997b1 |
| geth_windows | a935ebdf79a3c51d54c16f43f89477a0b933fbac219be541cfeefc0ff178c0c8 |
| geth_linux_arm64 | f4efcdca6d988db53ecd8aab33fe70fc7786aefc80537ba2da4dfa6e767fd275 |
v1.6.1-beta-feature-ScalableDB
Description
This is an experimental feature release based on v1.6.1-beta, with binary version: v1.6.101.
v1.6.1-beta-feature-ScalableDB introduces a multi-database architecture (scalaledb) that divides chaindata into four separate stores which includes BlockDataBase(with meta), TrieDataBase, SnapDataBase and IndexDataBase according to data schema . Scalaledb provides stronger storage scalability. Different DBs can be allocated customized resources and tuned configurations. In particular, databases can compact independently, avoiding interference and improving read performance under heavy I/O.
Run
Run geth from genesis with "multidatabse" flag:
./geth --config config.toml --datadir data-seed init --multidatabase genesis.json
If you run geth from snapshot, you need to use migrate tool to convert an existing snapshot to the scalaledb layout with
./geth -datadir <your-data-dir> db migrate . You can directly start after migration , no additional flags are required if your snapshot has already been migrated.
Performance Test Results:
In large-scale simulated benchmarks, Multi-DB improves Geth block sync performance by ~3.8%. Starting from the same block height, after seven days of syncing, the Multi-DB node was ahead by ~200,000 blocks.
Change Log
Assets
| Assets | Sha256 Checksum |
|---|---|
| mainnet.zip | ce8507bfff1ed585777d248794a4a8f5142b8f2414600a369410b370da261744 |
| testnet.zip | 9f79a1b6ea0751fbd516bc213a64c3efc802321b6cdae020e60964c7688de55c |
| geth_linux | 38199d57b22f5c87dcd974e9083f3457ff65ff2deb41625ce4fb14f86946effb |
| geth_mac | 3f74cec7974d611266f69a71728f5e3e8727c8566237536cc154ef0a5fb1a363 |
| geth_windows | 9b5ee986e87eb9632fdbecb81fe968a3eb276c884e1c8b76d1b379ca1d94df81 |
| geth_linux_arm64 | 0830d90c31678f6f4b351259c6bd76ea4c580fe8bacbda4988150bc92c9e1e3e |
v1.6.1-beta-feature-BAL
Description
This is an experimental feature release based on v1.6.1-beta, with binary version: v1.6.100. The suffix "-BAL" stands for "Block Access List.".
v1.6.1-beta-feature-BAL implements BEP-592: Non-Consensus Based Block-Level Access List to enhance block execution performance. This implementation introduces a Block Access List (BAL) feature that tracks account and storage access during transaction execution, enabling efficient prefetching of state data.
Try BAL:
As an experimental feature, BAL is disabled by default. It can be enabled by running with the flag --enablebal, or by updating the config.toml file as follows:
...
[Node]
EnableBAL = true
...
Since validators produce the BAL, they need to be upgraded first. The connected full nodes can then retrieve the BAL data to accelerate their synchronization performance.
Performance Test Results:
- Block import performance increased by approximately 15%, with potential improvements of nearly 20% for I/O-heavy blocks.
- CPU usage reduced by ~30%, as Tx prefetch would be replaced BAL.
- The size of the BAL is about 40% of the block size. For a block with a 75M GasLimit, the block could be around 270KB, while the BAL would be approximately 110KB.
Change Log
Assets
| Assets | Sha256 Checksum |
|---|---|
| mainnet.zip | ce8507bfff1ed585777d248794a4a8f5142b8f2414600a369410b370da261744 |
| testnet.zip | 9f79a1b6ea0751fbd516bc213a64c3efc802321b6cdae020e60964c7688de55c |
| geth_linux | fd6a07786f0b85da3c74a2b9c30c6e34dc74dc54eaf8e1911eb1d66ad19e6d65 |
| geth_mac | e8215847b2895447c21422e2acc6bc4b4d65ba009c16cef92a5832b6afda04bb |
| geth_windows | 7a5ec73a044675478668496ad64b087b112827cfe6aa13c1d459249e4c2a0335 |
| geth_linux_arm64 | a8d2687ba9cc9858ebad9f81f3112d535172a272e1ab7d1b4f82c35ebf27e7ea |
v1.6.1-beta
Description
v1.6.1-beta is a maintenance preview release, which fixes several issues of the v1.6.0-alpha, it is more reliable, so mark it as beta stage.
This release has no new feature, no breaking changes, only some bugfix and improvements, pls refer change log for detail.
ChangeLog
FEATURE
NA
BUGFIX
#3336 miner: avoid to commit a bid twice
#3347 fix: discovery AyncFilter deadlock on shutdown
#3340 core: rework fast node
IMPROVEMENT
#3337 eth/pebble: use NoSync as write mode
#3332 FilterMap: update bsc checkpoint file
#3324 eth/downloader: remove InsertHeaderChain to improve sync speed
#3319 core/rawdb: remove func AncientOffSet and ItemAmountInAncient
#3346 cmd/geth: remove subcmd hbss2pbss and insecure-prune-all
#3354 freezer: add debug log for out of bounds access
#3340 core: rework fast node
#3348 core/rawdb: align more code with upstream
#3361 cmd/utils: set journalfile default to true
Assets
| Assets | Sha256 Checksum |
|---|---|
| mainnet.zip | ce8507bfff1ed585777d248794a4a8f5142b8f2414600a369410b370da261744 |
| testnet.zip | 9f79a1b6ea0751fbd516bc213a64c3efc802321b6cdae020e60964c7688de55c |
| geth_linux | 0df5780112028f18c50b9fc8d623b03d26d207ca86e3485f504b1367872a0a72 |
| geth_mac | 2630b7cd851de157bc1432ff99d6fb8786d49e6ea056110ee61cc5d4c64877c4 |
| geth_windows | e53fff9f2d60a66a58ff159c172e014757f7fdea8328f7f76d5e8d553755e823 |
| geth_linux_arm64 | 7b6147f76c53bf3ddd28c9b12ea6b88df183d7ab7d2c056935af0a406d417fb6 |
v1.6.0-alpha-feature-incr-snapshot
Description
This is an experimental feature release based on v1.6.0-alpha, the "-incr-snapshot" suffix stands for "incremental snapshot".
v1.6.0-alpha-feature-incr-snapshot implements BEP-593: Incremental Snapshot
Incremental Snapshot mechanism makes it easier for users to start and run BSC nodes with reduced data requirements. By implementing this feature, users will be able to bootstrap their nodes more efficiently while maintaining the necessary functionality for participating in the BSC network.
- For enabling incremental snapshot generation:
geth --config config.toml --datadir ./data/ --cache 8000 --rpc.allow-unprotected-txs --history.transactions 0 --syncmode full --db.engine=pebble --state.scheme=path --incr.enable --incr.block-interval=806400 --incr.datadir ./incr/ --incr.state-buffer=1073741824 --incr.kept-blocks=1024 --mainnet --history.blocks=360000- For downloading and merging incremental snapshot:
geth --config config.toml --datadir ./data/ --cache 8000 --rpc.allow-unprotected-txs --history.transactions 0 --syncmode full --db.engine=pebble --state.scheme=path --incr.use-remote --incr.remote-url https://download.snapshots.bnbchain.world/mainnet-geth-pbss-incr --incr.datadir ./store-incr/ --mainnet --history.blocks=360000Changelog
Assets
| Assets | Sha256 Checksum |
|---|---|
| mainnet.zip | ce8507bfff1ed585777d248794a4a8f5142b8f2414600a369410b370da261744 |
| testnet.zip | 9f79a1b6ea0751fbd516bc213a64c3efc802321b6cdae020e60964c7688de55c |
| geth_linux | f49c6f5740c22dd86ab383acc2797e310915c8e389a78d14a9b6945e880d904a |
| geth_mac | 03330426f8248caee08be5aa1b9d35b0051162743c7bb12e44a08fd942f40b55 |
| geth_windows | 38c15e0e8e979fa1ceb6fb8c1504ee79281dd3bde08860808deea65865228eef |
| geth_linux_arm64 | 03d0624499e95a2107433a40f82763c5cab9abb94f52ba2a0802ed881c485770 |