本文介绍三种类型的合约间调用;
1.一般调用
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.3;
contract Receiver {
event Received(address caller, uint256 amount, string message);
receive() external payable {}
fallback() external payable {
emit Received(msg.sender, msg.value, "Fallback was called");
}
function foo(string memory _message, uint256 _x)
public
payable
returns (uint256)
{
emit Received(msg.sender, msg.value, _message);
return _x + 1;
}
}
contract Caller {
event Response(bool success, bytes data);
// Let's imagine that contract B does not have the source code for
// contract A, but we do know the address of A and the function to call.
function testCallFoo(address payable _addr) public payable {
// You can send ether and specify a custom gas amount
(bool success, bytes memory data) = _addr.call{
value: msg.value