Release notes
Major highlights
-
Logs readability improvements. Now with color support, improved log organization, and the prominent display of vital information related to block production, it's easier than ever to have a comprehensive understanding of the current head of the chain and all necessary details:
Break down of new logs:
- JsonRPC logs are turned off by default.
- Users of older versions of Windows may need to set registry entry
[HKEY_CURRENT_USER\Console\VirtualTerminalLevel]
toDWORD 1
to enable colors if using cmd. If colors are too dark they can be adjusted in your terminal color settings.
-
Boosted block processing priority to improve attestation rates during sync
-
Improvements in sync (faster Snap Sync, Old Bodies and Old Receipts) + reduced SSD writes requirement
-
Full Pruning improvements (better threads management, free disk space check for full pruning, pruning time reduced etc).
-
This is the Shapella-ready release for the upcoming hard-fork on Gnosis!
The Gnosis Shapella hard-fork is scheduled at 11:34:20 AM UTC on August 1, 2023.
Changelog
Gnosis
- Add Gnosis Shanghai hard-fork timestamp by @rubo in #5848
- Add more Gnosis bootnodes by @MarekM25 in #5910
Cancun
- Add RLP encoding and hashing for Blob txs by @flcl42 in #5593
- Add path to kzg setup file by @deffrian in #5797
- EIP-4844 V6 fixes and improvements by @flcl42 in #5745
Bug fixes and stability
- Improve peer discovery and connectivity by @asdacap in #5846
- Update DotNetty and RocksDB packages (fix issue with installation of Homebrew on MacOS AMD machines) by @rubo in #5883
- Remove
v
of non-legacy tx signature from RPC response (#5927) by @rubo in #5927 - Safety check for full pruning by @deffrian in #5550
Example usage:
Now the client will check available disk space to ensure that machine is capable to successfully execute full pruning. To disable this feature set--Pruning.AvailableSpaceCheckEnabled=false
- Don’t hide precompile contract exception by @asdacap in #5679
- Fixed pivot-related edge case that could lead to node corruption by @MarekM25 in #5724
- Copy timestamp from json by @deffrian in #5731
- Fix stuck state from period offline by @benaadams in #5710
- Fix point evaluation precompile by @deffrian in #5739
- Fixed eip2537 activation by @MarekM25 in #5824
- Quick fix for FullPruner by @marcindsobczak in #5809
- Bugfix - exchangeCapabilites based on ChainSpec by @MarekM25 in #5801
- Fix estimate gas by @deffrian in #5800
- Fix gas fees accounting in TransactionProcessor.Trace by @deffrian in #5743
- Fix KeccaksIterator not working when some keccak zero prefix is not i… by @asdacap in #5780
- Fixed fail on precompile dll import error by @Demuirgos in #5725.
- MaxDegreeOfParallelism defaults for full pruning by @MarekM25 in #5662
- Introduced few more logs to better navigate through Full pruning process.
- Revised parameters for
--Pruning.FullPruningMaxDegreeOfParallelism
parameter-1
- number of logical processors0
- (DEFAULT) 25% of logical processors. This would reduce overhead of hardware and will give better results of attestations during that process.1
- In this example, 1 logical processor will be used. Set any value higher than 0
- Revised parameter
--Pruning.FullPruningMemoryBudgetMb
and changed the default to4000 MB
Logging
- Improved colour logs + block tx gas gwei range by @benaadams in #5770
- Move detailed peer logging to debug, add diversity by @benaadams in #5795
- JSON-RPC logs from Info to Debug by @MarekM25 in #5782
Performance
- Boost Block Processor priority to improve attestations during syncing by @benaadams in #5764
- Apply cache miss hint which improves full pruning perf by @asdacap in #5723
- Improve db priorities which improves snap sync perf by @asdacap in #5722
- Apply auto tune to compressed db by @asdacap in #5771
- Perf/valuekeccak snap code by @asdacap in #5689
- Optimise Account access and contract detection patterns in Evm by @benaadams in #5646
- Feature/disable WAL flag which will reduce SSD write requirements during SnapSync phase by @asdacap in #5702
- Perf/keccak with valuekeccak which results with reduced memory and CPU usage by @asdacap in #5715
- Perf/faster block load for receipt by @asdacap in #5708
- Reduce exceptions in Evm by @benaadams in #5727
- Keccaks: Skip unneeded array allocations by @benaadams in #5735
- Less contention for OldReceipts and OldBodies by @benaadams in #5737
- Add option to have multiple network processing thread by @asdacap in #5749
Example usage:
In case internet speed is higher than 500Mbps, there is option to set flag--Network.ProcessingThreadCount 32
which may reduce Old Bodies sync phase time - Less aggressive peer discovery by @benaadams in #5747
- Reuse batch Dictionary and skip empty batches by @benaadams in #5802
- Don't add Keccaks during cache pruning by @benaadams in #5781
- Optimize Snap sync + Sort DB Batches by @benaadams in #5789
- Old Bodies sync performance improvement with blobfiles by @asdacap in #5785
- Add fast test for balance < tx.Value + gas by @benaadams in #5783
- Remove from ConcurrentDict directly rather than building secondary list by @benaadams in #5779
- Improve peering management strategy which results with faster sync time by @asdacap in #5772
- Refactor/Split dispatcher and downloader by @asdacap in #5778
- Reduce datetime calls in peer discovery by factor of 100 by @benaadams in #5751
- More efficient EvmPooledMemory by @benaadams in #5752
Other changes
- refactor state and storage behind one interface by @tanishqjasoria in #5659
- Address build warnings in Nethermind.Serialization.Ssz.Test.csproj by @MarekM25 in #5695
- Add support for specifying address in CLI by @emlautarom1 in #5690
- Move some logic from blocktree into chain level info by @asdacap in #5705
- Refactor/extract block store from blocktree by @asdacap in #5704
- One more Engine API test: Blocks_before_pivots_should_not_be_added by @MarekM25 in #5719
- [README] Add GitPOAP Badge to Display Number of Minted GitPOAPs for Contributors by @kayla-henrie in #4278
- Revise README by @rubo in #5728
- Update
Nethermind.Crypto.SecP256k1
package by @rubo in #5733 - Update
Nethermind.Crypto.Pairings
package by @rubo in #5742 - Cleanup/remove keccak key by @asdacap in #5748
- Fix/inconsistently failing tests by @asdacap in #5773
- Added GnosisSpecProvider and gnosis_loads_properly test by @MarekM25 in #5775
- Rename BlockChain -> Blockchain in Merge tests by @MarekM25 in #5806
- Add a master build docker image for each commit on master branch by @kamilchodola in #5777
- Add tests validating a slot by timestamp by @rubo in #5792
- Refactoring of chainspec tests & handle chainspec exceptions by @MarekM25 in #5819
- Transaction processor refactor by @jmederosalvarado in #5799
New Contributors
- @emlautarom1 made their first contribution in #5690
- @kayla-henrie made their first contribution in #4278
Full Changelog: 1.19.3...1.20.0