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
- Retry the pre-sign verification
- 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.