Section E · Reference

Domain Context

The vocabulary, ecosystem, and incident catalogue a senior smart contract security engineer should be able to speak to without searching.

Vocabulary you must know cold

If a panelist drops one of these and you have to ask what it means, you've lost the round. Read once; reread before the loop.

FV tooling vocab

TermMeaning
CVLCertora Verification Language — DSL for writing specs (rules, invariants, hooks).
SMTSatisfiability Modulo Theories. The class of solvers FV tools lower to.
z3 / cvc5The two dominant SMT solvers. Certora typically uses both.
Symbolic executionRun the program with symbolic inputs; explore all paths.
FuzzingRun the program with random inputs; sample the input space.
Property-based testingState a property; tooling generates inputs to break it.
Invariant testingFoundry's --invariant mode; sequences of random calls.
Slither detectorA single static-analysis rule. Slither ships with ~80; you can write custom.
EchidnaTrail of Bits' Solidity fuzzer. Property-based.
MedusaNewer Go-based Solidity fuzzer from Trail of Bits.
Halmosa16z's symbolic execution of Foundry tests. OSS.
KontrolRuntime Verification's K-framework-based EVM prover.
Manticore / MythrilOlder symbolic execution / analysis tools. Still useful, less actively maintained.
Taint analysisTracking flow of "tainted" (e.g., user-controlled) values through the program.
Control-flow graph (CFG)Graph of basic blocks and the branches between them.
SWCSmart Contract Weakness Classification registry.
DASPDecentralized Application Security Project (top 10).

EVM concepts

TermMeaning
YulSolidity's intermediate language; sometimes written directly via inline assembly.
Transient storageEIP-1153 storage that clears at end-of-tx. Cheap reentrancy locks.
ImmutableSolidity keyword; value set in constructor, baked into runtime bytecode.
ConstantCompile-time constant; in bytecode literally.
delegatecallCall opcode that executes target code in the caller's storage / msg.sender context.
staticcallRead-only external call; reverts on state modification.
create / create2Deploy opcodes. CREATE2 lets you predict the address pre-deploy.
selfdestructDeprecated for most uses post-EIP-6780. No longer clears bytecode.
EIP-1559Fee market with base fee + tip. Mostly irrelevant for security.
EIP-2612 permitOff-chain signed approvals for ERC-20.
Permit2Uniswap's universal token approval contract.
ERC-4626Tokenized vault standard. Donation attack lives here.

Proxy patterns

PatternNotes
Transparent ProxyOpenZeppelin classic. Admin and user paths are separated to avoid selector clashes.
UUPSUniversal Upgradeable Proxy Standard (EIP-1822). Upgrade logic lives in the implementation, not the proxy.
BeaconEIP-1967 beacon pattern. Multiple proxies point at a beacon that points at an implementation. One upgrade affects many proxies.
Diamond (EIP-2535)One proxy routes to multiple "facet" contracts via selector lookup. Complex storage layout via Diamond Storage.
EIP-1167 Minimal Proxy (Clone)Tiny proxy bytecode that delegatecalls to a known implementation. Cheap to deploy.
EIP-1967 slotsStandard slot locations for proxy state (implementation, admin, beacon). Avoids storage collisions.

MEV vocabulary

TermMeaning
MEVMaximal Extractable Value. Value extractable by ordering / inserting txs.
SandwichFrontrun + backrun a victim swap. Extracts slippage as profit.
JIT (Just-In-Time) LPAdd liquidity right before a swap, remove after, capture fees.
Atomic arbitrageCross-DEX price-difference capture within one tx.
IntentUser signs a desired outcome ("I want N USDC for my ETH"); a solver finds the path. Limits MEV by avoiding committing to exact path on-chain.
PBSProposer-Builder Separation. Block proposers buy ready-made blocks from builders. Standard on Ethereum post-merge.
FlashbotsPrivate mempool / order flow for MEV-aware tx submission.
MEV-BoostValidator-side software for PBS.
Order flow auctionAuction off the right to fill user orders to MEV bots; share revenue with user.

Audit firm ecosystem

FirmNotes
Trail of BitsLong-standing, breadth across crypto + non-crypto. Maintainers of Slither, Echidna, Medusa.
OpenZeppelinAudits + the de-facto Solidity library. Also operates Defender for ops.
ChainSecurityZürich-based, formal-methods leaning, strong on lending and stablecoin protocols.
SpearbitMarketplace + curated lead model; senior auditors on a per-engagement basis.
CantinaCombination audit firm + bounty / competitive audit platform.
Code4renaCompetitive audit platform; many auditors compete on a fixed scope for a prize pool.
SherlockAudit + coverage / insurance product; competitive audit format.
ZellicStrong on novel cryptography, ZK, and exotic VMs.
Sigma PrimeAustralian; consensus / staking-leaning + protocol audits.
HalbornBigger shop; range across protocols and infrastructure.
CertoraFormal verification vendor (CVL, the Prover). Also publishes audit reports.
Runtime VerificationFormal verification firm (Kontrol, K-framework).
Hexens / Dedaub / quantstamp / etcSeveral others worth knowing exist.

Bounty platform ecosystem

PlatformNotes
ImmunefiLargest by volume and dollars paid. Hosts most major DeFi bounties.
Hats FinanceOn-chain bounty payouts via vaults; decentralized.
CantinaSpans contests and bounties; growing in 2024-2025.
HackenProof / HackerOneBroader (web2 too), occasional smart contract programs.
In-houseSome larger protocols run direct disclosure programs.

Must-know incident catalogue

Six incidents you should be able to summarize in three sentences each: root cause class, mechanism, lesson.

The DAO (2016) — $60M

Classic reentrancy on the splitDAO / withdraw flow. External call before balance update. Led to the Ethereum / Ethereum Classic fork. Lesson: CEI is non-negotiable; reentrancy is the original sin of smart contracts.

Parity multi-sig (2017) — $300M frozen

Library contract behind the wallet contract was uninitialized; an attacker called initWallet() and became owner, then kill()'d the library. All wallets using it bricked. Lesson: initializers must be locked on implementation contracts; selfdestruct is a weapon.

bZx (2020) — $1M

Flash-loan amplified oracle manipulation. Used a manipulable AMM as oracle; attacker swapped to move the price, used the inflated price to borrow against insufficient collateral. Lesson: never use spot AMM price as oracle; flash loans make manipulability free.

Wormhole (2022) — $325M

Bridge signature verification flaw on the Solana side. The contract didn't validate the system address used in signature verification, accepting a forged "guardian" signature. Lesson: bridge security is the floor of cross-chain DeFi; signature verification correctness is load-bearing.

Ronin Bridge (2022) — $625M

Five of nine validator keys compromised via social engineering; attackers signed a malicious withdrawal. Lesson: validator-set hygiene; multi-sig threshold isn't just a number, it's a function of how well signers are protected.

Beanstalk (2022) — $182M

Governance flash-loan attack. Attacker flash-loaned voting power, passed a malicious proposal that drained the treasury, repaid the flash loan within the tx. Lesson: voting power must be snapshotted at proposal time, not execution time; emergency proposals need a delay even if regular proposals don't.

Curve re-entrancy (July 2023) — ~$70M

Vyper compiler bug in specific versions caused the reentrancy guard's compilation to be incorrect. Several Curve pools (and several other Vyper contracts) had an effectively-disabled guard. Attackers re-entered. Lesson: compiler bugs are real; pin a specific compiler version; cross-check the compiled bytecode for known-buggy patterns.

Euler Finance (2023) — $197M

A donateToReserves function that didn't update the user's debt accounting properly, combined with a complex liquidation flow, let an attacker create an under-collateralized position by self-donating then self-liquidating. Lesson: liquidation and accounting flows interact in subtle ways; invariants like "user health post-action ≥ threshold" must hold across complex compound operations, not just simple ones.

Mango Markets (2022) — $115M

Oracle manipulation on the MNGO token (thin market) to inflate the value of the attacker's collateral, then borrowed everything against it. Technically legal in the protocol's rules at the time of attack. Lesson: oracle quality matters; "we used the available oracle" isn't a defense if the oracle was manipulable.

Cream Finance (2021) — multiple ~$130M total

Various — oracle manipulation and a donation/share-inflation incident on the yUSD market. Money market for long-tail assets is structurally riskier than for blue-chips because oracles are thinner. Lesson: long-tail asset support is high-risk; per-asset risk parameters matter; consider isolated markets.

Drill

For each incident: be able to give the 30-second summary, name the root cause class from the taxonomy in 08, and name the mitigation pattern. If asked "have you seen anything like X bug class?", these are your reference points.