第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篇 合约间调用的主要内容,如果未能解决你的问题,请参考以下文章

第93篇 合约间调用

第126篇 合约间调用方法

第126篇 合约间调用方法

第97篇 笔记-solidity中的抽象(Abstract)

第97篇 笔记-solidity中的抽象(Abstract)

第158篇 合约安全-selfdestruct