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:
0x07f4f7c04caa496243b0505626def616842b73a23d1baf9a691c1d79048a3294 — reverted
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:
- apply a safety margin above
eth_estimateGas for consensus submissions; and/or
- 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.
Summary
On Bradbury,
genlayer writeused the exacteth_estimateGasresult as the outer EVM gas limit for anaddTransactioncall. 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
genlayerCLI:0.39.2(current stable npm release)genlayer-js:1.1.8v24.13.0testnet-bradbury, EVM chain ID42210x0112Bf6e83497965A5fdD6Dad1E447a6E004271D0x91d6E838b93c9CCA32Ab964d096949210F60b1DFsubmit_case_base64Observed behavior
The corrected submission produced these outer EVM transactions:
0x07f4f7c04caa496243b0505626def616842b73a23d1baf9a691c1d79048a3294— reverted0xcc4a5f0627f39dadd850ce8afe4538a5379eca73c66b8cf34a15b28218389554— revertedFor the second transaction:
1,319,9971,260,766868bytes0x8da473d71d9ab2a909d285661295e6c3c7bae665d10e5bd93e6cec8a3961c094eth_estimateGascall still returns exactly1,319,997Replaying the exact same destination, value, and calldata with a
2,000,000gas limit succeeded:0x5ea3f6aa6f571357700b59edee9ba98787083f89626bea01656dc4add1df6cbc1,254,9170x8da473d71d9ab2a909d285661295e6c3c7bae665d10e5bd93e6cec8a3961c0940x50201a17859f57a7787241d683fbefa7da8b0a93d9e1410714ace1ccd6e2a4bcFINALIZEDThe 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:
eth_estimateGasfor consensus submissions; and/or--gasoption ondeployandwriteand 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.