solidity基础-delegateCall

delegateCall 用于重定向父合约;

A 合约越来调用B1, 将地址改为 B2 就可以调用 B2

 

 

合约B1

复制代码
contract B {

  uint public num;
  uint public value;

  function setVars(uint _num) public payable{
    num = _num;
    value = msg.value;
  }

}
复制代码

合约A

复制代码
contract A{
  uint public num;
  uint public value;
  address public b;

  function setVars(uint _num) public payable{
    (bool success, bytes memory data) = b.delegatecall(
        abi.encodeWithSignature("setVars(uint256)", _num)
    );
  }

  function setB(address _b) external{
    b = _b;
  }
}
复制代码

 部署

获得 num = 1

 

 

B2

复制代码
contract B2 {

  uint public num;
  uint public value;

  function setVars(uint _num) public payable{
    num = _num + 2;
    value = msg.value;
  }

}
复制代码

编译部署完 B2,  地址设置 B2 合约

 

 调用 合约 A 的 setVars 获得 num = 3;

 

posted @   apeNote  阅读(138)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示