github Galxe/gravity-sdk v1.9.0
Gravity v1.9.0

latest releases: v1.9.3, v1.9.2, v1.10.1-pre...
one month ago

Mainnet upgrade: greth v2.3.0

Gravity v1.9.0 upgrades the bundled execution client to greth v2.3.0 (gravity-reth pin bc817c64…), with SDK CLI / cluster-stop adaptations, a consensus hardfork-key fix, and a mempool hot-path optimization.

Mainnet operators should treat this as a coordinated binary upgrade. Keep the mixed-version rollout window as short as possible.

This release does not schedule mainnet betaTime or osakaTime (see v1.9.1). Without mainnet betaTime, greth's EIP-7702 lockdown stays fail-closed.

What's changed

greth v2.3.0 integration

The bundled gravity-reth revision moves from 807c161584b5c785b692946e53d31ddc89599086 to bc817c642c9c3816cc4e22754e13e3c9633419dd.

SDK-side adaptation (#804):

  • Pins greth / workspace reth-primitives-traits to the v2.3.0 line and aligns alloy versions.
  • Updates gravity_node CLI wiring for reth v2.3.0 command signatures (Runtime / CliContext) and greth node log defaults.
  • Enables tokio taskdump for gravity_node (requires RUSTFLAGS="--cfg tokio_unstable" builds).
  • Hardens cluster stop/restart paths so greth v2.3+ RocksDB LOCK flush after SIGTERM does not race e2e restarts.

Notable execution-layer behavior in this pin:

  • EIP-7702 lockdown gated by Beta (gravity-reth#412): lockdown is no longer a compile-time switch. Missing betaTime keeps the lockdown on (fail-closed). After Beta activates, the lockdown is released.
  • Block-gas packing last gate at Beta (gravity-reth#414): fixes prefix-cut packing that could empty blocks under adversarial ordering; gated by betaTime.
  • Skip recoverable invalid transactions (gravity-reth#393, gravity-reth#410): durable executor-skip path for recoverable invalids (e.g. same-block nonce races), with stable reason codes.
  • Osaka 30M per-tx gas cap (gravity-reth#401): Monad-style flat cap, dormant until osakaTime.
  • Mempool rejects EIP-4844 blob txs at every ingress (gravity-reth#394).
  • Merges upstream reth v2.3.0, including opt-in static-file changeset storage (--storage.v2) and related prune fixes (gravity-reth#396, #403, #413).

Consensus hardfork key cleanup

  • Stops reading the legacy genesis consensusAlpha epoch key when building CL hardforks (#794). Activation uses only alphaTime (timestamp), removing a silent divergence path if genesis carried consensusAlpha: 0.

Mempool performance

  • Snapshot shards are handed out via Arc instead of deep-copying every sender-bucket on read_timeline (#800). Hot broadcast path cost scales with actually dispatched transactions, not full shard length.

Security

  • Removes public tools/gnode cluster attack / PoC tooling; it lives in a private audit-tooling repo (#797).

Compatibility and operator notes

  • Coordinated upgrade required: validators and full nodes should upgrade together. Do not leave the fleet split across v1.8.x and v1.9.0 outside a controlled window.
  • EIP-7702 still locked down on mainnet in this release: no mainnet betaTime yet, so greth's Beta-gated lockdown stays active (fail-closed).
  • Beta / Osaka schedule: v1.9.1.
  • No runtime override for hardfork times: the HARDCODED table is binary-authoritative; retiming requires a new release binary.
  • Build note: gravity_node expects RUSTFLAGS="--cfg tokio_unstable" when building with greth taskdump support.

Docker image

The release pipeline publishes:

docker pull ghcr.io/galxe/gravity_node:v1.9.0

Dependency revision

  • gravity-reth: 807c161584b5c785b692946e53d31ddc89599086 -> bc817c642c9c3816cc4e22754e13e3c9633419dd
  • gravity-aptos: unchanged at b1f68dc85781ef0d28a568d9d64604b153be9d9e

Full changelogs

Don't miss a new gravity-sdk release

NewReleases is sending notifications on new releases.