ETH Price: $3,173.75 (-3.42%)

Contract

0xc2d28a90D1315cc731b7179e97eb29D73af97C5F
 

Overview

ETH Balance

0.011065313877253866 ETH

Eth Value

$35.12 (@ $3,173.75/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer65520952018-10-20 19:46:332215 days ago1540064793IN
0xc2d28a90...73af97C5F
0.0110653 ETH0.000021051
Sweep65092612018-10-13 19:47:592222 days ago1539460079IN
0xc2d28a90...73af97C5F
0 ETH0.0024996550
Transfer65092422018-10-13 19:43:362222 days ago1539459816IN
0xc2d28a90...73af97C5F
0.03134112 ETH0.000021051
Transfer64660042018-10-06 19:41:032229 days ago1538854863IN
0xc2d28a90...73af97C5F
0.03099191 ETH0.000021051
Sweep64231002018-09-29 19:44:082236 days ago1538250248IN
0xc2d28a90...73af97C5F
0 ETH0.0024996550
Transfer64230702018-09-29 19:37:252236 days ago1538249845IN
0xc2d28a90...73af97C5F
0.01002116 ETH0.000021051
Transfer62107352018-08-25 11:31:362272 days ago1535196696IN
0xc2d28a90...73af97C5F
0.0100001 ETH0.000021051
Transfer60258962018-07-25 6:06:192303 days ago1532498779IN
0xc2d28a90...73af97C5F
0.01191918 ETH0.000021051
Transfer59848302018-07-18 6:08:492310 days ago1531894129IN
0xc2d28a90...73af97C5F
0.023805 ETH0.000021051
Sweep59431902018-07-11 6:09:352317 days ago1531289375IN
0xc2d28a90...73af97C5F
0 ETH0.0049993100
Transfer59431692018-07-11 6:03:572317 days ago1531289037IN
0xc2d28a90...73af97C5F
0.02494559 ETH0.000021051
Transfer59025312018-07-04 5:58:092324 days ago1530683889IN
0xc2d28a90...73af97C5F
0.01783056 ETH0.000021051
Transfer58616452018-06-27 5:57:462331 days ago1530079066IN
0xc2d28a90...73af97C5F
0.02501793 ETH0.000021051
Sweep58209762018-06-20 6:01:512338 days ago1529474511IN
0xc2d28a90...73af97C5F
0 ETH0.0024996550
Transfer58209372018-06-20 5:53:492338 days ago1529474029IN
0xc2d28a90...73af97C5F
0.02708633 ETH0.000021051
Transfer57800262018-06-13 5:47:292345 days ago1528868849IN
0xc2d28a90...73af97C5F
0.03122268 ETH0.000021051
Sweep57404732018-06-06 5:46:082352 days ago1528263968IN
0xc2d28a90...73af97C5F
0 ETH0.0024996550
Transfer57404582018-06-06 5:42:222352 days ago1528263742IN
0xc2d28a90...73af97C5F
0.01278685 ETH0.000021051
Transfer57010542018-05-30 5:40:242359 days ago1527658824IN
0xc2d28a90...73af97C5F
0.01000954 ETH0.000021051
Transfer56411492018-05-19 15:20:232369 days ago1526743223IN
0xc2d28a90...73af97C5F
0.03016066 ETH0.000021051
Sweep56014392018-05-12 15:31:482376 days ago1526139108IN
0xc2d28a90...73af97C5F
0 ETH0.0024996550
Transfer56013972018-05-12 15:21:452376 days ago1526138505IN
0xc2d28a90...73af97C5F
0.03064225 ETH0.000021051
Transfer55611332018-05-05 15:15:522383 days ago1525533352IN
0xc2d28a90...73af97C5F
0.03168248 ETH0.000021051
Sweep55212892018-04-28 15:32:002390 days ago1524929520IN
0xc2d28a90...73af97C5F
0 ETH0.0024996550
Transfer55212202018-04-28 15:13:272390 days ago1524928407IN
0xc2d28a90...73af97C5F
0.02961838 ETH0.000021051
View all transactions

Latest 19 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
65092612018-10-13 19:47:592222 days ago1539460079
0xc2d28a90...73af97C5F
0.06233304 ETH
64231002018-09-29 19:44:082236 days ago1538250248
0xc2d28a90...73af97C5F
0.05574546 ETH
59431902018-07-11 6:09:352317 days ago1531289375
0xc2d28a90...73af97C5F
0.0677941 ETH
58209762018-06-20 6:01:512338 days ago1529474511
0xc2d28a90...73af97C5F
0.05830903 ETH
57404732018-06-06 5:46:082352 days ago1528263968
0xc2d28a90...73af97C5F
0.05295706 ETH
56014392018-05-12 15:31:482376 days ago1526139108
0xc2d28a90...73af97C5F
0.06232474 ETH
55212892018-04-28 15:32:002390 days ago1524929520
0xc2d28a90...73af97C5F
0.07207167 ETH
53978392018-04-07 15:09:222411 days ago1523113762
0xc2d28a90...73af97C5F
0.05717891 ETH
53137522018-03-24 14:58:012425 days ago1521903481
0xc2d28a90...73af97C5F
0.0608096 ETH
52308432018-03-10 14:51:322439 days ago1520693492
0xc2d28a90...73af97C5F
0.05239811 ETH
51484202018-02-24 14:54:552453 days ago1519484095
0xc2d28a90...73af97C5F
0.05798503 ETH
50654502018-02-10 14:38:042467 days ago1518273484
0xc2d28a90...73af97C5F
0.06232402 ETH
49823642018-01-27 14:33:092481 days ago1517063589
0xc2d28a90...73af97C5F
0.08516787 ETH
49019992018-01-13 14:30:402495 days ago1515853840
0xc2d28a90...73af97C5F
0.0500369 ETH
48649572018-01-06 18:54:552502 days ago1515264895
0xc2d28a90...73af97C5F
0.05000459 ETH
48274222017-12-31 2:30:562509 days ago1514687456
0xc2d28a90...73af97C5F
0.05003799 ETH
47894112017-12-24 16:34:392515 days ago1514133279
0xc2d28a90...73af97C5F
0.05000461 ETH
47558912017-12-18 19:07:452521 days ago1513624065
0xc2d28a90...73af97C5F
0.09590097 ETH
46118272017-11-24 7:19:292546 days ago1511507969  Contract Creation0 ETH
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
/**
 *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"}]

Deployed Bytecode

0x606060405236156100495763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416636ea056a98114610052578063c0ee0b8a14610092575b6100505b5b565b005b341561005a57fe5b61007e73ffffffffffffffffffffffffffffffffffffffff60043516602435610104565b604080519115158252519081900360200190f35b341561009a57fe5b604080516020600460443581810135601f810184900484028501840190955284845261005094823573ffffffffffffffffffffffffffffffffffffffff169460248035956064949293919092019181908401838280828437509496506101ef95505050505050565b005b6000805460408051602090810184905281517f3c18d31800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015292519290931692633c18d318926024808301939282900301818787803b151561017b57fe5b6102c65a03f1151561018957fe5b5050506040518051905073ffffffffffffffffffffffffffffffffffffffff1660003660006040516020015260405180838380828437820191505092505050602060405180830381856102c65a03f415156101e057fe5b50506040515190505b92915050565b5b5050505600a165627a7a723058204cdd69fdcf3cf6cbee9677fe380fa5f044048aa9e060ec5619a21ca5a5bd4cd10029

Swarm Source

bzzr://4cdd69fdcf3cf6cbee9677fe380fa5f044048aa9e060ec5619a21ca5a5bd4cd1

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.