Skip to content

test: add delta hardfork for governance e2e#308

Open
ByteYue wants to merge 8 commits intomainfrom
test/delta-governance-e2e
Open

test: add delta hardfork for governance e2e#308
ByteYue wants to merge 8 commits intomainfrom
test/delta-governance-e2e

Conversation

@ByteYue
Copy link
Contributor

@ByteYue ByteYue commented Mar 25, 2026

No description provided.

ByteYue and others added 8 commits March 21, 2026 23:42
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
@ByteYue ByteYue force-pushed the test/delta-governance-e2e branch from 6c33365 to 641aafb Compare March 25, 2026 12:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants