第94篇 合约间调用
Posted wonderBlock
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第94篇 合约间调用相关的知识,希望对你有一定的参考价值。
结合前面两篇文档,将上篇的 contractC 加入接口定义,并通过接口获取函数签名;
contractD.sol
pragma solidity^0.5.0;
interface ContractInterface
function setRandomN(uint _limit) external returns(bool);
function getRandomN() view external returns(uint);
contract contractD
uint public randomN;
function callSetRandomN(ContractInterface _contract, uint _limit) public returns(bool)
bytes memory _calldata = abi.encodeWithSelector(_contract.setRandomN.selector, _limit);
(bool success, bytes memory returnData) = address(_contract).call(_calldata);
require(success == true, "call failure");
return abi.decode(returnData, (bool));
function callGetRandomN(ContractInterface _contract) public returns(uint)
bytes memory _calldata = abi.encodeWithSelector(_contract.getRandomN.selector);
(bool success, bytes memory returnData) = address(_contract).call(_calldata);
以上是关于第94篇 合约间调用的主要内容,如果未能解决你的问题,请参考以下文章
第97篇 笔记-solidity中的抽象(Abstract)