Releases: hyperledger/besu
23.10.3-hotfix
23.10.3-hotfix
This is a hotfix for a selfdestruct defect that occurred on mainnet at block 18947893
- Hotfix for selfdestruct preimages on bonsai [#6359]((#6359)
- mitigation for trielog failure [#6315]((#6315)
This release fixes the root of the problem, but Besu needs to be resynced in order to repair the state. The fastest way to do this is to trigger a backward sync in Besu. After installing the hotfix, your CL client will need to have its beacon state reset and restored using checkpoint sync. Recovering from a deleted beacon chain is much faster if you have Checkpoint Sync setup, which is CL client specific.
Instructions on how to delete the beacon db, depends on your client. For example for Teku, you need to remove the beacon folder in the Teku data path. For other clients, refer to their documentation.
Most users should be good to go. If this doesn't work, please try the below instructions and report your problem to the Hyperledger Discord at https://discord.gg/hyperledger
Try the same process again, but force Besu to set its head back to a block prior to the problem block. This will require API access, and for this to work you have to enabled the DEBUG API with the following startup options:
--rpc-http-api=ETH,NET,WEB3,DEBUG
See RPC APIs for more details, changes to that param will require Besu to be restarted.
Once Besu is up and you have access to DEBUG
apis, you can shutdown your CL client and clear its database. With Besu still up, set its head back to block 18947892 (0x1211F34 in hex) using the following API call:
curl -X POST --data '{"jsonrpc":"2.0","method":"debug_setHead","params":["0x1211F34"],"id":1}' http://localhost:8545
Then restart your CL. Your CL should optimistically sync the beacon chain using a checkpoint from the network, and this will trigger a backward sync in Besu.
If your client still isn't progressing, you can try to resync only the world state. It can take hours, but it is faster from a resync from scratch
curl -X POST --data '{"jsonrpc":"2.0","method":"debug_resyncWorldState","params":[],"id":1}' http://localhost:8545
Download Links
https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/23.10.3-hotfix/besu-23.10.3-hotfix.zip / sha256 1c37762909858a40eca749fb85b77fb4d1e918f247aff56d518144828bd85378
https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/23.10.3-hotfix/besu-23.10.3-hotfix.tar.gz / sha256 8e38e9fd0c16e049aa324effc96f9ec31dc06e82ea4995e9dd75d571394667af
23.10.3
23.10.3
Additions and Improvements
- Implement debug_traceCall #5885
- Transactions that takes too long to evaluate, during block creation, are dropped from the txpool #6163
- New option
tx-pool-min-gas-price
to set a lower bound when accepting txs to the pool #6098 - Update OpenJDK latest Docker image to use Java 21 #6189
- Allow a transaction selection plugin to specify custom selection results #6190
- Add
rpc-gas-cap
to allow users to set gas limit to the RPC methods used to simulate transactions#6156 - Fix the unavailability of
address
field when returning anAccount
entity on GraphQL in case of unreachable world state #6198 - Update OpenJ9 Docker image to latest version #6226
- Add error messages on authentication failures with username and password #6212
- Add
rocksdb usage
to thestorage
subcommand to allow users and dev to check columns families usage #6185 - Ethereum Classic Spiral network upgrade #6078
Bug fixes
- Fix Docker image name clash between Besu and evmtool #6194
- Fix
logIndex
ineth_getTransactionReceipt
JSON RPC method #6206
Download Links
https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/23.10.3/besu-23.10.3.zip / sha256 da7ef8a6ceb88d3e327cacddcdb32218d1750b464c14165a74068f6dc6e0871a
https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/23.10.3/besu-23.10.3.tar.gz / sha256 73c834cf32c7bbe255d7d8cc7ca5d1eb0df8430b9114935c8dcf3a675b2acbc2
23.10.2
Hyperledger Besu 23.10.2
23.10.2 is an optional upgrade for Ethereum public and private networks. It is a required update for Ethereum Classic Mordor network users (not for ETC mainnet yet), as it contains the configuration for the Spiral network upgrade (#6078). It is recommended for Mainnet and private networks as there are several patches to vulnerable dependencies.
Upcoming Changes
- After we made the new layered TX pool default for all nodes in 23.10.0, it caused some confusion and configuration issues among private network users. We know many of you are currently using the
legacy
pool, as it is better suited for larger nonce-gaps and gas free networks. This is a formal announcement of an upcoming naming change from this pool to better reflect its usage in private networks. This will have accompanying configuration changes as well, so stay tuned for the 24.1.0 release notes. Thank you for your patience as we update the two transaction pool implementations.
Breaking Changes
- TX pool eviction in the legacy TX pool now favours keeping oldest transactions (more likely to evict higher nonces, less likely to introduce nonce gaps) #6106 and #6146
Additions and Improvements
- Ethereum Classic Spiral upgrade for the Mordor network #6078
- Add a method to read from a
Memory
instance without altering its inner state #6073 - Accept
input
anddata
field for the payload of transaction-related RPC methods #6094 - Add APIs to set and get the min gas price a transaction must pay for being selected during block creation #6097
- TraceService: return results for transactions in block #6087
- New option
--min-priority-fee
that sets the minimum priority fee a transaction must meet to be selected for a block. #6080 #6083 - Implement new
miner_setMinPriorityFee
andminer_getMinPriorityFee
RPC methods #6080 - Clique config option
createemptyblocks
to not create empty blocks #6082 - Upgrade EVM Reference Tests to v13 (Cancun) #6114
- Add
yParity
to GraphQL and JSON-RPC for relevant querise. 6119 - Force tx replacement price bump to zero when zero base fee market is configured or
--min-gas-price
is set to 0. This allows for easier tx replacement in networks where there is not gas price. #6079 - Introduce the possibility to limit the time spent selecting pending transactions during block creation, using the new experimental option
Xblock-txs-selection-max-time
on PoS and PoW networks (by default set to 5000ms) orXpoa-block-txs-selection-max-time
on PoA networks (by default 75% of the min block time) #6044 - Remove LowestInvalidNonceCache from
legacy
transaction pool to make it more private networks friendly #6148 - Optimization: Delete leftPad when capturing the stack before and after a frame execution #6102
Bug fixes
- Upgrade netty to address CVE-2023-44487, CVE-2023-34462 #6100
- Upgrade grpc to address CVE-2023-32731, CVE-2023-33953, CVE-2023-44487, CVE-2023-4785 #6100
- Fix blob gas calculation in reference tests #6107
- Limit memory used in handling invalid blocks #6138
Download Links
https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/23.10.2/besu-23.10.2.zip
597ab71898d379180106baf24878239ed49acefea5772344fd359b0ff13fe19f
https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/23.10.2/besu-23.10.2.tar.gz
255818a5c6067a38aa8b565d8f32a49a172a7536a1d370673bbb75f548263c2c
23.10.1
23.10.1
Additions and Improvements
- New option
--tx-pool-priority-senders
to specify a list of senders, that has the effect to prioritize any transactions sent by these senders from any source #5959 - Cache last n blocks by using a new Besu flag
--cache-last-blocks=n
#6009 - Optimize performances of RPC method
eth_feeHistory
#6011 #6035 - Logging summary of plugins at Info as part of the config overview #5964 #6049
- Layered tx pool memory improvements #5985 #5974
- Update Bouncy Castle to 1.76, and force the use of the
jdk18on
variant #5748 - Add GraphQL support for new fields in Cancun #5923 #5975
- Add new configuration options to the EVM Fluent APIs #5930
Deprecations
--tx-pool-disable-locals
has been deprecated for removal in favor of--tx-pool-no-local-priority
, no semantic change, only a renaming #5959
Bug Fixes
- Fix regression with t8n tool filling #5979
- Fix EOF and EIP-4788 regressions in reference tests #6060
Download Links
23.10.1 build was updated during a build of 23.10.2.RC, which is on the way. Existing artifacts are correct at those URLs, but their SHAs have changed.
https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/23.10.1/besu-23.10.1.tar.gz / sha256: e27645f345583f3ee447e5418302382c6f8335d2da8707bdd20033aabd86ce4c
498afb6cb4d8e5cdeae0a00db000bd2f4ed97aa833b0467ffed9668ad326f335
https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/23.10.1/besu-23.10.1.zip / sha256: fb173acb93c72fbb74a6542051691ca2d3d5f54ea2f51026467a512f3a22106b
6a591bb4ae6f3df7371fee7676dcd1d34925c5c2e7790cc783037e4b0d8b6292
23.10.0
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 withtx-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 optiontx-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 valueslayered
(default) orlegacy
--Xlayered-tx-pool-layer-max-capacity
,--Xlayered-tx-pool-max-prioritized
and--Xlayered-tx-pool-max-future-by-sender
just drop theXlayered-
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
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
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
andeth_estimateGas
responses #5705
Additions and Improvements
- Add missing methods to the
Transaction
interface #5732 - Add
benchmark
subcommand toevmtool
#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
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 thet8n
andb11r
. 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
andadmin_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
23.7.0
- Was not released (failed burn-in test)
23.4.4
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 subcommandstorage 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