{"record":{"id":"63fbb1714ae074ca","repo":"nautechsystems/nautilus_trader","slug":"execution-intent-signed-transaction-failed-a","errorCode":null,"errorMessage":"Execution intent {} signed transaction {} failed authentication: {e}","messagePattern":"Execution intent (.+?) signed transaction (.+?) failed authentication: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/adapters/blockchain/src/execution/client.rs","lineNumber":1226,"sourceCode":"            if !hash.payload_expected {\n                anyhow::ensure!(\n                    hash.raw_transaction.is_none() && hash.sealed_transaction.is_none(),\n                    \"Replacement transaction {} unexpectedly retains signed bytes\",\n                    hash.transaction_hash\n                );\n                continue;\n            }\n            let raw_transaction = open_execution_payload(\n                self.payload_keys\n                    .as_deref()\n                    .expect(\"payload keys checked above\"),\n                policy,\n                &intent,\n                hash,\n                \"recovery\",\n            )\n            .map_err(|e| {\n                anyhow::anyhow!(\n                    \"Execution intent {} signed transaction {} failed authentication: {e}\",\n                    intent.id,\n                    hash.transaction_hash\n                )\n            })?;\n            let authenticated_hash = B256::from_str(&hash.transaction_hash).with_context(|| {\n                format!(\n                    \"Execution intent {} has invalid transaction hash {}\",\n                    intent.id, hash.transaction_hash\n                )\n            })?;\n            anyhow::ensure!(\n                authenticated_payloads\n                    .insert(authenticated_hash, raw_transaction.clone())\n                    .is_none(),\n                \"Execution intent {} has duplicate authenticated transaction hash {}\",\n                intent.id,\n                hash.transaction_hash","sourceCodeStart":1208,"sourceCodeEnd":1244,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/adapters/blockchain/src/execution/client.rs#L1208-L1244","documentation":"During recovery, a persisted signed transaction failed the authentication policy check (signature/payload validation). The stored signed bytes are not trustworthy for replay, so reconciliation aborts with the underlying cause embedded.","triggerScenarios":"connect() -> reconcile_unresolved_execution(): the authenticate step for (policy, intent, hash, \"recovery\") returns Err and is mapped into this error.","commonSituations":"Signed bytes tampered with or truncated in storage; policy/config changed since signing (different signer, chain, expiry); rows copied from another environment.","solutions":["Inspect the nested cause (the {e}) to identify whether signature, policy, or payload failed","Discard the failing transaction row and re-sign the intent through the recovery flow","Verify the signer/policy configuration matches what was used when the transaction was signed","Confirm the database rows were not modified or copied across environments"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"match client.connect().await {\n    Err(e) if e.to_string().contains(\"failed authentication\") => {\n        // read the inner cause, discard/re-sign the failing transaction, retry recovery\n    }\n    other => other?,\n}","preventionTips":["Keep signer/policy configuration stable across restarts","Verify signed bytes integrity (checksums) after persistence","Alert on authentication failures during recovery rather than auto-retrying"],"tags":["blockchain","authentication","signature","recovery"],"backgroundTag":"authentication-failed","analyzedSha":"18893faf8b356be3320add8de2f861b0b647cf06","analyzedAt":"2026-09-08T20:49:34.690Z","contentChangedAt":"2026-09-08T20:49:34.690Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}