Skip to content
ZKFLASH
Robinhood Chain
zkFlash / proof testing studioLive data from Robinhood Chain
CA$ZKFLASH address published at launch

Zero-knowledge testing · Robinhood Chain

ZKFLASHzkflash.xyzNOIRUltraHonk proofs

zkFlash: Proof in Motion. Results in View.

Building ZK proof testing, verification, and developer tools. Real circuits. Your own clock. Limits written down.

  • hash_opening946 gates4 casesLOCAL/
  • range_gate3,756 gates5 casesLOCAL/
  • path_member8,797 gates5 casesON-CHAIN VERIFIER/
  • tally_floor10,273 gates4 casesLOCAL/
00/Proof pipeline

One pipeline.Every stage in view.

Inputs become a witness, a witness becomes a proof, and a proof meets a verifier. zkFlash shows each stage with its own measured time, so a failed test tells you where it stopped.

zkFlash / proof terminal Illustrative motion

Input_cells

Case_queue

CASEValid
CASEInvalid
CASETampered input
CASETampered proof
CIRCUIThash_opening
CIRCUITrange_gate
CIRCUITpath_member
CIRCUITtally_floor

Valid + invalid + tampered

Case router

TRUEhash_openingVerified
FALSEhash_openingrejected
TAMPERhash_openingrejected
TAMPERhash_openingrejected
TRUErange_gateVerified
FALSErange_gaterejected
FALSErange_gaterejected
TAMPERrange_gaterejected
Expected ↔ actual18 cases

Stage guard

InputsWitnessProveVerifyHashReport

Prover

Witness / prove / verify

Check registry

Circuit hash pinnedActive
Key hash pinnedActive
Input order boundActive
Tamper cases onActive
Checks per run4

Batch runner

inputs..

Proof verification path

Robinhood Chain · verifier

Verifier stateDeployed
Run bookDeployed
Block—
One check, measured2,917,904 gas

Chain verification state

Sample tree root behind path_member: 0x090494c49de7a2c8d3c3137d017f39512b2e7e61e8b9ebaeea771e12ca762301

01/Circuits

Every circuit.One board.

Circuits
4
Cases
18
On chain
1
4 compiled in advance
CircuitStatusSystemGatesPublicProof bytesCircuit hash
hash_openingPREIMAGE
READYUltraHonk94616,4640x3eb2eee501d74884bb54309ba9230155d3003d7fafdeeb81c50843b46b4f0b5fRun
range_gateBOUNDS
READYUltraHonk3,75637,2320x505ef906db276324dcf2507cbfad0c4bbf5429e98f67291233f46b5ad8819056Run
path_memberON-CHAIN
READYUltraHonk8,79738,0000xc2829c86bb4140ac1e4900424025a17f0e465123962193bd558720b24ffc0452Run
tally_floorSUM
READYUltraHonk10,27328,0000x252d0d4da630ec822ad5b7b33839cc1f6f5b76409fb81b6b88aae95a2443a984Run
Open the lab
02/Scenario matrix

Beyond the happy path.

A proof system earns trust by what it refuses. Each circuit ships with a true statement, a false one, a changed public input and a flipped proof byte, with the expected outcome written down before anything runs.

hash_openingTrue statement
Case kind
Valid
Expected
Verified
Last result here
Not run in this browser
hash_openingDigest belongs to other values
Case kind
Invalid
Expected
Witness rejected
Last result here
Not run in this browser
hash_openingdigest changed after proving
Case kind
Tampered input
Expected
Verification rejected
Last result here
Not run in this browser
hash_openingOne proof byte flipped
Case kind
Tampered proof
Expected
Verification rejected
Last result here
Not run in this browser
range_gateTrue statement
Case kind
Valid
Expected
Verified
Last result here
Not run in this browser
range_gateValue above the upper bound
Case kind
Invalid
Expected
Witness rejected
Last result here
Not run in this browser
range_gateCommitment to another value
Case kind
Invalid
Expected
Witness rejected
Last result here
Not run in this browser
range_gatecommitment changed after proving
Case kind
Tampered input
Expected
Verification rejected
Last result here
Not run in this browser
range_gateOne proof byte flipped
Case kind
Tampered proof
Expected
Verification rejected
Last result here
Not run in this browser
path_memberTrue statement
Case kind
Valid
Expected
Verified
Last result here
Not run in this browser
path_memberRoot the leaf is not under
Case kind
Invalid
Expected
Witness rejected
Last result here
Not run in this browser
path_memberTag from another scope
Case kind
Invalid
Expected
Witness rejected
Last result here
Not run in this browser
path_memberroot changed after proving
Case kind
Tampered input
Expected
Verification rejected
Last result here
Not run in this browser
path_memberOne proof byte flipped
Case kind
Tampered proof
Expected
Verification rejected
Last result here
Not run in this browser
tally_floorTrue statement
Case kind
Valid
Expected
Verified
Last result here
Not run in this browser
tally_floorTotal under the floor
Case kind
Invalid
Expected
Witness rejected
Last result here
Not run in this browser
tally_floorcommitment changed after proving
Case kind
Tampered input
Expected
Verification rejected
Last result here
Not run in this browser
tally_floorOne proof byte flipped
Case kind
Tampered proof
Expected
Verification rejected
Last result here
Not run in this browser

Path member is the one circuit with a Solidity verifier. Run these or build your own.

03/Three lanes

One studio.Clear results.

zkFlash keeps local results, chain checks and public records apart, and labels which one you are looking at. A green check in your browser never reads as a claim on chain.

In your browser

Local prover

Four Noir circuits, compiled in advance and served by this site. Proving runs in a Web Worker, so inputs stay on your device and the page stays responsive.

  • Four bundled circuits
  • UltraHonk in WASM
  • Valid + invalid + tampered
  • Timings from your clock
Open the lab
Optional

On-chain check

The path_member circuit has a generated Solidity verifier. Send the same proof to it through a free eth_call and compare the answer with the local one.

  • One bundled verifier
  • eth_call costs no gas
  • Rejects tampered bytes
  • Bytes you can verify
Run a check
Public record

Anchored report

Export a report with its limits written down, anchor its hash on the run book, and let a second wallet attest that it reproduced the same outcomes.

  • JSON + Markdown export
  • Workspace roles
  • Second-wallet attestation
  • No fee, no admin
Open reports
04/Timing bins

Proving time,in bins.

Every run you make lands in a bin. The chart reads your browser's own log and starts empty on purpose, because a timing is only true for the machine that measured it.

Proving stage · measured in this browser0 runs · median —
Empty until you run a proof. We ship no sample timings.Measure a run
05/Run lifecycle

How a run moves

01 / 04

Prepare

The worker loads the compiled circuit, the proving WASM and the public setup points from this site. Your form values become a witness in the shape the circuit expects.

The first run of a session pays for loading. The timeline shows that as its own stage.

Where it runsA Web Worker in your browser
NetworkStatic files from this site only
Inputs sent anywhereNone
06/Limits

What a reportdoes not say.

Vague claims help nobody testing a circuit. Here is what a local run shows, what an anchored report adds, and everything neither of them can tell you.

Question Local run Anchored report
The statement in the circuitShownShown, through the proof it names
Who generated the proofNot shownOnly which wallet anchored the hash
That inputs are true in the worldNot shownNot shown
Timings on another deviceNot shownNot shown
Your private inputsStay in your browserNever in a report as plain values
Public inputs and the proofStay in your browserInside the exported file; only its hash goes on chain
Your wallet addressNot neededPublic on chain
Independent reproductionNot shownCounted, one per wallet. One person can hold many wallets
07/Roadmap

What runs.What is planned.

Phase 1Live

Proof lab

  • Four bundled circuits
  • Browser proving in a worker
  • Local verification
Phase 2Live

Testing

  • Scenario builder
  • Timeline + monitor
  • Reports with limits
Phase 3Live

On-chain record

  • Run book contract
  • Path verifier
  • Verified source on the explorer
Phase 4Planned

Custom circuits

  • Upload your own circuit
  • Hosted test runs
  • Larger circuits
Phase 5Planned

Integration

  • Developer SDK and API
  • $ZKFLASH credits
  • Premium reports
08/Contracts

The contracts.

No owner, no admin, no fee and no upgrade path. They take no ETH and hold no tokens. Roles exist per workspace only. Live on Robinhood Chain with verified source.

ZkflashRunBook.solWorkspaces with roles, circuit registry, report anchors, second-wallet attestationsCore
ZkflashPathCheck.solVerifier generated from the path_member circuitProof
ZkflashSpongeTape.solLinked library of the verifier: Fiat-Shamir transcriptLibrary
ZkflashGateChecks.solLinked library of the verifier: gate relationsLibrary

Prove.Verify.

Start with a bundled circuit. Break it on purpose. Keep the report, with its limits, and let someone else check your work.