Smart Contract Formal Verification Badge Attestation 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
This tool connects to your EVM wallet and scans smart contract verification registries across different EVM chains to check formal verification status, proof hashes, and badge issuance records. It reads verification tool outputs (certificates, artifacts), contract bytecode references, and audit reports linked to verification badges from verification authority registries. The tool enables you to submit verification proof hashes and mint or issue verification badges attesting that a smart contract has been formally verified by recognized verification tools or authorities.
HOW TO USE
Connect your Web3 wallet using the Connect button. In the Verification Registry Configurations textarea, enter each verification registry you want to query in the format name:contract:chain—one per line. For example, "Certora:0x4b8a4D1F6a2Ff6b9A6B0F4A9A8F0A9A8F0A9A8F0:1" for a Certora verification registry on Ethereum mainnet or "VerificationRegistry:0x...:137" for a registry on Polygon. Enter the contract address you want to verify in the Contract Address field. Click "Check Verification Status" to fetch verification status, badge issuance, and proof hashes from each registry. Click "Submit Verification Badge" to submit a verification proof hash to a registry. Results appear in the Results card with a summary of registries checked, verified contracts, and badges issued, followed by a detailed breakdown of each registry. Click "Attest Badge" to mint or issue a verification badge for verified contracts.
TECHNICAL MECHANISM: MULTI-REGISTRY VERIFICATION STATUS DETECTION
The tool uses ethers.js to interact with verification registry contracts through a tiered ABI detection system. For verification status, it attempts isVerified(address) to check if a contract has been formally verified. For badge status, it attempts hasBadge(address) to check if a verification badge has been issued. For proof hashes, it attempts getVerificationProof(address) to retrieve the verification certificate hash. Badge issuance attempts mintBadge(address) and falls back to issueBadge(address). Proof submission attempts submitProof(address, bytes32) and falls back to attestBadge(address, bytes32). All operations are executed sequentially with proper error handling for each registry.
WHAT IT CANNOT SEE
This tool cannot formally verify contracts itself or validate proof correctness—it only reads verification status from registries and cannot independently verify the proofs. It cannot guarantee that verification covers all contract properties or attack vectors—the tool trusts the verification registry's assessment and cannot audit the verification coverage. It cannot audit off-chain verification tool outputs for accuracy—the tool relies on the registry's recorded data and cannot verify the underlying verification process. It relies on verification registry interfaces and may not support all formal verification tools—if a registry uses a non-standard ABI, status may not be detected. It cannot prove that a verified contract has not been upgraded or modified after verification—verification applies to a specific bytecode version and may not cover subsequent updates.
PLEASE NOTE
This tool signs transactions to submit proof hashes and mint badges—ensure you trust the verification registries you configure. All state is in-memory and resets on page reload. The tool supports EVM chains only—Ethereum, Polygon, BSC, Arbitrum, Optimism, Avalanche, Base, and Fantom. Always verify that the contract addresses you enter are correct and correspond to the registries you intend to query. Verification badges are attestations of verification status and do not guarantee contract security—always conduct your own security review.