Skip to main content
Arc uses USDC as its native gas token, so fees are inherently denominated in USD. The eth_gasPrice and eth_feeHistory RPCs return values in USDC wei (18 decimals). The EWMA fee smoothing model keeps fees predictable—dramatic spikes are unlikely. Display fees as $X.XX (or ~$0.01), never as “Gwei” or “ETH.”

Prerequisites

Before you begin:
  • You have an RPC endpoint for Arc.
  • You are using an EIP-1559-compatible library (viem, ethers.js, or equivalent).
  • You understand that Arc’s native currency is USDC, not ETH.

Steps

Step 1. Fetch the current gas price

Use eth_gasPrice for a single value or eth_feeHistory for historical base fees and priority fee percentiles.

Step 2. Estimate gas for the transaction

Use eth_estimateGas to determine how much gas your transaction requires.
Typical gas costs:

Step 3. Build EIP-1559 fee parameters

Arc supports EIP-1559 transactions. Set maxFeePerGas and maxPriorityFeePerGas:
The effective gas price is baseFeePerGas + priorityFee. The base fee has a minimum of 20 Gwei in USDC terms. Because Arc uses an EWMA (exponentially weighted moving average) model to adjust the base fee gradually, fee spikes are smoothed out and prices remain predictable.

Step 4. Calculate the maximum fee in USD

Multiply the gas limit by maxFeePerGas, then convert from 18-decimal USDC wei to a dollar amount.

Step 5. Format fees for display

Show fees as a dollar amount. Use ~ to indicate the value is an estimate.
Standard libraries like ethers.js and viem label the native currency as “ETH” by default. You must override this in your UI. Displaying “0.00042 ETH” instead of ”~$0.01” confuses users and misrepresents the cost.

Worked examples

Simple USDC transfer

Contract interaction

Users are only charged gasUsed * effectiveGasPrice. The difference between maxFeePerGas and the actual effective gas price is refunded. It’s safe to show the maximum estimate in your UI with language like “Max fee” or “Up to.”

See also