Skip to content

[Arc Testnet quirk] eth_gasPrice returns stale baseline — back-to-back txs underpriced without ≥30% premium #3

Description

@osr21

Symptom

When submitting two or more transactions in quick succession (approve → burn, or approve → deposit), the second transaction is rejected with:

replacement transaction underpriced

This happens even when each tx uses the same gas price returned by eth_gasPrice, because Arc Testnet's RPC returns a stale/cached baseline that the node's mempool considers already "used."

Root cause

Arc's eth_gasPrice endpoint returns a fixed or slowly-updating value. The mempool enforces a minimum increment between successive transactions from the same sender, but the RPC doesn't reflect this. Standard clients that trust eth_gasPrice will always underprice the second tx.

Workaround

Apply a 30% upward premium to the gas price returned by the RPC and reuse the same bumped price for all transactions in a batch:

const feeData = await provider.getFeeData();
const gasPrice = (feeData.gasPrice * 130n) / 100n; // +30%

const approveTx = await usdc.approve(spender, amount, { gasPrice });
await approveTx.wait();
const burnTx = await messenger.depositForBurn(...args, { gasPrice }); // same bumped price

References

  • Tracked in arc-node#87
  • Fix in this repo: getBumpedGasPrice() helper in src/lib/bridge.ts

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions