在以太坊智能合约开发中,call、staticcall 和 delegatecall 是三种低级调用方法(Low-level Call),它们允许合约与其他合约进行交互。这三者的主要区别体现在调用上下文和执行权限等方面。 1. call • 作用:执行目标合约的函数,同时改变目标合约的状态。 • 上下文:目标合约的代码在自己的上下文中执行,msg.sender 和 msg.value 不变。 • 修改状态:可以修改目标合约的状态。 • Gas 消耗:调用者需要为目标合约的执行分配 Gas。 • 返回值:返回 true 或 false,表示调用是否成功。 • 适用场景:通用的跨合约调用。 用法示例(bool success, bytes memory data) = targetContractAddress.call{value: msgValue}( abi.encodeWithSignature("functionName(uint256)", 123) ); require(success, "Call failed"); ** 特点** 1. 目标合约的代码执行在目标合约...