Address Contract Partially Verified
Address
0xf44224e8Fc98Ecf360337fe1908e446C65e63Ae1
Balance
0 ETH
Nonce
1
Code Size
540 bytes
Creator
0x7142EB34...0fDD at tx 0xdb5b1cc9...424bde
Last Active
Indexed Transactions
20 (10,739,786 → 10,812,163)
Value (indexed)
↓ 2.9825 ETH
Gas Used (indexed)
289,663
Contract Bytecode
540 bytes
0x60806040526004361061004b5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663c0ee0b8a811461004d578063c18cfe86146100c3575b005b34801561005957600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261004b94823573ffffffffffffffffffffffffffffffffffffffff169460248035953695946064949201919081908401838280828437509497506101059650505050505050565b3480156100cf57600080fd5b506100f173ffffffffffffffffffffffffffffffffffffffff6004351661010a565b604080519115158252519081900360200190f35b505050565b60008054604080517f3c18d31800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015291519190921691633c18d31891602480830192602092919082900301818787803b15801561017f57600080fd5b505af1158015610193573d6000803e3d6000fd5b505050506040513d60208110156101a957600080fd5b505160405173ffffffffffffffffffffffffffffffffffffffff90911690600090369080838380828437820191505092505050600060405180830381855af49493505050505600a165627a7a72305820ec90d4e55fb69f839fa555767145d6ac7a8f1aa98ed098b09c220c4a34f02ba10029
Verified Source Code Partial Match
Compiler: v0.4.24+commit.e67f0147
EVM: byzantium
Optimization: Yes (200 runs)
UserWallet.sol 142 lines
pragma solidity ^0.4.24;
contract AbstractSweeper {
function sweepAll(address token) public returns (bool);
function() public { revert(); }
Controller controller;
constructor(address _controller) public {
controller = Controller(_controller);
}
modifier canSweep() {
if(msg.sender != controller.authorizedCaller() && msg.sender != controller.owner()){ revert(); }
if(controller.halted()){ revert(); }
_;
}
}
contract Token {
function balanceOf(address a) public pure returns (uint) {
(a);
return 0;
}
function transfer(address a, uint val) public pure returns (bool) {
(a);
(val);
return false;
}
}
contract DefaultSweeper is AbstractSweeper {
constructor(address controller) AbstractSweeper(controller) public { }
function sweepAll(address _token) public canSweep returns (bool) {
bool success = false;
address destination = controller.destination();
if(_token != address(0)){
Token token = Token(_token);
success = token.transfer(destination, token.balanceOf(this));
}else{
success = destination.send(address(this).balance);
}
return success;
}
}
contract UserWallet {
AbstractSweeperList sweeperList;
constructor(address _sweeperlist) public {
sweeperList = AbstractSweeperList(_sweeperlist);
}
function() public payable { }
function tokenFallback(address _from, uint _value, bytes _data) public pure {
(_from);
(_value);
(_data);
}
function sweepAll(address _token) public returns (bool) {
return sweeperList.sweeperOf(_token).delegatecall(msg.data);
}
}
contract AbstractSweeperList {
function sweeperOf(address _token) public returns (address);
}
contract Controller is AbstractSweeperList {
address public owner;
address public authorizedCaller;
address public destination;
bool public halted;
event NewWalletCreated(address receiver);
modifier onlyOwner() {
if(msg.sender != owner){ revert(); }
_;
}
modifier onlyAuthorizedCaller() {
if(msg.sender != authorizedCaller){ revert(); }
_;
}
modifier onlyAdmins() {
if(msg.sender != authorizedCaller && msg.sender != owner){ revert(); }
_;
}
constructor() public {
owner = msg.sender;
destination = msg.sender;
authorizedCaller = msg.sender;
}
function setAuthorizedCaller(address _newCaller) public onlyOwner {
authorizedCaller = _newCaller;
}
function setDestination(address _dest) public onlyOwner {
destination = _dest;
}
function setOwner(address _owner) public onlyOwner {
owner = _owner;
}
function newWallet() public onlyAdmins returns (address wallet) {
wallet = address(new UserWallet(this));
emit NewWalletCreated(wallet);
}
function halt() public onlyAdmins {
halted = true;
}
function start() public onlyOwner {
halted = false;
}
address public defaultSweeper = address(new DefaultSweeper(this));
mapping (address => address) sweepers;
function addSweeper(address _token, address _sweeper) public onlyOwner {
sweepers[_token] = _sweeper;
}
function sweeperOf(address _token) public returns (address) {
address sweeper = sweepers[_token];
if(sweeper == 0){ sweeper = defaultSweeper; }
return sweeper;
}
}
Read Contract
tokenFallback 0xc0ee0b8a
Write Contract 1 functions
These functions modify contract state and require a wallet transaction to execute.
sweepAll 0xc18cfe86
address _token
returns: bool
Top Interactions
| Address | Txns | Sent | Received |
|---|---|---|---|
| 0xEA674fdD...8ec8 | 7 | 7 | |
| 0x5E38AD84...C422 | 3 | 3 |
Recent Transactions
|
| Hash | Block | Age | From/To | Value | |
|---|---|---|---|---|---|
| 0x4095c30a...7a38d0 | 10,812,163 | IN | 0xEA674fdD...8ec8 | 0.279397 ETH | |
| 0x7b3c5101...b282e4 | 10,805,675 | IN | 0x5E38AD84...C422 | 0 ETH | |
| 0x72a2dc6f...251c8c | 10,805,591 | IN | 0xEA674fdD...8ec8 | 0.413023 ETH | |
| 0x3e2f1385...01ae27 | 10,798,997 | IN | 0xEA674fdD...8ec8 | 0.342659 ETH | |
| 0x8ce8c789...8ca109 | 10,792,240 | IN | 0xEA674fdD...8ec8 | 0.510227 ETH | |
| 0x16d5888b...b9c12d | 10,785,725 | IN | 0xEA674fdD...8ec8 | 0.585692 ETH | |
| 0x615e959b...efbadb | 10,779,516 | IN | 0x5E38AD84...C422 | 0 ETH | |
| 0xe031b257...e38ea0 | 10,779,180 | IN | 0xEA674fdD...8ec8 | 0.587672 ETH | |
| 0x4ea9d999...6acfb3 | 10,740,722 | IN | 0x5E38AD84...C422 | 0 ETH | |
| 0xc917d46a...76df73 | 10,739,786 | IN | 0xEA674fdD...8ec8 | 0.263789 ETH |