1/5
--- ### Running make Certora and Monitoring the Process When you initiate the execution of make Certora, it requires some patience as the output generation and processing might take a little time. The UI displays the progress, and you can track the status through various indicators. ####Understanding the Output Once the process concludes, you'll notice specific indicators like: - A checkmark next to envfree funk status check," signifying that no environmental variables (`env`) were used in the function, aligning with the constraints set by using the keyword `envfree`. - A failure or violation mark next to hellFunc must never revert," indicating an issue where the conditions set by the function did not hold up as expected. ### Delving Deeper with Formal Verification Using the tool’s formal verification capabilities, you can explore why specific checks failed. For instance, with the hellFunc must never revert" check failing, formal verification reveals that the input `99` serves as a counterexample to the expected function behavior. ### Navigating the UI for More Insights By interacting with the UI, you can: - Select different rules and explore associated variables or call resolutions. - Dive into the call trace to see the sequence of operations and state changes leading up to the failure. ### Analyzing the Call Trace The call trace provides a detailed breakdown of the execution steps: 1. **Initial Setup**: Variables like `Numbir` might be set to unpredictable values, a process known as "havocing." This is crucial when external factors could alter state variables unpredictably. 2. **Execution Flow**: After setting up, the function attempts to execute and validate assertions. If `Numbir` is havoced to `0` instead of its typical `10`, it might trigger unexpected behaviors or reverts in the code. ### Relevance of Havocing Havocing is a crucial concept in Certora where variables may assume any value due to external influences, thus impacting the function's behavior. In this scenario, even though `Numbir` was set to `10`, the assumption that it could be altered led to a reevaluation to `0`.
A practical guide to analyzing a failed Certora run - In this lesson, you will learn how to analyze a failed Certora run, including how to understand the different parts of the call trace, how to identify the counter-example that caused the failure, and how to interpret the results of the run.
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