← 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
Secondary metrics
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
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"
]
}