ROBINHOODCHAIN RUNSON TRUST.
[ 4663, WHITELISTED FRAUD PROOFS ]EVERY WINDOWOF BLOCKS,COMMITTEDON CHAIN.
[ 2048 BLOCKS MAX, SEQ STRICT ]THE STATESTAYS HIDDEN.THE PROOFSTAYS PUBLIC.
[ 736 B BUNDLE, 3 NIZK PROOFS ]VERIFIEDBY A CONTRACT,NOT A PROMISE.
[ 3 CONTRACTS LIVE, MAINNET ]PROVE IT.TAMPER WITH IT.PUT ITON CHAIN.
[ 1 FREE RECORD PER VISITOR ]LIVE ONMAINNET.PAID FORBY PROOF.
[ 3% TAX, PROVER TREASURY ]Prove everything.
Reveal nothing.
Verify it, don't trust it.
Don't take any of this on faith.
The protocol's conformance suite is embedded in this page. It proves its own hash function against known-answer vectors, checks the 98-byte signing layout byte by byte, and then asks the deployed contract on Robinhood Chain for its answer and compares. Nothing simulated, nothing fetched from a server.
Your secrets never leave this page.
Type any two values. Your browser turns them into hiding commitments and generates the same zero-knowledge bundle the protocol anchors. The live verifier accepts it, rejects a tampered copy, and you can record it on chain from your wallet or for free (one per visitor per day). One button runs the whole loop.
Prove a hidden number is big enough.
Proof of reserves, in miniature. Type a secret balance and a public threshold. Your browser commits to the balance, proves that the hidden value is at least the threshold, and the RangeVerifier on chain checks it, without ever learning the balance. Try inflating the claim afterwards: the same proof stops working. This is the primitive that lets a protocol prove it is solvent without opening its books.
Proofs people have put on chain.
Every record in the permissionless registry, newest first, read straight from the contract by your browser. Each one is a visitor's zero-knowledge proof the verifier accepted, with the wallet that recorded it and the transaction that carries it.
The chain's own roots, anchored without a signature.
The trustless lineage, read live from TrustlessAnchor. Each row is a window of Robinhood Chain blocks whose end state root the contract took from a real block header and bound to a zero-knowledge proof. Press audit on any row: your browser re-reads the record and the block from an RPC node and checks them against each other, without asking the contract whether the contract is right.
An agent that proves what it says.
Ask the zkThunder agent about the lineage, or ask it to prove something. It cannot compute a proof itself: its tools run inside this page, so the prover that generated every bundle above builds commitments and proofs from your private inputs, the deployed contracts verify them, and the agent can audit a live anchor against the chain. Your secrets stay in this tab, and it only reports what a tool returned.
Ask about the lineage, or ask for a proof. The agent answers with tools that run inside this page: the prover builds commitments and proofs from the private inputs above, the deployed contracts verify them, and the chain is read directly. It never sees your secrets and never reports a result it did not get from a tool.
The parts you need to check the claims.
The full source is private. These excerpts are the exact checks running in the deployed contracts and the prover that generated every bundle verified above, with the live addresses and anchored transactions on the explorer.
if (paused) revert ContractPaused();
if (seqByProofHash[proofHash] != 0) revert ProofAlreadyAnchored();
if (seq != lastSeq + 1) revert NonMonotonicSeq();
if (startBlock != lastEndBlock + 1) revert RangeOverlap();
if (endBlock - startBlock + 1 > MAX_BLOCKS_PER_ARTIFACT) revert WindowTooLarge();
bytes32 dsHash = computeDsHash(proofHash, startBlock, endBlock, seq);
address signer = ECDSA.recover(
MessageHashUtils.toEthSignedMessageHash(dsHash), aggregatorSig);
if (!_isValidAggregator(signer, seq)) revert InvalidSignature();
if (address(verifier) != address(0)) {
if (!verifier.verify(zkProof, publicInputsHash)) revert ZkVerificationFailed();
}Follow @zkThunder_ for launch updates.