代理合约示例 2020年10月24日

本文介绍如何使用Solidity的delegatecall实现合约调用的代理,以保持msg.sender和msg.value不变。示例中包括被调用合约、代理合约和发起调用的合约。通过实际部署和调用过程,展示了代理合约如何在不影响原合约执行上下文的情况下工作。

delegatecall实现对一个合约调用的代理(能保持msg.sender和msg.value不变)

以下Solidity版本均为0.5.17

这是将要被调用的合约示例,部署后得到合约地址0x0aBE488Baaea9Eb9CbBDfB893685C9aEb13b4b5E

这是代理合约示例,部署

这是发起调用的合约示例,这里采用call(),部署后得到合约地址0x63057f31FA57F7bD5C0576B0dd2708f6E416BD33

现在,我们复制代理合约CSDNserver.sol的合约地址和123,于发起消息调用的CSDNclient.sol中的CSDN_call(),点击CSDN_call()后得到的Oracle.sol触发的日志LogQuery

只有代理合约CSDN_server.sol的ID被改变

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值