ETH Price: $2,643.83 (+2.99%)

Contract

0xC2c4FC0023f73B68487987f8e2fe9fC0b835834F
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Flush Tokens198850252024-05-16 20:49:11166 days ago1715892551IN
0xC2c4FC00...0b835834F
0 ETH0.000199713.79037447
Flush Tokens198412412024-05-10 17:50:59172 days ago1715363459IN
0xC2c4FC00...0b835834F
0 ETH0.0008840316.77796287
Flush Tokens197765422024-05-01 16:41:47181 days ago1714581707IN
0xC2c4FC00...0b835834F
0 ETH0.000475789.02989003
Flush Tokens197329832024-04-25 14:29:23187 days ago1714055363IN
0xC2c4FC00...0b835834F
0 ETH0.000774514.69936175
Flush Tokens196837382024-04-18 17:09:47194 days ago1713460187IN
0xC2c4FC00...0b835834F
0 ETH0.0006993913.27384503
Flush Tokens196686932024-04-16 14:39:23196 days ago1713278363IN
0xC2c4FC00...0b835834F
0 ETH0.0011925222.6328647
Flush Tokens196195272024-04-09 17:19:23203 days ago1712683163IN
0xC2c4FC00...0b835834F
0 ETH0.0018959635.9834577
Flush Tokens196121002024-04-08 16:21:23204 days ago1712593283IN
0xC2c4FC00...0b835834F
0 ETH0.0023262444.1497115
Flush Tokens195645052024-04-02 0:19:35210 days ago1712017175IN
0xC2c4FC00...0b835834F
0 ETH0.001170522.21491737
Flush Tokens195443072024-03-30 4:09:23213 days ago1711771763IN
0xC2c4FC00...0b835834F
0 ETH0.0010236419.42773228
Flush Tokens195018942024-03-24 3:59:11219 days ago1711252751IN
0xC2c4FC00...0b835834F
0 ETH0.0008528216.18562243
Flush Tokens194932902024-03-22 22:59:23220 days ago1711148363IN
0xC2c4FC00...0b835834F
0 ETH0.001007319.11762232
Flush Tokens194844712024-03-21 17:19:23222 days ago1711041563IN
0xC2c4FC00...0b835834F
0 ETH0.0020457238.82562415
Flush Tokens193824672024-03-07 9:42:11236 days ago1709804531IN
0xC2c4FC00...0b835834F
0 ETH0.0026870350.99708107
Flush Tokens191864782024-02-08 22:41:35264 days ago1707432095IN
0xC2c4FC00...0b835834F
0 ETH0.0028108953.34771557
Flush Tokens191789042024-02-07 21:10:47265 days ago1707340247IN
0xC2c4FC00...0b835834F
0 ETH0.001941236.84202788
Flush Tokens191630732024-02-05 15:51:23267 days ago1707148283IN
0xC2c4FC00...0b835834F
0 ETH0.0017235132.71047618
Flush Tokens191353242024-02-01 18:20:11271 days ago1706811611IN
0xC2c4FC00...0b835834F
0 ETH0.0025682748.74321231
Flush Tokens190790312024-01-24 20:59:11279 days ago1706129951IN
0xC2c4FC00...0b835834F
0 ETH0.0006185711.73992859
Flush Tokens190675492024-01-23 6:19:11280 days ago1705990751IN
0xC2c4FC00...0b835834F
0 ETH0.000509489.66939361
Flush Tokens190595642024-01-22 3:19:11281 days ago1705893551IN
0xC2c4FC00...0b835834F
0 ETH0.000662812.57936047
Flush Tokens189804262024-01-11 1:29:59292 days ago1704936599IN
0xC2c4FC00...0b835834F
0 ETH0.0023580744.75368917
Flush Tokens189432992024-01-05 19:59:23298 days ago1704484763IN
0xC2c4FC00...0b835834F
0 ETH0.0010872619.40473876
Flush Tokens189303492024-01-04 0:19:23299 days ago1704327563IN
0xC2c4FC00...0b835834F
0 ETH0.0017530631.28733709
Flush Tokens188929182023-12-29 18:09:11305 days ago1703873351IN
0xC2c4FC00...0b835834F
0 ETH0.001338923.8958552
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
179697442023-08-22 10:45:35434 days ago1692701135  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.