合约与合约交互

求一个合约交互例子,通过调用合约方式实现

https://bscscan.com/tx/0xe44c2fbbe7cf103bb8c6ee56a7a29a83f6c344af68650b4bb4ccc8464592e9a9

请先 登录 后评论

最佳答案 2021-11-14 09:29

合约与合约交互,通常需要先知道交互目标合约的地址与接口,例如,有一个合约 A 实现了函数:

contract A {
    function mint(address to, uint256 amount) external {
        ....
    }
}

那么可以在合约 B 给 A 定义一个接口, 通过这个接口调用 A 的函数:

interface IToken {
function mint(address to, uint256 amount) external;
}

contract B {

  function callAmint(to, amount) {
    IToken(addr).mint(to, amount) ;
  }
}

上面是常规做法, 你需要知道目标合约的接口,在你的例子中,目标合约没有开源,无法知道目标合约的接口, 就得使用底层的 call 调用:

(bool success, bytes memory returnData) = target.call{value: value}(callData);

callData 就是你在区块链浏览器中的inputData,value 表示要传递给目标合约的 eth 值,没有则为 0 。

请先 登录 后评论

其它 0 个回答

  • 1 关注
  • 2 收藏,4354 浏览
  • xdp2012 提出于 2021-11-13 05:47