ETH Price: $1,982.24 (-2.89%)
 

Overview

ETH Balance

0.000000009 ETH

Eth Value

Less Than $0.01 (@ $1,982.24/ETH)

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Sweep52983442018-03-22 1:28:022903 days ago1521682082IN
0xe5af3bE2...6310AaA65
0 ETH0.0025028550
Transfer52983202018-03-22 1:23:532903 days ago1521681833IN
0xe5af3bE2...6310AaA65
1.258409 ETH0.0004420721
Transfer52983102018-03-22 1:19:292903 days ago1521681569IN
0xe5af3bE2...6310AaA65
1.259 ETH0.00044121
Sweep51878362018-03-03 7:51:162922 days ago1520063476IN
0xe5af3bE2...6310AaA65
0 ETH0.0025028550
Transfer51877952018-03-03 7:38:382922 days ago1520062718IN
0xe5af3bE2...6310AaA65
0.64889685 ETH0.0004420721
Sweep51306532018-02-21 14:24:192932 days ago1519223059IN
0xe5af3bE2...6310AaA65
0 ETH0.0024996550
Transfer51306052018-02-21 14:10:522932 days ago1519222252IN
0xe5af3bE2...6310AaA65
0.58992 ETH0.0004420721
Sweep51298512018-02-21 11:05:562932 days ago1519211156IN
0xe5af3bE2...6310AaA65
0 ETH0.0025028550
Transfer51298042018-02-21 10:55:352932 days ago1519210535IN
0xe5af3bE2...6310AaA65
0.26735447 ETH0.0021051100
Sweep49494862018-01-22 1:18:532962 days ago1516583933IN
0xe5af3bE2...6310AaA65
0 ETH0.0045051390
Transfer49494582018-01-22 1:11:292962 days ago1516583489IN
0xe5af3bE2...6310AaA65
1.0010995 ETH0.0012630660
Sweep49150552018-01-15 23:41:202968 days ago1516059680IN
0xe5af3bE2...6310AaA65
0 ETH0.0045051390
Transfer49150232018-01-15 23:32:542968 days ago1516059174IN
0xe5af3bE2...6310AaA65
0.80430798 ETH0.0004420721
Sweep48421872018-01-02 14:53:322982 days ago1514904812IN
0xe5af3bE2...6310AaA65
0 ETH0.0025496451
Transfer48421492018-01-02 14:44:162982 days ago1514904256IN
0xe5af3bE2...6310AaA65
0.06698101 ETH0.0010525550
Sweep47544122017-12-18 12:40:512997 days ago1513600851IN
0xe5af3bE2...6310AaA65
0 ETH0.002552951
Transfer47543402017-12-18 12:23:422997 days ago1513599822IN
0xe5af3bE2...6310AaA65
0.29440223 ETH0.0010525550

Latest 9 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer52983442018-03-22 1:28:022903 days ago1521682082
0xe5af3bE2...6310AaA65
1.258409 ETH
Transfer51878362018-03-03 7:51:162922 days ago1520063476
0xe5af3bE2...6310AaA65
0.64889685 ETH
Transfer51306532018-02-21 14:24:192932 days ago1519223059
0xe5af3bE2...6310AaA65
0.58992 ETH
Transfer51298512018-02-21 11:05:562932 days ago1519211156
0xe5af3bE2...6310AaA65
0.26735447 ETH
Transfer49494862018-01-22 1:18:532962 days ago1516583933
0xe5af3bE2...6310AaA65
1.0010995 ETH
Transfer49150552018-01-15 23:41:202968 days ago1516059680
0xe5af3bE2...6310AaA65
0.80430798 ETH
Transfer48421872018-01-02 14:53:322982 days ago1514904812
0xe5af3bE2...6310AaA65
0.06698101 ETH
Transfer47544122017-12-18 12:40:512997 days ago1513600851
0xe5af3bE2...6310AaA65
0.29440223 ETH
Transfer47458772017-12-17 1:43:412998 days ago1513475021  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.