{"record":{"id":"97679e1f62e1320c","repo":"FuelLabs/fuel-core","slug":"tendermint-rpc-error-error","errorCode":null,"errorMessage":"Tendermint RPC error: {error}","messagePattern":"Tendermint RPC error: (.+?)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/services/shared-sequencer/src/http_api.rs","lineNumber":153,"sourceCode":"    let response: api_types::RpcResponse<T> =\n        serde_json::from_str(&text).with_context(|| format!(\"response text {text}\"))?;\n\n    if response.jsonrpc != request.jsonrpc {\n        anyhow::bail!(\n            \"Tendermint RPC response uses unsupported JSON-RPC version {}\",\n            response.jsonrpc\n        );\n    }\n    if response.id != request.id {\n        anyhow::bail!(\n            \"Tendermint RPC response ID {} does not match request ID {}\",\n            response.id,\n            request.id\n        );\n    }\n\n    if let Some(error) = response.error {\n        anyhow::bail!(\"Tendermint RPC error: {error}\");\n    }\n\n    response\n        .result\n        .ok_or_else(|| anyhow::anyhow!(\"Tendermint RPC response has no result\"))\n}\n\n#[derive(Copy, Clone, Debug, Default)]\npub struct AccountMetadata {\n    pub account_number: u64,\n    pub sequence: u64,\n}\n\n#[derive(Clone, Debug, serde::Serialize)]\npub struct SimulateRequest {\n    pub tx_bytes: String,\n}\n","sourceCodeStart":135,"sourceCodeEnd":171,"githubUrl":"https://github.com/FuelLabs/fuel-core/blob/add100d30d21498e8528c46be8567fbd2ea019af/crates/services/shared-sequencer/src/http_api.rs#L135-L171","documentation":"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).","triggerScenarios":"Thrown at crates/services/shared-sequencer/src/http_api.rs:153 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["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","For broadcast_tx_sync, check tx size/fee validity before retrying","Inspect Tendermint node logs for the matching request to get the full error context","If the error is transient, retry with backoff from latest_block_height/broadcast_tx_sync callers"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"add100d30d21498e8528c46be8567fbd2ea019af","analyzedAt":"2026-09-05T18:46:12.018Z","contentChangedAt":"2026-09-05T18:46:12.018Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}