Open
Conversation
Add the hardfork testing framework to main without any hardfork-specific code (alpha/beta/gamma modules live on release branches only): - hardfork/common.rs: HardforkUpgrades trait defining system_upgrades(), extra_upgrades(), and storage_patches() interface - hardfork/mod.rs: Module root (only pub mod common) - hardfork_test_helpers.rs: Generic verification functions for any hardfork: - verify_bytecodes_at_block() - verify_bytecodes_old_before_block() - verify_storage_patches() - HARDFORK_TESTING.md: Guide for adding new hardfork tests Release branches should add their hardfork-specific modules (e.g. gamma.rs with GammaHardfork implementing HardforkUpgrades) and use the generic helpers from this framework.
…hods
Add shared hardfork infrastructure to main:
- GravityHardfork enum (Alpha, Beta, Gamma, Delta) in gravity.rs
- EthChainSpec trait methods: {alpha,beta,gamma,delta}_transitions_at_block()
and is_{alpha,beta,gamma,delta}_active_at_block_number() with default false
- ChainSpec.gravity_hardforks field with genesis JSON parsing
(alphaBlock, betaBlock, gammaBlock, deltaBlock from extra_fields)
- ChainSpec impl overrides using gravity_hardforks.is_fork_active_at_block()
Release branches add concrete hardfork modules (alpha.rs, beta.rs, etc.)
that implement the actual bytecode upgrades.
* feat(evm): implement Alpha hardfork contract upgrades and disable PoW rewards (#277) * feat(evm): implement Beta hardfork contract upgrades
Cherry-picked from gamma_fork_test (3599442) onto gravity-testnet-v1.2. Resolved merge conflicts in api.rs, gravity.rs, spec.rs, mod.rs, parallel_execute.rs. Updated test fixture to use top-level genesis config format (alphaBlock/betaBlock/gammaBlock).
Move 12 inline hex arrays (4231 lines) to bytecodes/gamma/*.bin files, loaded via include_bytes!() at compile time. gamma.rs reduced to 98 lines. Zero runtime overhead, identical compiled output.
- Add backticks around StakePool in doc comments (alpha.rs, beta.rs, parallel_execute.rs) - Add doc comments to all ADDRESS constants in gamma.rs
…e._owner The Governance contract was deployed via BSC-style bytecode placement during genesis, which skips the Solidity constructor. This left the Ownable._owner at slot 0 as address(0), making addExecutor/removeExecutor permanently inaccessible and breaking the proposal execution lifecycle. This hardfork writes the correct owner address to storage slot 0, restoring the full governance capability. Changes: - Add Delta variant to GravityHardfork enum - Create delta.rs with GOVERNANCE_OWNER_SLOT and GOVERNANCE_OWNER constants - Add apply_delta() in parallel_execute.rs - Add deltaBlock chainspec parsing in spec.rs - Add delta_transitions_at_block trait method in api.rs - Add integration test coverage for Governance owner storage verification
…testing - GOVERNANCE_OWNER = faucet (0xf39F...) for E2E private key access - Add GovernanceConfig storage writes in apply_delta(): - minVotingThreshold = 1 (slot 0) - requiredProposerStake = 1 (slot 1) - votingDurationMicros = 10s (slot 2) - Bypasses MIN_VOTING_DURATION validation for fast governance testing
6c33365 to
641aafb
Compare
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.
No description provided.