nautechsystems/nautilus_trader · error

Empty pre-sign ancestry does not end at the swap decision he

Error message

Empty pre-sign ancestry does not end at the swap decision header

What it means

Pre-sign verification guard: the re-read header ancestry chain no longer terminates at the previously anchored swap-decision block header, meaning chain state moved under the pending decision; signing is aborted.

Source

Thrown at crates/adapters/blockchain/src/execution/client.rs:2710

        )?;
        anyhow::ensure!(
            watermark.value == anchors.watermark,
            "Pool state header changed before signing"
        );
        let ancestry = required_verification(
            self.verification
                .verify_header_window(watermark.value, anchors.state.number)
                .await,
            "pre-sign profiler ancestry reread",
        )?;

        if let Some(last) = ancestry.value.last() {
            anyhow::ensure!(
                *last == anchors.state,
                "Swap decision header changed in the pre-sign ancestry reread"
            );
        } else {
            anyhow::ensure!(
                watermark.value == anchors.state,
                "Empty pre-sign ancestry does not end at the swap decision header"
            );
        }
        let quote = match anchors.quote_kind {
            SwapQuoteKind::ExactInput(amount_in) => required_verification(
                self.verification
                    .verify_quote_exact_input_single(
                        &anchors.quote_contract,
                        anchors.token_in,
                        anchors.token_out,
                        amount_in,
                        anchors.fee,
                        anchors.state.number,
                    )
                    .await,
                "pre-sign exact-input quote reread",
            )?,

View on GitHub (pinned to 18893faf8b)

Solutions

  1. Retry the pre-sign verification
  2. Check block data availability for the watermark-to-decision window
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at crates/adapters/blockchain/src/execution/client.rs:2710 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/c0fad67d41701df1. Report an issue: GitHub.