Skip to content

Releases: hyperledger/besu-docs

23.10.0

16 Oct 22:09
724bdc8
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 behaviour,
otherwise you can simply go with the default and enjoy the improved performance of the new txpool.

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 X 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 22:53
350591e
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

23.7.2

06 Sep 17:44
f85e4c7
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

23.7.1

21 Aug 17:38
905e595
Compare
Choose a tag to compare

23.7.1

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: 85dce66c2dbd21b4e5d3310770434dd373018a046b78d5037f6d4955256793cd
https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/23.7.1/besu-23.7.1.zip / sha256: dfac11b2d6d9e8076ab2f86324d48d563badf76fd2a4aadc4469a97aef374ef5

23.4.1

31 May 19:47
05789db
Compare
Choose a tag to compare

Besu release: https://github.com/hyperledger/besu/releases/tag/23.4.1

What's Changed

Full Changelog: 23.4.0...23.4.1

23.4.0

04 May 15:48
1eed8c1
Compare
Choose a tag to compare

This quarterly update 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.

23.1.3

15 Apr 01:12
fef4e93
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

23.1.2

22 Mar 20:08
08efd87
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

23.1.1

07 Mar 23:49
f698576
Compare
Choose a tag to compare

23.1.1 Goerli Shanghai/Capella Release

This update is required for the Goerli Shanghai/Capella upgrade and recommended for all Mainnet users. If you use Besu on Goerli, update to 23.1.1. If you previously used 23.1.1-RC1, update to test 23.1.1 on Goerli.

Breaking Changes

Additions and Improvements

  • Add support for Shanghai in Sepolia hyperledger/besu#5088
  • Add implementation for engine_getPayloadBodiesByRangeV1 and engine_getPayloadBodiesByHashV1 hyperledger/besu#4980
  • If a PoS block creation repetition takes less than a configurable duration, then waits before next repetition hyperledger/besu#5048
  • Allow other users to read the /opt/besu dir when using docker hyperledger/besu#5092
  • Invalid params - add some error detail #5066
  • Added the option --kzg-trusted-setup to pass a custom setup file for custom networks or to override the default one for named networks #5084
  • Gas accounting for EIP-4844 #4992
  • Goerli configs for shapella #5151

Bug Fixes

23.1.0

17 Feb 18:41
7267554
Compare
Choose a tag to compare

23.1.0

Besu 23.1.0 is a recommended update for Mainnet users. Thank you all for your patience as we crafted this quarterly release.

This is a rather large release with some breaking changes, so please be sure to read these notes carefully before you upgrade any Besu instances. We are including a move to Java 17 LTS. To build and run Besu, please make sure you have Java 17 on the host machine. Additionally, there are a host of spec compliance changes that change existing formats, so please check the specific RPC updates. Lastly, this release formalizes a deprecation notice for GoQuorum privacy modes and IBFT1.0 in Besu. These will be removed in the 23.4 series, unless otherwise stated.

From the improvements and fixes side, we have a host of execution performance improvements and fixes for defects with bonsai storage. We have also included an error detection and auto-heal capability for nodes that encounter state issues. This should keep nodes online and validating that may have previously required a resync.

One final note. 23.1.0 is not a Shanghai ready release. If you intend to test Besu on the long-lived testnets like Zhejiang, please follow the instructions here. We will have more to share on our official Shanghai releases soon.

Breaking Changes

  • Change JsonRpc http service to return the error -32602 (Invalid params) with a 200 http status code
  • Besu requires minimum Java 17 and up to build and run #3320
  • PKCS11 with nss module (PKCS11 based HSM can be used in DevP2P TLS and QBFT PKI) does not work with RSA keys
    in Java 17. SoftHSM is tested manually and working. (Other PKCS11 HSM are not tested). The relevant unit and acceptance
    tests are updated to use EC private keys instead of RSA keys.
  • Change eth_feeHistory parameter blockCount to accept hexadecimal string (was accepting plain integer) #5047
  • Default configurations for the deprecated Ropsten, Kiln, Shandong, and Astor networks have been removed from the CLI network list. These networks can currently be accessed but will require a user-provided genesis configuration. #4869
  • GoQuorum-compatible privacy is deprecated and will be removed in 23.4
  • IBFT 1.0 is deprecated and will be removed in 23.4
  • Optimize SSTORE Operation execution time (memoize current and original value) #4836

Additions and Improvements

  • Default rpc batch request to 1000 #5104
  • Add a new CLI option to limit the number of requests in a single RPC batch request. #4965
  • Support for new DATAHASH opcode as part of EIP-4844 #4823
  • Send only hash announcement for blob transaction type #4940
  • Add excess_data_gas field to block header #4958
  • Add max_fee_per_data_gas field to transaction #4970
  • Added option to evm CLI tool to allow code execution at specific forks #4913
  • Improve get account performance by using the world state updater cache #4897
  • Add new KZG precompile and option to override the trusted setup being used #4822
  • Add implementation for eth_createAccessList RPC method #4942
  • Updated reference tests to v11.3 #4996
  • Add DebugGetRawBlock and DebugGetRawHeader RPC methods #5011
  • Besu requires minimum Java 17 and up to build and run #3320
  • Add worldstate auto-heal mechanism #5059
  • Support for EIP-4895 - Withdrawals for Shanghai fork
  • Improve SLOAD and SSTORE performance by caching empty slots #4874
  • RPC methods that lookup block by hash will now return an error response if no block found #4582
  • Added support for safe and finalized strings for the RPC methods using defaultBlock parameter #4902
  • Added post-execution state logging option to EVM Tool #4709
  • Add access list to Transaction Call Object #4802
  • Add timestamp fork support, including shanghaiTime and cancunTime forks #4743
  • Optimization: Memoize transaction size and hash at the same time #4812
  • Add chain data pruning feature with three experimental CLI options: --Xchain-pruning-enabled, --Xchain-pruning-blocks-retained and --Xchain-pruning-frequency [#4686](https://github.com
    /hyperledger/besu/pull/4686)
    • Note that chain pruning is hidden and disabled by default. Once you choose to enable chain pruning, a new column family will be added to the db and you cannot roll back to a previous versi
      on of Besu.

Bug Fixes

  • Mitigation fix for stale bonsai code storage leading to log rolling issues on contract recreates #4906
  • Ensure latest cached layered worldstate is subscribed to storage, fix problem with RPC calls using 'latest' #5076
  • Fix for segmentation faults on worldstate truncation, snap-sync starts #4786
  • Fix for worldstate mismatch on failed forkchoiceUpdate #4862