github NethermindEth/nethermind 1.25.0-rc
v1.25.0-rc

latest releases: 1.29.1, 1.29.0, 1.29.0-rc...
pre-release10 months ago

Release notes

Major highlights

  • Goerli Dencun Hardfork
    • This version supports upcoming Goerli Dencun Hardfork!
    • Hardfork will happen at epoch 231680 which translates to 2024-01-17 06:32:00 UTC
    • Upgrade your node prior to this date to make sure it will be online after network will switch to this fork!
  • Optimism Canyon Hardfork Support
    • Initial implementation of OP support on Nethermind was created right before Canyon hardfork happened. Because of that after Canyon activation, Nethermind nodes were not capable of following entire chain.
    • Now this version of Nethermind Client supports Canyon hardfork on all OP related chains!
  • Improved Json Serialization
    • For long time we were using Newtonsoft libraries for Json serialization/deserialization actions. It is very good library but not most efficient solution to be used.
    • We knew that System.Text.Json (built-in .NET library) was giving much better results but switch from one to another was tremendous effort.
    • After a lot of work we finally delivered this switch so now all Json related operations are much more efficient and have lower memory overheads.
    • It improves Block Processing performance by 5% on average.
    • The entire Json RPC stack performance improved with a significant reduction in memory used.
  • JavaScript tracers
    • debug_trace  JSON RPC methods now support custom tracers written in JavaScript.
    • This allows for custom tracing logic and is in-line with Geth implementation.
  • .NET 8 upgrade
    • After .NET 8 was announced we have been constantly working towards applying it into Nethermind client to not create any technical debt.
    • This .NET version brings a lot of various performance improvements so from our observation we noticed about 5% better Block Processing time which can improve attestation rewards for Validators.
  • Improved concurrency and reduced lock contention
    • Changed to more scalable locks for both the Transaction Pool and LruCaches, 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 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.
  • Added new JsonRPC methods
    • There are several new JsonRPC methods added in this release:
      • ETH namespace: eth_getBlockReceipts which is based on previous parity implementation and which gives easier way to get all receipts for transaction within selected block
      • DEBUG namespace: debug_getRawBlock, debug_getRawReceipts, debug_getRawHeader, debug_getRawTransaction - These are added to have possibility to analyze encoded block/receipt/header/transaction.
  • Download 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) node will sync all bodies and receipts till genesis
    • This is healthier for the entire network
    • This will cause a database size to be bigger for freshly synced nodes (about 200GB more will be needed)
    • Change is done in a way that already synced nodes which are synced till AncientBarrier 11052984 will not sync anything in addition (to sync all of them user needs to resync DB from scratch)
    • This may be revisited as part of eip-4444 https://eips.ethereum.org/EIPS/eip-4444

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-rc

Don't miss a new nethermind release

NewReleases is sending notifications on new releases.