This is a mandatory node upgrade, however, there is no specific deadline since there is no hardfork.
Still Validator and Explorer/RPC nodes are strongly encouraged to upgrade, because there were a lot of code changes on the p2p, consensus, evm and sync changes.
The released version: v2026.0.0-0-g638a6e7f6
Set of changes:
Open Beta: Stream Sync (P2P-Based Synchronization)
- Introduces Stream Sync as a fully P2P-based synchronization mechanism, removing reliance on DNS-based syncing.
- Implements staged full synchronization with smart stream selection and failure-based prioritization.
- Adds progress-based timeouts, configurable chunk sizes, improved stream health monitoring, and structured stream error classification.
- Integrates BlockNumberCache to reduce redundant block number requests and improve sync efficiency.
- Enhances crosslink validation, epoch filtering, and sync lifecycle handling to prevent nodes from getting stuck.
- Includes comprehensive memory leak prevention and cleanup logic across stream and download managers.
- If you want to go deeper, please read specification
Important
Please note: Stream Sync remains optional; legacy synchronization remains the default for operators.
P2P Transport & Muxer Updates
- Replaces deprecated
mplexwith updated muxer configuration. - Introduces
mplexC6and prioritizesyamuxduring connection negotiation. - Improves muxer negotiation logic with case-insensitive handling.
- Adds logging to indicate negotiated muxer per connection.
- Limits P2P stream goroutines to prevent resource exhaustion.
- Reduces log noise from benign stream removal events.
Important
During the transition from legacy mplex to mplexC6, yamux acts as a compatibility bridge to ensure seamless connectivity between upgraded and non-upgraded nodes.
Operators are safe to upgrade — connection interoperability is preserved during the transition period.
BlockNumberCache: Performance and Stability Improvements
- Adds BlockNumberCache to optimize block height queries across peers.
- Tracks cache hit/miss statistics and invalidates entries on stream failures.
- Fixes eviction edge cases, race conditions, and double-stop panics.
- Ensures safe shutdown by stopping background cleanup goroutines.
- Includes benchmarks and extended test coverage.
BLS12-381 / EIP-2537 Precompile Support
- Implements full BLS12-381 elliptic curve precompiles including G1, G2, pairing, SWU, and isogeny operations.
- Adds field arithmetic support (fp, fp2, fp6, fp12) and optimized multiplication backends.
- Updates gas cost calculations and activation configuration under EIP-2537.
- Aligns precompile initialization and address assignments with protocol specifications.
- Adds comprehensive success and failure test coverage.
Important
Please note: this change will require a future hard fork. The activation date will be announced separately.
go-ethereum Upgrade & EVM Alignment
- Upgrades embedded go-ethereum components to align with upstream behavior.
- Aligns SSTORE gas calculation and jump table initialization with latest go-ethereum rules.
- Fixes tracer-related fork risks during block processing.
- Resolves nil trie panics and edge cases leading to potential data inconsistencies.
- Updates chain ID handling and built-in EVM logic to match upstream implementation.
- Improves RLP decoding fallback handling for better compatibility and stability.
Shard Configuration Update (4 → 2)
- Updates shard count from 4 to 2 across configuration files.
- Adjusts wallet, Rosetta, VM tests, and consensus constants accordingly.
- Removes obsolete shard configuration sections.
Trusted Peers & Networking Enhancements
- Improves trusted peer handling with DNS auto-population.
- Prevents self-dial errors and fixes bootnode nil host panics.
- Enhances stream removal logic and error handling stability.
- Expands networking-related metrics for better observability.
Monitoring & Stability Improvements
- Expands metrics for stream management and recoverable errors.
- Prevents goroutine leaks and improves cleanup logic.
- Reduces log noise while improving contextual logging.
- Increases test coverage for race conditions and edge cases.
PR list:
- Clean up Waiting Requests as well to Avoid Goroutine Leaks by @GheisMohammadi in #4908
- Fix a Logic Bug Preventing Download Triggers by @GheisMohammadi in #4909
- Add New Metrics to Stream Manager and Request Manager by @GheisMohammadi in #4906
- Limit P2P Stream Goroutines by @GheisMohammadi in #4907
- Thread-Safe Stream Removal Info by @GheisMohammadi in #4905
- Build Static Linux Executable from macOS by @GheisMohammadi in #4852
- Refactor libp2p muxer config: use mplexC6 and yamux as default multiplexers by @GheisMohammadi in #4902
- Handle Future Blocks and Partially Synced Peers Gracefully During Epoch Sync by @GheisMohammadi in #4920
- Set YaMux as Priority by @GheisMohammadi in #4919
- Log active muxer in p2p host by @GheisMohammadi in #4918
- Prefer trusted peers for streams by @GheisMohammadi in #4914
- Do not set consensus mode for epoch chain sync by @GheisMohammadi in #4924
- EIP-2537: Add BLS12-381 Precompiles Support to EVM by @GheisMohammadi in #4922
- [Bootnode] - Fix Data Corruption Issue by @joycaleb9705 in #4925
- Improve EIP-2537 Implementation by @GheisMohammadi in #4926
- feat(localnet) - add a possibillity to run extra nodes in already running localnet by @mur-me in #4928
- Resolve Port Conflicts in Localnet Extra Nodes Configuration by @GheisMohammadi in #4932
- Fix Macos Linux Static Build by @joycaleb9705 in #4933
- Update EIP-2537 Specs by @GheisMohammadi in #4929
- StagedStreamSync: Robustness Improvements, Refactoring, and Enhanced Error Handling by @GheisMohammadi in #4930
- refactor: remove deprecated sync codes and enable stream sync by default by @GheisMohammadi in #4936
- Fix: Improve Crosslink Heartbeat Processing and Reduce Log Noise by @GheisMohammadi in #4931
- Fix cross-link processing infinite loop by adding sync status checks and retry mechanism by @GheisMohammadi in #4941
- Implement Progress-based Timeout System and Enhance Sync Detection Logic by @GheisMohammadi in #4940
- Reduce shard count from 4 to 2 across entire codebase by @GheisMohammadi in #4935
- fix: eliminate redundant timeout warning logs and improve debugging context by @GheisMohammadi in #4944
- feat: optimize epoch chain sync with specialized staged sync pipeline and improve performance for crosslinks processing by @GheisMohammadi in #4943
- Fix staged stream sync RLP decoding to handle both extblock and BlockWithSig formats by @GheisMohammadi in #4947
- Fix: mutex possible deadlock by @Frozen in #4946
- Enhancement of Cache Management in Staged Stream Sync by @GheisMohammadi in #4956
- refactor(rosetta): silence the rossetta stdout logs by default by @mur-me in #4952
- Optimize sync status checking with role-based strategies and early exit optimization by @GheisMohammadi in #4959
- Add retry mechanism for leader nodes in staged stream sync downloader by @GheisMohammadi in #4957
- updated gencodec version to v0.1.1 by @Frozen in #4948
- Fix TestRequestManager_RemoveStream race condition by @GheisMohammadi in #4966
- Improve Trusted Nodes Handling; Auto-populate from DNS Node by @GheisMohammadi in #4962
- Update 1.10: London and Berlin forks by @Frozen in #4953
- Enable Stream Sync Client by Default on Devnet & Testnet by @GheisMohammadi in #4961
- Improve Stream Error Handling and Classification by @GheisMohammadi in #4945
- Transient storage epoch activation for testnet. by @Frozen in #4971
- Removed blacklist functionality from transaction pool by @Frozen in #4965
- Fix Precompiled Contracts Initialization and Address Assignments by @GheisMohammadi in #4976
- Fix: Apply same rule eips activation as main branch by @Frozen in #4980
- fix: Correct SSTORE gas calculation to match main branch behavior by @GheisMohammadi in #4978
- Enhance long-range/short-range sync switching logic in staged stream sync by @GheisMohammadi in #4977
- Fix nil trie panic in getDeletedStateObject for test scenarios by @GheisMohammadi in #4983
- Add default trusted DNS nodes for Mainnet, Testnet, and Devnet by @GheisMohammadi in #4974
- Fix DeleteEntry logic bug in delegation by @GheisMohammadi in #4982
- Fix tracer nil pointer panic by adding nil checks by @GheisMohammadi in #4981
- Fix flaky TestDiffLayerExternalInvalidationPartialFlatten by marking by @GheisMohammadi in #4985
- Add explicit Devnet case handling in network type switch statements by @GheisMohammadi in #4984
- fix(tests): add more ntp servers to mitigate dependency to 0.pool.ntp.org which is rotated each hour by @mur-me in #4986
- Fix: Disable Tracer during normal block processing by @GheisMohammadi in #4988
- Fix leader rotation v2 implementation bug by @GheisMohammadi in #4987
- Updated opChainID to handle harmony chain ID by @Frozen in #4992
- Fix for harmony specific logic support in builtin evm function. by @Frozen in #4999
- fix: identifySyncedStreams exclude logic, goroutine closure, and cleanup by @GheisMohammadi in #5000
- build logPrefixes from forward stages, guard LogPrefix out-of-range by @GheisMohammadi in #5001
- Staged Stream Sync Bug Fixes and Cleanup by @GheisMohammadi in #5002
- fix: resolve resource leaks, deadlocks, and correctness issues in p2p stream sync by @GheisMohammadi in #5003
- Fix bootnode host initialization guards and pprof blocking by @GheisMohammadi in #5004
- Fix: silence log spam from "stream already removed" on sync stream close by @GheisMohammadi in #5006
- Add Block Number Cache to Staged Stream Sync by @GheisMohammadi in #4942
- refactor: Standardize ChainConfig field ordering across all network configurations by @GheisMohammadi in #4995
- fix: prevent dial-to-self in AddDNSNodestoTrustedPeers by @GheisMohammadi in #5007
- fix: prevent stream aliasing race conditions in sync stream close and stream manager by @GheisMohammadi in #5008
- fix: defer and classify stream errors in identifySyncedStreams to prevent aggressive removal by @GheisMohammadi in #5009
- Release Candidate 2026.0.0 (dev -> main) by @GheisMohammadi in #4960
Full Changelog: v2025.1.1...v2026.0.0