Skip to content

Exact eth_estimateGas limit can revert valid addTransaction; no CLI gas override #402

Description

@Leokings

Summary

On Bradbury, genlayer write used the exact eth_estimateGas result as the outer EVM gas limit for an addTransaction call. The outer transaction reverted twice before GenVM, while identical calldata succeeded when replayed with a larger explicit gas limit. The CLI currently exposes no gas-limit override for this path.

Environment

  • genlayer CLI: 0.39.2 (current stable npm release)
  • Bundled genlayer-js: 1.1.8
  • Node.js: v24.13.0
  • OS: Windows
  • Network: testnet-bradbury, EVM chain ID 4221
  • ConsensusMain: 0x0112Bf6e83497965A5fdD6Dad1E447a6E004271D
  • Intelligent Contract: 0x91d6E838b93c9CCA32Ab964d096949210F60b1DF
  • Method: submit_case_base64

Observed behavior

The corrected submission produced these outer EVM transactions:

  1. 0x07f4f7c04caa496243b0505626def616842b73a23d1baf9a691c1d79048a3294 — reverted
  2. 0xcc4a5f0627f39dadd850ce8afe4538a5379eca73c66b8cf34a15b28218389554 — reverted

For the second transaction:

  • gas limit: 1,319,997
  • gas used: 1,260,766
  • calldata size: 868 bytes
  • calldata Keccak-256: 0x8da473d71d9ab2a909d285661295e6c3c7bae665d10e5bd93e6cec8a3961c094
  • a fresh eth_estimateGas call still returns exactly 1,319,997

Replaying the exact same destination, value, and calldata with a 2,000,000 gas limit succeeded:

  • outer EVM tx: 0x5ea3f6aa6f571357700b59edee9ba98787083f89626bea01656dc4add1df6cbc
  • gas used: 1,254,917
  • calldata Keccak-256: 0x8da473d71d9ab2a909d285661295e6c3c7bae665d10e5bd93e6cec8a3961c094
  • resulting GenLayer tx: 0x50201a17859f57a7787241d683fbefa7da8b0a93d9e1410714ace1ccd6e2a4bc
  • resulting GenLayer transaction is now FINALIZED

The reverted outer transactions emitted no GenLayer transaction and changed no Intelligent Contract state.

Full public test record: https://github.com/Leokings/digital-deliverable-verifier/blob/main/docs/BRADBURY_TEST_RECORD.md

Expected behavior

Either:

  1. apply a safety margin above eth_estimateGas for consensus submissions; and/or
  2. expose a --gas option on deploy and write and pass it through to the SDK transaction request.

The CLI should also retain the outer EVM hash and provide a clear diagnostic when the transaction reverts before GenVM.

Impact

This does not alter Intelligent Contract logic or validator consensus, but it can make an otherwise valid write fail before reaching GenVM. Users pay gas for the reverted outer transaction, automated integrations can fail repeatedly, and the current CLI offers no direct recovery path other than using a separate signer/SDK path.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions