call与delegatecall
在 Solidity 中中包括 call、delegatecall 和 callcode 三种方式。
call:调用后内置变量 msg 的值会修改为调用者,执行环境为被调用者的运行环境(合约的 storage)
delegatecall: 调用后内置变量 msg 的值不会修改为调用者,但执行环境为调用者的运行环境
callcode: 调用后内置变量 msg 的值会修改为调用者,但执行环境为调用者的运行环境
call可以涉及账户间的操作,另外两个可以理解为了放在以太坊上的类库,仅仅是调用他们的函数方法和storage。callcode和delegate 的区别在于后者将calleradress和value始终指向原始调用的eoa外部账户,后者可能的最大用处就是可以在调用delegatecall的时候再调用call来对原始账户进行转账操作