IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> solidity代理合约 -> 正文阅读

[区块链]solidity代理合约

如何实现代理合约

代码

pragma solidity ^0.8;
import "@openzeppelin/contracts/utils/math/SafeMath.sol";

contract B{
    uint public num;
    uint public value;
    function donate(uint _num) payable public{
        num = _num;
        value = SafeMath.add(value, msg.value);
    }
}

contract A{
    uint public num;
    uint public value;
    address public b;
     function donate(uint _num) payable public{
         (bool success, bytes memory data) = b.delegatecall(
             abi.encodeWithSignature("donate(uint256)", _num)
         );
    }
    function setB(address _b) external{
        b = _b;
    }
}

1、分别部署A合约、B合约

A合约地址:0x358AA13c52544ECCEF6B0ADD0f801012ADAD5eE3
B合约地址:0x9D7f74d0C41E726EC95884E0e97Fa6129e3b5E99

2、执行A.setB

执行A.setB(0x9D7f74d0C41E726EC95884E0e97Fa6129e3b5E99)

3、执行A.donate

A.donate(45),value=123

结果

4、升级合约

只要修改B的合约,重新发布,然后再在A合约执行A.setB(address b)设置一下新的B合约地址即可

总结

A.setB(address B)将A合约代理给B合约
A.donate(uint _num)执行A.donate实际上是执行了B.donate,当时由于delegatecall的机制,B中的 执行环境 属于A,所以改变的是A的环境变量值

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2022-03-24 00:37:21  更:2022-03-24 00:37:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:54:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码