CAIN-42 Verification Lab
Everything on this page runs against public data. The signature checks run in your browser with WebCrypto: this server is not asked whether the evidence is valid. Only verdicts and signed evidence are exposed here; the runtime's source is not.
1. Verify a published bundle in your browser
Fetches the 4-node PBFT fault-test bundle, checks its SHA-256 against the value in AI_VERIFY.json, then verifies every Ed25519 node state proof and quorum-certificate signature and the cross-node agreement of state roots (port of verify_cluster_evidence.py).
2. Check a live node's signed state
Requests the public node's current signed state proof (freshly sealed on each call) and verifies its signature here. The key is the one the node presents; trusting that key requires pinning it to a source you obtained independently.
3. Decision sandbox (no account, no key)
Runs the real decision path on a fixed scenario against a throwaway tenant. Scenarios are fixed (this is not a probing oracle) and limited to 20 decisions per hour per address.
4. Byzantine scenario runs (download and verify offline)
Seven multi-process 4-node runs with the raw signed messages each node exported: honest, wrong commitment, equivocation, forged votes, crash 1, crash 2, and a pre-fix crash run kept on purpose. The standalone verifier re-derives signatures, quorum backing, safety, and equivocation/deviation proofs. It ran the CAIN 23.0 test node service, not the production engine; one host; no partitions or view change.
- REPRODUCE.txt (copy-paste commands, expected output, what is not proven)
5. Machine-readable entry points
- AI_VERIFY.json (recipes, expected output, known-unverified list)
- /.well-known/cain-keys.json (public verification keys)
- /openapi.json