Skip to content

Releases: hyperledger/besu

23.10.0

10 Oct 17:55
da905d1
Compare
Choose a tag to compare

23.10.0

Layered Transaction Pool: the new default transaction pool implementation

With this release the previously experimental Layered txpool is marked stable and enabled by default, so please read the following instructions if you used to tune txpool behavior, otherwise you can simply go with the default and enjoy the improved performance of the new txpool. More detailed information about the implementation of the Layered TxPool can be found here.

Upgrading to Layered Transaction Pool

If you do not specify any txpool option, then you can skip this section.
If you have tuned the txpool using one of these options: tx-pool-retention-hours, tx-pool-limit-by-account-percentage or tx-pool-max-size,
then you need to update your configuration as described below:

  • tx-pool-retention-hours: simply remove it, since it is not applicable in the Layered txpool, old transactions will eventually expire when the memory cache is full.
  • tx-pool-limit-by-account-percentage: replace it with tx-pool-max-future-by-sender, which specify the max number of sequential transactions of single sender are kept in the txpool, by default it is 200.
  • tx-pool-max-size: the Layered txpool is not limited by a max number of transactions, but by the estimated memory size the transactions occupy, so you need to remove this option, and to tune the max amount of memory* use the new option tx-pool-layer-max-capacity as described below.

You can still opt-out of the Layered txpool, setting tx-pool=legacy in config file or via cli argument, but be warned that the Legacy implementation will be deprecated for removal soon, so start testing the new implementation.

Configuring the Layered Transaction Pool

By default, the txpool is tuned for mainnet usage, but if you are using private networks or want to otherwise tune it, these are the new options:

  • tx-pool-max-future-by-sender: specify the max number of sequential transactions of a single sender are kept in the txpool, by default it is 200, increase it to allow a single sender to fit more transactions in a single block. For private networks, this can safely be set in the hundreds or thousands if you want to ensure future transactions (with large nonce gaps) remain in the pool.
  • tx-pool-layer-max-capacity: set the max amount of memory* in bytes, a single memory limited layer can occupy, by default is 12.5MB, keep in mind that there are 2 memory limited layers, so the expected memory consumption is twice the value specified by this option, so 25MB by default. Increase this value if you have spare RAM and the eviction rate is high for your network.
  • tx-pool-max-prioritized: set the max number of transactions allowed in the first layer, that only contains transactions that are candidate for inclusion in the next block creation task. It makes sense to limit the value to the max number of transactions that fit in a block in your network, by default is 2000.

*: the memory used by the txpool is an estimation, we are working to make it always more accurate.

Breaking Changes

  • Removed support for Kotti network (ETC) #5816
  • Layered transaction pool implementation is now stable and enabled by default, so the following changes to experimental options have been done #5772:
    • --Xlayered-tx-pool is gone, to select the implementation use the new --tx-pool option with values layered (default) or legacy
    • --Xlayered-tx-pool-layer-max-capacity, --Xlayered-tx-pool-max-prioritized and --Xlayered-tx-pool-max-future-by-sender just drop the Xlayered- and keep the same behavior

Additions and Improvements

  • Add access to an immutable world view to start/end transaction hooks in the tracing API#5836
  • Layered transaction pool implementation is now stable and enabled by default. If you want still to use the legacy implementation, use --tx-pool=legacy.
    By default, the new transaction pool is capped at using 25MB of memory, this limit can be raised using --layered-tx-pool-layer-max-capacity options #5772
  • Tune G1GC to reduce Besu memory footprint, and new besu-untuned start scripts to run without any specific G1GC flags #5879
  • Reduce engine_forkchoiceUpdatedV? response time by asynchronously process block added events in the transaction pool #5909

Bug Fixes

  • do not create ignorable storage on revert storage-variables subcommand #5830
  • fix duplicate key errors in EthScheduler-Transactions #5857
  • Don't put control characters, escaped or otherwise, in t8n stacktraces #5910

Download Links

https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/23.10.0/besu-23.10.0.tar.gz / sha256: 3c75f3792bfdb0892705b378f0b8bfc14ef6cecf1d8afe711d8d8687ed6687cf

https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/23.10.0/besu-23.10.0.zip / sha256: d5dafff4c3cbf104bf75b34a9f108dcdd7b08d2759de75ec65cd997f38f52866

23.7.3

27 Sep 04:46
aff1f97
Compare
Choose a tag to compare

23.7.3 - Holesky 2.0 Hotfix

This is an optional release, it is only required if you are running a Holesky node.

Additions and Improvements

  • Update Holesky config for re-launch #5890

Download Links

https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/23.7.3/besu-23.7.3.tar.gz / sha256: c12ca6a9861557e0bf8f27076f8c8afcce6f1564687e5f02bfdc96c2b18846ff

https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/23.7.3/besu-23.7.3.zip / sha256: 136596454f647c706130e3e2983bdbb4a1cbfaf2bbf6e999466754f9213c11f6

23.7.2

05 Sep 23:06
7f959f2
Compare
Choose a tag to compare

23.7.2

Additions and Improvements

  • Add new methods to OperationTracer to capture contexts enter/exit #5756
  • Add Holešky as predefined network name #5797

Breaking Changes

  • Add ABI-decoded revert reason to eth_call and eth_estimateGas responses #5705

Additions and Improvements

  • Add missing methods to the Transaction interface #5732
  • Add benchmark subcommand to evmtool #5754
  • JSON output is now compact by default. This can be overridden by the new --json-pretty-print-enabled CLI option. #5766
  • New eth_getBlockReceipts JSON-RPC method to retrieve all transaction receipts for a block in a single call #5771
  • Add new methods to OperationTracer to capture contexts enter/exit #5756

Bug Fixes

  • Make smart contract permissioning features work with london fork #5727
  • Add type to PendingTransactionDetail, fix eth_subscribe #5729
  • EvmTool "run" mode did not reflect contracts created within the transaction. #5755
  • Fixing snapsync issue with forest during the heal step #5776

Download Links

https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/23.7.2/besu-23.7.2.tar.gz / sha256: f74b32c1a343cbad90a88aa59276b4c5eefea4643ee542aba2bbf898f85ae242
https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/23.7.2/besu-23.7.2.zip / sha256: a233c83591fc277e3d1530c84bb5ea896abad717d796b5e3b856c79199132b75

23.7.1

21 Aug 17:38
2bced4e
Compare
Choose a tag to compare

23.7.1

This is a recommended update for Proof of Stake users on public networks. This update removes some compatibility with GoQuorum permissioning, so please read these notes carefully if you are using these features.

This release is focused primarily on performance and stability improvements, updating dependencies, and extending functionality of the EVM tool and the RPC trace modules. It also fixes some bugs with the new layered transaction pool, peering, and memory usage.

Breaking Changes

  • Removed deprecated GoQuorum permissioning interop #5607
  • Removed support for version 0 of the database as it is no longer used by any active node. #5698

Additions and Improvements

  • evmtool launcher binaries now ship as part of the standard distribution. #5701
  • EvmTool now executes the execution-spec-tests via the t8n and b11r. See the README in EvmTool for more instructions.
  • Improve lifecycle management of the transaction pool #5634
  • Add extension points in AbstractCreateOperation for EVM libraries to react to contract creations #5656
  • Update to Tuweni 2.4.2. #5684
  • Decouple data field from Enum JsonRpcError by creating new enum holder RpcErrorType#5629
  • Update to bouncycastle 1.75 #5675
  • Extend OperationTracer with new methods #5662
  • Eip 6780 selfdestruct #5430
  • Add new debug_getRawTransaction to the DEBUG engine #5635

Bug Fixes

  • Use the node's configuration to determine if DNS enode URLs are allowed in calls to admin_addPeer and admin_removePeer #5584
  • Align the implementation of Eth/68 NewPooledTransactionHashes to other clients, using unsigned int for encoding size. #5640
  • Failure at startup when enabling layered txpool before initial sync done #5636
  • Remove miner-related option warnings if the change isn't using Ethash consensus algorithm #5669
  • Fix for pending transactions reference leak #5693
  • Address a performance regression observed in import testing #5734
  • Update native libraries that have JPMS friendly module names #5749

Download Links

https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/23.7.1/besu-23.7.1.tar.gz / sha256: f17a236e9e3fc2fb024d381b43ca8de8937379b3b255cc79eb0e2bbe1fdb452d
85dce66c2dbd21b4e5d3310770434dd373018a046b78d5037f6d4955256793cd invalidated by build error
https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/23.7.1/besu-23.7.1.zip / sha256: 75361e1815877bbd10eeeb5a6f9b82a8a15efec137dac816426b6e13ae461b09
dfac11b2d6d9e8076ab2f86324d48d563badf76fd2a4aadc4469a97aef374ef5 invalidated by build error

Release Artifact SHA Errata

These SHAs are valid and originate from the same git commit, but the archives are no longer published due to a build error:
https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/23.7.1/besu-23.7.1.tar.gz / sha256: 85dce66c2dbd21b4e5d3310770434dd373018a046b78d5037f6d4955256793cd
https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/23.7.1/besu-23.7.1.zip / sha256: dfac11b2d6d9e8076ab2f86324d48d563badf76fd2a4aadc4469a97aef374ef5

23.7.0

21 Aug 16:59
a57aa1b
Compare
Choose a tag to compare
23.7.0 Pre-release
Pre-release

23.7.0

  • Was not released (failed burn-in test)

23.4.4

29 Jun 02:05
87c75aa
Compare
Choose a tag to compare

Besu 23.4.4 is an optional update for proof of stake and has a variety of enhancements. Please note: we are in the process of reworking and enhancing the Besu database for improvements to sync time, database size, disk usage, execution/attestation performance, and more. These changes (starting with #5471) will alter, but not block the downgrade process. Read carefully for details.

In this update, we have a variety of updates targeted at performance with more to come. Some highlights include:

  • A new flat database structure and new experimental healing mechanism fully flattens the state trie used in Bonsai. The node has more consistent access to state info, speeding up SLOAD and other operations in the EVM. This aims to improve the performance of your node by enabling faster block processing time. Since the processing time will be faster, you should further reduce the chances of missing attestations, making your validator even better. The cost of this feature is a slightly larger database size and a slightly longer sync time. For more detail see #5319
  • New usage of BlobDB database in RocksDB for blockchain storage. This reduces initial sync time and write amplification/disk wear and tear (PR #5475). This reduces sync time by 14 hours on AWZ m6a.xlarge VM (1 day 8 hours 27 minutes instead of 1 day 22 hours 4 minutes).
  • A few fixes for sync bugs and database inconsistencies.

NOTE With the upgrade to 23.4.4, a DB migration is performed at startup. After this upgrade, if you want to downgrade Besu to a previous version, you need to run Besu with the subcommand storage revert-variables with the same configuration used to run Besu.

Breaking Changes

  • Move blockchain related variables in a dedicated storage, to pave the way to future optimizations #5471. The migration is performed automatically at startup,
    and in case a rollback is needed, before installing a previous version, the migration can be reverted, using the subcommand storage revert-variables with the same configuration used to run Besu.
  • Remove deprecated Rinkeby named network. #5540

Additions and Improvements

  • Allow Ethstats connection url to specify ws:// or wss:// scheme. #5494
  • Add support for Shanghai changes to the GraphQL service #5496
  • Unite the tx-pool CLI options under the same Tx Pool Options group in UX. #5466
  • Tidy DEBUG logs by moving engine API full logging to TRACE #5529
  • Remove PoW validation if merge is enabled as it is not needed anymore #5538
  • Use BlobDB for blockchain storage to reduce initial sync time and write amplification #5475
  • Update to Tuweni 2.4.1. #5513
  • Add healing flat db mechanism with experimental CLI options --Xsnapsync-synchronizer-flat-db-healing-enabled=true #5319

Bug Fixes

  • Fix backwards sync bug where chain is rolled back too far, especially when restarting Nimbus #5497
  • Check to ensure storage and transactions are not closed prior to reading/writing #5527
  • Fix the unavailability of account code and storage on GraphQl/Bonsai #5548

Download Links

https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/23.4.4/besu-23.4.4.tar.gz / sha256: bd476d235b6fe1f236a62bc709f41c87deb68b72c47bb5b58e56b9d9283af2c4
https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/23.4.4/besu-23.4.4.zip / sha256: 4575000f4fd21d318e7b77340c9281d496bc800bee5b45a13684319e6f28bf27

23.4.1

31 May 19:41
4563ebb
Compare
Choose a tag to compare

Besu 23.4.1 is an optional update for proof of stake and has a variety of enhancements.

  • A new (optional/experimental) tx pool format that builds great, more profitable local blocks if you are not using MEV-boost.
  • Networking / peering updates
  • Database storage reductions
  • Fixes for Docker and RPC
  • Mainnet Cancun fork development

Breaking Changes

  • Add request content length limit for the JSON-RPC API (5MB) #5467
  • min-block-occupancy-ratio options is now ignored on PoS networks #5491

Additions and Improvements

  • Set the retention policy for RocksDB log files to maintain only the logs from the last week #5428
  • "Big-EOF" (the EOF version initially slotted for Shanghai) has been moved from Cancun to FutureEIPs #5429
  • EIP-4844: Zero blob transactions are invalid #5425
  • Transaction pool flag to disable specific behaviors for locally submitted transactions #5418
  • New optional feature to save the txpool content to file on shutdown and reloading it on startup #5434
  • New option to send SNI header in TLS ClientHello message #5439
  • Early access - layered transaction pool implementation #5290
  • New RPC method debug_getRawReceipts #5476
  • Add TrieLogFactory plugin support #5440
  • Ignore min-block-occupancy-ratio option when on PoS networks, since in some cases, it prevents to have full blocks even if enough transactions are present #5491

Bug Fixes

  • Fix eth_feeHistory response for the case in which blockCount is higher than highestBlock requested. #5397
  • Fix Besu Docker image failing to start due to NoClassDefFoundError with org.xerial.snappy.Snappy library. #5462

Download Links

23.4.0

04 May 15:49
d4c637b
Compare
Choose a tag to compare

23.4.0

This quarterly update is a recommended update for stakers, but should be carefully reviewed by private network users before upgrading. This quarterly release contains a lot of new improvements but many breaking changes. We have deprecated GoQuorum-compatible privacy modes in this release, as well as IBFT1.0. If you require these, please consider migrating to new consensus algorithms or waiting for future releases.

Highlights in this release include:

  • RocksDB 8 upgrade that improves the performance of the underlying database.
  • Many logging and metrics improvements across the client.
  • EVM performance improvements.
  • An improved gas estimation algorithm.
  • Fixes for QBFT and IBFT using zeroBaseFee
  • RPC fixes
  • Many more.

Lastly, this release formalizes a deprecation notice for GoQuorum -compatible permissioning modes in Besu. These will be removed in the 23.7 series, unless otherwise stated.

Breaking Changes

  • In evmtool (an offline EVM executor tool principally used for reference tests), the --prestate and --genesis options no longer parse genesis files containing IBFT, QBFT, and Clique network definitions. The same genesis files will work with those json entries removed. #5192
  • In --ethstats, if the port is not specified in the URI, it will default to 443 and 80 for ssl and non-ssl connections respectively instead of 3000. #5301
  • Remove IBFT 1.0 feature #5302
  • Remove GoQuorum-compatible privacy feature #5303
  • Remove non-maintained launcher command line utility #5355
  • Remove deprecated tx-pool-future-max-by-account option, see instead: tx-pool-limit-by-account-percentage #5361
  • Default configuration for the deprecated ECIP-1049 network has been removed from the CLI network list #5371
  • GoQuorum-compatible permissioning is deprecated and will be removed in 23.7

Additions and Improvements

  • An alternate build target for the EVM using GraalVM AOT compilation was added. #5192
  • To generate the binary install and use GraalVM 23.3.r17 or higher and run ./gradlew nativeCompile. The binary will be located in ethereum/evmtool/build/native/nativeCompile
  • Upgrade RocksDB version from 7.7.3 to 8.0.0. Besu Team contributed to this release to make disabling checksum verification work. #5262
  • Log an error with stacktrace when RPC responds with internal error #5288
  • --ethstats-cacert to specify root CA of ethstats server (useful for non-production environments). #5301
  • Update most dependencies to latest version #5269
  • If jemalloc is used, print its version in the configuration overview #4738
  • Add metrics for accounts and storage reads (Flat database vs Merkle Patricia Trie) #5315
  • Offload LogBloom cache generation to computation executor, to avoid interfere with other scheduled tasks #4530
  • Reference tests are upgraded to use v12.1 of the ethereum tests #5343
  • Add new sepolia bootnodes, which should improve peering in the testnet. #5352
  • Renamed --bonsai-maximum-back-layers-to-load option to --bonsai-historical-block-limit for clarity. Removed --Xbonsai-use-snapshots option as it is no longer functional #5337
  • Change Forest to use TransactionDB instead of OptimisticTransactionDB #5328
  • Performance: Reduced usage of UInt256 in EVM operations #5331
  • Changed wrong error message "Invalid params" when private tx is reverted to "Execution reverted" with correct revert reason in data. #5369
  • Changes to the way gas is estimated to provide an exact gas estimate #5142
  • Add zero reads to Bonsai TrieLogs #5317
  • Bonsai TrieLog serialization interface and default implementation #5372

Bug Fixes

  • Fix eth_getBlockByNumber cache error for latest block when called during syncing #5292
  • Fix QBFT and IBFT unable to propose blocks on London when zeroBaseFee is used #5276
  • Make QBFT validator smart contract mode work with london fork #5249
  • Try to connect to EthStats server by default with ssl followed by non-ssl. #5301
  • Allow --miner-extra-data to be used in Proof-of-Stake block production #5291
  • Add withdrawals to payloadId calculation to avoid collisions #5321

Download Links

https://hyperledger.jfrog.io/hyperledger/besu-binaries/besu/23.4.0/besu-23.4.0.zip / sha256: 023a267ee07ed6e069cb15020c1c0262efc5ea0a3e32adc6596068cff7fd0be5
https://hyperledger.jfrog.io/hyperledger/besu-binaries/besu/23.4.0/besu-23.4.0.tar.gz / sha256: 821695b3255c9f646f4d527e374219c96416f498231520f2eec2bebedc53f5a0

23.1.3

15 Apr 01:11
3ba3471
Compare
Choose a tag to compare

23.1.3 - Nimbus Hotfix

This update is strongly recommended for anyone running Nimbus with Besu. Due to the way Nimbus send request data, this can lead to a missed block proposal in certain circumstances.

Bug Fixes

  • Add withdrawals to payloadId calculation to avoid collisions #5321

Download Links

https://hyperledger.jfrog.io/hyperledger/besu-binaries/besu/23.1.3/besu-23.1.3.tar.gz / sha256: 36898932a7535c4d126c1980443b33c9a4971f9354112992a18ee134c1777aa3
https://hyperledger.jfrog.io/hyperledger/besu-binaries/besu/23.1.3/besu-23.1.3.zip / sha256: adb3b17e45217f86a56f07f09faba2e5d8a0eb8a585ad5307696d6cc58ee2f73

23.1.2

22 Mar 19:59
24abe06
Compare
Choose a tag to compare

23.1.2

This update is a mainnet-compatible Shanghai/Capella upgrade and is recommended for all Mainnet users. This update contains a small number of overall improvements and fixes but a large refactor of Bonsai. We have heard your issues loud and clear with the storage format and have taken the time to craft a new architecture that keeps the benefits (low storage, lightweight nodes) without the tradeoffs (worldstate issues, exceptions processing transactions, broken databases). Expect more details on this in a forthcoming blog post. We have also continued our cleanup of backwards sync and RPC.

Breaking Changes

Additions and Improvements

  • Schedule Shanghai (Shapella) fork for Mainnet #5230
  • Increase default from 1000 to 5000 for --rpc-max-logs-range #5209
  • Bonsai-safe refactor #5123
  • Safe tracing #5197

Bug Fixes

  • Persist backward sync status to support resuming across restarts #5182

Download Links

https://hyperledger.jfrog.io/hyperledger/besu-binaries/besu/23.1.2/besu-23.1.2.tar.gz / sha256: 3d3a709a3aab993a0801b412a4719d74e319f942ddc13fb0f30b3c4a54d12538
https://hyperledger.jfrog.io/hyperledger/besu-binaries/besu/23.1.2/besu-23.1.2.zip / sha256: 2a9ff091cb4349fc23625a52089400bb6529a831eb22d15d0221cb27039ab203