2/5
--- ### Transition to Formal Verification After discussing the limitations of fuzzing, we are now transitioning to formal verification techniques to enhance our codebase's reliability. In this section, we will explore two specific tools, Halmos and Certora, and examine the trade-offs associated with each. ### Exploring Verification Tools: Halmos and Certora #### Halmos Halmos offers a similar API to another tool named Control, but it is notably faster. This speed advantage makes it a preferable choice in scenarios where time efficiency is critical. Due to its faster performance, we will focus on Halmos and not delve into Control, as installing and executing Control can be significantly more time-consuming. #### Certora Certora, along with Halmos, will be part of our hands-on demonstration. We will analyze its integration into our projects and its specific benefits in a formal verification context. ### Practical Steps: Setting Up Our Environment To effectively learn and implement these verification tools, follow these steps: 1. Open the project directory containing the Certora folder, Halmos, and Control. 2. Delete all existing files in these folders to prepare for a clean slate. 3. We will then recreate each formal verification suite from scratch, beginning with Halmos. ### Acknowledgments and Recommendations A special acknowledgment to the team at Runtime Verification for their invaluable assistance in understanding the nuances of formal verification. For those interested in further expanding their knowledge or applying formal verification tools like Control in your own projects, it is highly recommended to explore the resources provided by Runtime Verification post-course. ### Starting with Halmos As we proceed, our first task will be to write the Halmos formal verification suite. This hands-on approach will not only reinforce learning but also provide practical experience in implementing formal verification within your projects.
A comprehensive guide to Formal Verification - This lesson covers how to write formal verification suites, using two tools: Halmos and Certora. The lesson also highlights the trade-offs between these two formal verification tools.
Previous lesson
Previous
Next lesson
Next
Give us feedback
Course Overview
About the course
Assembly
Writing smart contracts using Huff and Yul
Ethereum Virtual Machine OPCodes
Formal verification testing
Smart contract invariant testing
Halmos, Certora, Kontrol
Security researcher
$49,999 - $120,000 (avg. salary)
Smart Contract Auditor
$100,000 - $200,000 (avg. salary)
Guest lecturers:
Josselin Feist
Head of Blockchain at Trail of Bits
Last updated on January 17, 2025
Solidity Developer
Assembly and Formal VerificationDuration: 30min
Duration: 4h 38min
Duration: 3h 57min
Duration: 1h 56min
Course Overview
About the course
Assembly
Writing smart contracts using Huff and Yul
Ethereum Virtual Machine OPCodes
Formal verification testing
Smart contract invariant testing
Halmos, Certora, Kontrol
Security researcher
$49,999 - $120,000 (avg. salary)
Smart Contract Auditor
$100,000 - $200,000 (avg. salary)
Guest lecturers:
Josselin Feist
Head of Blockchain at Trail of Bits
Last updated on January 17, 2025
Testimonials
Read what our students have to say about this course.
Chainlink
Chainlink
Gustavo Gonzalez
Solutions Engineer at OpenZeppelin
Francesco Andreoli
Lead Devrel at Metamask
Albert Hu
DeForm Founding Engineer
Radek
Senior Developer Advocate at Ceramic
Boidushya
WalletConnect
Idris
Developer Relations Engineer at Axelar