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

  1. Retry the swap so a fresh quote and decision header are built
  2. 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.