Skip to content

Releases: NethermindEth/nethermind

v1.25.3

22 Jan 18:03
Compare
Choose a tag to compare

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

21 Jan 22:00
Compare
Choose a tag to compare

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

16 Jan 18:35
Compare
Choose a tag to compare

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

10 Jan 10:59
Compare
Choose a tag to compare

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 block
  • debug_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

Cancun

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

Logging

Bug fixes and stability

Other changes

New Contributors

Full Changelog: 1.24.0...1.25.0

v1.24.0

15 Dec 13:05
Compare
Choose a tag to compare

THIS VERSION HAS A CONSENSUS ISSUE. Use v1.25.2 or later instead.


Release notes

⚠️ WARNING

This 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

Bug fixes and stability

Full Changelog: 1.23.0...1.24.0

v1.23.0

04 Dec 13:11
Compare
Choose a tag to compare

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 or nethermind -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.
  • 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

Cancun

Gnosis

Bug fixes and stability

Performance

Logging

Other changes

New Contributors

Full Changelog: 1.22.0...1.23.0

v1.22.0

09 Nov 16:18
Compare
Choose a tag to compare

Release notes

⚠️ IMPORTANT

Since v1.21.0, the Nethermind executable has been renamed from Nethermind.Runner to nethermind.
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

Performance improvements

Holesky

Other changes

New Contributors

Full Changelog: 1.21.1...1.22.0

v1.21.1

25 Oct 13:16
9b435ba
Compare
Choose a tag to compare

Release notes

This hotfix release is a recommended update for all network operators and addresses the invalid block production issue initially reported on the Gnosis chain from October 19 to 20.

⚠️ IMPORTANT

Since v1.21.0, the Nethermind executable has been renamed from Nethermind.Runner to nethermind
The Docker images entry points have been updated accordingly.
Please update your setups accordingly, if any.

The obsolete --config xdai option has been deprecated in favor of --config gnosis.
Also, to avoid syncing from scratch, rename the "xdai" directory to "gnosis" in the Nethermind database directory (by default, "nethermind_db").

Changelog

Full Changelog: 1.21.0...1.21.1

v1.21.0

28 Sep 21:46
Compare
Choose a tag to compare

Release notes

⚠️ IMPORTANT

  • The Nethermind executable has been renamed from Nethermind.Runner to nethermind
  • The Nethermind Launcher executable has been renamed from Nethermind.Launcher to nethermind-launcher
  • The Nethermind CLI executable has been renamed from Nethermind.Cli to nethermind-cli

The Docker images entry points have been updated accordingly.
Please update your setups accordingly, if any.

Major highlights

  • Unified Nethermind executable names
    As per the above warning — Nethermind executable names have been changed to be the same across all distribution channels. This may be a breaking change, so please pay extra attention and ensure your scripts are adjusted accordingly.

  • Removed obsolete xDai configs
    The configuration options --config xdai and --config xdai_archive has been removed in favor of --config gnosis and --config gnosis_archive accordingly.

    ⚠️
    Users still using the obsolete xdai moniker also need to rename the xdai directory to gnosis that is located in the Nethermind database directory (by default, nethermind_db) to avoid syncing from scratch.

  • Trie Recovery functionality

    • This new mechanism should recover a database when there is a recognized case with a missing node. It will download necessary data from the network, and after a very short downtime database should be repaired.
    • Please read more at #5861
  • Throttling for JSON-RPC calls to ensure the stability of a node under a high-load

    • Together with the Gateway team, which uses plenty of Nethermind clients to serve JSON-RPC for Gnosis, we noticed that when flooding with RPC calls that take long to execute, the call queue gets clogged, causing the client to stall.
    • Added new configuration option: --JsonRpc.RequestQueueLimit with the default value of 500, which causes all requests above that limit to be canceled immediately. This may result in some limitations on requests queued (can be adjusted accordingly to your needs), but in our internal testing, it allowed the node to process successfully twice as many calls because of reduced traffic on a single node.
    • At first, PR applied for eth_* calls and later expanded to all JSON-RPC calls.
  • Significant reduction of OldBodies sync time

    • During our internal testing, we found out that one of the configuration options wasn’t properly enabled.
    • Enabling it caused SIGNIFICANT improvements in OldBodies phase. Examples below:
      • Linux AMD machine (high-end) - 3h 45min to 1h 40min
      • Arm AWS Graviton3 machine - 19h to 2h
      • Windows BareMetal machine with limited network bandwidth - From 14h for 65% OldBodies (and crashed) to 3,5h in total
  • Improved sync time with better DB tuning option

    • Old Headers sync faster on AMD machine by 18,8% and on ARM by 18,9%
    • Snap Sync faster on AMD machine by 27,8% and on ARM by 52%
    • Old Receipts faster on AMD machine by 12,5% and o ARM by 16,3%
  • Cancun progress update

    • Majority of implementation is already merged into master branch
    • Team is transitioning into more testing-oriented approach focusing on devnets and better tooling for internal/external testing of Cancun EIPs
  • Support for new Holesky chain

    • This release supports the new testnet in space: Holesky. More details can be found here: https://github.com/eth-clients/holesky
    • To run Nethermind on new chain use:
      • For a Snap Sync node --config holesky.
      • For an archival mode setup --config holesky_archive.

Changelog

New features and Important changes

Cancun

Bug fixes and stability

Performance

Logging

Read more

v1.20.4

21 Sep 15:10
Compare
Choose a tag to compare

Release notes

This release supports the new testnet in space: Holesky

Due to the unsuccessful initial launch of the Holesky network, the date has been rescheduled. Below are the updated details:

  • Launch date: September 28, 2023, 12:00 UTC
  • Epoch time: 1695902400
  • Network id: 17000

More details can be found here: https://github.com/eth-clients/holesky

To use Nethermind with this new network, follow these steps:

  1. Run Nethermind with new config:

    • For a Snap Synced node, use the flag --config holesky.
    • For an archival mode setup, use the flag --config holesky_archive.
  2. Run a consensus client that supports the Holesky network.

Changelog

Holesky

Full Changelog: 1.20.3...1.20.4