v0.1.0 · synthetic data only · measured on a local cluster: one Solana validator, two Arcium ARX nodes

Compute on genomic data without ever decrypting it.

A marketplace where a clinic, biobank or individual puts a dataset to work without handing it over. Runs execute as multi-party computation over ciphertext, the owner's consent is checked on-chain before anything runs, and the encryption key never leaves the owner's browser.

The prototype runs on mock data; the numbers below come from the chain, not from it.

6 of 11 success criteria measured.

Filled: measured, dated Hollow: not measured yet

  1. SC-001 No raw record in the clear 0 on 11 runs 08 Sep 2026
  2. SC-002 Gap vs. plaintext 0.0 pp 08 Sep 2026
  3. SC-003 10 000 records, projected 3.31–3.71 h 08 Sep 2026
  4. SC-004 Outside consent refused 20 of 20 27 Sep 2026
  5. SC-005 Revocation, next run 0 after 29 Sep 2026
  6. SC-006 Split sums to deposit not yet M3
  7. SC-007 50 owners < 30 s not yet M3
  8. SC-008 Journal reconciled not yet M4
  9. SC-009 Private amounts not yet M4
  10. SC-010 Catalogue → result 0.1 s active 08 Sep 2026
  11. SC-011 First screen < 2 s not yet M4

Three guarantees, enforced by the system rather than by policy.

Computation over ciphertext

Data is secret-shared across MPC nodes; no node sees a record, and the operator holds no key. The key is created and kept in the owner's browser.

Consent as a condition of execution

Allowed uses, expiry and revocation live on-chain. A run outside them is refused by the program, including one sent straight to the chain, around the API.

Settlement by contribution

The number of records that entered a run is counted inside the computation, not declared by the owner. The split among several owners is not measured yet (M3).

Four steps, and where each is checked.

  1. The owner encrypts the dataset in the browser. The key stays there.
  2. The owner sets consent on-chain: purposes, buyer categories, expiry.
  3. A buyer orders a run. The program checks consent and refuses anything outside it.
  4. MPC nodes fold the ciphertext and reveal only the aggregate, above a cohort floor. An independent verifier checks the run against the chain.

What has been measured, and when.

Each figure is read from the chain on a live local cluster, and each check is proven by a negative control on live data: a planted defect the check must catch.

SC-001 · 08 Sep 2026

No raw record in the clear, anywhere in a run's lifecycle

A canary dataset searched in every account, transaction, log and storage object; 35 328 of 35 328 committed words inspected. The verifier runs without any GenoVault package.

0 on 11

runs · budget 0 on 10

SC-002 · 08 Sep 2026

Quality gap versus the same recipe on plaintext

150 numbers compared, 0 mismatches: the MPC report equals the plaintext recount number for number.

0.0 pp

budget ≤ 2 pp

SC-003 · 08 Sep 2026

A run over 10 000 records

Projected from the measured cost of one fold on two corpora; fold cost stays constant within 10 % across run lengths.

This criterion was “≤ 5 minutes”. The measurement found that the cluster saturates at four concurrent computations (×4.08 on sixteen), so 10 000 records take about 55 minutes even with unbounded parallelism. The budget was rewritten after the measurement, not before it.

3.31 h

and 3.71 h

projected · budget ≤ 4.5 h

SC-010 · 08 Sep 2026

The buyer's path, catalogue to result

The buyer's active time: four reads and one decryption. Wall-clock from order to report was 186 s, on a demo pool of three datasets.

0.1 s

active · budget ≤ 3 min

SC-004 · 27 Sep 2026

Runs outside consent are refused

10 allowed and 10 forbidden scenarios: 0 false passes and 0 false refusals, on the chain and on the API. Controls: a program without the category check, and the API reading a finalized, 13-second-old chain.

Measured against the buyer category the buyer declares. Verifying that category is planned.

20 of 20

budget 0 false passes, 0 false refusals

SC-005 · 29 Sep 2026

Revocation applies to the next run

10 revocations. No order was accepted after one; the nearest was refused in the same slot, later in the block. The API sees a revocation within one slot (419 ms). Control: a program without the revocation check accepted 1 587 orders, and the check went red.

0 accepted

after revocation · 10 of 10 · budget < 60 s

Measured on one machine. A production Arcium cluster is a different measurement and has not been made.

What is not there yet.

  • SC-006 · M3

    Owners' shares, the fee and the refund add up to the deposit, on every run.

  • SC-007 · M3

    A run's fee split among 50 owners in under 30 seconds.

  • SC-008 · M4

    An exported journal reconciled with the chain by a third-party script.

  • SC-009 · M4

    Payment amounts that cannot be read without a viewing key. Today they are public on-chain.

  • SC-011 · M4

    The catalogue's first screen in under 2 seconds.

  • Prototype

    The prototype on this site runs on mock data. There is no API or cluster behind it, and consent is not yet editable from the interface.

Limits, said out loud.

  • No protection yet against attacks on model privacy. Membership inference and training-set reconstruction are not addressed; only a computation that returns a record by construction is refused. This is the largest gap.
  • Synthetic data only. No criterion shows fitness for real patient data.
  • No legal or regulatory review. Cryptography is not certification.
  • On-chain consent is technical enforcement, not a document an ethics committee recognises.
  • A fixed catalogue of recipes. Buyers cannot run their own code over the data.
  • Consent is per dataset, not per record inside someone else's dataset.
  • No fiat off-ramp, no mobile app, English only.

Questions.

Is this real patient data?

No. Every dataset is synthetic, and the system has not been through legal or regulatory review.

Can the operator read my data?

The key is created and kept in your browser; the platform never receives it. The nodes compute on secret shares.

What stops a run I did not allow?

The program checks consent before a run exists; without a run, the compute layer has nothing to execute (SC-004, SC-005).

Why hours for 10 000 records?

The cluster saturates at four concurrent computations. The time is a measured property of this setup (SC-003).