Releases: Galxe/gravity-sdk
Gravity Testnet v1.1.0 [WITHDRAWN]
Release: gravity-testnet-v1.1.0
⚠️ WITHDRAWN — DO NOT USE⚠️ This release has been withdrawn due to a critical bug. Please skip directly to v1.1.1.
Full Changelog: gravity-testnet-v1.0.0...gravity-testnet-v1.1.0
Related Release: gravity-reth gravity-testnet-v1.1.0
Breaking Changes
Alpha Hardfork — System Contract Bytecode Upgrade
This release introduced the Alpha hardfork, which performs a hot-swap of system contract runtime bytecode at a specified block height. It is the first use of Gravity's on-chain upgrade mechanism via the execution layer.
Key changes:
- Staking Contract Upgrade: Replaced the runtime bytecode of the
Stakingcontract with the latest version (10,867 bytes) compiled from gravity_chain_core_contracts. - StakePool Contract Upgrade: Replaced the runtime bytecode of all 4 existing
StakePoolcontracts with the latest version (6,824 bytes). - Block Reward Minting Disabled: Disabled block reward minting during the PoW phase at the consensus layer to prevent unintended inflation.
Node Upgrade
All node operators must upgrade to this version and configure the alphaBlock activation height in genesis.json:
{
"config": {
"alphaBlock": 8287964
}
}Rebuild from source and restart the node binary. No database wipe is required — the execution layer seamlessly injects the upgraded contracts at the specified block height.
Known Issue (Critical)
After deployment, a critical issue was discovered:
StakePool FACTORY immutable variable zeroed out. The bytecode was extracted from forge build output, which does not include initialized immutable constants. As a result, the FACTORY immutable in all 4 StakePool contracts was set to address(0), causing all onlyFactory permission checks to revert.
Impact: All staking operations that route through the StakePool contract's factory-gated functions fail with a revert.
Resolution: This issue is fixed in v1.1.1 via the Beta hardfork, which re-injects the correct runtime bytecode extracted from the live chain using cast code.
What's Changed
Features
- feat: implement Alpha hardfork with system contract bytecode hot-swap
- feat: add
Stakingcontract upgrade (10,867 bytes) at hardfork activation block - feat: add
StakePoolcontract upgrade for 4 known addresses (6,824 bytes each) - feat: disable block reward minting during PoW phase
Infrastructure
- chore: bump gravity testnet v1.1.0
Full Changelog: gravity-testnet-v1.0.0...gravity-testnet-v1.1.0
Gravity Testnet v1.0.0
Release: gravity-testnet-v1.0.0
Full Changelog: v0.4.1...gravity-testnet-v1.0.0
Related Release: gravity-reth gravity-testnet-v1.0.0
Breaking Changes
System Contract Upgrade
This release introduces a complete system contract overhaul. All system contracts have been replaced with new implementations from gravity_chain_core_contracts, and are fully incompatible with the previous versions.
Key breaking changes:
- New Contract Integration: Integrated new
gravity_chain_core_contractswith fixes, replacing the entire on-chain contract suite (#516). - New Genesis Generation: Migrated genesis generation to
gravity_chain_core_contracts, changing the entire genesis flow (#524). - New Proposer Index Contract: Added support for new contract about
proposer_index(#533). - New Oracle Architecture: Migrated relayer to the new oracle architecture with redesigned interfaces (#525).
- On-chain Consensus Config: Consensus configuration is now read from on-chain instead of hardcode (#559).
- BLS Verify Precompile: Added BLS12-381 proof-of-possession verification precompile support for consensus public key validation during validator registration (#573).
- CLI Overhaul: Updated
gravity_clito support new genesis contracts (#545), decoupled join into separate stake and join steps (#560). - Cluster Configuration Separation: Separated genesis and node deployment configuration into distinct files (#553).
Note: This is the first release for the Gravity Testnet. All nodes must be freshly deployed with the new system contracts — there is no backward compatibility with any previous devnet or internal versions.
What's Changed
Features
- feat(rocksdb): Integrating RocksDB into Greth by @AshinGau in #462
- chore: update deploy_new.sh to support diversified config files by @nekomoto911 in #463
- feat(e2e): add comprehensive randomness test suite by @Lchangliang in #455
- feat(cli): support validator list for gravity_cli by @nekomoto911 in #476
- feat: add universe type in batch generator by @keanji-x in #475
- enhance(cli): make gravity_cli exit with code 1 when a command execution fails by @nekomoto911 in #481
- feat(http): implement http api for getting latest ledger info by @nekomoto911 in #482
- feat: add e2e test scripts by @keanji-x in #486
- feat: add e2e cicd by @keanji-x in #487
- feat: enable fmt and clippy cicd by @ByteYue in #484
- feat: add e2e test doc by @keanji-x in #496
- feat: modify test scripts and add bench test doc by @AshinGau in #497
- refactor: pass block_hash and block_number to generate_commit_ledger_info by @ByteYue in #499
- feat: fmt code by @keanji-x in #502
- feat: add new start method by @keanji-x in #515
- feat(mempool): add iterator caching and limit for batch pull by @keanji-x in #479
- feat: integrate new gravity_chain_core_contracts with fixes by @ByteYue in #516
- feat(cluster): migrate genesis generation to gravity_chain_core_contracts by @ByteYue in #524
- feat: support graceful shutdown by @keanji-x in #527
- feat: Add initial genesis configuration and update E2E test framework. by @keanji-x in #528
- [feat] Support new contarct about proposer_index by @Lchangliang in #533
- feat: introduce genesis and vfn roles to cluster deployment scripts by @nekomoto911 in #534
- feat: update gaptos and ensure identity consistency across network config and identity_blob by @nekomoto911 in #535
- feat: Introduce a new Python-based end-to-end testing framework with initial single and four-validator cluster test cases. by @keanji-x in #537
- feat: update gravity_cli to support new genesis contracts by @nekomoto911 in #545
- feat: improve e2e test infrastructure for benchmarking by adding bench account loading and increasing faucet accounts. by @keanji-x in #547
- feat: Implement fuzzy epoch switch test by @nekomoto911 in #541
- feat: Migrate relayer to new oracle architecture by @ByteYue in #525
- feat: Introduce a new sentinel binary for log file monitoring by @keanji-x in #522
- feat: Add a Docker runner for E2E tests by @keanji-x in #554
- feat(sentinel): refactor sentinel to use linemux and add whitelist support by @nekomoto911 in #556
- enhance(cli): print tx hash before waiting for confirmation by @nekomoto911 in #558
- feat(cli): Decouple join into stake and join steps by @nekomoto911 in #560
- feat: Add bridge E2E test suite with oracle-based cross-chain minting by @ByteYue in #555
- feat: read consensus config from onchain instead of hardcode by @ByteYue in #559
- feat: add bridge E2E latency measurement with updated consensus config by @ByteYue in #563
- feat: upgrade greth & gaptos to fix randomnessconfig error by @Lchangliang in #564
- feat(e2e): add MockAnvil for high-volume bridge E2E testing by @ByteYue in #565
- feat: Add missing validator config autoEvictEnabled and remember to checkout to actual ref by @ByteYue in #567
- feat: Implement batch block execution controlled by the BATCH_COMMIT_SIZE environment variable, add corresponding end-to-end tests, and reduce the genesis epoch interval. by @keanji-x in #570
- feat: support bls verify precompile by @nekomoto911 in #573
- feat: Add long-running failover stability test suite with a new pytest marker and update the test runner to exclude it by default. by @keanji-x in #571
Bug Fixes
- [bugfix]: filter ledger_infos by retrieval_epoch in block retrieval by @Lchangliang in #465
- fix(api): fix https server startup and refactor config by @Lchangliang in #464
- fix: fix txn mem leak by @keanji-x in #467
- fix(vfn): filter consensus msg and rpc request based on role by @nekomoto911 in #468
- fix: bias select batch in batch generator by @keanji-x in #474
- fix(cli): fix cargo.lock and update ci by @nekomoto911 in #477
- fix(vfn): make request_sync_info a background asynchronous task by @nekomoto911 in #480
- [bugfix] Fix randomness persistence by @Lchangliang in #483
- fix: update reth by @keanji-x in #485
- fix: fix clippy by @keanji-x in #498
- fix(pipe): wait PipeExecLayerEventBus ready in a loop by @AshinGau in #500
- fix: fix log in PipelinedBlock::set_execution_result by @nekomoto911 in #501
- fix: Clippy gnode by @keanji-x in #505
- fix: clippy api by @keanji-x in #506
- fix: Clippy bbo by @keanji-x in #507
- fix: clippy consensus by @keanji-x in #509
- fix: clippy mempo...
v0.4.1
What's Changed
- feat(block-buffer-manager): handle epoch change when setting ordered blocks by @Lchangliang in #454
- feat: add epoch management to BlockBufferManager and RethCli by @Lchangliang in #456
- fix: add early return check for sync_from_cert round comparison by @Lchangliang in #458
- fix: revert to rebuild in
fast_forward_sync_by_epochby @Lchangliang in #459 - refactor(consensus): Delay epoch update and improve error handling by @Lchangliang in #460
- chore: bump v0.4.1 by @nekomoto911 in #461
Full Changelog: v0.4.0-patch...v0.4.1
v0.4.0
Caution
Please use the v0.4.1 which includes some important hotfix for this release.
What's Changed
- fix: fix mock consensus by @keanji-x in #386
- fix: remove cache init when create block store by @keanji-x in #388
- [Bugfix] Fix miss block because execute dup block number blocks by @Lchangliang in #392
- [improve] Support to filter when read from db by @Lchangliang in #393
- fix: reset pending txn if there is no txn by @keanji-x in #390
- feat: add version by @keanji-x in #395
- feat: add mempool trait by @keanji-x in #394
- fix: use mempool trait in mock consensus by @keanji-x in #396
- feat(gravity_cli): add comprehensive genesis tooling by @Lchangliang in #400
- fix(consensus): fix BatchRetrieval epoch handling by @Lchangliang in #401
- fix: add lib.rs and remove kv store by @keanji-x in #403
- feat: Enable jwk by @ByteYue in #389
- [bugfix] Fix get_max_epoch by adding seek_to_last() for reverse iterator initialization by @Lchangliang in #399
- feat: add shared_mempool by @keanji-x in #411
- feat: add broadcast txn by @keanji-x in #409
- feat: Implenment core trait by @keanji-x in #412
- fix: fix txn validator by @keanji-x in #413
- feat: implement block sync for fullnode by @nekomoto911 in #406
- chore: update Rust toolchain version to 1.88.0 by @ByteYue in #414
- feat: Pass proposer bytes to greth && enhance exactly once for relayer by @ByteYue in #408
- fix: fix
BatchRequesterState::next_request_peersby @nekomoto911 in #415 - perf(consensus): replace rebuild with incremental append for block by @Lchangliang in #416
- fix: Reduce TLS size by loosen the debug level for debug compilation by @ByteYue in #417
- feat: make mempool trait sync by @keanji-x in #418
- fix: remove some unused call in mempool by @keanji-x in #420
- refactor: remove useless mempool by @keanji-x in #421
- fix: Fix the error test added by validator component. by @ByteYue in #423
- fix(fullnode): skip
start_quorum_storeif the node is not a validator by @nekomoto911 in #424 - feat: disable validator broadcast txn by @keanji-x in #422
- feat: support block sync for validator node which is not the current epoch validator by @nekomoto911 in #425
- fix(recovery): fix missing persistent barrier in block recovery by @nekomoto911 in #426
- chore: update gaptos to remove some logs by @keanji-x in #427
- refactor(quorum_store): add epoch to batch schema by @Lchangliang in #402
- feat: support tracing and log rotation in aptos by @keanji-x in #428
- feat: implement DKG by @Lchangliang in #419
- [bugfix] Unsupport dkg in vfn by @Lchangliang in #429
- feat: use greth merge-v1.8.3 by @nekomoto911 in #430
- chore: update node config in deploy_utils by @nekomoto911 in #432
- chore: add Cargo.lock by @nekomoto911 in #433
- chore: update greth and gaptos version by @keanji-x in #434
- feat: add e2e framework by @ByteYue in #431
- [bugfix] Fix is_last_block error by @Lchangliang in #435
- bugfix: retrieve ledger_info from LedgerInfoSchema at epoch boundary by @Lchangliang in #437
- feat(cli): implement join validator for gravity_cli by @nekomoto911 in #436
- fix(consensus): Fix and enable DKG test cases by @Lchangliang in #438
- fix: update gaptos to fix tracing write error by @nekomoto911 in #439
- fix(cli): fix consensusPublicKey encoding in JoinCommand by @nekomoto911 in #440
- feat: update gaptos by @nekomoto911 in #441
- refactor: Refactor e2e contract test for eth_call by @ByteYue in #442
- fix(consensus): Improve error handling for quorum cert retrieval by @Lchangliang in #443
- [bugfix] Fix sync error when add validator by @Lchangliang in #444
- feat(cli): implement leave validator for gravity_cli by @nekomoto911 in #447
- chore: update greth version to fix mempool by @keanji-x in #448
- refactor: improve error handling and add comments in process_block_retrieval by @Lchangliang in #449
- chore: bump version v0.4.0 by @nekomoto911 in #446
- feat(consensus): move epoch change message sending to persisting phase by @Lchangliang in #450
- test: Add jwk case for e2e test by @ByteYue in #445
- chore(cli): hardcode validator manager contract address in gravity_cli by @nekomoto911 in #451
- chore(fullnode): set default block_sync_interval to 200ms by @nekomoto911 in #453
- refactor: optimize randomness check logic in sync_to_highest_commit_cert by @Lchangliang in #452
Full Changelog: v0.3.2-patch...v0.4.0-patch
v0.0.3: Pre-alpha
What's Changed
- [improve] Improve Block number by @Lchangliang in #117
- [feat] add reth v2 by @keanji-x in #119
- [feat]: add bridge to call execution api v2 function by @keanji-x in #122
- [fix] remove reth dependencies and add async trait by @keanji-x in #123
- [feat] add recv unbroadcast txn api and implement it for kv store v2 by @keanji-x in #124
- feat: Able to run kv store v2 using execution api v2 by @ByteYue in #125
- feat: able to bench kv store using quorum store by @ByteYue in #126
- feat: Add one file
account_latest_committed_sequence_numberin verifiedTxn by @ByteYue in #127 - [feat]: Bring account_latest_committed_seq_num when recv pending txns by @ByteYue in #128
- [improve] refactor shared mempool by @Lchangliang in #129
- [improve] Make ExecutionApi all func async by @Lchangliang in #130
- [improve] Unsupport prune tree by @Lchangliang in #131
- chore: remove useless bench server code & comment some test code by @ByteYue in #132
- [improve] Fix test error by @Lchangliang in #133
- [improve] fix error case by @Lchangliang in #134
- [Fix] Modify Case by @Lchangliang in #135
- [Bugfix] Fix channel branch disable by @Lchangliang in #136
- [bugfix] Fix todo code by @Lchangliang in #137
- [bugfix]: Don't blocking wait on recv unbroadcast txn by @ByteYue in #138
- feat: Refactor the bench bin to do new bench mark by @ByteYue in #140
- [chore]: Temporarily make
ENABLE_QUORUM_STOREone env instead of using on chain config by @ByteYue in #141 - [opt]: Use new runtime for
retrieve_from_execution_routineto prevent contention by @ByteYue in #142 - [opt]: Use signedtransaction in mempool transaction intead of verified txn to prevent the time-consuming committed hash calculating logic by @ByteYue in #143
- [improve] Refactor recovery api by @Lchangliang in #144
- [feat] Implement RethCoordinator for external transaction processing by @keanji-x in #139
- [feat] init genesis when start consensus and coordinator by @keanji-x in #145
- [feat]: Able to set leader when using bench & able to control whether to produce txn or not for bench mode by @ByteYue in #146
- [feat] call pipeline api in coordinator of reth-v2 by @keanji-x in #147
- [improve] Support some tests by @Lchangliang in #148
- [opt]: Only leader for bench can produce txn. by @ByteYue in #149
- [chore]: Remove useless kvstore code by @ByteYue in #150
- [chore]: Fix compile issue by @ByteYue in #152
- [chore]: Add readme for the kv store. by @ByteYue in #151
- [fmt] remove reth-v1 and format reth-v2 by @keanji-x in #153
- [chore]: Add dashboards for grafana from aptos. by @ByteYue in #154
- [fix] remove reth v2 in cargo.toml by @keanji-x in #155
- [feat] add mempool and construct txn from mempool by @keanji-x in #156
- [feat]: Add aptos-telemetry by @ByteYue in #157
- [fix] fix byets endian when covert txn in web3 crate to reth txn by @keanji-x in #158
- [feat]: Able to set fail point at runtime using http service by @ByteYue in #159
- [chore]: Remove useless execution_api v1 code and related code by @ByteYue in #160
- [chore] Remove lib and dependencies in cargo and rename reth to peth to avoid conflict by @keanji-x in #161
- [feat] support pipeline in reth and aptos by @keanji-x in #163
- Revert "[feat] support pipeline in reth and aptos" by @keanji-x in #164
- [feat] support exec in pipe with reth and aptos by @keanji-x in #165
- [feat]: Set fail point should be one http interface instead of https by @ByteYue in #166
- [feat]: Support specify the code tag or branch and support peth in makefile. by @ByteYue in #162
- [feat]: Return tx hash when submitting tx by @ByteYue in #167
- [feat] check account nonce in coordinator and skip the txn with old nonce by @keanji-x in #168
- [feat]: Specify the version for
wasm-bindgento compile peth in linux by @ByteYue in #169 - [feat]: Log the build information when starting node. by @ByteYue in #170
- [feat]: Crash when task in tokio panics by @ByteYue in #171
- [feat]: Introduce prometheus_node_metrics by @ByteYue in #172
- [feat] add txn status to avoid add commited txn in batch by @keanji-x in #173
- [feat]: Disable telemetry service by default by @ByteYue in #174
- [feat]: Enable rotating leader using consensus runtime by @ByteYue in #175
- [bugfix]: Set corresponding block number along with the block meta by @ByteYue in #176
- [chore]: Don't spawn new runtime each time calling commit_blocks by @ByteYue in #177
- [bugfix]: move the qs callback to be after mempool by @ByteYue in #178
- [feat] add peth v2 and coordinator for pipeline v2 api by @keanji-x in #179
- [fix]: fix genesis id by @keanji-x in #180
- [feat]: add random value in external block meta by @keanji-x in #181
- [fix]: define random type in core-types by @keanji-x in #182
- [feat] remove block controller and buffer in peth v2 by @keanji-x in #183
- [chore]: Add config in consensus config to control pre_commit by @ByteYue in #185
- Revert "[chore]: Add config in consensus config to control pre_commit (#185)" by @ByteYue in #187
- [feat] make coordinator can run in pipelinev2 with aptos consensus by @keanji-x in #190
- [improve] Persist ledger_info by @Lchangliang in #193
- [bugfix] Fix genesis block error by @Lchangliang in #194
- [feature]: Pick "enhance consensus key rotation support" by @ByteYue in #196
- [feat]: Pick "update qs key loading" by @ByteYue in #197
- [feat]: Use coex bridge to replace gravity_consensus_engine args by @ByteYue in #199
- [fix]: Add missing file
coex.rsto pass compile by @ByteYue in #200 - [bugfix] Fix ledger_info persist failed error by @Lchangliang in #201
- [opt] recv pending txn in reth coordinator with reth pool and listener by @keanji-x in #202
- [feat] lock state in a small scope and remove pipe api lock by @keanji-x in #203
- [fix] only update account seq number when the new seq number is bigger than the old by @keanji-x in #205
- [test]: Add keep alive tool for test net node by @ByteYue in #195
- [feat]: Add enable_pipeline config and construct pipeline builder in block store by @ByteYue in #206
- [improve] Support to commit ledger in pipeline mode by @Lchangliang in #207
- [chore]: Enable aptos new pipeline by default in validator.yml by @ByteYue in #208
- [enhance]: Make the ansible deploy util more roboust by @ByteYue in #209
- [fix] use debug to trace some logs to avoid huge logs in dev net by @keanji-x in #210
- [chore]: Add one flag in deploy.sh to control whether deleting the legacy data by @ByteYue in #211
- [bugfi...