FuelLabs/fuel-core · error

The total base asset amount became too big when tried to cov

Error message

The total base asset amount became too big when tried to cover fee

What it means

While adding the coins fetched to cover the fee, their amounts are accumulated into total_base_asset with checked_add. The error fires if that running sum overflows u64 — i.e. the fee coins returned sum above u64::MAX, a defensive arithmetic guard.

Source

Thrown at crates/fuel-core/src/schema/tx/assemble_tx.rs:986

                .arguments
                .coins(
                    fee_payer_account.owner(),
                    base_asset_id,
                    how_much_to_add,
                    remaining_input_slots,
                    true,
                )
                .await?;

            if coins.is_empty() {
                return Err(anyhow::anyhow!(
                    "Unable to find any coins to pay for the fee"
                ));
            }

            for coin in coins.into_iter().take(remaining_input_slots as usize) {
                total_base_asset = total_base_asset.checked_add(coin.amount()).ok_or(
                    anyhow::anyhow!(
                        "The total base asset amount \
                        became too big when tried to cover fee"
                    ),
                )?;
                self.add_input_and_witness_and_change(&fee_payer_account, coin)?;
            }

            // In the case when predicates iterates over the inputs,
            // it increases its used gas. So we need to re-estimate predicates.
            self = self.estimate_predicates().await?;
        }

        set_max_fee(
            &mut self.tx,
            &self.arguments.consensus_parameters,
            self.arguments.reserve_gas,
            self.arguments.gas_price,
            self.original_max_fee,

View on GitHub (pinned to b9d4d170da)

Solutions

  1. On test chains, mint realistic coin amounts
  2. Split the operation so the fee account holds smaller coins
  3. Report upstream as an invariant breach if amounts look sane
Defensive patterns

Strategy: try-catch

Try / catch

catch (e) { if (/became too big when tried to cover fee/.test(e.message)) { /* split tx / mint realistic amounts on dev chains */ } else throw e; }

Prevention

When it happens

Trigger: The coin selection for fee coverage returns coins whose total exceeds u64::MAX; only reachable on chains minting near-maximum coin amounts.

Common situations: Test/dev chains with gigantic minted values; practically unreachable with production tokenomics.

Related errors


AI-assisted analysis of FuelLabs/fuel-core@b9d4d170da (2026-08-16). Data as JSON: /api/errors/7d949ca7dc08e45b. Report an issue: GitHub.