ETH Price: $2,614.36 (-2.53%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

1 address found via
Transaction Hash
Method
Block
From
To
Flush Tokens187636132023-12-11 14:39:11428 days ago1702305551IN
0x938e6988...D1e57dc9f
0 ETH0.0024632843.96294651
Flush Tokens185321602023-11-09 4:59:23460 days ago1699505963IN
0x938e6988...D1e57dc9f
0 ETH0.0015367127.42615203
Flush Tokens184442332023-10-27 21:29:35473 days ago1698442175IN
0x938e6988...D1e57dc9f
0 ETH0.0009858917.59556543
Flush Tokens183845282023-10-19 12:59:11481 days ago1697720351IN
0x938e6988...D1e57dc9f
0 ETH0.0007348413.11493513
Flush Tokens182837692023-10-05 10:39:23495 days ago1696502363IN
0x938e6988...D1e57dc9f
0 ETH0.000333785.95720552
Flush Tokens181847552023-09-21 14:09:47509 days ago1695305387IN
0x938e6988...D1e57dc9f
0 ETH0.0011494620.51485182
Flush Tokens181638152023-09-18 15:49:11512 days ago1695052151IN
0x938e6988...D1e57dc9f
0 ETH0.0015232327.18558122
Flush Tokens181028542023-09-10 1:59:11521 days ago1694311151IN
0x938e6988...D1e57dc9f
0 ETH0.000476368.50185674
Flush Tokens181028042023-09-10 1:49:11521 days ago1694310551IN
0x938e6988...D1e57dc9f
0 ETH0.00054829.78402759
Flush Tokens180917512023-09-08 12:39:11522 days ago1694176751IN
0x938e6988...D1e57dc9f
0 ETH0.0006008910.7243085
Flush Tokens180891752023-09-08 3:59:23522 days ago1694145563IN
0x938e6988...D1e57dc9f
0 ETH0.000492968.79813539
Flush Tokens180846022023-09-07 12:39:11523 days ago1694090351IN
0x938e6988...D1e57dc9f
0 ETH0.0007433813.26741925
Flush Tokens179847672023-08-24 13:09:23537 days ago1692882563IN
0x938e6988...D1e57dc9f
0 ETH0.0013498924.09197921
Flush Tokens179846662023-08-24 12:49:11537 days ago1692881351IN
0x938e6988...D1e57dc9f
0 ETH0.0010802319.27930948
Flush Tokens179634562023-08-21 13:39:23540 days ago1692625163IN
0x938e6988...D1e57dc9f
0 ETH0.0014917626.62397119
Flush Tokens179424202023-08-18 14:59:11543 days ago1692370751IN
0x938e6988...D1e57dc9f
0 ETH0.0021736338.7933631
Flush Tokens179304732023-08-16 22:49:11545 days ago1692226151IN
0x938e6988...D1e57dc9f
0 ETH0.00243143.3868302
Flush Tokens179173172023-08-15 2:39:11547 days ago1692067151IN
0x938e6988...D1e57dc9f
0 ETH0.0010832719.3335666
Flush Tokens179086282023-08-13 21:29:11548 days ago1691962151IN
0x938e6988...D1e57dc9f
0 ETH0.000676412.07191178
Flush Tokens178877692023-08-10 23:29:23551 days ago1691710163IN
0x938e6988...D1e57dc9f
0 ETH0.0009937117.73513748
Flush Tokens178850362023-08-10 14:19:11551 days ago1691677151IN
0x938e6988...D1e57dc9f
0 ETH0.0021292938.00205456
Flush Tokens178671312023-08-08 2:09:11554 days ago1691460551IN
0x938e6988...D1e57dc9f
0 ETH0.0006578811.74145576
Flush Tokens178667832023-08-08 0:59:11554 days ago1691456351IN
0x938e6988...D1e57dc9f
0 ETH0.0008264314.74964041
Flush Tokens177866452023-07-27 19:59:35565 days ago1690487975IN
0x938e6988...D1e57dc9f
0 ETH0.0023532641.99936416
Flush Tokens177317042023-07-20 3:29:23572 days ago1689823763IN
0x938e6988...D1e57dc9f
0 ETH0.0007817613.95238039
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block
From
To
175152122023-06-19 17:15:35603 days ago1687194935  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.