今天我们谈一谈solidity 中call与delegatecall区别。这两个方法都是进行合约之间的调用。call是自己本身不发生改变,被调用的值发生改变,delegatecall是自己本身的值发生改变,被调用的不发生改变。
可能这样说大家大家理解不够直观,接下来我们创建2个合约代码,进行演示调用。直接上示例代码:
pragma solidity ^0.4.1;
//首先定义了两个合约
contract A{
uint public p;
event e(address add,uint p);//为了观察声明一个事件
//定义了一个方法
function fun(uint u1,uint u2) {
p=u1+u2;//改变了A合约中的p,改变被调用者合约方法中的变量
e(msg.sender,p);//下面的2,3传给了fun方法
}
}
pragma solidity ^0.4.1;
contract B{
uint public qq;
bool public b;
//当我们用B中的call方法的时候,调用A中的某个方法的执行,只会改变A中某个方法的值,B中的某个方法的值不会发生改变,被调用的合约本身发生改变
function call1(address add) returns(bool

本文详细解析了Solidity编程语言中call和delegatecall方法在合约调用时的不同行为,通过实例代码演示了两者如何影响调用合约的值。call保持自身不变,被调用值变,而delegatecall则反之。
最低0.47元/天 解锁文章
527

被折叠的 条评论
为什么被折叠?



