在以太坊智能合约的世界里,delegatecall 是一个相对高级但功能极其强大的 Solidity 内置函数,它允许一个合约将其调用(包括消息调用和值传递)“委托”给另一个合约,但关键在于,被调用合约的代码是在调用合约的上下文中执行的,这意味着被调用合约可以访问和修改调用合约的存储、状态变量,并以其身份发送交易,而不仅仅是执行其自身的代码,理解 delegatecall 对于构建可升级合约、代理模式和复杂的合约架构至关重要。
delegatecall 的工作原理
要理解 delegatecall,首先需要区分它与普通调用(如 address.call())的核心差异: