Skip to content

v1.18.0

Compare
Choose a tag to compare
@MarekM25 MarekM25 released this 03 May 14:45

Release notes

Major highlights

  • Significant memory usage reduction
    Check out the graph below for v1.18.0 vs previous versions
    image
  • A new experimental full pruning method
    This significantly reduces full pruning time at the expense of RAM. It can be turned on via --Pruning.FullPruningMemoryBudgetMb <memory budget>. Internal testing shows a 2-4x reduction in pruning time with 4000 MB of memory budget and a 4-7x reduction with 8000 MB with a diminishing return above 16000 MB.
  • Important stability fixes
    We fixed edge case bugs during full pruning that could result in TrieException errors. We also improved the stability of the client by auto repair from the "invalid best state calculation" error. In some setups, Nethermind used to require root permissions because of the current implementation. Issues related to missing total difficulty on archive nodes are also fixed. Check the full changelog for details.
  • Improved sync time and block processing
    In our internal tests with a good network and hardware, Nethermind v1.18.0 can start attesting blocks on the Ethereum Mainnet in just over an hour. After 4 hours, the full download (including bodies and receipts) is completed leading to a steady state and improved attestations.
  • Progress toward the next hard-forks
    We merged @gnosischain withdrawals and started merging 4844-related PRs.

New features

  • Disk space savings for non-validator nodes
    You can significantly save disk space if you don't need chain history -- old bodies and receipts. Validators shouldn't enable this setting, because consensus clients require history to sync deposits. With these settings turned on, you will save around 450 GB of disk space for Ethereum Mainnet. To enable this feature, set --Sync.NonValidatorNode true --Sync.DownloadBodiesInFastSync false --Sync.DownloadReceiptsInFastSync false

  • Configurable startup disk space check
    Added a new check for free disk space during node startup (Health Checks plugin). By default, the node will shut down if available space is less than twice the shutdown threshold or half of the warning threshold (if specified). A new flag --HealthChecks.LowStorageCheckAwaitOnStartup true can suspend initialization until enough free disk is available for safe node operation.

    Change is provided especially to address cases when a node is hosted in an environment with automatic restart, e.g. docker-compose with restart policy.

  • Pass-through RocksDB options
    Allows specifying arbitrary RocksDB settings. The setting must be dynamically configurable. It can be passed as JSON to the --Db.AdditionalRocksDbOptions of DbConfig.

  • Additional metrics output
    A new option of publishing the metrics that can be gathered via dotnet-counters. To enable counters to pass, set --Metrics.CountersEnabled true.
    They can be collected from a running Nethermind process using dotnet-counters collect -n Nethermind.Runner.

Experimental features

  • Flags to tune RocksDB during sync to minimize write amplification at the expense of read amplification (during sync only) saving some SSD write endurance. It can be turned on via --Sync.TuneDbMode <level> where <level> is WriteBias, HeavyWrite, or AggressiveHeavyWrite. Some users may use this to reduce sync time while others may use it to increase it.

Changelist

Cancun

Gnosis

JSON-RPC

  • Added eth_getAccountendpoint by @Demuirgos [#5352]
  • Improve eth_getFilterChanges error codes by @LukaszRozmej [#5513]
  • Added Geth-compatible boolean flags for transaction inclusion for the newPendingTransactionsand newHeads options of eth_subscribe JSON-RPC method [#5299]

Metrics

Bug fixes and stability

Plugin development

To make Nethermind plugin development easier, we published Nethermind reference assemblies as Nethermind.ReferenceAssemblies NuGet package and as a separate archive to GitHub Releases [#5496]

Logging

Performance

Other changes

New Contributors

Full Changelog: 1.17.4...1.18.0