理解call和delegatecall使用ABI编码的方式调用合约函数, 为函数调用提供了抽象能力。 使用合约地址进行底层调用:底层调用失败不是发生异常(revert), 而是用返回值表示call()调用切换上下文delegatecall()调用保持上下文**(只是使用了目标合约的代码逻辑,数据还是调用方的数据)**call和delegatecall的区别delegatecall 的应用场景:代理合约(Proxy Contract):将智能合约的存储合约和逻辑合约分开; 代理合约存储所有相关的变量,并且保存逻辑合约的地址;逻辑合约存储所有函数,通过delegatecall执行。当升级时,只需要将代理合约指向新的逻辑合约即可。EIP-2535 Diamonds(钻石):钻石是一个支持构建可在生产中扩展的模块化智能合约系统的标准。钻石是具有多个实施合同的代理合同。