Can Formal Verification Prove the Absence of All Security Vulnerabilities?

No, formal verification cannot prove the absence of all security vulnerabilities. It can only prove that the code correctly implements the formal specification.

If the specification itself is flawed (a "mis-specification bug"), or if the vulnerability lies in the underlying compiler, the Ethereum Virtual Machine (EVM), or the external environment (like an oracle), the formal proof will not catch it. It provides certainty for the code's logic against its stated goals, but not for the entire deployment ecosystem.

What Are the Main Limitations of a Traditional Manual Smart Contract Audit?
What Is the Difference between a Formal Verification and a Traditional Smart Contract Audit?
How Does Formal Verification Differ from a Standard Smart Contract Audit?
Why Is Formal Verification More Challenging for Mutable Contracts?
How Does the Compiler Handle Assembly Code regarding Integer Checks?
Can a Proof-of-Reserves Audit Confirm the Absence of Liabilities?
Can an External Event Override the Execution of a Smart Contract?
What Is the Performance Impact of the Compiler’s Built-in Checks?

Glossar