What changed?
In this version there are plenty of new changes You may find interesting like:
- TraceStorePlugin
- ETH/67
- Shanghai hardfork preparation
- Improvements & fixes in JSON-RPC, sync, metrics, networking, recovering from corruption, and more!
JsonRpc
- Add Sync stages endpoint Adds JsonRPC Debug endpoint
debug_getSyncStage
that reports sync stage. - Fix eth_sendRawTransaction. returns insufficient funds when executed twice. Resolves #4829
- Fix eth_call/eth_estimateGas/eth_createAccessList to use PREVRANDAO value from specified block.
Synchronization & Networking
- eip-4938: eth/67 Add support for
eth/67
. - Optimized Eth/66 implementation Use requestId instead of waiting for response from the peer. Resolves #4714
- Snap Healing Support healing of state trie during sync with snap protocol. Preparation to decommision of
GetNodeData
message and pre-eth/67
protocol versions on mainnet. Resolves #4324 - Fix rare issue causeing State Sync corruption. Resolves #4776
- Fix rare issues causing peers to deadlock.
- Fix Headers sync hang with negative progress.
- Fix rare issue with all peers disconnecting.
- Fix GetBlockHeaders reversed search Fix gapless reverse blockheader search. Resolves #5017
- Avoid excessive logs during Headers sync.
- Added
Network.DiscoveryDns
configuration option: Use tree is available through a DNS name. Keep it empty for the default of{chainName}.ethdisco.net
. Resolves #4321
Shanghai hardfork preparation
- Timestamp Based Fork Activation Allows for post-merge forks to use timestamp from CL client for fork activation. Resolves #4605
- EIP-3860: Limit and meter initcode Limit the maximum size of initcode to 49152 and apply extra gas cost of 2 for every 32-byte chunk of initcode. Resolves #4588
- Add engine_getPayloadV2 Add block value to engine_getPayloadV2 result. This change allows CL clients to compare locally produced block value with builder block value, allowing for CL client to compare locally created blocks with MEV-Boost ones. Spec: ethereum/execution-apis#314
Gnosis chain
- Gnosis bootnodes Update Gnosis bootnodes to be able to sync properly on new nodes.
Plugins
- TraceStore plugin Allows to save parity like traces (
trace
JSON RPC module) to database during block processing and later serving them without having the state data. Makes serving relevent trace methods orders of magnitudes faster. Takes disk space. Affected methods:trace_filter
,trace_block
,trace_transaction
,trace_get
,trace_replayTransaction
,trace_replayBlockTransactions
. Resolves #4205 and #4143. Related PRs: #4971 Add TraceStoreConfig.DeserializationParallelization- Configuration:
TraceStore.Enabled
- Defines whether the TraceStore plugin is enabled, iftrue
traces will come from DB if possible. DefaultValuefalse
.TraceStore.BlocksToKeep
- Defines how many blocks counting from head are kept in the TraceStore, if0
all traces of processed blocks will be kept. DefaultValue10000
. Default value was chosen to have neglegible disk usage. Keep in mind that keeping full trace history on disk will take a lot of space.TraceStore.TraceTypes
- Defines what kind of traces are saved and kept in TraceStore. Available options are:Trace
,Rewards
,VmTrace
,StateDiff
and combinations of them or justAll
. DefaultValueTrace, Rewards
. Default value will suffice to fully supporttrace_filter
,trace_block
,trace_transaction
,trace_get
methods and partial calls totrace_replayTransaction
,trace_replayBlockTransactions
methods. Non-default values that will includeVmTrace
orStateDiff
will increase resource usage by a lot!TraceStore.DeserializationParallelization
- Maximum parallelization when deserializing requests fortrace_filter
.0
defaults to logical cores, set to something low if you experience too big resource usage. DefaultValue '0'. Recommended to set to1
or2
on low-core public JSON RPC endpoints.
- Configuration:
Metrics
- Gas Usage Metrics Added metrics for gas usage: GasUsed, GasLimit
- Version Metrics Added better version metric. Resolves #4860
- EIP-2159 metrics Added 4 new metrics that follow eip-2159 (ethereum_blockchain_height ethereum_best_known_block_number ethereum_peer_count ethereum_peer_limit). Resolves #4842
- Fixed Building Gauge Names.
- Fixed main metrics being wrongly updated through JSON RPC call. Resolves #4943
CLI
- Fix eth.syncing command.. Resolves #4537
TxPool
Other fixes
- Fix enode parsing when it contains
DiscoveryPort
. Resolves #4876 - Block Config and Mining Config separation Added separate Block creation configuration settings. Deprecated Mining configuration with added descriptions. Resolves #4836
- Fix edge case in debug_trace when memory tracing is enabled.
- DB repair on corruption Nethermind will now attempt to fix RocksDb file corruption. Requires restart.
Running Nethermind:
Nethermind Launcher is a self-contained app - you do not need to install .NET separately to run it.
PPA
(Tested on Ubuntu Series: Focal
, Bionic
, Xenial
and Trusty
)
sudo add-apt-repository ppa:nethermindeth/nethermind
sudo apt install nethermind
- To execute the launcher
nethermind
- To execute the runner
nethermind --config mainnet
Homebrew
brew tap nethermindeth/nethermind
brew install nethermind
- To execute the launcher
nethermind-launcher
- To execute the runner
nethermind --config mainnet
Docker
docker pull nethermind/nethermind
docker run -it nethermind/nethermind
Linux
sudo apt-get update && sudo apt-get install libsnappy-dev libc6-dev libc6 unzip
wget https://github.com/NethermindEth/nethermind/releases/download/1.15.0/nethermind-linux-amd64-1.15.0-2b70876-20221228.zip
unzip nethermind-linux-amd64-1.15.0-2b70876-20221228.zip -d nethermind
cd nethermind
./Nethermind.Launcher
- select desired configuration
Linux Arm64
sudo apt-get update && sudo apt-get install libsnappy-dev libc6-dev libc6 librocksdb5.17 unzip
wget https://github.com/NethermindEth/nethermind/releases/download/1.15.0/nethermind-linux-arm64-1.15.0-2b70876-20221228.zip
unzip nethermind-linux-arm64-1.15.0-2b70876-20221228.zip -d nethermind
cd nethermind
./Nethermind.Launcher
- select desired configuration
Windows
- download windows package
nethermind-windows-amd64-1.15.0-2b70876-20221228.zip
- unzip the file
- run
Nethermind.Launcher.exe
- select desired configuration
macOS
brew install rocksdb
- download darwin package
nethermind-darwin-amd64-1.15.0-2b70876-20221228.zip
- unzip the file
- run
Nethermind.Launcher
- select desired configuration