A smart contract audit is only as thorough as the checklist behind it. After reviewing hundreds of contracts across Solidity and Rust, we've compiled the definitive audit checklist for 2026 — covering everything from basic access control to advanced DeFi-specific risks. Print this, pin it, and never deploy without it.
1. Access Control & Authorization
- ☐ Every state-changing function has explicit access control
- ☐
msg.senderused instead oftx.origin - ☐ Admin functions protected by multi-sig or timelock
- ☐ Initializer functions have
initializermodifier and can only be called once - ☐ Role-based access control for different privilege levels
- ☐ Events emitted on all privilege changes
2. Reentrancy & External Calls
- ☐ Checks-Effects-Interactions (CEI) pattern followed
- ☐ ReentrancyGuard on all functions with external calls
- ☐ Return values from external calls checked
- ☐ SafeERC20 used for all token interactions
- ☐ No callbacks to untrusted addresses before state updates
3. Arithmetic & Data Handling
- ☐ Solidity 0.8+ used (built-in overflow protection)
- ☐ All
uncheckedblocks reviewed for safety - ☐ Multiplication before division for precision
- ☐ Safe casting between integer types
- ☐ Division by zero impossible in all paths
4. Oracle & Price Feed Security
- ☐ Decentralized oracle (Chainlink) or multi-source aggregation
- ☐ Staleness checks on oracle data
- ☐ Circuit breakers for extreme price movements
- ☐ No direct AMM reserve reads for pricing
- ☐ Flash loan manipulation considered
5. DeFi-Specific Checks
- ☐ First-depositor attack mitigated (virtual offset or minimum deposit)
- ☐ Share/asset accounting verified with extreme values
- ☐ Slippage protection on swaps and deposits
- ☐ Liquidation logic tested with edge cases
- ☐ Fee calculations don't create rounding exploits
6. Governance & Upgradability
- ☐ Snapshot-based voting (immune to flash loans)
- ☐ Timelock on governance actions (24-72 hours)
- ☐ Proxy storage layout matches across upgrades
- ☐ Implementation contract has initializers disabled
- ☐ Upgrade authorization properly scoped
7. Gas & DoS Protection
- ☐ No unbounded loops over dynamic arrays
- ☐ Pull-over-push for payments
- ☐ Gas limits on external calls where appropriate
- ☐ Block gas limit considered for batch operations
8. Deployment & Configuration
- ☐ Constructor parameters validated
- ☐ Deployed bytecode matches audited source
- ☐ Network-specific configurations verified (chain ID, addresses)
- ☐ Emergency pause functionality exists
- ☐ Source code verified on block explorer
This checklist covers the most critical areas. For a full audit that goes beyond static analysis, submit your contracts to Vultbase — we check all of these and more through challenge-based security testing.