← The research library
Market Risk

Smart Contract Audits: What an Audit Proves and What It Doesn't

An audit reviews one frozen version of a contract's code for a limited time. What audits catch, what they miss, how to read a report and why upgrades matter.

AiTokens Research · November 1, 2026 · 6 min read
A floodlight lights one band of a huge block-built dam wall at dusk while the rest stays in shadow under storm clouds.

A smart contract audit proves less than the badge on a project's website suggests. It shows that reviewers examined specific files, frozen at a specific version, for a limited time, and reported what they found. It doesn't prove the code is safe, it doesn't cover code changed afterward, and it says nothing about keys, servers or AI agents outside its scope. The value is in the report itself: its scope, dates, findings and fixes.

Key takeaways

  • An audit reviews one frozen version of the code. Anything outside the listed files, or changed after the audited commit, wasn't reviewed.
  • In 246 findings from 23 Trail of Bits audits, almost half were problems the firm judged nearly impossible to catch with automated tools.
  • Chainalysis found that attacks on centralized services' keys and signing processes caused 88% of the value stolen in the first quarter of 2025, a risk that sits outside a code audit.
  • An upgradeable contract can change after its audit. Find out who holds the upgrade key and whether a timelock delays changes.

What does an audit actually check?

Auditors read a project's code against its documentation, looking for any way it can be made to do something its authors didn't intend. They run tools such as static analyzers and fuzzers alongside the manual review, then write up each finding with a severity rating and a suggested fix.

Some of the best public evidence on what they find comes from Trail of Bits, which analyzed 246 findings from 23 of its own paid smart contract audits in a 2019 study:

  • Data validation problems were the most common, at 36% of findings, followed by access control at 10%.
  • In the firm's best-case estimate, automated tools could catch almost 78% of the most important findings, those both severe and easy to exploit.
  • Almost 49% of all findings were ones the authors found "almost impossible to imagine detecting with a tool."
  • Manually written unit tests, they concluded, likely offer weak protection, or none, against the flaws an expert auditor finds.

So an audit's value comes largely from experienced people reading code. That is also its limit: the result depends on which code they read, and for how long.

What doesn't an audit cover?

Trail of Bits' checklist for teams preparing for a review shows where the edges are. It asks them to "freeze a stable commit hash, branch, or release" before the review starts, to list the files to be reviewed, and to flag dependencies and code forked from other projects. Outside those lines:

  • Later code. Changes merged after the audited commit weren't reviewed, however small.
  • Files and dependencies not listed. A report on a project's staking contracts says nothing about its bridge.
  • Keys and signing. Who controls admin keys, and how transactions get signed, sits outside the code. In the first quarter of 2025, which included the $1.5 billion Bybit theft, attacks on centralized services' private-key infrastructure and signing processes accounted for 88% of the value stolen, Chainalysis reported.
  • Off-chain systems. Web front ends, servers, bots and AI agents. An agent that holds a wallet can be steered by prompt injection, which OWASP defines as input that alters a model's behavior in unintended ways, with no bug in the contract it calls.
  • Economics. Unless the scope says so, an audit may not model what happens when a price feed is manipulated or liquidity disappears.

There is encouraging news in the same data. Chainalysis found DeFi hack losses stayed low in 2024 and 2025 even as deposits recovered, which it said suggests protocols "may be implementing more effective security measures," though attackers may also have shifted to other targets.

How do you read an audit report?

  1. Get it from the auditor. Find the report on the audit firm's own website or public repository, not only as a PDF on the project's site.
  2. Read the scope. Note the repository, the files and the commit hash. Anything not listed wasn't reviewed.
  3. Check the dates. When did the review start and end, and did the project deploy or upgrade after it?
  4. Match it to what's deployed. Check that the contract's source code is verified on a block explorer, then compare it with the audited commit or the release tagged from it. Our guide to honeypot tokens shows why unverified code is a warning sign.
  5. Read the findings and their status. Count them by severity, then see what happened to each: fixed, partly fixed or "acknowledged," which usually means the team accepted the risk without changing the code. Look for a fix review, in which the auditors check the repairs.
  6. Look for more than one review. Separate audits, an audit contest or a public bug bounty each add coverage, because different reviewers find different problems.

Why do upgradeable contracts change the picture?

Many protocols use a proxy: users interact with a fixed contract address that forwards every call to a separate logic contract, which the team can replace. Ethereum.org's developer documentation states the trade-off plainly: upgrading "negates the idea of code immutability," and users must trust developers not to modify contracts arbitrarily. Trail of Bits advises teams to favor contract migration over upgradeability and warns that the common delegatecall proxy "is highly error-prone."

For a holder, an audit of version one says nothing about version two. Three questions decide how much the upgrade path matters:

  • Is it a proxy? On Etherscan, a verified proxy shows "Read as Proxy" and "Write as Proxy" sections on its Contract tab, which load the current implementation's functions.
  • Who can upgrade it? A single key is the most centralized setup. Ethereum.org suggests a multisig wallet or a DAO vote to spread the decision.
  • Is there a timelock? A delay before an upgrade takes effect gives users time to exit, at the cost of slower emergency fixes.

Our guide to rug pulls shows how admin powers get abused.

What the AI Score shows

The AI Score is not a security review. It rates every AI token we track from 0 to 100 across five questions: Is anyone building it? Can I get in and out? Will unlocks dilute me? How badly could this hurt? Is the market agreeing? It is recalculated every 30 minutes from public market data and public code activity, with development counting most and momentum least. It doesn't read audit reports or test contracts for bugs, so the checks above stay with you.

Check any token's AI Score on AiTokens.app before you decide.

Frequently Asked Questions

Does an audit mean a smart contract is safe? No. It means reviewers examined a specific version of the code for a limited time and reported what they found. Bugs can remain, and code changed later wasn't reviewed.

How can I tell if a contract is upgradeable? On Etherscan, a verified proxy shows "Read as Proxy" and "Write as Proxy" sections on its Contract tab. Then check who controls upgrades and whether a timelock applies.

What does "acknowledged" mean in an audit report? Usually that the team saw the finding and chose not to change the code, at least for now. Read the reason it gives, because the risk is still there.

Can an audit protect against attacks on AI agents? Only for the code in scope. An agent's prompts, tools and wallet permissions run off-chain, so they need their own review and tight spending limits.

Sources

This article is for educational purposes and is not financial advice.

Research and education only — not financial advice. Prices and figures change; check live data before acting on anything here.