Contract 0x8dcd3ec323dae0ef1677136d08f3581731c25efd

 
Ad
Ad
Txn Hash
Block
From
To
Value
0x2618b14653a4f14eeaae125506963767f4cf2b34aa909ad5daf278fd0d892e71121969392021-04-08 4:10:094 days 8 hrs agoBittrex IN  0x8dcd3ec323dae0ef1677136d08f3581731c25efd0 Ether0.005892249091103.400001605
0x4987685d3ddc13c7fd919c34ad820017b604b83aeba8aa4d13fa7ca364bd6c5c121969242021-04-08 4:05:564 days 8 hrs ago0xbbd0d4d067d5af2065b1b6fd936d93237ae1c56c IN  0x8dcd3ec323dae0ef1677136d08f3581731c25efd0.19560801 Ether0.003031344144
0xbb42be6c2499f7412f3541242176ceeee0ec88cb974e671202d994740c8eed20121889882021-04-06 22:51:285 days 13 hrs agoBittrex IN  0x8dcd3ec323dae0ef1677136d08f3581731c25efd0 Ether0.0080844687141.9
0x393c6934c87702f762d6b67489a5cd7df6a7cc1b5353cfa70aefe5b7cec828b7121889662021-04-06 22:46:585 days 13 hrs ago0x389044f3ac7472060a0618116e3624a5f0f20f28 IN  0x8dcd3ec323dae0ef1677136d08f3581731c25efd0.2 Ether0.003599721171
0x993480f1386e3dc13bcbd0149263f50e325f20824863a61df96f66019feff803121823942021-04-05 22:29:086 days 13 hrs agoBittrex IN  0x8dcd3ec323dae0ef1677136d08f3581731c25efd0 Ether0.007520436132
0x088e955ae63ea048e6a01f59697dfd3ff9b917d82b639bcf0d5a2644fa4acbe9121823742021-04-05 22:25:276 days 13 hrs ago0x389044f3ac7472060a0618116e3624a5f0f20f28 IN  0x8dcd3ec323dae0ef1677136d08f3581731c25efd0.1 Ether0.0037512882178.2
[ Download CSV Export 
Latest 4 internal transactions
Parent Txn Hash Block From To Value
0x2618b14653a4f14eeaae125506963767f4cf2b34aa909ad5daf278fd0d892e71121969392021-04-08 4:10:094 days 8 hrs ago 0x8dcd3ec323dae0ef1677136d08f3581731c25efdBittrex0.19560801 Ether
0xbb42be6c2499f7412f3541242176ceeee0ec88cb974e671202d994740c8eed20121889882021-04-06 22:51:285 days 13 hrs ago 0x8dcd3ec323dae0ef1677136d08f3581731c25efdBittrex0.2 Ether
0x993480f1386e3dc13bcbd0149263f50e325f20824863a61df96f66019feff803121823942021-04-05 22:29:086 days 13 hrs ago 0x8dcd3ec323dae0ef1677136d08f3581731c25efdBittrex0.1 Ether
0x05bc7a412a2831fe33f8f813e111f1424ea978f806eeefadac71de8ef811149a54536982018-04-16 23:48:141091 days 12 hrs ago Bittrex: Controller  Contract Creation0 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Similar Match)
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0xd1DD82d1dED8f40c200b89455050E9C18D918504

Contract Name:
UserWallet

Compiler Version
v0.4.11+commit.68ef5810

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *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

[{"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"}]

6060604052341561000c57fe5b60405160208061026c83398101604052515b60008054600160a060020a031916600160a060020a0383161790555b505b6102218061004b6000396000f300606060405236156100495763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416636ea056a98114610052578063c0ee0b8a14610092575b6100505b5b565b005b341561005a57fe5b61007e73ffffffffffffffffffffffffffffffffffffffff60043516602435610104565b604080519115158252519081900360200190f35b341561009a57fe5b604080516020600460443581810135601f810184900484028501840190955284845261005094823573ffffffffffffffffffffffffffffffffffffffff169460248035956064949293919092019181908401838280828437509496506101ef95505050505050565b005b6000805460408051602090810184905281517f3c18d31800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015292519290931692633c18d318926024808301939282900301818787803b151561017b57fe5b6102c65a03f1151561018957fe5b5050506040518051905073ffffffffffffffffffffffffffffffffffffffff1660003660006040516020015260405180838380828437820191505092505050602060405180830381856102c65a03f415156101e057fe5b50506040515190505b92915050565b5b5050505600a165627a7a723058204cdd69fdcf3cf6cbee9677fe380fa5f044048aa9e060ec5619a21ca5a5bd4cd10029000000000000000000000000a3c1e324ca1ce40db73ed6026c4a177f099b5770

Swarm Source

bzzr://4cdd69fdcf3cf6cbee9677fe380fa5f044048aa9e060ec5619a21ca5a5bd4cd1
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.