Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 20 from a total of 20 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Flush Tokens | 19761618 | 675 days ago | IN | 0 ETH | 0.00117287 | ||||
| Flush Tokens | 19739537 | 678 days ago | IN | 0 ETH | 0.00052226 | ||||
| Transfer | 19708633 | 683 days ago | IN | 0.17676415 ETH | 0.00026636 | ||||
| Transfer | 19690373 | 685 days ago | IN | 0.06576285 ETH | 0.00068216 | ||||
| Transfer | 19525301 | 708 days ago | IN | 0.14164859 ETH | 0.00116922 | ||||
| Transfer | 19519541 | 709 days ago | IN | 0.13568149 ETH | 0.00246356 | ||||
| Transfer | 19512427 | 710 days ago | IN | 0.10519821 ETH | 0.00177317 | ||||
| Transfer | 19490595 | 713 days ago | IN | 0.13802432 ETH | 0.00149144 | ||||
| Transfer | 19480848 | 715 days ago | IN | 0.15778382 ETH | 0.00129269 | ||||
| Transfer | 19480739 | 715 days ago | IN | 0.15709998 ETH | 0.00133387 | ||||
| Transfer | 19480739 | 715 days ago | IN | 0.15709998 ETH | 0.00133387 | ||||
| Transfer | 19375353 | 729 days ago | IN | 0.14387618 ETH | 0.00321242 | ||||
| Transfer | 18988739 | 784 days ago | IN | 0.10886284 ETH | 0.00068907 | ||||
| Transfer | 18983318 | 784 days ago | IN | 0.06969056 ETH | 0.00105552 | ||||
| Transfer | 18981838 | 785 days ago | IN | 0.0149763 ETH | 0.00114374 | ||||
| Transfer | 18970066 | 786 days ago | IN | 0.07155574 ETH | 0.00091169 | ||||
| Transfer | 18833634 | 805 days ago | IN | 0.03435749 ETH | 0.00151481 | ||||
| Transfer | 18684569 | 826 days ago | IN | 0.01423564 ETH | 0.00164073 | ||||
| Transfer | 18684569 | 826 days ago | IN | 0.15191608 ETH | 0.00164073 | ||||
| Transfer | 18671110 | 828 days ago | IN | 0.04662202 ETH | 0.00199021 |
Latest 19 internal transactions
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 19708633 | 683 days ago | 0.17676415 ETH | ||||
| Transfer | 19690373 | 685 days ago | 0.06576285 ETH | ||||
| Transfer | 19525301 | 708 days ago | 0.14164859 ETH | ||||
| Transfer | 19519541 | 709 days ago | 0.13568149 ETH | ||||
| Transfer | 19512427 | 710 days ago | 0.10519821 ETH | ||||
| Transfer | 19490595 | 713 days ago | 0.13802432 ETH | ||||
| Transfer | 19480848 | 715 days ago | 0.15778382 ETH | ||||
| Transfer | 19480739 | 715 days ago | 0.15709998 ETH | ||||
| Transfer | 19480739 | 715 days ago | 0.15709998 ETH | ||||
| Transfer | 19375353 | 729 days ago | 0.14387618 ETH | ||||
| Transfer | 18988739 | 784 days ago | 0.10886284 ETH | ||||
| Transfer | 18983318 | 784 days ago | 0.06969056 ETH | ||||
| Transfer | 18981838 | 785 days ago | 0.0149763 ETH | ||||
| Transfer | 18970066 | 786 days ago | 0.07155574 ETH | ||||
| Transfer | 18833634 | 805 days ago | 0.03435749 ETH | ||||
| Transfer | 18684569 | 826 days ago | 0.01423564 ETH | ||||
| Transfer | 18684569 | 826 days ago | 0.15191608 ETH | ||||
| Transfer | 18671110 | 828 days ago | 0.04662202 ETH | ||||
| 0x3d602d80 | 18487110 | 854 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Minimal Proxy Contract for 0x3a5fb753285ac3a67c6b0d03e121921b2a1428be
Contract Name:
Forwarder
Compiler Version
v0.8.19+commit.7dd6d404
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"}]Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.