Understand the contention

Follow a conflict back to its accounts

Two transactions have a declared account conflict when they share an account and at least one declares it writable. Read/read overlap creates no conflict edge. The microscope turns those declarations into account relationships, connected components, and estimated conflict-free waves that you can inspect transaction by transaction.

Public, read-only data Offline fixture demo TypeScript MIT project code

A concrete example: captured devnet slot 488638500

45 transactions

Inspect each transaction's declared permissions, recorded outcome, and instruction evidence.

116 declared conflict pairs

Select an account to see which transactions share it and which pairs its permissions connect.

15–15 full-block wave bounds

A 15-member conflicting clique and a valid 15-wave grouping agree on the minimum for this declared-lock model.

45 of 45 compute values recorded

The supplied metadata totals 122,696 CU. Compute describes recorded computational work, not elapsed execution time.

A wave is a modeled group with no retained account conflicts. Wave counts describe estimated execution waves under the stated model; they do not reconstruct a validator's private schedule or measure runtime speedup.

Explore four bundled examples

From source to a report

Try the reproducible local workflow

  1. Generate the demo

    Download or clone the source, install the locked dependencies, and generate the reports from bundled fixtures. After installation, this demo works offline.

  2. Trace the evidence

    Search a transaction, select a shared account, or inspect a finding. Follow each relationship to declared permissions and available instruction evidence.

  3. Read the bounds in context

    Inspect the wave grouping and its lower-bound witness. Matching bounds establish a minimum within that model; different bounds leave the minimum unresolved.

Local quickstart

Use Node.js 22.12 or newer and npm. Run these commands from the project folder:

npm ci
npm run demo

Open output/demo/index.html in your browser. For example, the single-block loader report is written to output/demo/real-loader/report.html.

The tool analyzes public block data and writes local reports. The demo needs no wallet, API key, RPC account, database, or server.

Make the scope visible

Evidence you can check, with limits you can read

The independent verifier reconstructs declared conflicts from normalized account permissions, checks connected-component membership, and verifies that every transaction appears exactly once in a conflict-free wave grouping. It checks each pair in the saved clique witness, bound claims, status counts, and recorded compute coverage. It also prints the checked file's SHA-256.

npm run verify:analysis -- --analysis output/demo/real-loader/analysis.json

This certificate establishes internal consistency of the supplied declared-lock evidence. It does not authenticate the source RPC data, certify semantic explanations or counterfactual assumptions, or establish validator execution. A file hash identifies the checked bytes; it does not prove their origin.

  • Compute coverage stays explicit. Recorded compute is computational work, not elapsed time. Missing compute remains unknown; a partial subtotal is not a full-block total, and comparisons suppress compute differences when coverage is incomplete.
  • Conditional models retain their assumptions. Payer decoupling and byte-range refinement explore potential parallelism under hypothetical constraints. Their results do not establish a safe application redesign, current validator support, or a deployable performance gain.
  • Captured and synthetic evidence stay distinct. Real examples use saved public devnet fixtures. The synthetic application-state case is teaching data. Range observation coverage and upload-lifecycle coverage are separate questions.

For a broader local check, npm run verify:portable runs strict compilation, deterministic portable tests, fixture checks, demo generation, and the bundled reviewer workflow. Saved demo data can be checked separately with npm run verify:demo; rendered HTML is outside the data certificate.