anthropics/FlashProve
FlashProve is an Anthropic research artifact (version 0.16.0, Apache 2.0, unmaintained) for verifiable LLM inference. A provider publishes a commitment ID bound to secret weights, its H100 GPU proves each reply, and anyone checks the proof on a CPU with bin/cp_verify without the weights. The README states a soundness bound of about q/2^124 + 2^-101, with the theorem in lean/THEOREM.md.
What it is
FlashProve 0.16.0 is an unmaintained Anthropic research prototype (Apache 2.0, not accepting contributions) for zero-knowledge proofs of LLM inference. The README says it runs Llama 4 Maverick at full size on one H100 with a 1,024-token context window. Prefill reaches about 110 tokens/second at 24 requests per batch. The README presents the Lean 4 soundness proof as covering the protocol, not the implementation.
Preconditions / Affected
The verifier needs far less than the prover. Verification (route 1) needs Linux, bash, g++ 13+ and under 2 GB RAM. The build takes 1 to 2 minutes and the check takes under 2 seconds. Routes 3 and 4 need the only supported prover platform:
- x86-64 Linux 4.14 or later, on a CPU with SHA extensions
- one H100 80 GB used by nothing else
- CUDA 13.2 Update 2 (nvcc 13.2.86)
- gcc and g++ 13, on a local disk
Memory for the other routes:
- Toy proofs on CPU (route 2) need about 1.5 GB RAM and take about 1 minute.
- The 8-layer synthetic small model needs 10 GB RAM and takes about 29 minutes to build and 23 to 30 seconds to run.
- The full-size synthetic run (1,001 tokens) needs 280 GB RAM and takes about 42 minutes.
- Real Maverick (route 4) downloads a 232 GB 4-bit conversion and needs 330 GB RAM, 245 GB disk, Python 3.13 and a calibration set you make first. It takes hours.
What to do
Build the verifier and check the stored example proof, as an ordinary user and never under sudo:
verifier/build.sh
bin/cp_verify examples/accepted-proof/config examples/accepted-proof/ivk examples/accepted-proof/example.req examples/accepted-proof/example.y examples/accepted-proof/example.proof -id "$(cat examples/accepted-proof/ID.txt)"The build prints a line starting THE VERIFIER IS BUILT: and exits 0. The check should end with YES and exit code 0. That example uses synthetic weights, so it shows only that the verifier works.
To verify a real proof, the invocation is bin/cp_verify CONFIG_DIR PUBLIC_KEY_DIR REQUEST_FILE TOKEN_FILE PROOF_FILE -id COMMITMENT_ID. Take the commitment ID from a party you trust, never from the server being checked or from files sent with the proof. Build the request file yourself.
Read the exit code together with the last line:
- 0:
YESorWITHIN LIMITS: …(exact match, or clipped gap). - 1:
NO: <name>(rejected, or a local fault). - 5:
NOT CHECKED: <name>(no verdict). Retry once only for internal-stage or internal-exception-parFor. - 14:
NOT-A-VERIFICATION(the call was invalid). - 2, 3, 4, 15: bad command line or file, or a partial call, with no verdict.
Further checks:
- Route 2 runs the CPU suite with
./run_suite.py cpu "$D/work". It overwritesbin/cp_verifyandbin/weight_sums. Exit 77 means tools are missing. Exit 3 means a test saw a false acceptance, to be reported per SECURITY.md. - The GPU quickstart is
examples/quickstart-gpu.sh. It can be silent for over 15 minutes. Success is exit 0 plusquickstart-gpu: all steps ended as expected. Confirm everyCompiled byline saysrelease 13.2, V13.2.86. A newer nvcc does not stop the build but is unsupported. - The full-size run is
prover/examples/run_target_example.sh target_full_f2 "$WORK". Too little memory gives exit code 2 at the start.
For accepted proofs, report the exact command, exit code, full last line, the commitment ID passed, and the covered: and result-v1 lines.
Caveats
The README's bound of about q/2^124 + 2^-101 applies after q hash queries. The README names weight hiding, known limits and the provider's duties as separate pages, and says they are required reading before committing secret weights. This page does not summarise them. The README also says never to work around an error with sudo, chmod, chown, rm or source edits.
Organisations named here
- Anthropic
Technologies named here
- Lean
- LLaMa
- CUDA
- Linux
- blocks/first_look.sh
- cp_verify
- examples/quickstart-gpu.sh
- FlashProve
- FlashProve 0.16.0 (Anthropic research artifact, Apache 2.0, not maintained, no contributions accepted)
- integrations/check_proof.py
- NVIDIA H100 80 GB (only supported prover GPU, must be used by nothing else)
- run_suite.py
- Ubuntu 24.04 (minimal), used for the verifier dependency install
- verifier/build.sh
- x86-64 Linux 4.14 or later with SHA extensions (only supported prover platform)
Techniques named here
- Verifiable inference proofs
Concepts named here
- Commitment ID
- False accept
- Soundness bound
- Weight hiding
Related in AI Security
