1) Access control
- Which functions require
onlyOwner/ roles? - Any bypass paths (e.g. bad owner setters)?
2) Reentrancy
- Any external call before state updates?
- Are you following CEI (Checks-Effects-Interactions)?
3) Input validation
- Clear
requirechecks with helpful messages - Avoid magic numbers; use constants
4) Tests & simulations
- Unit test failing cases
- Fuzz/property tests (when possible)
Wrap-up
This doesn’t replace an audit, but it removes many “obvious” issues before mainnet.