ZK Proof Submission Tool
Free to download on every platform. Comes pre-installed on BotFone, BotPad and BotFlip — with extra free apps included.
About this app
WHAT IT DOES
The ZK Proof Submission Tool enables developers and users to submit zero-knowledge proofs to on-chain verifier contracts. It reads verifier contract state, user address, wallet balance, and proof verification key. The tool processes public inputs, proof points (A, B, C), proof type, proof status, and submission limits. It supports submitProof for standard submissions, batchSubmitProofs for submitting multiple proofs in a single transaction, and submitWithPublicInputs for proofs with associated public data. The tool reads gas price, block timestamp, chain ID, transaction nonce, approval state, contract owner state, and verification history before execution.
HOW TO USE
Connect your wallet, select the target network, and enter the verifier contract address. Optionally provide a proof type for reference (e.g., Groth16, Plonk). Enter public inputs (one per line) as hex or decimal values. Enter proof points (A, B, C) as hex values—the tool will concatenate them into the expected proof format. The tool will fetch verifier state, verify the contract is active, and display the contract owner and your submission history. Once confirmed, it submits the proof to the verifier contract. The tool automatically detects the correct submission method based on whether public inputs are provided.
TECHNICAL MECHANISM
Unlike generic transaction tools, this executor is purpose-built for ZK proof verification workflows. It first reads the verifier contract's owner() to display transparency information and uses isVerifierActive() to ensure the contract is operational. The tool parses public inputs into uint256[] format and proof points into bytes format, concatenating multiple proof components as required by standard verifier interfaces (e.g., Groth16 proofs concatenate A, B, C). It then selects the optimal submission method: submitWithPublicInputs when inputs are provided, submitProof for proof-only submissions, or batchSubmitProofs for multiple proofs. The tool reads submissionCount() to display the user's verification history and estimates gas using estimateGas.submitProof() to warn if the transaction may be expensive. Verification results are parsed from transaction logs where possible, though users should confirm verification status independently. Gas costs are calculated using receipt.effectiveGasPrice for accurate post-EIP-1559 fee accounting.
WHAT IT CANNOT SEE
This tool cannot verify that the proof actually proves what it claims to prove—it relies on the verifier contract's correctness. It cannot detect flaws in the proof generation process, nor can it validate the off-chain computation that produced the proof. It also cannot guarantee that the verifier contract accurately implements the verification algorithm. The tool cannot verify that the public inputs correspond to the actual computation, or that the proof wasn't generated using a malicious circuit. It also cannot detect if the verifier contract has been compromised or if the verification key has been replaced.
PLEASE NOTE
This tool supports EVM-compatible chains. Submitting a proof is irreversible—verify all inputs and proof data carefully before signing. The verifier contract must implement the submission functions expected by this tool; if functions differ, the transaction may fail. Proof points must be provided in the exact format expected by the verifier—usually concatenated hex values for Groth16 proofs (A, B, C). Gas costs for proof verification can be high; ensure you have sufficient native balance. This tool does not generate proofs—for that, use off-chain proof generation tools.