@ethereumjs/client v0.9.0
This client release now syncs with the new Holesky and Dencun devnet-11 test networks and comes with improved sync performance, a revamped post-Merge client UX experience and various beacon sync related fixes and robustness improvements.
Holesky Testnet Support
This client release now fully supports running the new Holesky public Ethereum testnet replacing the Goerli
test network, see , PR #2982 and some following PRs.
The following command starts an EthereumJS client on Holesky:
ethereumjs --network=holesky --rpc --rpcEngine
Then start a corresponding CL client (e.g. Lodestar with checkpoint sync towards https://lodestar-holesky.chainsafe.io
), also see client README.
Dencun devnet-11 Compatibility
Another testnet to be run with this client: Dencun devnet-11
, which is one of the last and eventually the very last testnet before running the Dencun hardfork on the official testnet.
Following spec updates included:
- Update
EIP-4788
: do not use precompile anymore but use the pre-deployed bytecode, PR #2955 - Additional
EIP-4788
updates (address + modulus), PR #3068 - Update the beacon block root contract address, PR #3003
- Fix
newPayloadV2
havingPayloadV3
params, PR #2954 - Include parent beacon block root for proposal payload uniquness, PR #2967
- Fixes for new engine api method validations for hive pr-834, PR #2973
- Track and respond to invalid blocks in engine api and other hive engine-cancun fixes, PR #3077
- Make the newpayload execution of big blocks non blocking, PR #3076
- Hive Cancun fixes, PR #3099
See devnet-11 EthPandaOps GitHub repository for instructions on how to run the testnet.
Sync and EVM/VM (Execution) Performance
This client release integrates with the EthereumJS EVM v2.1.0 (see EVM CHANGELOG for details) which comes with significant performance improvements for various opcodes as well as overall EVM execution.
Furthermore the data model for saving the state has been optimized to improve storage DB read performance, see PR #3023 and PR #3067.
Both changes together should increase client sync performance by 30% or more.
Important: The new db model is not backwards-compatible with existing client databases. Use the new --prefixStorageTrieKeys
(set it to false
) and --useStringValueTrieDB
(set it to true
) flags to preserve the old DB behavior.
New Post-Merge UX Experience
We have gone through the complete post-Merge beacon sync process and reworked the client output along, see PR #3085 and some follow-up PRs. It is now substantially easier to follow the different stages of the sync process (backfilling, forwardfilling & execution, following the chain) and track the overall sync progress. Holesky with its newly initialized state is a great testbed to see the new client capabilities in practice! 🤩
Block/Tx Profiling
The client can be now leveraged as a tool for block and/or tx profiling by using the new --vmProfileBlocks
and --vmProfileTxs
options, see PR #3042. This gives details into the EVM/VM execution performance for specific blocks. See profiler related EVM README section for further details.
Discovery Improvements
A new more fine-tuned discovery discV4
mechanism has been integrated along PR #3120. This should now make it substantially easier to find new peers especially on smaller networks like the devnet-11
and related Dencun test networks. Additionally the --bootnodes
option has been expanded to now also take bootnode.txt
files for easier loading of bootnodes.
Skeleton/Beacon Sync Reworks and Fixes
- Some skeleton improvements from observations on devnet syncs, PR #3014
- Decouple skeleton from beacon sync, PR #3028
- Fix canonical reset of the chain by the skeleton, PR #3078
- Skeleton reorg head fixes, PR #3085
- Fixes regarding beacon sync, vmexecution and further log improvs, PR #3094
- Various rebase and sync related improvements along PR #3031
Other Features
- Add
eth_coinbase
RPC method, PR #3079 - Add Option to Return Actual Caught Error Message and Stack Trace when RPC Call Fails, PR #3059
- More fine-grained
--rpcDebug
option (enable/disable specific RPC module logs), PRs #3102 and #3127
Other Changes and Fixes
- Properly handle errors in
storageRangeAt
RPC method, PR #2952 - Fix TxPool not being started along FCU, PR #3100
- Fix initialization order when blocks are preloaded, PR #2979
- Add error handling for async errors in client, PR #2984
- Deactivate storage/account caches for cache size 0, PR #3012
- Rewrites block fetcher
sync()
without theasync-promise-generator
api, PR #3030 - Clean up CLI arg passing, PR #3036
- Docker related updates, PR #3065
- Use same Cache Setup for normal and executeBlocks-triggered Execution, PR #3063
- Simplify client transports, breaking: removed
--transports
, PR #3069 - Experimental SNAP sync integration (larger announcement later on, but feel free to already experiment with it using the
--snap
option)! 😆), PR #3031 - Guard against rpc port collisions, PR #3083
- Change execution stats intervals, PR #3106
- pendingBlock fix if FCU is called with withdrawals=null pre-cancun, PR #3119
- Handle an edge case in
newpayload
block execution, PR #3131