nautechsystems/nautilus_trader · error
Persisted transaction {tx_hash} does not match the signed by
Error message
Persisted transaction {tx_hash} does not match the signed bytes What it means
Integrity check after persisting a signed transaction: reopening the stored envelope yields bytes that differ from the signed transaction, meaning the persisted record is not the signed payload and must not be broadcast.
Source
Thrown at crates/adapters/blockchain/src/execution/client.rs:2840
prepared.intent_id,
self.chain_id,
&transaction_hash,
&envelope,
)
.await
.map_err(|e| {
anyhow::anyhow!(
"Failed to persist transaction {tx_hash}: {e}; the in-flight slot stays occupied"
)
})?;
let stored = open_execution_payload(
&self.payload_keys,
policy,
&intent,
&row,
"initial persistence",
)?;
anyhow::ensure!(
stored == prepared.raw_tx,
"Persisted transaction {tx_hash} does not match the signed bytes"
);
Ok(())
}
fn payload_policy(&self) -> PayloadPolicy {
PayloadPolicy {
chain_id: self.chain_id,
signer: self.wallet_address,
gas_limit: self.gas_limit,
max_fee_per_gas: self.max_fee_per_gas_wei,
}
}
async fn authorize_rebroadcast(
&self,
prepared: &PreparedTransaction,View on GitHub (pinned to 18893faf8b)
Solutions
- Re-sign and re-persist the transaction
- Investigate envelope sealing / payload-key configuration for the mismatch
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/adapters/blockchain/src/execution/client.rs:2840 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of nautechsystems/nautilus_trader@18893faf8b (2026-09-08).
Data as JSON: /api/errors/3108768dafd8ebac.
Report an issue: GitHub.