Search

Search benchmark pages, protocols, published runs and the docs

Rout
← Protocols
protocols/E0-landing-probe.json · v1

E0 · Submission-path landing probe (non-trading transactions)

Rout's submission path lands non-contended transactions within the window at least as often as a public reference RPC, and never double-executes. Primary question: does durable nonce help or hurt landing? A sender's own docs say builders may deprioritize durable-nonce transactions as spam-associated ('a durable nonce can hurt landing on some paths'), so nonce vs blockhash is the primary comparison.
draft
9 values must be agreed before this can run
$.parameters.bootstrap_resamples · $.parameters.landing_window_slots · $.parameters.max_abs_clock_offset_ns · $.parameters.target_n_per_arm · $.parameters.budget_lamports_max · $.parameters.tip_lamports_by_arm · $.parameters.cluster_slots · $.parameters.schedule_modulus · $.acceptance.min_landing_difference_vs_reference
Check with python3 -m rbench.prereg check protocols/E0-landing-probe.json.

Design

Why it matters
Shows whether Rout's provider fan-out and nonce handling add anything before any money is at risk on a token.
Unit
One probe intent = one self-transfer of a random lamport amount from a rotating wallet that also carries real traffic; no memo (providers must not be able to recognise probes). Copies per provider share the intent.
Primary metric
landed_within_window: Share of all intents in the arm whose first landed_ok copy has slot - anchor.slot <= landing_window_slots. anchor = the scheduled slot (anchor.kind = probe_slot) at which the intent had to be created.
Denominator
Every intent created in the run, whatever its engine_outcome.
Randomization
Arm = arms[sha256(run_id:seq) mod 3] (rbench.assign). Intents are created only at scheduled slots: sha256(run_id:slot:s) mod schedule_modulus == 0 within manifest.schedule, so the engine cannot pick favourable moments; the verifier recomputes both. (sha256_mod_v1)
Stopping rule
Fixed n = target_n_per_arm; single analysis.

Arms

ArmWhat it does
rout nonceRout submission path, durable nonce, one signed copy per provider.
rout blockhashRout submission path, recent blockhash.
reference rpcSame transaction shape via sendTransaction on an independent public RPC.

Secondary metrics

MetricDefinition
delta_slot_quantilesΔslot quantiles over landed intents with order-statistic CIs.
double_landed_nonce_intentsNonce intents with more than one landed copy. Must be 0.
provider_win_shareWithin multi-copy intents, which provider's copy landed.
spend_per_landed(chain-observed fees + engine-reported tips on landed copies) / landed intents.

Exclusions, decided before the run

  • None after the fact. A run is voided entirely (and published as voided) if integrity checks fail.
  • Tips below a provider's minimum are not allowed by protocol: providers silently drop them, which would look like slow landing. tip_lamports_by_arm must meet every provider's documented minimum.

Acceptance

CriterionAgreed value
max_double_landed_nonce_intents0
min_landing_difference_vs_referenceNot agreed

What each tier hides

Signatures, slots and ids are never redacted: they are how anyone re-checks a result. A run can't be published wider than the tier it was registered at.

Partner-confidential removes
host_id, nonce_account, stratum
Public also removes
mint, size_raw, quote, endpoint_region, refusal_code, send_error

Waits on

E0E1E2E3E4BUDGET-E0

The file

protocols/E0-landing-probe.json
{
  "protocol_id": "E0-landing-probe",
  "version": 1,
  "experiment": "E0",
  "status": "draft",
  "title": "E0 · Submission-path landing probe (non-trading transactions)",
  "hypothesis": "Rout's submission path lands non-contended transactions within the window at least as often as a public reference RPC, and never double-executes. Primary question: does durable nonce help or hurt landing? A sender's own docs say builders may deprioritize durable-nonce transactions as spam-associated ('a durable nonce can hurt landing on some paths'), so nonce vs blockhash is the primary comparison.",
  "customer_value": "Shows whether Rout's provider fan-out and nonce handling add anything before any money is at risk on a token.",
  "unit": "One probe intent = one self-transfer of a random lamport amount from a rotating wallet that also carries real traffic; no memo (providers must not be able to recognise probes). Copies per provider share the intent.",
  "arms": [
    {
      "arm_id": "rout_nonce",
      "description": "Rout submission path, durable nonce, one signed copy per provider."
    },
    {
      "arm_id": "rout_blockhash",
      "description": "Rout submission path, recent blockhash."
    },
    {
      "arm_id": "reference_rpc",
      "description": "Same transaction shape via sendTransaction on an independent public RPC."
    }
  ],
  "primary_metric": {
    "id": "landed_within_window",
    "definition": "Share of all intents in the arm whose first landed_ok copy has slot - anchor.slot <= landing_window_slots. anchor = the scheduled slot (anchor.kind = probe_slot) at which the intent had to be created."
  },
  "secondary_metrics": [
    {
      "id": "delta_slot_quantiles",
      "definition": "Δslot quantiles over landed intents with order-statistic CIs."
    },
    {
      "id": "double_landed_nonce_intents",
      "definition": "Nonce intents with more than one landed copy. Must be 0."
    },
    {
      "id": "provider_win_share",
      "definition": "Within multi-copy intents, which provider's copy landed."
    },
    {
      "id": "spend_per_landed",
      "definition": "(chain-observed fees + engine-reported tips on landed copies) / landed intents."
    }
  ],
  "parameters": {
    "confidence": 0.95,
    "quantiles": [
      0.5,
      0.9,
      0.95,
      0.99
    ],
    "bootstrap_resamples": null,
    "landing_window_slots": null,
    "commitment": "finalized",
    "max_abs_clock_offset_ns": null,
    "target_n_per_arm": null,
    "budget_lamports_max": null,
    "tip_lamports_by_arm": null,
    "comparisons": [
      [
        "rout_nonce",
        "rout_blockhash"
      ],
      [
        "rout_nonce",
        "reference_rpc"
      ],
      [
        "rout_blockhash",
        "reference_rpc"
      ]
    ],
    "strata": [
      "congestion_tercile",
      "leader_window_position",
      "region"
    ],
    "cluster_slots": null,
    "schedule_modulus": null
  },
  "randomization": {
    "unit": "intent",
    "method_id": "sha256_mod_v1",
    "method": "Arm = arms[sha256(run_id:seq) mod 3] (rbench.assign). Intents are created only at scheduled slots: sha256(run_id:slot:s) mod schedule_modulus == 0 within manifest.schedule, so the engine cannot pick favourable moments; the verifier recomputes both.",
    "strata": [
      "congestion_tercile",
      "leader_window_position",
      "region"
    ]
  },
  "denominator": "Every intent created in the run, whatever its engine_outcome.",
  "exclusions": [
    "None after the fact. A run is voided entirely (and published as voided) if integrity checks fail.",
    "Tips below a provider's minimum are not allowed by protocol: providers silently drop them, which would look like slow landing. tip_lamports_by_arm must meet every provider's documented minimum."
  ],
  "stopping_rule": "Fixed n = target_n_per_arm; single analysis.",
  "acceptance": {
    "max_double_landed_nonce_intents": 0,
    "min_landing_difference_vs_reference": null
  },
  "redact_by_tier": {
    "partner_confidential": [
      "host_id",
      "nonce_account",
      "stratum"
    ],
    "public": [
      "mint",
      "size_raw",
      "quote",
      "endpoint_region",
      "refusal_code",
      "send_error"
    ]
  },
  "requires": [
    "E0",
    "E1",
    "E2",
    "E3",
    "E4",
    "BUDGET-E0"
  ]
}