You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.5 KiB
46 lines
1.5 KiB
// SPDX-License-Identifier: MIT
|
|
|
|
pragma solidity ^0.8.0;
|
|
|
|
import "../utils/Address.sol";
|
|
|
|
contract AddressImpl {
|
|
string public sharedAnswer;
|
|
|
|
event CallReturnValue(string data);
|
|
|
|
function isContract(address account) external view returns (bool) {
|
|
return Address.isContract(account);
|
|
}
|
|
|
|
function sendValue(address payable receiver, uint256 amount) external {
|
|
Address.sendValue(receiver, amount);
|
|
}
|
|
|
|
function functionCall(address target, bytes calldata data) external {
|
|
bytes memory returnData = Address.functionCall(target, data);
|
|
emit CallReturnValue(abi.decode(returnData, (string)));
|
|
}
|
|
|
|
function functionCallWithValue(
|
|
address target,
|
|
bytes calldata data,
|
|
uint256 value
|
|
) external payable {
|
|
bytes memory returnData = Address.functionCallWithValue(target, data, value);
|
|
emit CallReturnValue(abi.decode(returnData, (string)));
|
|
}
|
|
|
|
function functionStaticCall(address target, bytes calldata data) external {
|
|
bytes memory returnData = Address.functionStaticCall(target, data);
|
|
emit CallReturnValue(abi.decode(returnData, (string)));
|
|
}
|
|
|
|
function functionDelegateCall(address target, bytes calldata data) external {
|
|
bytes memory returnData = Address.functionDelegateCall(target, data);
|
|
emit CallReturnValue(abi.decode(returnData, (string)));
|
|
}
|
|
|
|
// sendValue's tests require the contract to hold Ether
|
|
receive() external payable {}
|
|
}
|
|
|