Skip to content

v1.21.0

Compare
Choose a tag to compare
@kamilchodola kamilchodola released this 28 Sep 21:46

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

Peering improvements

  • Allow setting bucket size to 16 or higher which results in improved peer discovery at initial phases of sync by @asdacap in #5964
  • Perf/randomly drop discovery bucket entry by @asdacap in #5966
  • Feature/feed DNS to discv4 by @asdacap in #6035
  • Dont stop peer connection on any exception by @asdacap in #6038

Other changes

  • MaxDegreeOfParallelism defaults for full pruning by @MarekM25 in #5662
  • Add MCopy to Evm by @Demuirgos in #5791
  • Remove ropsten by @MarekM25 in #5874
  • Add more gnosis bootnodes by @MarekM25 in #5910
  • Added example value of TraceTypes in TraceModule by @Demuirgos in #5917.
  • Rename SHA3 opcode to KECCAK256 by @Demuirgos in #5929
  • Perf/compaction readahead which reduces IOPS requirement during snap sync by @asdacap in #5875
  • Add NewPayload timoeut based on config by @kamilchodola in #5970
    • New parameter which allows to manipulate maximum time to process engine_newPayload requests.
      Current default value is 7 seconds.
      Usage example:
      --Merge.NewPayloadTimeout=10
  • Make pivot update attempts infinite by @marcindsobczak in #5988
    • Previously UpdatingPivot stage was enabled for first 15 minutes but now considering it stable we decided to enable it as a default strategy - can be disabled using --Sync.MaxAttemptsToUpdatePivot=0
  • Implement debug_standardTraceBlockToFile method by @rubo in #5501
  • Remove wit configs - wit.json/wit.cfg by @MarekM25 in #6010
  • Remove Data field from serialized Transactions by @emlautarom1 in #6079
  • Rerun logging setup on NLog config change by @emlautarom1 in #6051

New Contributors

Full Changelog: 1.20.3...1.21.0