求一个合约交互例子,通过调用合约方式实现
https://bscscan.com/tx/0xe44c2fbbe7cf103bb8c6ee56a7a29a83f6c344af68650b4bb4ccc8464592e9a9
合约与合约交互,通常需要先知道交互目标合约的地址与接口,例如,有一个合约 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 。