This app runs inside the BotSurf browser. Don't have it yet? Get the app or extension now!

Verify Groth16 Proof

Security · All
0 installs · Verified BotGentz app
Launch App
Opens in BotSurf — try it free, no account needed.
CategorySecurity
PlatformAll
Pricing Free
Installs0
Download BotSurf to use — free
No account needed for free apps. Once BotSurf is open, find this app in Apps from the + menu.

About this app

WHAT IT DOES

Verify Groth16 Proof enables you to cryptographically verify Groth16 zero-knowledge proofs, the most widely used zk-SNARK proof system for blockchain applications. Groth16 offers the smallest proof size and fastest verification among zk-SNARKs, making it ideal for on-chain verification in Ethereum and other EVM chains. The tool takes a complete Groth16 proof (pi_a, pi_b, pi_c), a verification key, and public inputs, and performs the full verification algorithm to confirm the proof's validity. If the verification succeeds, the tool returns a valid result, confirming that the proof demonstrates knowledge of inputs satisfying the circuit without revealing those inputs. This is essential for privacy-preserving applications, scalable rollups, and efficient verification of complex computations. The tool supports the bn128 curve (the standard for EVM compatibility) and produces verification results compatible with the ethsnarks Solidity verifier and other standard verification libraries.

HOW TO USE

Connect your wallet using the BGWallet connector (required for context). Select the proof format: "JSON" for structured proof data (recommended) or "Hex" for raw hex-encoded proof components. Enter the Groth16 proof as a JSON object containing pi_a, pi_b, and pi_c arrays (or hex strings for the alternative format). Enter the verification key as a JSON object containing the key components (alpha, beta, gamma, delta, and gamma_abc). Enter the public inputs as a JSON array of field elements. Click "Verify Proof" to run the verification. The tool displays the proof format, the number of public inputs, and the verification result: a green "Verified" checkmark if the proof is valid and a red "Invalid" X if it fails. The result includes a detailed explanation of the outcome and the verification status.

TECHNICAL MECHANISM

This tool implements Groth16 proof verification following the standard zk-SNARK protocol. The verification process uses the pairing operation on the bn128 (BN254) elliptic curve, which is the standard curve for Ethereum compatibility. Given a verification key containing the elements (α, β, γ, δ, and γ_abc) and a proof containing (π_A ∈ G1, π_B ∈ G2, π_C ∈ G1), the verifier checks the pairing equation: e(π_A, π_B) = e(α, β) * e(γ_abc, γ) * e(π_C, δ). The verification key also includes the γ_abc elements which are linear combinations of the public inputs, encoding the circuit's public inputs into the verification equation. The tool performs these pairing checks using the bn128 curve's pairing operation, ensuring compatibility with Ethereum's pairing precompiles. The verification algorithm verifies that the proof is valid for the given public inputs and that the prover knew the private inputs satisfying the circuit. All computation is performed locally in the browser using cryptographic libraries, with no data sent to external servers.

WHAT IT CANNOT SEE

This tool cannot verify that the proof corresponds to actual on-chain state or values without additional context—you must ensure the public inputs match the expected on-chain data. It does not support all ZK proof systems (only Groth16). The tool cannot verify proofs without the circuit-specific verification key; both the proof and verification key are required for verification. It does not support hardware acceleration for verification; all computation is done in software in the browser. The tool cannot verify the correctness of the verification key without additional trust assumptions; you must trust the key generation ceremony. It does not support verification of proofs generated with non-standard curves beyond bn128. The tool cannot verify proofs for circuits with mutable or dynamic parameters; the verification key must match the circuit. It does not support proof aggregation or recursive verification; it only verifies a single proof. The tool cannot recover the original inputs from the proof; zero-knowledge proofs reveal only what they are designed to reveal.

PLEASE NOTE

This tool is designed for developers and users working with Groth16 zk-SNARKs on Ethereum and EVM-compatible chains. The bn128 curve is the standard for Ethereum, enabling efficient on-chain verification using the pairing precompiles. The verification key must be generated from the same circuit as the proof using the same trusted setup ceremony. The proof must be structured with the correct components (pi_a, pi_b, pi_c) in the correct format. The public inputs must match the circuit's expectation exactly—mismatches will cause verification to fail. The tool uses pure JavaScript for cryptographic operations, which may be slower than native implementations but works entirely in the browser. Always verify proofs from trusted sources using a reliable verification library before relying on them in production systems. The verification result proves that the prover knew inputs satisfying the circuit, but it does not prove that those inputs correspond to real-world data without additional context.

Similar Apps

Log in to BotGentz

Suggest an App

Tell us what you'd find useful — if we build it, we'll email you the moment it's ready.