// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.0;
contract ETHForwarder {
address payable private _forwardAddress;
event Received(address indexed sender, uint amount);
constructor(address payable forwardAddress_) {
_forwardAddress = forwardAddress_;
}
/**
* @dev Allows the contract to recieve ETH.
*/
receive() external payable {
emit Received(msg.sender, msg.value);
}
fallback() external payable {
emit Received(msg.sender, msg.value);
}
/**
* @dev Returns the forward address of the contract.
*/
function forwardAddress() public view virtual returns (address) {
return _forwardAddress;
}
/**
* @dev Transfers all existing ETH Token to the determined
* forwardAddress.
*
*/
function forwardETH() public {
_forwardAddress.transfer(address(this).balance);
}
}
{
"compilationTarget": {
"contracts/eth_forwarder.sol": "ETHForwarder"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 1000
},
"remappings": []
}
[{"inputs":[{"internalType":"address payable","name":"forwardAddress_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Received","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"forwardAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forwardETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]