feat: Monad-style 30M per-tx gas cap under Osaka (#392) - #401
Conversation
d2d82a5 to
e5bb76e
Compare
💡 Codex ReviewThis commit updates AGENTS.md reference: AGENTS.md:L157-L165 ℹ️ About Codex in GitHubCodex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback". |
Gravity replaces EIP-7825's 2^24 per-tx gas cap with a flat Monad-style 30M cap (TFM_MAX_GAS_LIMIT) once Osaka activates. The 30M matches the system-transaction gas_limit exactly, so the boundary admits them and the separate system-tx gas gating (Galxe#392 P2) is no longer needed. Enforced in lockstep at three Osaka-gated sites off a single constant GRAVITY_TX_GAS_LIMIT_CAP: the executor cfg (tx_gas_limit_cap), the consensus block check, and the pipe tx_filter guard, so a self-produced block admitted by one path is never rejected on another. Dormant today (no osakaTime).
e5bb76e to
3b482e7
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3b482e766f
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| // self-produced block admitted by one path is rejected on another (sync brick). | ||
| for tx in block.body().transactions() { | ||
| if tx.gas_limit() > MAX_TX_GAS_LIMIT_OSAKA { | ||
| if tx.gas_limit() > GRAVITY_TX_GAS_LIMIT_CAP { |
There was a problem hiding this comment.
Preserve EIP-7825 for non-Gravity chains
When this client follows Ethereum mainnet after Osaka, a block containing a transaction with gas limit in (2^24, 30_000_000] is now accepted even though EIP-7825 makes it invalid: this shared consensus validator unconditionally substitutes the Gravity cap, and EthEvmConfig::mainnet() receives the same unconditional override. The repository explicitly supports non-Gravity chainspecs (crates/chainspec/src/spec.rs:1010-1014), so gate the 30M override on a Gravity-specific marker and retain MAX_TX_GAS_LIMIT_OSAKA elsewhere to prevent mainnet consensus divergence.
AGENTS.md reference: AGENTS.md:L13-L13
Useful? React with 👍 / 👎.
Refs #392.
Under Osaka, Gravity uses a flat Monad-style 30M per-tx gas cap (
TFM_MAX_GAS_LIMIT)instead of EIP-7825's
2^24. This deviates from the issue's original 2^24 design onpurpose: 30M equals the system-transaction
gas_limit, so the boundary admits them and#392's separate system-tx gas gating (P2) is no longer needed.
Enforced in lockstep off one constant
GRAVITY_TX_GAS_LIMIT_CAPat three Osaka-gatedsites — the executor cfg (
tx_gas_limit_cap), the consensus block check, and the pipetx_filterguard — so a self-produced block admitted by one path is never rejected onanother. Dormant until
osakaTime.Not included (separate follow-ups): the cross-Osaka e2e acceptance, and #392's incidental
revm-bump debt (
nonce == u64::MAXguard, tx_filter header rewrite).