By the end of this lesson you can

  • →State what an audit covers and what it explicitly does not
  • →Compute what a critical bug surviving many audits implies about catch rate or independence
  • →Read an audit report for scope and date rather than for its conclusion
  • →Separate implementation risk, which audits address, from design risk, which they do not

Junior · enrolled learners

This lesson opens with Euler Finance, 13 March 2023.

What happened
Euler was a lending protocol whose contracts had been audited by Halborn, Solidified, ZK Labs, Certora, Sherlock and Omniscia between May 2021 and September 2022; Pen Test Partners separately tested its web application. After the attack its chief executive retweeted a count of ten audits from six firms and wrote that the vulnerable lines of code had been audited. A December 2022 summary of Halborn's audit reported that 23 smart contracts were inspected over a one-month period with an overall satisfactory result: two low risks, three informational findings, and nothing rated higher than low. On 13 March 2023 an attacker used a flash loan against the donateToReserves function, added in a 2022 upgrade, which did not check the health of the donor's position, and took approximately $197M. Immunefi's annual count puts it second among 2023's losses, behind Mixin Network's $200M in September. Several weeks later the attacker returned the funds, and Euler recovered all recoverable assets, $177M of the $197M in Immunefi's figures.
The decision point
Ten reviews by six firms across two years did not find it. Read as a count of attempts, that outcome leaves two possibilities, and both are useful. Either each review catches a much smaller fraction of vulnerabilities than the word audit implies, or the reviews are not independent attempts and largely re-examine the same surface in the same way. The arithmetic in this lesson shows that the second explains the result more easily than the first, which means adding audits does far less than the count suggests. And the record adds a third reading that matters as much: the function arrived in a 2022 upgrade, eIP-14; Omniscia said it was outside the scope of every audit Omniscia conducted, and Sherlock, which reviewed that upgrade in July 2022, took responsibility for missing it. A count of audits says nothing about which of them saw the code that failed.
Recorded loss
$197,000,000

What you will be able to answer

  • →What does an audit cover?
  • →What does a bug surviving ten audits imply?
  • →What should you read in an audit report?
  • →Which risks does an audit not address?

Orientation and Year One are open: anyone can read them without an account. From Year Two onward the lessons are for enrolled learners, because progress through the later years only means anything if it is tracked against a record.

It is free. We do not sell the list and there is nothing to buy at the end of it.

Sources and review

Confidence high·Volatility low·Reviewed 2026-10-22·Owner unassigned

Contested

The count of ten audits from six firms is a post the chief executive retweeted after the attack, as Cointelegraph reported it, not a figure Euler published as a list. Cointelegraph names Halborn, Solidified, ZK Labs, Certora, Sherlock and Omniscia (which it spells Omnisica) between May 2021 and September 2022; BankInfoSecurity, reading Euler's website on the day of the attack, lists Certora, Halborn, Solidified, ZK Labs, Sherlock and the bug bounty platform Immunefi, and says Pen Test Partners tested the web application. The lesson's argument holds at any count above about five, and does not depend on the exact figure.

BlockSec's write-up calls Euler the largest hack of 2023, and so did this lesson's earlier version. Mixin Network's loss of about $200M in September 2023 was larger, and Immunefi's annual report ranks Euler second. The lesson now says so.

This lesson is not an argument that audits are worthless. They reliably catch common implementation classes and they force specification, both of which are real. The argument is about what the marginal audit buys and about which risk categories are outside the exercise entirely.