How do real smart contract audits work in practice? What do auditors check before Slither, Mythril, Foundry fuzzing, or Echidna?

AuditWardenRashid
@AuditWarden
Published: Dec 18, 2025
Updated: Aug 2, 2026
Views: 1.8K

I'm trying to understand how senior auditors approach production Solidity code when an audit starts.

A lot of beginner guides make auditing sound like: "Run Slither $\rightarrow$ check for basic reentrancy $\rightarrow$ throw a basic fuzzer at it." But that feels totally shallow for protocols with complex flash-loan vectors, oracle reliance, or custom access controls.

What do strong auditors actually check first before firing up automated tools? Do you start with threat modeling and invariant definition, or by manually tracing state transitions across core value paths?

Where do tools like Slither, Mythril, or Echidna fit in without creating false confidence? Are they mostly for sanity-checking manual reasoning, or do you use them earlier in your workflow?

Replies

Welcome, guest

Join ArtofBlockchain to reply, ask questions, and participate in conversations.

ArtofBlockchain powered by Jatra Community Platform

  • Shubhada Pande

    @ShubhadaJP Jul 14, 2025

    From the protocol side, the audit is most useful when auditors question assumptions we forgot. In our AMM upgrade last year, the deepest bug was a sequencing flaw no scanner flagged. The auditor caught it by simulating an unusual order of interactions. My takeaway: focus less on “patterns” and more on state transitions under weird conditions. That’s the difference between textbook audits and real security engineering.

  • Shubhada Pande

    @ShubhadaJP Dec 6, 2025

    This thread hits on a crucial point: protocols don't get exploited because auditors forgot to run a scanner; they get exploited because baseline assumptions drifted.

    If you want to deepen this mindset across different parts of your stack, a few other discussions on AOB tie directly into this:

    When you force yourself to write code assertions for state boundaries, you quickly see where manual reasoning ends and tool automation begins.

  • Anita Patel

    @SmartContractSensei Dec 17, 2025

    I mostly agree, though I’ll play devil’s advocate on one point: running Slither first takes 10 seconds and can save you an hour of manual work by catching low-hanging fruit (like missing reentrancy guards or uninitialized state) before you dive deep.

    That said, Slither won't catch business logic flaws. The hardest bugs I've audited came down to unwritten assumptions—like assuming msg.sender could never be a contract, or assuming a DEX oracle wouldn't shift 10% in a single block. Your mental model catches those, not automated tools.

  • FintechLee

    @FintechLee Dec 18, 2025

    Here’s how my team actually handles an audit pass—it’s an iterative loop, not a linear checklist:

    Architecture & Scope Pass: Skim the codebase to map out high-risk areas—admin functions, upgrade proxies, and external calls.

    Targeted Manual Review: We don't read line-by-line in order. We jump straight to state-changing external functions, balance accounting math, and multi-call loops. That's where 80% of real bugs live.

    Drafting Invariants: What must never happen? (e.g., vault.totalAssets() >= sum(userBalances)). We write these down to fuzz later.

    Tool Validation: Now we run Slither for quick sanity checks and run invariant fuzzers to stress-test our assumptions.

    Victor Anderson

    @victor-anderson Jun 12, 2026

    Agreed on the sequence. Automated tools generate evidence, but they aren't proof of security on their own. If you're trying to land a Web3 security role, recruiters and lead auditors will immediately discount a resume that just says "Proficient in Slither, Mythril, Echidna." Show them a PoC repository where an invariant broke under an unexpected state transition—that’s what gets candidates hired.

  • amanda smith

    @DecentralizedDev Apr 1, 2026

    The biggest gap in beginner discussions is skipping the math/intent step. If you don't define what must stay true in the protocol, a scanner output won't help you.

    For example, a tool won't flag a first-depositor inflation attack on an ERC-4626 vault unless you've manually realized that totalSupply == 0 is an unhandled edge case. You have to trace token flow and privilege models mentally first.

    Tools like Echidna or Foundry fuzzing are great amplifiers, but they only test the invariants you were smart enough to write down in the first place.

  • Shubhada Pande

    @ShubhadaJP Apr 2, 2026

    A lot of junior security profiles focus way too heavily on tool names. When hiring teams review portfolios, they aren't looking for a list of scanners—they want to see if you can reason about protocol invariants, trust boundaries, and privileged paths.

    If you're building a portfolio right now, we covered how to structure your proof of work in our discussion on How to show trust boundaries in Web3 interviews.

    A proof-based portfolio doesn't need 10 automated tool outputs. One scoped review showing a well-thought-out threat model, a reproduction script for a broken invariant, and a clear finding write-up beats 50 pages of Slither reports every single time.

  • Rachel Morgan

    @rachel-morgan Aug 2, 2026

    Honestly, I'll take a slightly controversial stance here: running Slither and Aderyn in the first 5 minutes of an audit isn't "beginner" it's basic operational efficiency.

    If a static analyzer can flag an uninitialized proxy implementation, missing zero-address checks, or an outdated Solidity pragma in 3 seconds, why waste 45 minutes finding it manually? The key is treating static analysis as an initial filter, not the audit itself.

    Where tools actually fail leading to 90% of real exploits happen is cross-function state dependency and business math.

    For example, no fuzzer or scanner is going to automatically warn you about a read-only reentrancy attack on a Curve/Uniswap pool oracle unless you manually spent two hours mapping out the protocol's price-calculation invariants first.

    The real workflow isn't "Manual vs. Tools." It's:Static Triage (5 mins) $\rightarrow$ Threat Modeling & Invariant Design (70% of time) $\rightarrow$ Targeted Invariant Fuzzing in Foundry to prove hypotheses.

    Curious how others here handle oracle dependencies specifically like do you rely on formal verification rules (like Certora) for price feeds, or do you stick strictly to custom Foundry invariant suites