Delegatecall
An EVM operation that executes another contract's code while preserving the calling contract's storage context.
Explain Like I'm 12
An EVM operation that executes another contract's code while preserving the calling contract's storage context.
Why It Matters
Smart-contract concepts are essential for understanding programmable blockchain applications.
How It Works
When contract A calls contract B using delegatecall, the EVM runs contract B's bytecode using contract A's current state and address. The 'msg.sender' and 'msg.value' remain unchanged as those of the original caller. This allows the code of one contract to manage the storage layout of another.
Real-World Example
Proxy patterns used by OpenZeppelin are the most common example, where a Proxy contract routes calls to a Logic contract to allow for seamless code upgrades.
Advantages
- Enables contract upgradeability
- Allows modular code reuse
- Supports efficient cross-contract logic execution
Limitations
- High risk of storage collision
- Complex implementation and audit requirements
- Security vulnerabilities if misused
Common Misconceptions
- People often think delegatecall simply copies code, but it actually executes it in the current context.
- There is a belief that delegatecall is inherently insecure, but it is a powerful tool when implemented with correct storage layouts.
Knowledge Explorer
Explore This Concept in the Knowledge Graph
See how Delegatecall connects to other concepts, books, research, and developer resources.
Related Terms
ABI
An Application Binary Interface defines how external software encodes calls to and decodes results from a smart contract.
EVM
The Ethereum Virtual Machine (EVM) is a decentralized, Turing-complete computation engine that executes smart contracts on the Ethereum network. It functions as a global state machine, where the state is updated based on code execution on the blockchain. Because the EVM is implemented by every node in the network, it ensures that smart contracts run exactly as intended across all devices, regardless of local hardware differences. This allows for complex, programmable logic to be embedded into the blockchain.
Smart Contract
A smart contract is a self-executing program stored on a blockchain that automatically runs when predetermined conditions are met. These contracts eliminate the need for intermediaries by encoding terms directly into lines of code, ensuring that the agreement is enforced exactly as written without human interference. Because they reside on an immutable ledger, the execution results are verifiable, transparent, and impossible to tamper with once deployed.
Smart Contract
A self-executing program stored on a blockchain that automatically enforces and executes the terms of an agreement when predetermined conditions are met. Smart contracts are deterministic, immutable once deployed, and form the backbone of decentralized applications.
Solidity
Solidity is the primary high-level, object-oriented programming language used for writing smart contracts that execute on the Ethereum Virtual Machine (EVM). It is statically typed and supports inheritance, libraries, and complex user-defined types. Solidity was designed specifically for blockchain environments to facilitate the creation of self-executing contracts with contract-based accountability. It is heavily influenced by C++, Python, and JavaScript, making it relatively accessible to developers coming from traditional software engineering backgrounds who are transitioning into the Web3 ecosystem.