How to Read a DeFi Audit Before Depositing: A 10-Minute No-Code Checklist

I used to treat the “Audited” badge like an airbag — proof someone had engineered for my survival. Then I actually read a report and learned the logo only tells you where the reviewers looked. Here is the ten-minute routine I run before every deposit.

By DifiCalc Research Team · Published Sep 29, 2026 · Reviewed Sep 29, 2026 · 9 min read

I once treated the “Audited by…” badge like an airbag: proof someone had engineered for my safety, so I could stop thinking. Then I read a report properly. The logo was real. It covered three contracts. The pool I deposited into was the fourth.

An audit is not a warranty. It is a photograph of named code on a named commit, taken by humans on a deadline, attached to a list of things they were explicitly not asked to examine. This is the no-code routine I run before any deposit bigger than what I would shrug off losing: just which pages of a PDF matter and what to cross-check them against.

TL;DR. An audit is a scoped snapshot, not a guarantee: it covers specific contracts at a specific commit hash, nothing after that commit and nothing off the list. In ten minutes you can (1) confirm the report on the auditor’s own site, (2) match chain, address and commit hash, (3) read the scope exclusions, (4) check that Critical/High findings are fixed rather than “acknowledged”, and (5) inspect the powers around the code — proxies, admins, multisigs, timelocks, oracles and bridges. ack3’s H1 2026 incident study found 94.4% of losses at audited protocols ran through paths outside audit scopes (72.1% excluding two outliers). The badge tells you where reviewers looked; your job is checking where your money actually sits.

First, what an audit actually is

The ethereum.org smart-contract security docs put it plainly: audits do not prove bugs are absent and say nothing about economic viability. A firm is paid a fixed fee for fixed person-weeks, examines an agreed file list, and reports what it finds — it is not on the hook when you deposit afterward. Three limits matter:

The evidence behind this mindset got precise in 2026. A study from researchers affiliated with security firm ack3 and the Czech Technical University in Prague graded 135 verified DeFi incidents from January 1 through June 29, 2026 — $939.86M in attributed losses. Sixty-eight victims had identifiable public pre-incident audits; in 46 of them the exploited path sat outside every scope the researchers could identify: $680.97M of the $721.24M lost by audited protocols, or 94.4%. That does not mean audits fail 94% of the time. KelpDAO (~$292M) and Drift Protocol (~$285M) dominate the sum; excluding those two outliers, the outside-scope share is 72.1%. The authors had no unexploited control group and judged scope from public evidence, so this describes how reported losses distributed, not whether audits cause safety. The honest takeaway: “was it audited?” and “was the thing holding my money audited?” are different questions.

Minutes 0–2: Find the real report on the auditor’s own site

Protocol websites have a way of hosting PDFs that vanish after an incident, or showing a logo that links nowhere. I never trust the copy linked from a protocol’s docs — I open the auditor’s own site and find it in their publications list. Trail of Bits maintains a public publications registry cataloging years of reports, and most reputable firms do something similar. If it is not on the auditor’s own domain, I assume it does not exist until the team shares the exact URL. I also check client and date — rebranded projects reuse audit pages.

Minutes 2–4: Match chain, address and commit hash

Every legitimate report names its scope: files, commit hashes and usually deployed addresses per chain. I copy the address my deposit actually touches from the protocol’s official docs and check three things:

An old audit on a proxy whose implementation was swapped last month is history, not protection.

Minutes 4–6: Read the exclusions — the most important page

Every scope section lists what was out of scope, and that list is usually more informative than the findings. Familiar exclusions: third-party libraries and dependencies, upgrade and admin keys, oracle infrastructure, cross-chain messaging, the frontend, off-chain keepers and relayers, and anything marked “previously audited” (this team did not re-check it). When the riskiest dependency is excluded I do not automatically walk away — I treat it as unaudited and find who else reviewed it, under what scope, and when.

Minutes 6–8: Decode severities and finding statuses

Severity labels are roughly standardized; each means something specific at deposit time:

Severity What it usually means My depositor rule
CriticalDirect fund loss, trivially triggerableA live, unfixed Critical is an instant no-deposit
HighFund loss under realistic conditionsMust be fixed — verify the status, not the count
MediumNeeds special conditions or privilegesTolerable in mature protocols; question it in new ones
Low / InformationalBest-practice, hygiene or gas notesFine individually; clusters signal rushed engineering

Counts lie: a report advertised as “zero criticals found” can contain six Highs merely acknowledged. The resolution status on each finding is what I read:

Audit vs contest vs bug bounty — three different assurances

Protocols love stacking these logos, but they are not interchangeable:

Mechanism How it works Strengths and gaps
Private auditOne firm reviews a fixed scope for weeksDeep but single-team and point-in-time; the baseline every protocol should have
Competitive contestDozens of researchers (Code4rena, Cantina, Sherlock) hunt one bounded scope simultaneouslyBreadth and incentives; still bounded by scope — read the mitigation/fix report
Ongoing bug bountyContinuous payouts (often via Immunefi) for real findingsLive defense, but only as strong as reward size, scope, exclusions and response speed

The trap: bounty programs publish exclusions too. When Ostium reported a ~$23.75M USDC loss in July 2026, the attack ran through price-reporting machinery its own program told researchers not to test. A big maximum payout does not cover what the rules forbid.

Four incidents that explain the scope gap

When Protocol Loss Path the audit did not cover
May 2025Cetus (Sui)~$223MFatal overflow guard lived in a shared third-party math library (integer-mate) on the pool’s dependency path — outside the reviewed-contract boundary depositors assumed was covered
Apr 2026KelpDAO rsETH~$292MNo contract bug: a 1-of-1 LayerZero DVN attested a forged message after attackers poisoned internal RPC nodes and DDoS’d the backups (per Chainalysis)
Jul 2026Ostium~$23.75M reportedCompromised off-chain oracle signer submitted correctly signed fake prices; on-chain checks verified the signature, not the price
Feb 2025Bybit$1.46BNot a contract flaw — injected JavaScript in the Safe signing interface made a malicious transfer look like a routine cold-wallet movement (per Chainalysis)

Three of four have nothing a line-by-line review could catch, and Cetus shows even “code” losses hide in dependency code — why I spend half these ten minutes off the PDF.

Minutes 8–9: Check the powers around the code

Mature protocols make this leg easy: governance on Aave and Morpho is documented, on-chain and stress-tested — but I still check, because “blue chip” is a habit, not a logo property.

Minutes 9–10: Sanity-check the human layer

Frontends get compromised, Discord moderators get impersonated, and token approvals sit in your wallet forever. I confirm the domain from official channels, revoke stale approvals with Revoke.cash after exiting, and keep meaningful funds on a hardware wallet that signs on-device — a poisoned page cannot quietly rewrite what you approve, as Bybit’s signers discovered in that Safe interface. The full routine is in the DeFi wallet security checklist, and yields with no credible explanation are cataloged in the guide to DeFi yield traps and red flags.

Where I get mine. A hardware wallet is the upgrade that matters most once deposits are serious: even a perfect audit cannot help if a compromised webpage reaches your seed. DifiCalc earns a commission on sales through the button below, at no extra cost to you — the advice above exists independently of it; full terms are in our affiliate disclosure.

The condensed ten-minute checklist

Time Check Pass criterion
0:00–2:00Report authenticityHosted on the auditor’s own domain; client name and date match the protocol
2:00–4:00Chain, address, commitLive contract matches the audited deployment; every post-audit upgrade has a follow-up review
4:00–6:00Scope and exclusionsYour contract is in scope; dependency, oracle, bridge and key risks are identified elsewhere
6:00–8:00Findings and statusesNo unfixed Critical/High; acknowledged items cannot touch your funds
8:00–9:00Powers around the codeSane multisig threshold, visible timelock, understood upgrade, pause, oracle and bridge design
9:00–10:00Human layerVerified domain, active bounty with honest scope, recent incident response, hardware wallet in use

When any line fails, the response is a smaller position, a shorter holding period, or no deposit: I size to the weakest check, never the prettiest APY.

Sources and further reading

Frequently asked questions

Is a DeFi protocol safe once it has a security audit?

No. An audit is a scoped snapshot of named contracts at one commit — not a guarantee, and not coverage for later upgrades, excluded dependencies, keys, frontends, oracles, bridges or off-chain infrastructure. Verify the report on the auditor’s site, match the live chain, address and commit, read the exclusions and check finding statuses.

What is the difference between an audit, a security contest and a bug bounty?

A private audit is one firm on a fixed scope for weeks. A contest (Code4rena, Cantina, Sherlock) puts a bounded scope before many researchers at once. A bug bounty (often Immunefi) pays continuously but is only as strong as its reward size, scope, exclusions and response speed — off-chain machinery can be left uncovered.

How do I verify a deployed contract matches the audited code?

Open the scope section, then match chain (an Ethereum review says nothing about Sui or BNB deployments), address and commit against the explorer and official docs. For proxies, find the active implementation and check that post-audit upgrades were re-reviewed.

What does it mean when an audit finding is marked “acknowledged”?

The team saw the issue and accepted the risk instead of fixing it. Fixed and re-verified is the only status that should comfort a depositor. Partially fixed or acknowledged findings on a path that can touch funds justify a smaller position — or no deposit — whatever the headline count says.

Do audits cover oracle, bridge and admin-key risks?

Often not — scopes routinely exclude admin and upgrade keys, oracle infrastructure, cross-chain messaging, dependencies and relayers. KelpDAO’s ~$292M loss ran through a 1-of-1 DVN fed by poisoned RPC nodes and Ostium’s ~$23.75M loss through a compromised oracle signer; both produced valid signatures without any contract bug. Check multisigs, timelocks, oracles and bridge verifiers separately.

Run your next pool through a risk grader

Turn these checks into a scored verdict — audits, scope, keys, oracles and red flags — before you deposit.

Open the Yield Risk Grader

Continue with the wallet security checklist, cross-chain bridge safety, oracle manipulation attacks and DeFi yield red flags — or compare mature governance in our Aave and Morpho reviews.