43低级call
// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;
contract TestCall{
string public message;
uint public x;
event Log(string message);
fallback() external payable {
emit Log("fallback was called");
}
function foo(string memory _message, uint _x) external payable returns(bool,uint){
message=_message;
x=_x;
return (true,999);
}
}
contract Call{
bytes public data;
function callFoo(address _test) external payable {
(bool success, bytes memory _data)=_test.call{value:111,gas:5000}(
abi.encodeWithSignature("foo(string,uint256)", "call foo",123)
);
require(success,"call failed");
data=_data;
}
function callDoesNotExist(address _test) external {
(bool success, bytes memory _data)=_test.call(
abi.encodeWithSignature("doesNotExist")
);
require(success,"call failed");
data=_data;
}
}