ETH Price: $2,074.01 (+0.16%)

Contract

0xe0BdD9220EbD91E82014fD68bC6c1D3FA4b9b2fb
 

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
Transfer65514562018-10-20 17:11:222718 days ago1540055482IN
0xe0BdD922...FA4b9b2fb
0.48 ETH0.0001055
Sweep43103992017-09-25 12:39:083109 days ago1506343148IN
0xe0BdD922...FA4b9b2fb
0 ETH0.0024070951
Sweep42781702017-09-15 22:25:583118 days ago1505514358IN
0xe0BdD922...FA4b9b2fb
0 ETH0.0024103651
Sweep42610532017-09-11 3:53:143123 days ago1505101994IN
0xe0BdD922...FA4b9b2fb
0 ETH0.0024070951
Sweep42550222017-09-09 11:12:063125 days ago1504955526IN
0xe0BdD922...FA4b9b2fb
0 ETH0.0024103651
Sweep42460192017-09-06 22:30:073127 days ago1504737007IN
0xe0BdD922...FA4b9b2fb
0 ETH0.002516753.25
Sweep42459932017-09-06 22:19:283127 days ago1504736368IN
0xe0BdD922...FA4b9b2fb
0 ETH0.002516753.25
Sweep42447232017-09-06 14:06:383128 days ago1504706798IN
0xe0BdD922...FA4b9b2fb
0 ETH0.002516753.25
Sweep42444692017-09-06 12:24:063128 days ago1504700646IN
0xe0BdD922...FA4b9b2fb
0 ETH0.002516753.25
Sweep42399652017-09-05 5:21:553129 days ago1504588915IN
0xe0BdD922...FA4b9b2fb
0 ETH0.0024103651
Sweep42393932017-09-05 1:37:253129 days ago1504575445IN
0xe0BdD922...FA4b9b2fb
0 ETH0.0024103651
Sweep42384592017-09-04 19:07:483129 days ago1504552068IN
0xe0BdD922...FA4b9b2fb
0 ETH0.0024070951
Sweep42378132017-09-04 14:38:003129 days ago1504535880IN
0xe0BdD922...FA4b9b2fb
0 ETH0.0024070951
Sweep42375142017-09-04 12:41:163130 days ago1504528876IN
0xe0BdD922...FA4b9b2fb
0 ETH0.0024103651
Sweep42373682017-09-04 11:38:503130 days ago1504525130IN
0xe0BdD922...FA4b9b2fb
0 ETH0.0024070951
Sweep42372842017-09-04 11:07:473130 days ago1504523267IN
0xe0BdD922...FA4b9b2fb
0 ETH0.0024103651
Sweep42370732017-09-04 9:32:083130 days ago1504517528IN
0xe0BdD922...FA4b9b2fb
0 ETH0.0024103651
Sweep42368732017-09-04 8:12:293130 days ago1504512749IN
0xe0BdD922...FA4b9b2fb
0 ETH0.0024103651
Sweep42368042017-09-04 7:47:243130 days ago1504511244IN
0xe0BdD922...FA4b9b2fb
0 ETH0.0024070951
Sweep42282992017-09-01 22:13:263132 days ago1504304006IN
0xe0BdD922...FA4b9b2fb
0 ETH0.0020549943.48094758
Sweep42281462017-09-01 21:01:393132 days ago1504299699IN
0xe0BdD922...FA4b9b2fb
0 ETH0.0020522143.48094758
Sweep42280642017-09-01 20:26:313132 days ago1504297591IN
0xe0BdD922...FA4b9b2fb
0 ETH0.0020522143.48094758
Sweep42280012017-09-01 19:58:373132 days ago1504295917IN
0xe0BdD922...FA4b9b2fb
0 ETH0.0020522143.48094758
Sweep42230552017-08-31 10:12:403134 days ago1504174360IN
0xe0BdD922...FA4b9b2fb
0 ETH0.0017432136.93403092
Sweep42175312017-08-29 20:42:493135 days ago1504039369IN
0xe0BdD922...FA4b9b2fb
0 ETH0.0015575333.000002
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer41851742017-08-21 8:33:593144 days ago1503304439  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.