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.
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:
Set maxFeePerGas to at least 20 Gwei. Arc enforces a hard floor:
transactions with maxFeePerGas lower than 20 Gwei are rejected with no error
receipt. The EWMA smoothing model keeps fees gradual and 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.
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