nautechsystems/nautilus_trader · error

Retained execution history has duplicate signer nonce owners

Error message

Retained execution history has duplicate signer nonce ownership

What it means

During verification migration, the retained execution history contains two records claiming ownership of the same signer nonce; this invariant violation (duplicate nonce ownership) would make nonce accounting ambiguous, so migration aborts rather than pick a winner.

Source

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

                        self.payload_keys
                            .as_deref()
                            .expect("Postgres execution requires payload keys"),
                        self.payload_policy(),
                        intent,
                        hash,
                        "verification migration",
                    )?;
                    authenticated.insert(hash.id, raw);
                } else {
                    anyhow::ensure!(
                        hash.raw_transaction.is_none() && hash.sealed_transaction.is_none(),
                        "Unowned replacement hash retains signed bytes"
                    );
                }
            }

            if let Some(nonce) = intent.nonce {
                anyhow::ensure!(
                    nonce_owners.insert(nonce, intent.id).is_none(),
                    "Retained execution history has duplicate signer nonce ownership"
                );
            }

            let base_decision = verification_decision(
                nonce_verification,
                Some(finalized.number),
                Some(finalized.number),
            );

            if !intent.active {
                if matches!(intent.status.as_str(), "finalized" | "reverted") {
                    let expected_marker =
                        if purpose == TransactionPurpose::Swap && intent.status == "finalized" {
                            intent.fill_emitted
                        } else {
                            intent.terminal_emitted

View on GitHub (pinned to 18893faf8b)

Solutions

  1. Inspect the execution_history rows for the affected signer address and identify which record legitimately owns the nonce.
  2. Remove or archive the stale/duplicate intent record so nonce ownership is unique.
  3. Re-run the migration after deduplicating the history.
Defensive patterns

Strategy: validation

When it happens

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