ETH Price: $1,851.44 (-8.91%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Flush Tokens190800692024-01-25 0:29:35765 days ago1706142575IN
0x0F62b8FF...A6848A5e7
0 ETH0.0005412710.27290193
Flush Tokens188928702023-12-29 17:59:35791 days ago1703872775IN
0x0F62b8FF...A6848A5e7
0 ETH0.0012206321.7850178
Flush Tokens187651982023-12-11 19:59:23809 days ago1702324763IN
0x0F62b8FF...A6848A5e7
0 ETH0.0025338645.22247636
Flush Tokens187464452023-12-09 4:59:11812 days ago1702097951IN
0x0F62b8FF...A6848A5e7
0 ETH0.0014691526.2203279
Flush Tokens186796082023-11-29 20:19:35821 days ago1701289175IN
0x0F62b8FF...A6848A5e7
0 ETH0.002050236.59050172
Flush Tokens186168202023-11-21 1:19:35830 days ago1700529575IN
0x0F62b8FF...A6848A5e7
0 ETH0.0025270245.10051083
Flush Tokens185706942023-11-14 14:19:11836 days ago1699971551IN
0x0F62b8FF...A6848A5e7
0 ETH0.0026547847.38060202
Flush Tokens185215252023-11-07 17:19:23843 days ago1699377563IN
0x0F62b8FF...A6848A5e7
0 ETH0.0026557747.3983605
Flush Tokens184723492023-10-31 19:59:47850 days ago1698782387IN
0x0F62b8FF...A6848A5e7
0 ETH0.0014940326.66442188
Flush Tokens183775402023-10-18 13:29:23863 days ago1697635763IN
0x0F62b8FF...A6848A5e7
0 ETH0.0008588315.32786524
Flush Tokens182971202023-10-07 7:29:11875 days ago1696663751IN
0x0F62b8FF...A6848A5e7
0 ETH0.000345896.17328291
Flush Tokens182429142023-09-29 17:39:11882 days ago1696009151IN
0x0F62b8FF...A6848A5e7
0 ETH0.0007053412.58852056
Flush Tokens175948152023-06-30 21:39:47973 days ago1688161187IN
0x0F62b8FF...A6848A5e7
0 ETH0.0014154525.26205514

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Method Block
From
To
0x3d602d80175151172023-06-19 16:56:35984 days ago1687193795  Contract Creation0 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Minimal Proxy Contract for 0x3a5fb753285ac3a67c6b0d03e121921b2a1428be

Contract Name:
Forwarder

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-12
*/

// File: @uniswap/lib/contracts/libraries/TransferHelper.sol



pragma solidity >=0.6.0;

// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
library TransferHelper {
    function safeApprove(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            'TransferHelper::safeApprove: approve failed'
        );
    }

    function safeTransfer(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            'TransferHelper::safeTransfer: transfer failed'
        );
    }

    function safeTransferFrom(
        address token,
        address from,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            'TransferHelper::transferFrom: transferFrom failed'
        );
    }

    function safeTransferETH(address to, uint256 value) internal {
        (bool success, ) = to.call{value: value}(new bytes(0));
        require(success, 'TransferHelper::safeTransferETH: ETH transfer failed');
    }
}

// File: ManualForwarder/ERC20Interface.sol


pragma solidity ^0.8.0;

/**
 * Contract that exposes the needed erc20 token functions
 */

abstract contract ERC20Interface {
  // Send _value amount of tokens to address _to
  function transfer(address _to, uint256 _value)
    public
    virtual
    returns (bool success);

  // Get the account balance of another account with address _owner
  function balanceOf(address _owner)
    public
    virtual
    view
    returns (uint256 balance);
}

// File: ManualForwarder/Forwarder.sol



 pragma solidity ^0.8.19;



 contract Forwarder {
    address private parentAddress;
    address private owner;

    event ForwarderDeposited(address from, uint256 value, bytes data);

    function initialize(address _owner, address initAddress) public onlyUninitialized {
        require(initAddress != address(0), "Invalid parent address");
        require(_owner != address(0), "Invalid owner address");
        owner = _owner;
        parentAddress = initAddress;
    }

    modifier onlyUninitialized {
        require(parentAddress == address(0x0), "Already initialized");
        _;
    }

    modifier onlyOwner {
        require(msg.sender == owner, "Only Owner");
        _;
    }

    function getParentAddress() public view onlyOwner returns (address) {
        return parentAddress;
    }

    function getOwner() public view onlyOwner returns (address) {
        return owner;
    }

    fallback() external payable {
        flush();
    }

    receive() external payable {
        flush();
    }

    function setParentAddress(address newAddress) public onlyOwner {
        require(newAddress != address(0), "Invalid parent address");
        parentAddress = newAddress;
    }

    function flush() private {
        uint256 value = payable(address(this)).balance;

        if (value == 0) {
            return;
        }

        (bool success, ) = parentAddress.call{ value: value }("");
        require(success, "Flush failed");
        emit ForwarderDeposited(msg.sender, value, msg.data);
    }

    function getERC20Balance(
        address tokenContractAddress
    ) public view returns (uint256) {
        ERC20Interface instance = ERC20Interface(tokenContractAddress);
        address forwarderAddress = address(this);
        uint256 forwarderBalance = instance.balanceOf(forwarderAddress);
        if (forwarderBalance == 0) {
            return 0;
        }
        return forwarderBalance;
    }

    function flushTokens(address tokenContractAddress) external onlyOwner {
        ERC20Interface instance = ERC20Interface(tokenContractAddress);
        address forwarderAddress = address(this);
        uint256 forwarderBalance = instance.balanceOf(forwarderAddress);
        if (forwarderBalance == 0) {
            return;
        }

        TransferHelper.safeTransfer(
            tokenContractAddress,
            parentAddress,
            forwarderBalance
        );
    }
}

Contract ABI

API
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"ForwarderDeposited","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"tokenContractAddress","type":"address"}],"name":"flushTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenContractAddress","type":"address"}],"name":"getERC20Balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getParentAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"initAddress","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setParentAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.