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;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现