nautechsystems/nautilus_trader · error
Pre-sign decision header conflicts with its trusted ancestry
Error message
Pre-sign decision header conflicts with its trusted ancestry
What it means
Pre-sign verification failure: the block header a swap decision was based on is not consistent with the re-verified ancestry chain, i.e. chain state shifted (reorg or stale data) between quoting and signing.
Source
Thrown at crates/adapters/blockchain/src/execution/client.rs:2573
Some(durable_tip.number),
Some(durable_tip.number),
));
}
let mut cursor = durable_tip;
while cursor.number < target.number {
let end = cursor.number.saturating_add(4_096).min(target.number);
let start = cursor.number.saturating_add(1);
let ancestry = required_verification(
self.verification.verify_header_window(cursor, end).await,
"pre-sign decision ancestry",
)?;
cursor = *ancestry
.value
.last()
.expect("nonempty decision ancestry advances the cursor");
decisions.push(verification_decision(&ancestry, Some(start), Some(end)));
}
anyhow::ensure!(
cursor == target,
"Pre-sign decision header conflicts with its trusted ancestry"
);
Ok(decisions)
}
async fn verify_transaction_authorization(
&self,
authorization: &TransactionAuthorization,
block: u64,
) -> anyhow::Result<Vec<ExecutionVerificationDecision>> {
match *authorization {
TransactionAuthorization::Wrap { weth } => {
let call = ERC20::balanceOfCall {
account: self.wallet_address,
}
.abi_encode();
let balance = required_verification(View on GitHub (pinned to 18893faf8b)
Solutions
- Retry the swap so a fresh quote and decision header are built
- Verify chain data sources (RPC/HyperSync) are on the same fork
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at crates/adapters/blockchain/src/execution/client.rs:2573 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/a039a828dd381cf4.
Report an issue: GitHub.