Smart Contract Security Glossary
Definitions, examples, and audit checks for Solidity, EVM, and DeFi security terms.
Browse by topic.
All glossary terms.
EVM
17Delegatecall
Delegatecall executes code from another contract while reading and writing the caller's storage, preserving the original caller context.
Function Selector
A function selector is the first 4 bytes of calldata that tells an EVM contract which function should handle a call.
Storage Collision
A storage collision happens when two variables or contracts use the same storage slot, corrupting state in upgradeable or delegatecall-based systems.
SELFDESTRUCT (Solidity/EVM)
selfdestruct is an EVM operation that can force-send Ether and historically removed contract code and storage under older semantics.
Calldata
Calldata is the read-only input data sent to a contract call, usually containing the function selector and ABI-encoded arguments.
CREATE2
CREATE2 is an EVM opcode that deploys contracts to deterministic addresses based on the deployer, salt, and init-code hash.
Storage Slot
A storage slot is a 32-byte indexed location in EVM contract storage used to hold state variables and derived storage data.
Nonce
A nonce is a value used once, commonly to prevent replay of signatures, orders, permits, withdrawals, or messages.
Chain ID
Chain ID is the blockchain network identifier used to separate transactions, signatures, and domains across chains.
Event Logs
Event logs are EVM records emitted by contracts that off-chain systems can read, but contracts cannot query during execution.
Assembly
Assembly is inline Yul or EVM-level code inside Solidity that can directly manipulate memory, storage, calldata, and calls.
Low-Level Call
A low-level call is a Solidity call such as call, delegatecall, staticcall, or send that returns success and data instead of using typed function checks.
staticcall
staticcall is a low-level EVM call that allows reading data from another contract but reverts if the callee attempts to modify state.
callcode
callcode is a deprecated EVM instruction that executes another account's code in the caller's storage context with legacy call semantics.
Selector Collision
A selector collision happens when two function signatures share the same 4-byte selector or when routing code maps a selector to the wrong function.
Multicall
Multicall is a pattern that batches multiple calls into one transaction, often by calling functions on the same contract or multiple targets.
Batched Execution
Batched execution runs multiple calls in one transaction or smart account operation.