ETH Price: $2,048.48 (-4.12%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Sweep64681592018-10-07 4:09:232734 days ago1538885363IN
0xcD4d1d3C...e0E17C53d
0 ETH0.0023288550
Sweep64681532018-10-07 4:08:252734 days ago1538885305IN
0xcD4d1d3C...e0E17C53d
0 ETH0.0023288550
Sweep64309662018-10-01 2:44:212740 days ago1538361861IN
0xcD4d1d3C...e0E17C53d
0 ETH0.003374950
Sweep64002102018-09-26 1:32:202745 days ago1537925540IN
0xcD4d1d3C...e0E17C53d
0 ETH0.0023256550
Sweep63695622018-09-21 0:44:172750 days ago1537490657IN
0xcD4d1d3C...e0E17C53d
0 ETH0.002381850
Sweep63410032018-09-16 7:30:422755 days ago1537083042IN
0xcD4d1d3C...e0E17C53d
0 ETH0.0023618550
Sweep63392552018-09-16 0:36:052755 days ago1537058165IN
0xcD4d1d3C...e0E17C53d
0 ETH0.0023618550
Sweep62990262018-09-09 8:18:272762 days ago1536481107IN
0xcD4d1d3C...e0E17C53d
0 ETH0.0023598550
Sweep62988822018-09-09 7:43:242762 days ago1536479004IN
0xcD4d1d3C...e0E17C53d
0 ETH0.0023598550
Sweep61075592018-08-08 0:49:162794 days ago1533689356IN
0xcD4d1d3C...e0E17C53d
0 ETH0.0047133100
Sweep60429562018-07-28 3:23:422805 days ago1532748222IN
0xcD4d1d3C...e0E17C53d
0 ETH0.0047173100
Sweep60197412018-07-24 4:40:252809 days ago1532407225IN
0xcD4d1d3C...e0E17C53d
0 ETH0.0047173100
Sweep60193712018-07-24 3:07:252809 days ago1532401645IN
0xcD4d1d3C...e0E17C53d
0 ETH0.0047173100
Sweep59030542018-07-04 8:08:402829 days ago1530691720IN
0xcD4d1d3C...e0E17C53d
0 ETH0.0047197100
Sweep59030182018-07-04 7:59:232829 days ago1530691163IN
0xcD4d1d3C...e0E17C53d
0 ETH0.0047197100
Sweep59027782018-07-04 6:59:082829 days ago1530687548IN
0xcD4d1d3C...e0E17C53d
0 ETH0.0047197100
Sweep58229492018-06-20 14:23:452842 days ago1529504625IN
0xcD4d1d3C...e0E17C53d
0 ETH0.0023598550
Sweep56239892018-05-16 14:21:152877 days ago1526480475IN
0xcD4d1d3C...e0E17C53d
0 ETH0.0023321550
Sweep56160782018-05-15 5:00:352879 days ago1526360435IN
0xcD4d1d3C...e0E17C53d
0 ETH0.0023289550
Sweep55501112018-05-03 16:42:392890 days ago1525365759IN
0xcD4d1d3C...e0E17C53d
0 ETH0.0009341420
Sweep55487982018-05-03 11:09:222890 days ago1525345762IN
0xcD4d1d3C...e0E17C53d
0 ETH0.0030821550
Sweep55463462018-05-03 0:41:392891 days ago1525308099IN
0xcD4d1d3C...e0E17C53d
0 ETH0.0023353550
Sweep55459902018-05-02 23:08:192891 days ago1525302499IN
0xcD4d1d3C...e0E17C53d
0 ETH0.0023385550
Sweep55456972018-05-02 21:54:562891 days ago1525298096IN
0xcD4d1d3C...e0E17C53d
0 ETH0.0023353550
Sweep55456182018-05-02 21:34:152891 days ago1525296855IN
0xcD4d1d3C...e0E17C53d
0 ETH0.0023321550
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer49544962018-01-22 21:49:132991 days ago1516657753  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.