Summary
The public testnet endpoint rpc.testnet.arc.network currently clamps eth_estimateGas at 16,777,216 gas (2^24) — below both the documented production default --rpc.gascap=30M and the current block gas limit (30M). The value 16777216 appears nowhere in this repository, so this looks like either an undocumented infrastructure-level override on the public endpoint or an unintended regression in the v0.8.0 rollout. Filing as an issue rather than a PR because the discrepancy is in endpoint behavior, not repo code.
Observed 2026-08-29, post-v0.8.0 (the endpoint already emits the v0.8.0 error texts).
Observed
A request whose intrinsic gas (~31.2M via calldata) exceeds the cap:
$ curl -s https://rpc.testnet.arc.network -H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_estimateGas","params":[{"from":"<funded>","to":"0x0000000000000000000000000000000000000002","data":"0xff…(1,950,000 bytes)","maxFeePerGas":"0x174876e800"}]}'
{"error":{"code":-32000,"message":"gas required exceeds allowance (16777216)"}}
The bound does not move with an explicit gas field (tested gas: 20M and gas: 40M — both still report (16777216)), and a ~25M-intrinsic-gas request (between 2^24 and 30M) is also rejected with the same bound. Meanwhile, the same endpoint reports:
eth_getBlockByNumber("latest") → gasLimit: 30000000
Expected
crates/execution-e2e/tests/e2e/static_rpc_gas_cap.rs documents --rpc.gascap=30_000_000 as "the production Arc default" (installed by crates/node/src/args.rs) and pins it with a launched-node test.
tests/localdev/evm_compatibility.test.ts expects the 30M default on debug_traceCall's implicit gas budget, and its comment states the cap "should [be] greater or equal than gas limit in the block".
BREAKING_CHANGES.md documents the v0.7.2 change of the default from 50M → 30M; no subsequent entry documents a further reduction.
So a request needing 17–30M gas currently fails estimation on the public endpoint even though a block would accept the transaction — the opposite of the invariant the localdev comment describes (cap ≥ block gas limit).
Impact
Questions
- Is the 2^24 clamp on the public endpoint intentional (gateway-level protection)? If so, could it be documented where the 30M default is documented today, since it supersedes that default for most developers?
- If unintentional, did the v0.8.0 rollout change the endpoint's
--rpc.gascap (or introduce a proxy-level limit)?
Happy to provide additional transcripts or re-test after any change.
Summary
The public testnet endpoint
rpc.testnet.arc.networkcurrently clampseth_estimateGasat 16,777,216 gas (2^24) — below both the documented production default--rpc.gascap=30Mand the current block gas limit (30M). The value16777216appears nowhere in this repository, so this looks like either an undocumented infrastructure-level override on the public endpoint or an unintended regression in the v0.8.0 rollout. Filing as an issue rather than a PR because the discrepancy is in endpoint behavior, not repo code.Observed 2026-08-29, post-v0.8.0 (the endpoint already emits the v0.8.0 error texts).
Observed
A request whose intrinsic gas (~31.2M via calldata) exceeds the cap:
The bound does not move with an explicit
gasfield (testedgas: 20Mandgas: 40M— both still report(16777216)), and a ~25M-intrinsic-gas request (between 2^24 and 30M) is also rejected with the same bound. Meanwhile, the same endpoint reports:Expected
crates/execution-e2e/tests/e2e/static_rpc_gas_cap.rsdocuments--rpc.gascap=30_000_000as "the production Arc default" (installed bycrates/node/src/args.rs) and pins it with a launched-node test.tests/localdev/evm_compatibility.test.tsexpects the 30M default ondebug_traceCall's implicit gas budget, and its comment states the cap "should [be] greater or equal than gas limit in the block".BREAKING_CHANGES.mddocuments the v0.7.2 change of the default from 50M → 30M; no subsequent entry documents a further reduction.So a request needing 17–30M gas currently fails estimation on the public endpoint even though a block would accept the transaction — the opposite of the invariant the localdev comment describes (cap ≥ block gas limit).
Impact
eth_estimateGas(ethers, viem, wallets, AA infra) will report such transactions as impossible even though the protocol accepts them — exactly the failure mode described in docs: explicitly distinguish RPC gas cap from protocol transaction gas limits #271.gas required exceeds allowance (<limit>), see bug: GatewayClient mislabels receipt-wait failures as "Mint transaction failed" and never checks receipt.status for real reverts #203), so affected callers can only recognize the condition by parsing the numeric bound — and16,777,216is not a value they can currently find in any Arc documentation.Questions
--rpc.gascap(or introduce a proxy-level limit)?Happy to provide additional transcripts or re-test after any change.