solidity 之 call与delegatecall区别

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

今天我们谈一谈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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值