Transparency dashboard

The live, checkable state.

open-opticon's claim is "don't trust me, check." This page collects the state that lives outside the maintainer's control — contracts on a public chain, an append-only log anchored on that chain, and byte-reproducible build measurements. Every value below links to its independent source; some are read live from Ethereum Sepolia in your browser.

Ethereum Sepolia · chain id 11155111

On-chain: permissionless verification

The dual-root check, the zk-receipt verifier, and the transparency-log anchor are deployed on a public testnet anyone can call. A read-only eth_call to HonestEarQuorum.verdict(…) returns the agreed verdict (2, 1) = alarm_tone, presence — the ZK proof and the device P-256 signature, bound to the same nonce and the same audio, agreeing on a chain you don't control. The audio was never on-chain.

ContractAddress (Sepolia)
HonestEarQuorumZK + device P-256, audio+nonce-bound 2-of-2 0x31695C1842d558b396Ec8fE07E595D24cBabe487
HonestEarVerifierRISC Zero Groth16 receipt for the pinned image id 0xFEBFAdf633a79a3dB1e0e02D5a26656a3a05ED36
CheckpointAnchorRFC 9162 consistency, verified on-chain (SHA-256 precompile) 0x742Ad4567bE9c1EFB1F89D3B42EED160C04b6b86
RiscZeroGroth16VerifierRISC Zero's verifier contract 0x956CD96147D71530892730cBBab1109E2EA7aCC9
live read

CheckpointAnchor state, read live from Sepolia

Your browser calls latestSize() and latestRoot() on the anchor via a public RPC and compares them to the transparency-log checkpoint committed in this repo. If they match, the public ledger agrees with the log's published root.

latestSize
reading…
latestRoot
reading…
vs. committed
checking against checkpoint_fixture.json (size 5)…

Testnet, honestly. This is a public-testnet proof-of-concept deployed from a disposable key — real on a real chain, but not a production deployment. For a production chain you'd reuse RISC Zero's canonical audited verifier router rather than a self-deployed one. Verify any of this yourself, view-only and free, with bash onchain/call-sepolia.sh.

RFC 6962 / RFC 9162

Transparency log: append-only, anchored

Device endorsements go into an append-only Merkle log. A signed checkpoint is three lines — origin, size, base64 root — and a consistency proof shows the log only ever grew (no rewrite, no fork). That same proof is checked on-chain by CheckpointAnchor, so even the log operator can't equivocate without the public ledger rejecting it.

checkpoint body
<origin>\n<size>\n<base64(root)>\n
committed proof
consistency: size 3 → 5 (onchain/test/checkpoint_fixture.json)
old root (size 3)
0xb0735f9ed75ac2b87ef88a0e62de2d7f86cdf1797f3653e797664f0b0172484a
new root (size 5)
0xd3fb07a3e7c48d1710a4006bbedaed70d9f6f31a65e4a2c83ba2b3a2f6394462
verify the log yourself
$ make sim   # builds he-log
$ he-log consistency --log L --index 3   # RFC 9162 proof 3 → current
$ cd onchain && forge test --match-contract CheckpointAnchorTest
  [PASS] test_AnchorsConsistentExtension  # the 3→5 proof, checked on-chain
  [PASS] test_RejectsForkedRoot           # a rewrite is rejected
  [PASS] test_RejectsRollback

The new root (size 5) above is the exact value the live anchor read returns — that's the agreement the dashboard checks for you.

operating witnesses
he-logd serves the signed checkpoints + consistency proofs; independent he-witness daemons poll it, verify each checkpoint is an append-only extension of the one they last cosigned, and refuse to cosign a forked or rewound history (pinning the log key). The verifier then requires a threshold of enrolled, pinned-key cosignatures — so one operator can't equivocate. A 2-of-3 quorum verifying and a fork being refused run end-to-end in make witness-e2e.
reproducible · attested

Build measurements: recompute the bytes

The host artifacts (the C simulator/detector and the Go verifier tools) are built twice, in two trees at different paths, with deterministic flags, and every binary's SHA-256 is compared. Identical hashes prove the output depends only on the source — not the path, the clock, or the machine. CI runs this on every push, publishes the manifest, and attaches a SLSA build-provenance attestation to it.

manifest format
<sha256>  <binary-basename> (sorted)
produced by
make repro (tools/repro.sh)
published as
CI artifact "repro-manifest" + the run summary
provenance
SLSA via actions/attest-build-provenance (gh attestation verify)
recompute + check provenance
$ make repro
  REPRODUCIBLE  all host artifacts are byte-identical across two trees
$ gh attestation verify repro-manifest.txt --repo NubsCarson/open-opticon
 verification succeeded   # the manifest's GitHub build provenance

The latest manifest is on the CI runs page (each run's summary + the repro-manifest artifact). The OP-TEE TA measurement is re-derivable from source with the documented deterministic build; the zk guest image id is a toolchain- and revision-locked measurement (pinned to its rzup toolchain + guest snapshot, not a from-any-checkout rebuild) — see REPRODUCIBLE.md.

Check it yourself

Nothing here asks for your trust.

in your browser
verify.html — the real verifier compiled to WebAssembly, checks a signed bundle client-side (raw or COSE_Sign1, auto-detected).
on a public chain
bash onchain/call-sepolia.sh — read the dual-root verdict from Sepolia, no funds.
firmware token
he-attest-verify — verify a PSA attestation token (EAT) offline: signature, profile, nonce, and measurement vs published references.
inspect a bundle
he-dump — decode a bundle to human-readable fields (no verification), an audit aid.
on your machine
make test && make repro — units, e2e (incl. witness fork-refusal), and byte-identical rebuilds, offline.