Releases: NethermindEth/nethermind
v1.26.0
Release notes
Major highlights
State design upgrade: Half-path
This version introduces a new approach to the state database: half-path. It replaces the previous approach, which we will call hash for these notes.
The goal of half-path is to improve the performance of the existing database without significant codebase changes. It is a middleware between the hash and full-path-based designs (which we are currently working on). It is mainly aimed at validators' performance (we observed a significant improvement in effectiveness) and, as a side effect, improving archive nodes' sync.
Major achievements
- Block processing time is faster by about 30 to 50% (depending on the hardware setup), but we observed that it improves low-end setups more, so the cost of hosting nodes using Nethermind software may decrease.
- The state database size is ~25% smaller (the previous approach is now close to 200 GB while the half-path is around 150 GB). This is only for the state database. After snap sync, the entire database will decrease by ~50 GB but still hover around 900 GB.
- State database growth is significantly reduced—the slower the database grows, the less maintenance around the node is needed.
We are still observing the exact numbers and applying some optimizations to make it as close as possible to "live pruning", but the database should grow about 10 to 20 times slower (to see the full effect, it may need 1 or 2 weeks—growth ratio will be dropping after that time). - Faster archive node sync. As half-path is not meant to optimize archive nodes, we observe that it is quicker than the previous implementation (8mln blocks processed about 30 to 40% faster, and the gap was only increasing—more tests around that are to be conducted).
- Smaller archive node database. As stated above, the major goal of the half-path wasn't to make the archive node smaller, but what was observed was 2.4 TB vs 1.7 TB at the 8mln blocks checkpoint—and the gap was getting bigger. We are now checking the final numbers.
Making the migration to the half-path hassle-free
- All newly synced nodes will use half-path as the default state design. If node operators want to use the previous approach, they can specify it with
--Init.StateDbKeyScheme Hash
. - All existing nodes that are synced with the old hash approach will remain on it.
Env variable equivalent of this flag is: NETHERMIND_INITCONFIG_STATEDBKEYSCHEME=HalfPath/Hash
Migration to half-path
- Full resync. This is the simplest yet most effective way to migrate. As Nethermind syncs quickly back to the head, it may take just 1-2 hours to get back on track.
- Full pruning. There is an option to migrate while staying online using the full pruning functionality. The downside of that approach is that pruning will take much longer to finish, and users will need to restart their nodes with
--Init.StateDbKeyScheme HalfPath
— without it, pruning will behave as before, so it will recreate the state with the previous database approach. To reduce slowdown, the user should increase the default full pruning memory budget to at least 8 GB:--Pruning.FullPruningMemoryBudgetMb 8000
.
Upgrading from previous versions
- From v1.25.4. The node will remain on the previous hash design. To migrate to half-path please see the migration instructions above. If the node operator does not want to migrate, it is completely fine to stay on the hash design, as it will still be fully supported.
- From v1.26.0-exp. The node will remain on the half-path design. No resync is needed between v1.26.0 and its pre-release versions—all optimizations and bugfixes are automatically applied.
Learn more
More details about the half-path and other state redesigns which we are still exploring, can be found here. Please also refer to #6331, which contains all of the changes around the half-path and more in-depth details about specific performance metrics.
Snap serving
We're excited to share that Nethermind now supports snap serving, a capability previously unique to Geth. This is a big step for the Ethereum ecosystem, offering redundancy and easing Geth's considerable responsibility in maintaining network health.
This achievement doesn't diminish Geth's critical role but reinforces our shared goal of a resilient Ethereum. We see this as an opportunity to distribute the workload, ensuring the network's strength through diversity.
This feature was previously present but required a change to the database layout for efficient performance. Nodes running on the old hash approach will not enable snap serving by default. Snap serving's performance is too low on this design and may affect the node's overall performance. If a node operator wants to enable it on hash design, there is an option --Sync.SnapServingEnabled true
, although we don't recommend it.
Important
During snap serving for other nodes, the overall performance of the node may be slightly worse. Please reach out to us on Discord with all observations so more optimizations can be discovered and applied. At the same time, it is advised to keep it enabled for the sake of network health.
Rootless and chiseled Docker image
This release introduces a new chiseled rootless Docker image for enhanced security.
These image tags have the -chiseled
suffix and run the Nethermind process on behalf of the non-root app
user with UID/GID of 64198
.
Snappy dependency removal
Nethermind no longer needs the Snappy (libsnappy-dev) to be installed on Linux.
Deprecated options
--Sync.FastBlocks
has been deprecated. It is advised to remove this option from your custom configs, environment variables, or flags passed to the client. See #6792 for more details.
Deprecated metrics
Multiple database and networking metrics are now deprecated and will be removed in the next release. These metrics follow the format:
nethermind_*_db_size
nethermind_*_db_reads
nethermind_*_db_writes
nethermind_*_disconnects
nethermind_*_received
nethermind_*_sent
They have been consolidated to labeled metrics:
nethermind_db_size{db=*}
nethermind_db_reads{db=*}
nethermind_db_writes{db=*}
nethermind_local_disconnects_total{reason=*}
nethermind_remote_disconnects_total{reason=*}
nethermind_incoming_p2p_messages{message=*}
nethermind_outgoing_p2p_messages{message=*}
Changelog
New features
- Perf/HalfPath state db key by @asdacap in #6331
- Feature/snapsync server by @asdacap in #6722
- Feature/debug get bad blocks by @kjazgar in #3838
- Add eth_blobGasPrice/eth_gasPrices; update eth_feeHistory by @flcl42 in #6563
- Add engine_getClientVersionV1 API support by @rjnrohit in #6814
- Introduce chiseled Docker image by @rubo in #6467
- Feat/native 4byte tracer by @natebeauregard in #6864
Optimism
Performance
- Speed up trie node traversal by @benaadams in #6436
- Return to NoGCRegion now runtime bug is fixed by @benaadams in #6381
- Reduce allocations of Gossip filter closures by @benaadams in #6495
- Optimize Jump Destination Analysis by @benaadams in #6502
- Reduce allocations in StorageRangesMessageSerializer by @benaadams in #6534
- Propagate pooled arrays to RlpStream by @benaadams in #6536
- Further Improve JumpDestAnalysis (x20 improvement) by @benaadams in #6554
- Avoid boxing in AccessLists by @benaadams in #6578
- Trie RlpStreams as structs by @benaadams in #6584
- Hunting allocations by @LukaszRozmej in #6601
- Hunting allocations 2 by @LukaszRozmej in #6604
- Hunting allocations 3 - introduce AccountStruct by @LukaszRozmej in #6605
- Exclude Tx Hashes when serving Blocks & apply network back pressure by @benaadams in #6636
- Allow retrieving memory traces that are unconstrained in size by @guidovranken in #6649
- Perf/fetch blockheader from peer on FCU if block so that it start beacon header sync. by @asdacap in #6650
- Perf/background task scheduler by @asdacap in #6655
- Improved single byte Rlp.DecodeByteArray by @benaadams in #6711
- Optimize RLP length calculation by @PaulusParssinen in #6729
- Faster Json RPC Dispatch by @benaadams in #6746
- Leaf value collector by @asdacap in #6795
- Perf/dont redownload downloaded code by @asdacap in #6873
Bug fixes and stability
- Fix/flush on snap fin...
v1.25.4
Release notes
⚠️ This release is a mandatory upgrade for all nodes operating on the Ethereum Mainnet and Gnosis.
Please update your node to this version to ensure correct node functionality.
Major highlights
Mainnet Dencun hard fork
The Mainnet Dencun hard fork is scheduled on Mar 13, 2024 at 13:55:35 UTC (epoch 269568)
Gnosis Dencun hard fork
The Gnosis Dencun hard fork is scheduled on Mar 11, 2024 at 18:30:20 UTC (slot 14237696)
PPA package
The PPA package has been revised, including the version and installers. Since the version has been fixed to be 1.25.4 instead of 1.2540, installing the latest version requires the manual removal of the previous one as follows:
# ⚠️ If your data directory is in the default location of /usr/share/nethermind, back it up before the package removal.
sudo apt-get purge -y nethermind
sudo apt-get update
Changelog
Cancun
- Add Cancun hard-fork settings for Gnosis by @rubo in #6709
- Cancun spec and config for mainnet by @smartprogrammer93 in #6679
- Compact blobs db for disk savings by @flcl42 in #6595
- Make sure that blob pool do not exceed maximum value set by @benaadams in #6702
Optimism
Bugfixes and new features
- Reduce default peers amount from 100 to 50 on mainnet nodes (not on archive nodes) to reduce a load on it and reduce amount of block processing spikes in #6743
- Reduce amount of hanging sockets with TIME_WAIT status by @benaadams in #6594
- Fix ParityTraceActionConverter to output init on create by @LukaszRozmej in #6606
- Fix TraceStore plugin by @LukaszRozmej in #6609
- Return BlockForRpc from debug_getBadBlocks by @flcl42 in #6612
- Revise PPA packaging by @rubo in #6618
- Improve memory management and reduce traffic while serving data to other peers by @benaadams in #6636
- Add
debug_getBadBlocks
support by @kjazgar and @Marchhill in #3838 - Add
Metrics.ExposeHost
option so a hostname other than "0.0.0.0" can be exposed by @tgerring in #6528⚠️
For now we decided to keep default behavior so ExposeHost will default to "+" which means "0.0.0.0" but in the future we are going to change default of that flag to "127.0.0.1" to reduce risk of remote access to metrics.
Full Changelog: 1.25.3...1.25.4
v1.26.0-exp.2
Release notes
🚧 THIS IS AN EXPERIMENTAL RELEASE.
We don't recommend running it on your main validator infrastructure. It brings major improvements, but we're still unsure about its downsides and long-term effects. The latest stable version is 1.25.3.
Major highlights
This version brings many performance improvements, the most important being a major state database optimization called Half-path.
This new optimization is not a full path-based storage, but the way it arranges data helps with the performance of block processing and state database size.
Key points
- Block processing is faster by about 40-50%
- Block processing during historical data sync is faster by about 80-100%
- Initial state database size on snap-synced Mainnet nodes reduced by about 25% (archive nodes still to be measured)
- Initial state database growth in the first two weeks has halved and decreased over time. Preliminary testing shows a reduction in database growth to 3 GB per month following the first two weeks, greatly reducing the need for node maintenance and full pruning.
For more details on Half-path, see our blog post.
Backward compatibility
- To fully benefit from this release, you must resync your nodes from scratch.
- Half-path is now the default sync mode for new nodes. If you start this version on a node with an old database schema, it will continue using the old schema without improvements. This is not recommended.
Known issues
- Full pruning doesn't work properly. We're working on improvements, but be aware that using this version requires a database resync from scratch.
- Unusual block processing spikes are still happening but very rarely. We noticed some unusually high spikes when in-memory pruning interferes with block processing. A fix is already in the testing phase but not included in this release.
v1.25.3
Release notes
⚠️ This release is a mandatory upgrade for all nodes operating on the following chains: Sepolia, Holesky, and Chiado.
Please update your node to this version to ensure correct node functionality.
Major highlights
Sepolia Dencun hard fork
The Sepolia Dencun hard fork is scheduled on Jan 30, 2024 at 22:51:12 UTC (epoch 132608)
Chiado Dencun hard fork
The Chiado Dencun hard fork is scheduled on Jan 31, 2024 at 18:15:40 UTC (epoch 516608)
Holesky Dencun hard fork
The Holesky Dencun hard fork is scheduled on Feb 07, 2024 at 11:34:24 UTC (epoch 29696)
Full Changelog: 1.25.2...1.25.3
v1.25.2
Release notes
This hotfix addresses the consensus issue in Nethermind that was introduced in v1.23.0. This release is mandatory for all Nethermind users.
No resync required. A consensus client restart is required without the need to resync it.
The v1.22.0 and below weren't affected.
A full postmortem will be published soon.
v1.25.1
⛔ THIS VERSION HAS A CONSENSUS ISSUE. Use v1.25.2 or later instead.
Release notes
Major highlights
Goerli Dencun hard fork
⚠️
This version supports the upcoming Goerli Dencun hard fork that is scheduled on Jan 17, 2024 at 06:32:00 UTC (epoch 231680)
Please update your node to this version to ensure correct node functionality.
Chiado Dencun hard fork
⚠️
This version supports the upcoming Chiado Dencun hard fork that is scheduled on Jan 31, 2024 at 18:15:40 UTC (epoch 516608)
Please update your node to this version to ensure correct node functionality.
Fixed eth_syncing
invalid behavior
In v1.25.0, the eth_syncing
method misbehaves for those who upgraded from the older version to the latest one (returned "syncing" when a node was fully synced). This version addresses this issue, so it properly returns the sync status.
Fixed extra bodies and receipts downloaded for the Mainnet after upgrading the long-living node
In v1.25.0, in some cases, the old bodies and old receipts started to download even though it should not have been the case on the synced nodes. This usually happens for older nodes that were synced a long time ago without any resync in the meantime.
Full Changelog: 1.25.0...1.25.1
v1.25.0
⛔ THIS VERSION HAS A CONSENSUS ISSUE. Use v1.25.2 or later instead.
Release notes
Major highlights
Goerli Dencun hard fork
⚠️
This version supports the upcoming Goerli Dencun hard fork that is scheduled on Jan 17, 2024 at 06:32:00 UTC (epoch 231680)
Please update your node to this version to ensure correct node functionality.
Optimism Canyon hard fork
The initial support of the OP in Nethermind was implemented right before the Canyon hard fork happened. Because of that, Nethermind nodes could not follow the chain after Canyon activation. Since this version, Nethermind supports Canyon hard fork on all OP-related chains.
Improved JSON serialization
We replaced the famous Json.NET library with the System.Text.Json implementation. As a result, we drastically reduced the memory overhead, improved the block processing time, and sped up JSON-RPC handling in general.
JavaScript tracers
The debug_trace*
JSON-RPC methods now support custom tracers written in JavaScript. This allows custom tracing logic and is in line with the Geth implementation.
Improved concurrency and reduced lock contention
- Changed to more scalable locks for both the transaction pool and LRU caches, ensuring better scalability on systems with high core counts.
- Used more scalable priority locks where block production and other tasks cross to give precedence to block production, optimizing performance in critical areas.
- During signature recovery, it was changed to access the transactions from the pool serially to reduce lock contention on the transaction pool while maintaining parallel processing for ECDSA and Keccak calculations for faster throughput.
New JSON-RPC methods
eth_getBlockReceipts
that is based on the previous Parity implementation and gives an easier way to get all receipts for transactions within a specified blockdebug_getRawBlock
debug_getRawReceipts
debug_getRawHeader
debug_getRawTransaction
These methods have been added to have a possibility to analyze encoded block/receipt/header/transaction
Downloading all historical bodies and receipts by default
On newly synced nodes, instead of using barriers set for a block with deposit contract for beacon chain (11052984), the node will sync all bodies and receipts till genesis:
- Healthier for the entire network
- Makes the database size bigger for freshly synced nodes (about 200 GB extra space will be needed)
- The change is made in a way that already synced nodes that are synced till the ancient barrier 11052984 will not sync anything in addition (to sync all of them, resync from scratch is required)
- This may be revisited as part of EIP-4444
Other performance improvements
With the migrations to .NET 8, we got a performance boost in various areas and reduced memory usage, which is especially beneficial for validators.
Changelog
New features
- Implemented eth_getBlockReceipts by @Marchhill in #6281
- Feature/ratelimit discovery messages by @asdacap in #6265
- Feature/javascript tracers by @LukaszRozmej in #6217
- [Config] Change default barriers of mainnet to 0 by @smartprogrammer93 in #6225
- Improved Json Serialization by @benaadams in #6152
- Add new RPC methods debug_getRawBlock, debug_getRawReceipts, debug_getRawHeader, debug_getRawTransaction by @Demuirgos in #6368
- Feature/exit on blocknumber by @asdacap in #6428
- Change locks to reduce lock contention by @benaadams in #6417
Cancun
- [Cancun]{Spec} Goerli config and fix for
ChainSpecBasedSpecProvider
by @smartprogrammer93 in #6409 - [cancun] fix
BlobBaseFee
not consistent with geth whenExcessBlobGas
is null by @smartprogrammer93 in #6320 - Blob txs reorgs by @marcindsobczak in #6254
- Enable blob txs support in goerli configs by @marcindsobczak in #6430
Optimism
Performance
- Serialize Json direct to Http stream rather than through intermediary buffers; further increasing performance and reducing latency of Json RPC by @benaadams in #6369
- Fix double write during full pruning by @asdacap in #6415
- Return error codes in Evm rather than throwing more expensive exceptions by @benaadams in #6406
- Reduce memory for GetPayloadBodiesByRangeV1 and GetPayloadBodiesByHashV1 by streaming the results immediately rather than building up the total response and then sending it all at once by @benaadams in #6287
- Don’t throw exceptions for missing nodes when searching for them (missing nodes) during sync by @benaadams in #6425
- Remove duplicate calls to FindHeader in eth_getLogs by @benaadams in #6421
- Remove Duplicate call to TryGetPendingTransaction in RPC by @benaadams in #6420
- RateLimiter: Remove unneeded async statemachine by @benaadams in #6418
- Increase regex cache size; which reduces memory usage in logging by @benaadams in #6408
- Reduce dictionary lookups by @benaadams in #6373
- Fix excessive timer allocation in rate limiter by @benaadams in #6354
- Use TryGetValue to halve Dictionary lookups by @benaadams in #6352
- Use runtime throw helpers to increase hot code (reduce cold code) in processor cache by @benaadams in #6348
- Broadcast local txs only if MaxFeePerGas is equal at least 70% of current base fee by @marcindsobczak in #6350
Metrics
- added metrics for bad blocks by @Marchhill in #6270
Logging
Bug fixes and stability
- [Fix] Potential fix to missing tx index sometimes (related to reorgs) by @smartprogrammer93 in #6422
- fix(db, rocks): total table size should include blobs by @shekhirin in #6289
- Fix missed release span on column db by @asdacap in #6302
- Fixed FinalTotalDifficulty based on genesis by @MarekM25 in #6435
Other changes
- Migrate to .NET 8 by @rubo in #6150
- Unify reputation settings by @asdacap in #6242
- Update Gnosis bootnodes by @4rgon4ut in #6329
- Refactor/state cleanup by @asdacap in #6260
- Skip signature only for TxType.DepositTx by @LukaszRozmej in #6349
- fix: typos in comment by @AdventureSeeker987 in #6360
- chore(src/Nethermind): typo fix by @dzizazda in #6363
New Contributors
- @Marchhill made their first contribution in #6281
- @shekhirin made their first contribution in #6289
- @4rgon4ut made their first contribution in #6329
- @shashankshampi made their first contribution in #6301
- @AdventureSeeker987 made their first contribution in #6360
- @dzizazda made their first contribution in #6363
Full Changelog: 1.24.0...1.25.0
v1.24.0
⛔ THIS VERSION HAS A CONSENSUS ISSUE. Use v1.25.2 or later instead.
Release notes
⚠️ WARNINGThis version cannot be downgraded. Once you upgrade to this version or sync from scratch with it, you cannot downgrade to any previous version.
Major highlights
-
Improvements to the headers database
- Reduce IOPS and bandwidth requirements during sync by up to 200Mbps or ~8% of overall bandwidth during sync
- Reduce IOPS and bandwidth requirements when serving headers to peers
- Require an additional 800MB of metadata database for the Mainnet
-
Supported networks adjustments
- Added OP Sepolia and Base Sepolia support
- Added archive configuration support for both Optimism and Base
For more info, see the
-c, --config <value>
flag and supported networks.For Optimism networks, ensure that networking is disabled to reduce unnecessary hardware usage.
Changelog
New features and important changes
Optimism
- Remove syncing check from ReviewBlockTree step by @jmederosalvarado in #6332
- Disable networking on OpStack configs by @jmederosalvarado in #6334
- Fix / Add OP configs by @jmederosalvarado in #6364
Bug fixes and stability
- Skip signature only for TxType.DepositTx by @LukaszRozmej in #6349
- Use Kestrel on Windows for metrics by @benaadams in #6326
Full Changelog: 1.23.0...1.24.0
v1.23.0
⛔ THIS VERSION HAS A CONSENSUS ISSUE. Use v1.25.2 or later instead.
Release notes
Major highlights
-
Optimism Support
-
Nethermind can now be used as an execution client for OP Stack chains, including Optimism and Base mainnets.
-
OP Stack network have a EL and CL concepts similar to Ethereum. Nethermind works as EL client, refer to optimism’s docs for how to run
op-node
as your CL client. -
Just run
nethermind -c op-mainnet
ornethermind -c base-mainnet
and you’re ready. -
The Canyon upgrade went live in Optimism and Base testnets very recently. Support for this upgrade is being worked on at the moment and will land in a future release, so if you try to sync this networks you won’t be able to go past the hardfork block.
💡 Some OP Stack networks (e.g. Op Mainnet and Op Goerli) have some legacy state that you need to download before actually running the client. We are hosting this legacy data as a snapshot file in our servers. The Nethermind client will automatically download and decompress it when you run it for the first time on Optimism Mainnet, no need for manual downloads. Refer to the snapshot plugin docs for more info.
-
-
Initialize Database from Snapshot
- There is now support for initializing the nethermind database from a
.zip
snapshot file. - This will be useful if you want to have backup copies of your node’s database for faster setup.
- For more information refer to the plugin docs.
- There is now support for initializing the nethermind database from a
-
Reduced memory usage spikes when node overloaded with CL requests
- Over the past few weeks, we've noticed a spike in memory usage on nodes, primarily due to numerous simultaneous GetPayloadBodiesByRangeV1 requests from CL clients.
- Our developers have identified an opportunity for optimization. Through these improvements, we've managed to significantly reduce memory consumption in high-stress scenarios. During our stress tests, we observed a reduction in additional RAM usage from 12GB to just 1-1.5GB.
- Furthermore, this memory is quickly freed up, allowing the node to return to its normal usage levels.
Changelog
New features and Important changes
- Optimism plugin by @deffrian in #6146
- Initialize database from snapshot by @jmederosalvarado in #6177
- Activate (most) JsonRPC endpoints before BlockReprocessing by @Demuirgos in #6143.
- Reduce memory for GetPayloadBodiesByRangeV1 and GetPayloadBodiesByHashV1 by @benaadams in #6287
Cancun
- TxPool: refactoring for blob txs by @marcindsobczak in #5953
- Make EIP-4844 parameters configurable by @rubo in #6192
- Rename EIP-4844 chain spec parameters by @rubo in #6205
- Upgrade ckzg which uses the final setup by @flcl42 in #6208
- Announce txs to newly connected peer only when we are synced by @marcindsobczak in #6202
- Use blob gas instead of count by @flcl42 in #6229
Gnosis
Bug fixes and stability
- Fix unable to decode auth message with invalid version by @asdacap in #6180
- Fix on handshake failure not disconnecting connection by @asdacap in #6179
- Fix tx index was removed during reorg by @asdacap in #6188
- Fix Antithesis NullPointerException in Evm by @Demuirgos in #6191
- Fix incorrect exitcode in SIGTERM and SIGINT. by @asdacap in #6215
- Fix max write buffer number is 0 on holesky. by @asdacap in #6216
- Handle concurrent WebSockets messages by @emlautarom1 in #6210
- Fix old blocks hang on insert failure by @asdacap in #6233
- Fix/nethermind not sending hello on disconnect by @asdacap in #6241
- Fix/gas estimations precompile error by @LukaszRozmej in #6259
Performance
- Perf/prefix block key with blocknum by @asdacap in #6158
- Perf/NoWAL during OldBodies by @asdacap in #6227
Logging
- Fix typos in logs and comments by @xiaolou86 in #6228
- BlockDownloader - client type in logs by @MarekM25 in #6240
Other changes
- Feature/more diagnostics bad blocks by @LukaszRozmej in #6207
- Blob test tool files moved by @ak88 in #6168
- rename keccak by @tanishqjasoria in #6197.
- Extract revert messages by @emlautarom1 in #6226
- Remove
Rinkeby
testnet by @emlautarom1 in #6273 - Select proper drive when using
VolumeFreeSpace
trigger by @emlautarom1 in #6269
New Contributors
- @ak88 made their first contribution in #6168
- @xiaolou86 made their first contribution in #6228
Full Changelog: 1.22.0...1.23.0
v1.22.0
Release notes
⚠️ IMPORTANTSince v1.21.0, the Nethermind executable has been renamed from
Nethermind.Runner
tonethermind
.
Please update your setups accordingly, if any.
Major Highlights
- Memory management improvement
- With few optimizations added to the client, we are observing now dropped and more stable memory usage in the client's lifetime.
- Long-running mainnet validator nodes reported around 25% memory consumption reduction.
- Cancun preparation moving forward
- Adjusting our code to hive test findings
- TxPool refactor to work well with blob transactions
- Library loading issue resolved for MacOs when building from source
- Holesky adjustments
- After the Holesky launch, a few minor things were discovered - all of the problems were addressed, and now the Holesky experience should be better
Changelog
Cancun
- eip-7516: BLOBBASEFEE opcode added by @smartprogrammer93 in #6096
- Eip4788 : Update address and buffer size (Post audit) by @Demuirgos in #6098
- Partially validate block with unknown parent by @flcl42 in #6085
- Set head according to fcuState even when attributes are incorrect by @flcl42 in #6144
- Load ckzg properly by @flcl42 in #6159
- TxPool: refactoring for blob txs by @marcindsobczak in #5953
Performance improvements
- Perf/set malloc ops by @asdacap in #6110
- Perf/Malloc trimmer by @asdacap in #6111
- Perf/buffersize adjustment by @asdacap in #6122
- Perf/sorted batch by @asdacap in #6142
- Perf/improve writebatch parallelism by @asdacap in #6151
- Perf/Reduce number of files in DB. by @asdacap in #6165
Holesky
- Holesky FinalTotalDifficulty to be equal to genesis block's one by @flcl42 in #6190
- Fix
eth_syncing
in young chains by @emlautarom1 in #6181
Other changes
- Fix
eth_getLogs
filtering for empty addresses list by @emlautarom1 in #6094 - Ensure
ChainId
is always set in 2930 and 1559 txs by @emlautarom1 in #6061 - Remove HTTP log spam on default settings by @emlautarom1 in #6097
- Remove mining methods by @bitcoinbrisbane in #6106
- Don't override
HealthCheckService
log levels by @emlautarom1 in #6109 - Fix symlinks for macOS packages by @rubo in #6095
- Reject non-nullable aggregate types when deserializing method parameters by @emlautarom1 in #6104
- fix AggregateException being thrown instead of TimeoutException by @LukaszRozmej in #6123
- Fix typos by @AKABABA-ETH in #6137
- Support configurable
ethstats
update interval by @emlautarom1 in #6147 - Properly handle duplicates in
accessList
by @emlautarom1 in #6145 - Use
TimeoutException
onLoadGenesisBlock
by @emlautarom1 in #6160 - Fix
eth_syncing
in young chains by @emlautarom1 in #6181 - Handle concurrent WebSockets messages by @emlautarom1 in #6210
New Contributors
- @AKABABA-ETH made their first contribution in #6137
Full Changelog: 1.21.1...1.22.0