ETH Price: $2,507.22 (+1.56%)
Gas: 2.26 Gwei

Contract

0x21F08FA663d2bc170D8BC20b525497093D259385
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Flush Tokens198569242024-05-12 22:29:11113 days ago1715552951IN
0x21F08FA6...93D259385
0 ETH0.000160443.02040871
Transfer198323222024-05-09 11:55:23116 days ago1715255723IN
0x21F08FA6...93D259385
0.00960585 ETH0.000149183.98383187
Transfer198290432024-05-09 0:54:47117 days ago1715216087IN
0x21F08FA6...93D259385
0.01154902 ETH0.000142053.79355025
Flush Tokens198289652024-05-09 0:39:11117 days ago1715215151IN
0x21F08FA6...93D259385
0 ETH0.000196923.70707523
Flush Tokens197989862024-05-04 20:00:11121 days ago1714852811IN
0x21F08FA6...93D259385
0 ETH0.000308185.80162062
Flush Tokens197561522024-04-28 20:19:11127 days ago1714335551IN
0x21F08FA6...93D259385
0 ETH0.000409627.71122459
Transfer197204362024-04-23 20:19:59132 days ago1713903599IN
0x21F08FA6...93D259385
0.00878006 ETH0.0006382217.04342333
Flush Tokens197184962024-04-23 13:49:35132 days ago1713880175IN
0x21F08FA6...93D259385
0 ETH0.0009128517.1844279
Flush Tokens197132292024-04-22 20:09:35133 days ago1713816575IN
0x21F08FA6...93D259385
0 ETH0.0005636410.61068088
Flush Tokens196762432024-04-17 15:59:23138 days ago1713369563IN
0x21F08FA6...93D259385
0 ETH0.0019744737.16946258
Transfer195405462024-03-29 15:27:59157 days ago1711726079IN
0x21F08FA6...93D259385
0.02860543 ETH0.0014174737.85271486
Flush Tokens195215652024-03-26 22:29:35160 days ago1711492175IN
0x21F08FA6...93D259385
0 ETH0.0016867231.75256385
Flush Tokens195082062024-03-25 1:19:23162 days ago1711329563IN
0x21F08FA6...93D259385
0 ETH0.0008378115.77180351
Transfer195079662024-03-25 0:30:59162 days ago1711326659IN
0x21F08FA6...93D259385
0.01888982 ETH0.0006416817.13569958
Transfer194723342024-03-20 0:24:47167 days ago1710894287IN
0x21F08FA6...93D259385
0.01576798 ETH0.001169931.24156582
Flush Tokens194716242024-03-19 22:00:11167 days ago1710885611IN
0x21F08FA6...93D259385
0 ETH0.0019179336.10497397
Transfer194705202024-03-19 18:17:23167 days ago1710872243IN
0x21F08FA6...93D259385
0.01811685 ETH0.0011271530.10008611
Transfer194469582024-03-16 10:47:23170 days ago1710586043IN
0x21F08FA6...93D259385
0.01295726 ETH0.0010379927.71912209
Flush Tokens194430392024-03-15 21:31:47171 days ago1710538307IN
0x21F08FA6...93D259385
0 ETH0.0022747842.82264093
Transfer194364182024-03-14 23:14:23172 days ago1710458063IN
0x21F08FA6...93D259385
0.02667495 ETH0.0017162245.83072429
Flush Tokens194295752024-03-14 0:03:59173 days ago1710374639IN
0x21F08FA6...93D259385
0 ETH0.0029490855.51645521
Transfer194280312024-03-13 18:50:47173 days ago1710355847IN
0x21F08FA6...93D259385
0.00999898 ETH0.0023051361.55715357
Flush Tokens194225892024-03-13 0:30:35174 days ago1710289835IN
0x21F08FA6...93D259385
0 ETH0.0024310945.76519811
Flush Tokens194087762024-03-11 2:09:23176 days ago1710122963IN
0x21F08FA6...93D259385
0 ETH0.0025347947.7173136
Transfer193897642024-03-08 10:10:59178 days ago1709892659IN
0x21F08FA6...93D259385
0.0056947 ETH0.0017690747.24220869
View all transactions

Latest 16 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
198323222024-05-09 11:55:23116 days ago1715255723
0x21F08FA6...93D259385
0.00960585 ETH
198290432024-05-09 0:54:47117 days ago1715216087
0x21F08FA6...93D259385
0.01154902 ETH
197204362024-04-23 20:19:59132 days ago1713903599
0x21F08FA6...93D259385
0.00878006 ETH
195405462024-03-29 15:27:59157 days ago1711726079
0x21F08FA6...93D259385
0.02860543 ETH
195079662024-03-25 0:30:59162 days ago1711326659
0x21F08FA6...93D259385
0.01888982 ETH
194723342024-03-20 0:24:47167 days ago1710894287
0x21F08FA6...93D259385
0.01576798 ETH
194705202024-03-19 18:17:23167 days ago1710872243
0x21F08FA6...93D259385
0.01811685 ETH
194469582024-03-16 10:47:23170 days ago1710586043
0x21F08FA6...93D259385
0.01295726 ETH
194364182024-03-14 23:14:23172 days ago1710458063
0x21F08FA6...93D259385
0.02667495 ETH
194280312024-03-13 18:50:47173 days ago1710355847
0x21F08FA6...93D259385
0.00999898 ETH
193897642024-03-08 10:10:59178 days ago1709892659
0x21F08FA6...93D259385
0.0056947 ETH
193280632024-02-28 19:18:47187 days ago1709147927
0x21F08FA6...93D259385
0.0064481 ETH
193079682024-02-25 23:47:47190 days ago1708904867
0x21F08FA6...93D259385
0.01013943 ETH
193041202024-02-25 10:52:23190 days ago1708858343
0x21F08FA6...93D259385
0.00695404 ETH
190756102024-01-24 9:29:59222 days ago1706088599
0x21F08FA6...93D259385
0.05869985 ETH
189299142024-01-03 22:51:35243 days ago1704322295  Contract Creation0 ETH
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
/**
 *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

[{"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 Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.