FuelLabs/fuel-core · error · anyhow::Error

Tendermint RPC error: {error}

Error message

Tendermint RPC error: {error}

What it means

The Tendermint/CometBFT node returned a well-formed JSON-RPC response whose error field is populated — i.e. the server processed the request (latest_block_height or broadcast_tx_sync) and reported an application-level failure, such as a malformed parameter, unknown method, mempool-full, or consensus-state error. The raw server error string is forwarded verbatim in {error}; HTTP transport already succeeded (status was 200).

Source

Thrown at crates/services/shared-sequencer/src/http_api.rs:153

    let response: api_types::RpcResponse<T> =
        serde_json::from_str(&text).with_context(|| format!("response text {text}"))?;

    if response.jsonrpc != request.jsonrpc {
        anyhow::bail!(
            "Tendermint RPC response uses unsupported JSON-RPC version {}",
            response.jsonrpc
        );
    }
    if response.id != request.id {
        anyhow::bail!(
            "Tendermint RPC response ID {} does not match request ID {}",
            response.id,
            request.id
        );
    }

    if let Some(error) = response.error {
        anyhow::bail!("Tendermint RPC error: {error}");
    }

    response
        .result
        .ok_or_else(|| anyhow::anyhow!("Tendermint RPC response has no result"))
}

#[derive(Copy, Clone, Debug, Default)]
pub struct AccountMetadata {
    pub account_number: u64,
    pub sequence: u64,
}

#[derive(Clone, Debug, serde::Serialize)]
pub struct SimulateRequest {
    pub tx_bytes: String,
}

View on GitHub (pinned to add100d30d)

Solutions

  1. Read the forwarded error text: mempool-full and timing errors are transient and safe to retry; parameter/method errors are permanent and need a fix on the caller side
  2. For broadcast_tx_sync, check tx size/fee validity before retrying
  3. Inspect Tendermint node logs for the matching request to get the full error context
  4. If the error is transient, retry with backoff from latest_block_height/broadcast_tx_sync callers
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at crates/services/shared-sequencer/src/http_api.rs:153 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of FuelLabs/fuel-core@add100d30d (2026-09-05). Data as JSON: /api/errors/97679e1f62e1320c. Report an issue: GitHub.