Skip to content

Releases: bnb-chain/bsc

v1.1.4

02 Nov 06:18
30972a7
Compare
Choose a tag to compare

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

  • #472 add metrics for contract code bitmap cache
  • #473 fix ci test flow

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

20 Oct 04:15
b6035c1
Compare
Choose a tag to compare

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

31 Aug 02:50
c4f9312
Compare
Choose a tag to compare

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

13 Aug 02:48
03f7b31
Compare
Choose a tag to compare

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

v1.1.1-beta

29 Jul 11:03
69ce7f1
Compare
Choose a tag to compare

Description

Please note this is just a beta version, some known bug fix is on the way. v1.1.1-beta is released which has better performance in order to handle the high volume. Please feel free to upgrade and raise bug reports onto the github.

Sync Faster

For nodes that need block sync as fast as possible, we highlight the suggested hardware here:

For validator:

  • 2T GB of free disk space, solid-state drive(SSD), gp3, 8k IOPS, 250MB/S throughput, read latency <1ms
  • 12 cores of CPU and 48 gigabytes of memory (RAM)
  • m5zn.3xlarge instance type on AWS, or c2-standard-8 on Google cloud.
  • A broadband Internet connection with upload/download speeds of 10 megabyte per second

For fullnode:

  • 1T GB of free disk space, solid-state drive(SSD), gp3, 3k IOPS, 125MB/S throughput, read latency <1ms. (if start with snap/fast sync, it will need NVMe SSD)
  • 8 cores of CPU and 32 gigabytes of memory (RAM).
  • c5.4xlarge instance type on AWS, c2-standard-8 on Google cloud.
  • A broadband Internet connection with upload/download speeds of 5 megabyte per second

Snapshot

if you want to setup a node without syncing, or replace the heavy data with light one, please refer to our latest snapshot page

Changes

*#333 improve block fetcher efficiency
*#326 eth/tracers: improve tracing performance
*#257 performance improvement in many aspects

v1.1.0

26 Jul 06:33
7822e9e
Compare
Choose a tag to compare

Description

This is a stable version based on v1.1.0-beta.

Changes

#282 update discord link
#227 use more aggressive write cache policy, and fix ungraceful shutdown issue

v1.1.0-beta

10 May 09:27
032970b
Compare
Choose a tag to compare

Description

This is a beta release that merges with go-ethereum v1.10.3.

Changes

Snapshots

Snapshots are an acceleration data structure on top of the Ethereum state, that allows reading accounts and contract storage significantly faster. The snapshot feature reduces the cost of accessing an account from O(logN) to O(1).

Though snapshots have enormous benefits, there are certain costs to them:
A snapshot is a redundant copy of the raw Ethereum state already contained in the leaves of the Merkle Patricia trie so it requires an additional disk overhead.
Since nobody has snapshots constructed in the network yet, nodes will initially need to bear the cost of iterating the state trie and creating the initial snapshot themselves. This might take a day to a week but you only need to do it once in the lifetime of your node.

Snapshot feature is enabled by default, you can disable it via --snapshot=false.

Snap sync

Now you have two different ways to synchronize the BSC network: full sync and fast sync. Full sync operated by downloading the entire chain and executing all transactions; fast sync placed an initial trust in a recent-ish block, and directly downloaded the state associated with it (after which it switched to block execution like full sync).

For fast sync, it needs to download the trie nodes one by one. So it will take time to download all the nodes if there are millions of nodes. And for the serving peers, they need to traverse all the nodes and it also takes time.

Snap sync is designed to solve the fast sync problems. The core idea is instead of downloading the trie node-by-node, snap sync downloads the contiguous chunks of useful state data, and reconstructs the Merkle trie locally.

You can manually enable snap sync via --syncmode=snap. Note: usually it will need one or two weeks until there is enough client upgrade to the version with snap enabled, you may use snap sync after that.

Offline pruning

If you have snapshots enabled and fully generated, Geth can use those as an acceleration structure to relatively quickly determine which trie nodes should be kept and which should be deleted. Pruning trie nodes based on snapshots does have the drawback that the chain may not progress during pruning. This means that you need to stop Geth, prune its database and then restart it.

Execution time wise, pruning takes a few hours (greatly depends on your disk speed and accumulated junk), one third of which is indexing recent trie nodes from snapshots, one third deleting stale trie nodes and the last third compacting the database to reclaim freed up space. At the end of the process, your disk usage should approximately be the same as if you did a fresh sync.

To prune your database, please run geth snapshot prune-state.

Note: You need to upgrade the client and run for a while before prune the data

Transaction unindexing

Geth no longer keeps transaction inclusion info for all transactions, and instead limits the storage of inclusion records to one year. For application developers, this change means that very old transactions can no longer be accessed by hash.
If you would like todisable this behavior and keep inclusion information for all historical transactions, you can re-enable indexing using the --txlookuplimit=0 command-line flag.

Database changes

There is an incompatible database change: adds a prefix for contract code in order to separate the codes and trie nodes.

So if you use the version of geth, you will not be able to rollback to the older version geth.

Geth command changes

  • --rpc -> --http - Enable the HTTP-RPC server
  • --rpcaddr -> --http.addr - HTTP-RPC server listening interface
  • --rpcport -> --http.port - HTTP-RPC server listening port
  • --rpccorsdomain -> --http.corsdomain - Domain from which to accept requests
  • --rpcvhosts -> --http.vhosts - Virtual hostnames from which to accept requests
  • --rpcapi -> --http.api - API’s offered over the HTTP-RPC interface
  • --wsaddr -> --ws.addr - WS-RPC server listening interface
  • --wsport -> --ws.port - WS-RPC server listening port
  • --wsorigins -> --ws.origins - Origins from which to accept websockets requests
  • --wsapi -> --ws.api - API’s offered over the WS-RPC interface
  • --gpoblocks -> --gpo.blocks - Number of blocks to check for gas prices
  • --gpopercentile -> --gpo.percentile - Percentile of recent txs to use as gas suggestion
  • --graphql.addr -> --graphql - Enable GraphQL on the HTTP-RPC server
  • --graphql.port -> --graphql - Enable GraphQL on the HTTP-RPC server
  • --pprofport -> --pprof.port - Profiler HTTP server listening port
  • --pprofaddr -> --pprof.addr - Profiler HTTP server listening interface
  • --memprofilerate -> --pprof.memprofilerate - Turn on memory profiling with the given rate
  • --blockprofilerate -> --pprof.blockprofilerate - Turn on block profiling with the given rate
  • --cpuprofile -> --pprof.cpuprofile - Write CPU profile to the given file

For more details about the command changes, you can refer to: v1.10.0.

Rpc changes

BREAKING CHANGE: Non-EIP155 transactions (i.e. transactions which are not replay-protected) are now rejected by the RPC API. You can disable this restriction using the --rpc.allow-unprotected-txs command-line flag.
Since there are txs signed by old clients, we need to add this flag for all our nodes.

Response changes in eth_estimateGas, eth_call, eth_sendRawTransaction.

The response will now add a message field in addition to the data field if these RPCs cause the EVM to execute a REVERT operation. For example:

{
   "jsonrpc":"2.0",
   "id":1,
   "error":{
      "code":3,
      "message":"execution reverted: num_ is \u003c= 10",
      "data":"0x08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000d6e756d5f206973203c3d20313000000000000000000000000000000000000000"
   }
}

Response changes in eth_getTransactionByBlockHashAndIndex, eth_getTransactionByBlockNumberAndIndex, eth_getTransactionByHash.

The response now adds a type field to denote the transaction type. For example:

{
   "jsonrpc":"2.0",
   "id":1,
   "result":{
      "blockHash":"0x812619b0a7eb58de4f4c4fcf0b497567705f9182c2ad102745fa5ed87b3d96b5",
      "blockNumber":"0x95dc",
      "from":"0xef7368f755f5f551a602971b1f792b2737bc6e16",
      "gas":"0x2dc6c0",
      "gasPrice":"0x430e23400",
      "hash":"0xabbed20a397ff811fddf2b3f559e6291c1d14c6456bd1eca5fde82169e283857",
      "input":"0x29e99f07000000000000000000000000000000000000000000000000000000000000000c",
      "nonce":"0x55731a",
      "to":"0x6ac00c8b5514496aaae72cc2e6b8d4c29ee7d4ba",
      "transactionIndex":"0x0",
      "value":"0x0",
      "type":"0x0",
      "v":"0x1b",
      "r":"0x6e8c8af7e3266f0216b9a796eddd736a4f9bcdbfd6a47c49f566c187174d3268",
      "s":"0x5bf210f56d04126e0864643cb06670abe46fbf935446438490c2ff9ce6921adf"
   }
}

GraphQL changes

The GraphQL API is no longer available separately from the JSON-RPC HTTP server. If you want GraphQL, you need to enable it using the --http --graphql flag combination. The --graphql.port and --graphql.addr flags are no longer available.

Config changes

Remove whisper config.

[Shh]
MaxMessageSize = 1048576
RestrictConnectionBetweenLightClients = true

Remove GraphQL config.

GraphQLPort
GraphQLVirtualHosts

Rename DiscoveryURLs to EthDiscoveryURLs.

For more details about config changes, you can refer to go-ethereum v1.9.19, v1.9.21, v1.10.0

v1.0.7-ht.3

10 May 16:47
Compare
Choose a tag to compare
v1.0.7-ht.3 Pre-release
Pre-release

This is a hot fix release to fix the reorg routine stuck issue.

v1.0.7-hf.2

08 May 02:33
e3c241a
Compare
Choose a tag to compare

BUGFIX

  • #194 bump btcd to v0.20.1-beta

v1.0.7-hf.1

07 May 10:51
60035da
Compare
Choose a tag to compare

BUGFIX

  • #190 fix disk increase dramaticly
  • #191 fix the reorg routine of tx pool stuck issue