Conversation
…oved readability and maintainability
…nsistency in package naming
- Add SetEnoughStreamsCallback method to Operator interface - Implement SetEnoughStreamsCallback in streamManager struct - Add enoughStreamsCallback field to streamManager - Call callback when softHaveEnoughStreams() is true - Enables early exit from startup mode when enough streams are found
- Add startup mode with faster timings for initial peer discovery - Centralize all timing constants in const.go - Add network-specific DHT request limits and target valid peer counts - Align target valid peers with stream sync configuration requirements - Improve adaptive sleep logic with SleepDecreaseRatio - Add comprehensive timing constants for startup vs normal modes
- Add startup mode with faster timings for initial peer discovery - Implement early exit from startup mode when enough streams found - Add network-specific peer discovery limits and validation - Improve advertise() function with better error handling and logging - Add isValidPeer() stub for future peer validation logic - Use configurable DHT request limits instead of hardcoded values - Add target valid peer counting and filtering - Improve advertiseLoop() with adaptive timing based on discovery success
- Add TestProtocol_Advertise with mock discovery and proper setup - Add TestProtocol_AdvertiseLoop with timing validation - Add TestProtocol_ExitStartupMode for startup mode functionality - Add TestProtocol_GetDHTRequestLimit for network-specific limits - Add TestProtocol_GetTargetValidPeers for target peer validation - Fix interface compilation errors by adding SetEnoughStreamsCallback stubs - Add mockDiscovery struct to properly mock discovery interface - Update tests to handle nil pointer scenarios and proper initialization
… - 194*6%==11 bls keys and we already have validators in the mainnet using this (#5015)
* Add block timestamp validation * test(chain): fix timestamp validation tests by seeding parent header
* Move TLOAD/TSTORE to Ethereum addresses (0x5c/0x5d) * initial version of eip-5656
* feat(ntp): update NTP offset every minute and use it for block timestamps - Add NTPTime interface and periodic offset refresh (every 1 minute) via Run() - Store NTP time provider in Registry with Now() accessor - Pass NTP-corrected time to Worker.UpdateCurrent() when proposing blocks - Fix consensus_block_proposing.go to use registry.Now() for block timestamp - Wire NTP provider in main.go with go impl.Run(ctx, time.Minute) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat(ntp): add NTPEpoch activation epoch (disabled, set to EpochTBD) - Add NTPEpoch field to ChainConfig with EpochTBD in all network configs - Add IsNTP(epoch) helper method - Use NTP-corrected time in ProposeNewBlock only when IsNTP is active Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs(ntp): add comments to NTP time provider and block proposing Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(ntp): update NTPEpoch and TimestampValidationEpoch to 47170 * refactor(config): reorder TimestampValidationEpoch in configuration
* EIP-2935 initial version * refactor EIP-2935 implementation * remove unused method: newPraugeInstructionSet * eip-2935: update contract code & addr * expose EVM Config * core: fix ProcessParentBlockHash ringIndex calculation * Fix EIP-2935 implementation to match Ethereum specification - Add ProcessBlockHashHistory function that properly populates the entire history buffer - Fix ProcessParentBlockHash function signature and implementation - Implement correct ring buffer logic for 8192-block history window - Handle transition from old 256-block window to new 8192-block window - Ensure proper parameter ordering and function calls - Fix test compilation issues * Fix TestProcessBlockHashHistory test compilation issues - Simplify test to use direct state database creation instead of complex test environment - Remove debug panic statements that were added for troubleshooting - Add proper imports for rawdb and state packages - Ensure test can run without nil pointer dereference errors * fix conflicts and issues after rebase with new ethereum upgrade * fix: correct EIP-2935 implementation - Fix ProcessBlockHashHistory fork block detection logic - Update BLOCKHASH opcode to support history storage contract (8192 blocks) - Add IsPrague flag to Rules struct for EVM chain rules * fix: correct EIP-2935 blockhash history implementation - Fix opBlockhash to exclude 256-block window from history lookup - Fix ProcessBlockHashHistory to store correct block hashes - Add nil check for genesis block case
* remove(ntp): eliminate NTP-related configurations and functionality * refactor(consensus): pass current time to ProposeNewBlock for accurate timestamp handling
* feat(tracers): add call tracer implementation with asset loading * refactor(tracers): remove unnecessary log statement from call tracer registration * refactor(tracers): remove init function for call tracer registration * fix(goja): update gas context value to use dynamic gas variable * refactor(tracers): remove debug print statement from ParityBlockTracer
* update(config): set specific epochs for EIP7939, EIP5656, EIP3855, EIP3860, and EIP8024 * feat(config): set specific epochs for EIP7939, EIP5656, EIP3855, EIP3860, and EIP8024 to 7163 * feat(config): set TimestampValidationEpoch on the testnet to the 7170 * feat(config): set EIP6780Epoch for devnet and testnet * fix(tests): remove NTPEpoch from tests --------- Co-authored-by: Uladzislau Muraveika <uladzislau.muraveika@protofire.io>
Collaborator
Author
|
Hello @Frozen and @GheisMohammadi, let's together agree on the epoch/dates for the hardfork 🙏 Please also review the description, I'll reuse into the release |
GheisMohammadi
approved these changes
Jun 5, 2026
* fix: gate duplicate beacon slash evidence behind fork epoch * fix slashes check for dublicate entries * add regression tests for Slash Evidence Uniqueness * fix goimporrts issue
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
* core: Fix slash group ordering with canonical sort * test: add slash group state order tests
* slash: reject double-sign evidence with epoch-height mismatch * add double sign rebind tests * fix goimports issue * fix double sign tests * fix slash group tests
* feat(config): add CXReceiptStateRollbackEpoch for cross-shard receipt handling * refactor(interpreter): improve EIP activation by using a copy of the JumpTable
* feat(engine): reject shard state on non-last blocks and add corresponding test * update shard state verification to reject empty states and adjust corresponding tests
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Mainnet Release v2026.1.0
TODO: The dedicated hardfork PR will document the final activation epoch/block, operator deadline, and hardfork-specific compatibility notes.
Attention mainnet node operators. There will be a mandatory upgrade as a hardfork will occur at:
Validator and Explorer/RPC nodes are strongly encouraged to upgrade, because this release contains a significant amount of code changes across p2p startup, stream sync, consensus timestamp handling, RPC/tracing, EVM compatibility, node configuration.
Caution
Validator operators must configure Chrony before running this release, follow the official validator Chrony setup guide: https://docs.harmony.one/home/network/validators/node-setup/0.-recommended-chrony-setup-for-validator-nodes.
The released version:
v2026.1.0-0-g<commit>Set of changes:
Consensus Timestamp Safety
Important
This is a consensus-safety and liveness improvement. Validators should upgrade because this release improves timestamp validation and prevents proposer stalls caused by block-time skew.
Time Synchronization / Mandatory Chrony Setup
Important
Chrony setup is mandatory for validator nodes. Incorrect local time may cause block proposal delays, future-block validation failures, or view-change instability.
Stream Sync & P2P Startup Reliability
SetEnoughStreamsCallbacksupport toStreamManager, allowing the sync pipeline to leave startup mode as soon as enough valid streams are available.Important
This improves node startup and sync recovery behavior. It does not require a hardfork activation by itself.
RPC, Tracer & Explorer Compatibility
block_tracer.goandblock_tracer_storage.gofiles.callTracerimplementation with asset loading.structLogJSON encoding compatibility.Important
Explorer/RPC operators should upgrade because this release includes trace API compatibility fixes and rate-limiting safeguards for expensive RPC paths.
EVM / Ethereum Compatibility Groundwork
CLZopcode support and chain-rule plumbing.MCOPYopcode support and rule checks.SELFDESTRUCTbehavior rule plumbing.PUSH0opcode support.Important
This section documents code support and EVM compatibility groundwork.
Mainnet hardfork activation details are intentionally not included here and should be added by the dedicated hardfork PR.
Node Configuration, BLS Keys & Runtime Safety
BLSKeys.MaxKeysfrom10to11.Important
Hardfork activation is intentionally not documented in this changelog.
A separate hardfork PR should add:
PR / commit list:
Full Changelog: main...dev