Skip to content
AtheronLABS

You're visiting from the United States. Prices are shown in US dollars. Not right?

labs@atheron:~/insights/contract-audits$ audit --scope contracts/ --freeze

Contract audits

What they cover in a smart contract, and what they miss.

If your contract holds value, an audit is one of the most valuable things you can buy for it. It is also one of the most misunderstood. It is a careful second look at a fixed piece of code, not a certificate that the whole system is safe.

Security · Published October 2, 2026 · 7 min read

Why smart contracts get audited

Most software can be fixed after a bug is found. A smart contract on a public chain usually cannot. ethereum.org notes that deployed contract code usually cannot be changed to patch security flaws, and estimates that the value stolen or lost to security defects in smart contracts is easily over $1 billion [1]. The code often holds money directly, it is public for anyone to study, and an attacker needs to find only one mistake.

That combination is why contracts that hold value are reviewed by specialists outside the team that wrote them, before they are deployed. The question is not whether to have that review, but what it can and cannot do for you.

What an audit does

An audit is a time-boxed review of a specific version of your contracts by security engineers who did not write them. A typical engagement looks like this.

  1. 01

    Scope

    The auditors agree which contracts, at which commit, are in scope, and read your documentation on what the system is meant to do.

  2. 02

    Manual review

    Experienced reviewers read the code line by line, looking for known classes of vulnerability (reentrancy, access control mistakes, unchecked calls, arithmetic and rounding errors) and for logic that does not match the stated intent.

  3. 03

    Automated analysis

    Static analysers, fuzzers and sometimes formal tools search for patterns and edge cases a person might miss.

  4. 04

    Report

    Findings are listed by severity, from critical to informational, each with an explanation and a recommended fix.

  5. 05

    Fix review

    Your team fixes the findings, and the auditors check the fixes. The final report states which findings were resolved, acknowledged or left open.

The flaws auditors find most, in plain language

  • Reentrancy: the contract sends funds or calls another contract before updating its own records, and the other contract calls back in to take the same funds again.
  • Access control: a function that should be restricted to an administrator can be called by anyone, or an administrator role can be taken over.
  • Price manipulation: the contract reads a price from a source an attacker can move within one transaction, such as a thin trading pool.
  • Rounding and precision: small errors in division that an attacker repeats thousands of times, or that let a first depositor distort shares for everyone after.
  • Upgrade mistakes: a proxy pointing at the wrong code, storage that collides between versions, or an initialiser anyone can call.
  • Logic that does what the code says but not what the business meant: a fee taken twice, a deadline checked the wrong way round.

What an audit does not cover

ethereum.org is direct about this: audits will not catch every bug, and are mostly designed to provide an additional round of review [1]. Beyond that, most audits are scoped to the contract code alone. Plenty of losses come from somewhere else.

Usually outside an audit's scope
AreaWhy it mattersWhat covers it instead
Code changed after the auditThe report applies to one commit. A later change, however small, is unaudited.A fix review or a new audit for every change to audited code
Private keys and admin accountsWhoever holds the upgrade or admin key can often change or drain the system.Multi-signature wallets, hardware keys, timelocks and written procedures
The website and back endA compromised front end can ask users to sign something harmful.Web application security testing and supply chain controls
Oracles and outside dataA contract that trusts a price feed is only as safe as the feed.Design review of oracle choice, limits and fallbacks
Economic designCode can work exactly as written and still be exploitable through incentives or market manipulation.Economic and game-theory review, simulations
Deployment and configurationWrong constructor arguments or addresses can undo a perfect audit.Scripted, reviewed deployments and verification on chain

How to read an audit report

  1. 01

    Check the commit

    The report names the exact version reviewed. Make sure it matches what you deployed, byte for byte, and that the deployed contracts are verified on chain.

  2. 02

    Read the scope and the assumptions

    Which contracts were in, which were out, and what the auditors assumed about admins, oracles and other contracts.

  3. 03

    Look at the status of every finding

    Resolved, acknowledged or open. An acknowledged critical finding is a business decision someone should be able to explain.

  4. 04

    Read the informational notes too

    They often describe design choices the auditors found risky but not wrong, which is useful for your next version.

How to prepare, so the audit is worth it

Auditors' time is scarce and expensive, so every hour they spend understanding unclear code or finding bugs your tests should have caught is an hour not spent on the subtle problems you are paying them for. OpenZeppelin's readiness guide sets out what it expects before an audit.

  • Documentation that explains the intent, the design choices and the assumptions, from a README and architecture notes down to comments on each function [2].
  • Tests that cover edge cases and integration with other contracts, aiming for at least 90% code coverage, with fuzzing where it helps [2].
  • Clean, readable code that follows a consistent style, uses established patterns such as checks-effects-interactions, and imports dependencies through a package manager rather than copying them [2].
  • Code that is mature: tested, documented and ready to deploy, rather than still changing [2].

We add two habits of our own. The code is frozen at a tagged commit for the duration of the audit, and every fix afterwards goes through the same review and test suite as the original work before the auditors see it.

Checklists and standards, and their limits

Checklists help both sides agree on what was checked. They also age. The Smart Contract Weakness Classification registry, long a common reference, states that its content has not been thoroughly updated since 2020 and may be incomplete, and points readers to the EEA EthTrust Security Levels specification and the Smart Contract Security Verification Standard instead [3]. Ask any auditor which standard they check against, and treat a finding list mapped only to an old registry with some caution.

No checklist replaces understanding. Consensys Diligence's guidance starts from the premise that defending against known vulnerabilities is not enough, and that contract development needs the discipline of fields like financial systems, preparing for failure and rolling out carefully [4].

Security beyond the audit

An audit is a snapshot. The contract will run for years, the code around it will change, and attackers will keep studying it. The practices below are what keep a system safe between audits, and most of them cost little compared with what they protect.

  • Property-based tests and fuzzing that keep running as the code changes, alongside unit tests [1].
  • Formal verification for the most critical invariants, where the cost is justified [1].
  • A bug bounty after launch, so people who find a problem are paid to report it rather than exploit it [1].
  • A gradual rollout: limits on deposits or users at first, raised as the system proves itself [4].
  • An emergency pause and an upgrade path, if the design allows them, controlled by a multi-signature wallet with a timelock so changes are visible before they take effect.
  • Monitoring of on-chain activity and alerts on unusual transactions, with a written plan for who does what if something goes wrong.

Two web3 projects, priced from our rate card

The worked examples below show the range from our rate card today, with the hours by role and the payment schedule. The build includes our own testing and internal security review. An external audit, where the contract warrants one, is quoted by the audit firm and billed up front at cost, outside the milestones.

Worked example, priced now

A set of smart contracts

Token or escrow contracts with an admin role, full test suite, fuzzing and deployment scripts, ready for an external audit.

Build
≈ US$20,700 to US$31,700, delivered within 9 weeksCAD 29,500 to 45,100

Prices in your currency are estimates from today's Bank of Canada rate. All invoicing is in CAD or USD.

Estimated effort by role

Development
70 to 107 h
Blockchain engineer
32 to 50 h
Frontend developer
19 to 29 h
Senior engineer
16 to 25 h
QA engineer
15 to 23 h
Project manager
14 to 22 h
Senior frontend developer
11 to 17 h
Engineer
11 to 17 h
Senior backend developer
8 to 12 h
Junior frontend developer
8 to 11 h
Backend developer
7 to 11 h
Software architect
4 to 7 h
Junior backend developer
4 to 5 h
DevOps engineer
3 to 5 h
Technical writer
3 to 4 h
Product designer
2 to 3 h
Senior product designer
1 to 2 h

How it is paid

Deposit 30%
CAD 8,850 to 13,530
Specification 10%
CAD 2,950 to 4,510
Contracts and tests 30%
CAD 8,850 to 13,530
Testnet deployment 10%
CAD 2,950 to 4,510
Mainnet 10%
CAD 2,950 to 4,510
Holdback, 30 days after launch (10%)
CAD 2,950 to 4,510

Worked example, priced now

A dApp with its contracts

Contracts plus a web app with wallet sign-in, an admin side, notifications and analytics, on a custom design with a support plan.

Build
≈ US$68,400 to US$105,000, delivered within 22 weeksCAD 97,400 to 149,000

Prices in your currency are estimates from today's Bank of Canada rate. All invoicing is in CAD or USD.

Estimated effort by role

Development
287 to 440 h
Frontend developer
58 to 89 h
Project manager
50 to 76 h
QA engineer
50 to 76 h
Blockchain engineer
47 to 71 h
Product designer
46 to 70 h
Senior backend developer
41 to 62 h
Backend developer
40 to 61 h
Senior engineer
37 to 57 h
Senior frontend developer
35 to 54 h
Senior product designer
31 to 47 h
Junior frontend developer
23 to 36 h
Software architect
21 to 32 h
Junior backend developer
20 to 31 h
Engineer
16 to 24 h
DevOps engineer
12 to 18 h
Technical writer
9 to 13 h

How it is paid

Deposit 20%
CAD 19,480 to 29,800
Discovery 3.5%
CAD 3,409 to 5,215
Specification 6.3%
CAD 6,136.20 to 9,387.00
Design approved 3.5%
CAD 3,409 to 5,215
Core features 10.5%
CAD 10,227 to 15,645
Full build 7%
CAD 6,818 to 10,430
Contracts and tests 19.1%
CAD 18,603.40 to 28,459.00
Testing and fixes 3.5%
CAD 3,409 to 5,215
Testnet deployment 6.3%
CAD 6,136.20 to 9,387.00
Launch 3.5%
CAD 3,409 to 5,215
Mainnet 6.8%
CAD 6,623.20 to 10,132.00
Holdback, 30 days after launch (10%)
CAD 9,740 to 14,900

Choosing an auditor

  1. 01

    Read their public reports

    Reputable firms publish past reports. Look for clear findings, sensible severities and honest scope sections.

  2. 02

    Ask who will do the work

    The names and experience of the reviewers on your engagement matter more than the brand.

  3. 03

    Agree the scope in writing

    Which contracts, which commit, which assumptions, and whether a fix review is included.

  4. 04

    Match the effort to the risk

    A contract that will hold significant value may justify more than one independent audit. A simple contract built on audited libraries may need less.

  5. 05

    Book early

    Good auditors are booked weeks ahead. Schedule the audit when you start building, not when you finish.

We build and test contracts, review them internally, help you choose and brief an auditor, and fix the findings. We do not audit our own work and call it independent.

// sources

Where the figures come from.

Every statistic in this guide links here. Prices come from our estimator, not from a source.

  1. [1]ethereum.org, Smart contract security, 2026. ethereum.org/en/developers/docs/smart-contracts/security/
  2. [2]OpenZeppelin, Audit readiness guide. learn.openzeppelin.com/security-audits/readiness-guide
  3. [3]SWC Registry, Smart Contract Weakness Classification. swcregistry.io/
  4. [4]Consensys Diligence, Smart Contract Security Best Practices: General philosophy. consensysdiligence.github.io/smart-contract-best-practices/general-philosophy/

// questions

Short answers.

Does an audit mean the contract is safe?

No. It means specialists reviewed one version of the code and its findings were addressed. It lowers the risk; it does not remove it.

Do we need an audit for a private chain?

The case is weaker when the participants are known and the contracts can be upgraded by agreement, but a careful review is still worth it for anything that holds value or settles obligations.

Who pays for the audit?

The client, through us: an external audit is a third-party cost, billed up front at what the audit firm charges, outside the milestones.

// next

Have a project in mind?

Put it through the estimator and get a range in a few minutes. Or tell us about it, and we will come back to you with questions.

Smart contract audits: what they cover and what they miss | Atheron Network Labs