ETH Price: $2,126.69 (+2.70%)

Contract

0x37B68D8C847F70F2d1CFa3dE3a142EB2B47015BF
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Sweep55133702018-04-27 6:27:372877 days ago1524810457IN
0x37B68D8C...2B47015BF
0 ETH0.0025028550
Transfer55133542018-04-27 6:22:402877 days ago1524810160IN
0x37B68D8C...2B47015BF
55 ETH0.0010525550
Sweep52532262018-03-14 10:11:042921 days ago1521022264IN
0x37B68D8C...2B47015BF
0 ETH0.0025028550
Transfer52531862018-03-14 9:59:362921 days ago1521021576IN
0x37B68D8C...2B47015BF
32 ETH0.0010525550
Sweep52520352018-03-14 5:24:312921 days ago1521005071IN
0x37B68D8C...2B47015BF
0 ETH0.0025028550
Transfer52520102018-03-14 5:18:582921 days ago1521004738IN
0x37B68D8C...2B47015BF
30 ETH0.0010525550
Sweep52518442018-03-14 4:37:372921 days ago1521002257IN
0x37B68D8C...2B47015BF
0 ETH0.0025028550
Transfer52518032018-03-14 4:28:042921 days ago1521001684IN
0x37B68D8C...2B47015BF
60 ETH0.0010525550
Sweep52517032018-03-14 4:01:282921 days ago1521000088IN
0x37B68D8C...2B47015BF
0 ETH0.0025028550
Transfer52516722018-03-14 3:53:142921 days ago1520999594IN
0x37B68D8C...2B47015BF
50 ETH0.0008630941
Transfer52516682018-03-14 3:52:312921 days ago1520999551IN
0x37B68D8C...2B47015BF
60 ETH0.0008630941
Transfer52516642018-03-14 3:52:032921 days ago1520999523IN
0x37B68D8C...2B47015BF
50 ETH0.0008630941
Sweep52337902018-03-11 2:53:322924 days ago1520736812IN
0x37B68D8C...2B47015BF
0 ETH0.0025028550
Transfer52337812018-03-11 2:52:022924 days ago1520736722IN
0x37B68D8C...2B47015BF
75 ETH0.0008630941
Sweep52337792018-03-11 2:51:192924 days ago1520736679IN
0x37B68D8C...2B47015BF
0 ETH0.0025028550
Transfer52337732018-03-11 2:50:092924 days ago1520736609IN
0x37B68D8C...2B47015BF
50 ETH0.0008630941
Transfer52337702018-03-11 2:49:232924 days ago1520736563IN
0x37B68D8C...2B47015BF
50 ETH0.0008630941
Sweep52337662018-03-11 2:48:422924 days ago1520736522IN
0x37B68D8C...2B47015BF
0 ETH0.0025028550
Transfer52337622018-03-11 2:48:162924 days ago1520736496IN
0x37B68D8C...2B47015BF
50 ETH0.0008630941
Sweep52337552018-03-11 2:46:252924 days ago1520736385IN
0x37B68D8C...2B47015BF
0 ETH0.0025028550
Transfer52337472018-03-11 2:43:562924 days ago1520736236IN
0x37B68D8C...2B47015BF
50 ETH0.0008630941
Transfer52337422018-03-11 2:42:342924 days ago1520736154IN
0x37B68D8C...2B47015BF
50 ETH0.0008630941
Sweep52337402018-03-11 2:42:162924 days ago1520736136IN
0x37B68D8C...2B47015BF
0 ETH0.0025028550
Transfer52337312018-03-11 2:40:222924 days ago1520736022IN
0x37B68D8C...2B47015BF
50 ETH0.0008630941
Sweep52337292018-03-11 2:39:562924 days ago1520735996IN
0x37B68D8C...2B47015BF
0 ETH0.0025028550
View all transactions

Latest 16 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer55133702018-04-27 6:27:372877 days ago1524810457
0x37B68D8C...2B47015BF
55 ETH
Transfer52532262018-03-14 10:11:042921 days ago1521022264
0x37B68D8C...2B47015BF
32 ETH
Transfer52520352018-03-14 5:24:312921 days ago1521005071
0x37B68D8C...2B47015BF
30 ETH
Transfer52518442018-03-14 4:37:372921 days ago1521002257
0x37B68D8C...2B47015BF
60 ETH
Transfer52517032018-03-14 4:01:282921 days ago1521000088
0x37B68D8C...2B47015BF
160 ETH
Transfer52337902018-03-11 2:53:322924 days ago1520736812
0x37B68D8C...2B47015BF
75 ETH
Transfer52337792018-03-11 2:51:192924 days ago1520736679
0x37B68D8C...2B47015BF
100 ETH
Transfer52337662018-03-11 2:48:422924 days ago1520736522
0x37B68D8C...2B47015BF
50 ETH
Transfer52337552018-03-11 2:46:252924 days ago1520736385
0x37B68D8C...2B47015BF
100 ETH
Transfer52337402018-03-11 2:42:162924 days ago1520736136
0x37B68D8C...2B47015BF
100 ETH
Transfer52337292018-03-11 2:39:562924 days ago1520735996
0x37B68D8C...2B47015BF
50 ETH
Transfer52321142018-03-10 20:13:082924 days ago1520712788
0x37B68D8C...2B47015BF
20 ETH
Transfer52315952018-03-10 17:51:372924 days ago1520704297
0x37B68D8C...2B47015BF
9 ETH
Transfer52312972018-03-10 16:37:182924 days ago1520699838
0x37B68D8C...2B47015BF
140 ETH
Transfer51899572018-03-03 16:23:412931 days ago1520094221
0x37B68D8C...2B47015BF
12 ETH
Transfer49601682018-01-23 21:00:022970 days ago1516741202  Contract Creation0 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xd1DD82d1...18D918504
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
UserWallet

Compiler Version
v0.4.11+commit.68ef5810

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2017-08-15
*/

pragma solidity ^0.4.10;

// Copyright 2017 Bittrex

contract AbstractSweeper {
    function sweep(address token, uint amount) returns (bool);

    function () { throw; }

    Controller controller;

    function AbstractSweeper(address _controller) {
        controller = Controller(_controller);
    }

    modifier canSweep() {
        if (msg.sender != controller.authorizedCaller() && msg.sender != controller.owner()) throw;
        if (controller.halted()) throw;
        _;
    }
}

contract Token {
    function balanceOf(address a) returns (uint) {
        (a);
        return 0;
    }

    function transfer(address a, uint val) returns (bool) {
        (a);
        (val);
        return false;
    }
}

contract DefaultSweeper is AbstractSweeper {
    function DefaultSweeper(address controller)
             AbstractSweeper(controller) {}

    function sweep(address _token, uint _amount)
    canSweep
    returns (bool) {
        bool success = false;
        address destination = controller.destination();

        if (_token != address(0)) {
            Token token = Token(_token);
            uint amount = _amount;
            if (amount > token.balanceOf(this)) {
                return false;
            }

            success = token.transfer(destination, amount);
        }
        else {
            uint amountInWei = _amount;
            if (amountInWei > this.balance) {
                return false;
            }

            success = destination.send(amountInWei);
        }

        if (success) {
            controller.logSweep(this, destination, _token, _amount);
        }
        return success;
    }
}

contract UserWallet {
    AbstractSweeperList sweeperList;
    function UserWallet(address _sweeperlist) {
        sweeperList = AbstractSweeperList(_sweeperlist);
    }

    function () public payable { }

    function tokenFallback(address _from, uint _value, bytes _data) {
        (_from);
        (_value);
        (_data);
     }

    function sweep(address _token, uint _amount)
    returns (bool) {
        (_amount);
        return sweeperList.sweeperOf(_token).delegatecall(msg.data);
    }
}

contract AbstractSweeperList {
    function sweeperOf(address _token) returns (address);
}

contract Controller is AbstractSweeperList {
    address public owner;
    address public authorizedCaller;

    address public destination;

    bool public halted;

    event LogNewWallet(address receiver);
    event LogSweep(address indexed from, address indexed to, address indexed token, uint amount);
    
    modifier onlyOwner() {
        if (msg.sender != owner) throw; 
        _;
    }

    modifier onlyAuthorizedCaller() {
        if (msg.sender != authorizedCaller) throw; 
        _;
    }

    modifier onlyAdmins() {
        if (msg.sender != authorizedCaller && msg.sender != owner) throw; 
        _;
    }

    function Controller() 
    {
        owner = msg.sender;
        destination = msg.sender;
        authorizedCaller = msg.sender;
    }

    function changeAuthorizedCaller(address _newCaller) onlyOwner {
        authorizedCaller = _newCaller;
    }

    function changeDestination(address _dest) onlyOwner {
        destination = _dest;
    }

    function changeOwner(address _owner) onlyOwner {
        owner = _owner;
    }

    function makeWallet() onlyAdmins returns (address wallet)  {
        wallet = address(new UserWallet(this));
        LogNewWallet(wallet);
    }

    function halt() onlyAdmins {
        halted = true;
    }

    function start() onlyOwner {
        halted = false;
    }

    address public defaultSweeper = address(new DefaultSweeper(this));
    mapping (address => address) sweepers;

    function addSweeper(address _token, address _sweeper) onlyOwner {
        sweepers[_token] = _sweeper;
    }

    function sweeperOf(address _token) returns (address) {
        address sweeper = sweepers[_token];
        if (sweeper == 0) sweeper = defaultSweeper;
        return sweeper;
    }

    function logSweep(address from, address to, address token, uint amount) {
        LogSweep(from, to, token, amount);
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_amount","type":"uint256"}],"name":"sweep","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"tokenFallback","outputs":[],"payable":false,"type":"function"},{"inputs":[{"name":"_sweeperlist","type":"address"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"}]

0x6060604052341561000c57fe5b60405160208061026c83398101604052515b60008054600160a060020a031916600160a060020a0383161790555b505b6102218061004b6000396000f300606060405236156100495763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416636ea056a98114610052578063c0ee0b8a14610092575b6100505b5b565b005b341561005a57fe5b61007e73ffffffffffffffffffffffffffffffffffffffff60043516602435610104565b604080519115158252519081900360200190f35b341561009a57fe5b604080516020600460443581810135601f810184900484028501840190955284845261005094823573ffffffffffffffffffffffffffffffffffffffff169460248035956064949293919092019181908401838280828437509496506101ef95505050505050565b005b6000805460408051602090810184905281517f3c18d31800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015292519290931692633c18d318926024808301939282900301818787803b151561017b57fe5b6102c65a03f1151561018957fe5b5050506040518051905073ffffffffffffffffffffffffffffffffffffffff1660003660006040516020015260405180838380828437820191505092505050602060405180830381856102c65a03f415156101e057fe5b50506040515190505b92915050565b5b5050505600a165627a7a723058204cdd69fdcf3cf6cbee9677fe380fa5f044048aa9e060ec5619a21ca5a5bd4cd10029000000000000000000000000a3c1e324ca1ce40db73ed6026c4a177f099b5770

Deployed Bytecode

0x606060405236156100495763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416636ea056a98114610052578063c0ee0b8a14610092575b6100505b5b565b005b341561005a57fe5b61007e73ffffffffffffffffffffffffffffffffffffffff60043516602435610104565b604080519115158252519081900360200190f35b341561009a57fe5b604080516020600460443581810135601f810184900484028501840190955284845261005094823573ffffffffffffffffffffffffffffffffffffffff169460248035956064949293919092019181908401838280828437509496506101ef95505050505050565b005b6000805460408051602090810184905281517f3c18d31800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015292519290931692633c18d318926024808301939282900301818787803b151561017b57fe5b6102c65a03f1151561018957fe5b5050506040518051905073ffffffffffffffffffffffffffffffffffffffff1660003660006040516020015260405180838380828437820191505092505050602060405180830381856102c65a03f415156101e057fe5b50506040515190505b92915050565b5b5050505600a165627a7a723058204cdd69fdcf3cf6cbee9677fe380fa5f044048aa9e060ec5619a21ca5a5bd4cd10029

Swarm Source

bzzr://4cdd69fdcf3cf6cbee9677fe380fa5f044048aa9e060ec5619a21ca5a5bd4cd1

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
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.