nautechsystems/nautilus_trader · error

{context} verification is unavailable

Error message

{context} verification is unavailable

What it means

Raised by the same verification-outcome helper when the verification outcome is Unavailable: the library could not obtain an independent verification (e.g. the verifying RPC call failed or returned nothing), so it cannot confirm the transaction or state is valid. It fails closed rather than proceeding unverified.

Source

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

    Retain,
    ScanReplacement(VerifiedBlockHeader),
}

fn verified_value<T>(outcome: VerificationOutcome<T>, context: &str) -> anyhow::Result<T> {
    required_verification(outcome, context).map(|verified| verified.value)
}

fn required_verification<T>(
    outcome: VerificationOutcome<T>,
    context: &str,
) -> anyhow::Result<Verified<T>> {
    match outcome {
        VerificationOutcome::Verified(verified) => Ok(verified),
        VerificationOutcome::Disagreement(_) => {
            anyhow::bail!("{context} verification disagreed")
        }
        VerificationOutcome::Unavailable(_) => {
            anyhow::bail!("{context} verification is unavailable")
        }
        VerificationOutcome::Retryable(_) => {
            anyhow::bail!("{context} verification is retryable")
        }
        VerificationOutcome::LocallyInvalid(_) => {
            anyhow::bail!("{context} verification is locally invalid")
        }
    }
}

fn validate_transaction_authorization(
    authorization: Option<&TransactionAuthorization>,
    to: Address,
    value: U256,
    input: &[u8],
) -> anyhow::Result<()> {
    match authorization {
        None => Ok(()),

View on GitHub (pinned to 18893faf8b)

Solutions

  1. Check RPC/verifier endpoint health and rate limits, then retry
  2. Confirm the target block/receipt is available on the configured node
  3. Use a fallback or backup RPC provider for verification
  4. Increase retry/backoff around submission so verification runs after state settles
Defensive patterns

Strategy: fallback

Validate before calling

// Probe verification availability before submitting
let probe = client.verification_health().await;
if probe.is_err() { switch_to_backup_rpc(); }

Try / catch

match res {
    Err(e) if e.to_string().contains("verification is unavailable") => {
        // fail over to backup RPC, then retry verification
    }
    r => r?,
}

Prevention

When it happens

Trigger: The verification provider (RPC/verifier) returns VerificationOutcome::Unavailable — e.g. the block/receipt is not yet queryable, the verifier endpoint is down, or the requested data cannot be fetched.

Common situations: Provider outage or rate limiting during verification; querying a block height that the node has not synced; misconfigured verification endpoint in client config.

Related errors


AI-assisted analysis of nautechsystems/nautilus_trader@18893faf8b (2026-09-08). Data as JSON: /api/errors/edf2bc668bab150f. Report an issue: GitHub.