ETH Price: $2,559.35 (-0.03%)

Contract

0xAA9486Ec972EdB14DDAbEc6D17e07536C2c53E0d
 

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Sweep71606582019-02-01 22:19:312058 days ago1549059571IN
0xAA9486Ec...6C2c53E0d
0 ETH0.0030478550
Sweep71605742019-02-01 21:53:052058 days ago1549057985IN
0xAA9486Ec...6C2c53E0d
0 ETH0.0030478550
Sweep63372652018-09-15 16:35:152197 days ago1537029315IN
0xAA9486Ec...6C2c53E0d
0 ETH0.006080850
Sweep63096962018-09-11 3:05:212202 days ago1536635121IN
0xAA9486Ec...6C2c53E0d
0 ETH0.006080850
Sweep62953992018-09-08 17:20:292204 days ago1536427229IN
0xAA9486Ec...6C2c53E0d
0 ETH0.0030478550
Sweep62897172018-09-07 18:25:432205 days ago1536344743IN
0xAA9486Ec...6C2c53E0d
0 ETH0.0030478550
Sweep62792672018-09-06 0:32:312207 days ago1536193951IN
0xAA9486Ec...6C2c53E0d
0 ETH0.0030478550
Sweep62728862018-09-04 22:50:382208 days ago1536101438IN
0xAA9486Ec...6C2c53E0d
0 ETH0.0030478550
Sweep62706332018-09-04 13:52:362209 days ago1536069156IN
0xAA9486Ec...6C2c53E0d
0 ETH0.0030478550
Sweep62352882018-08-29 15:00:462215 days ago1535554846IN
0xAA9486Ec...6C2c53E0d
0 ETH0.0031425550
Sweep62351362018-08-29 14:26:022215 days ago1535552762IN
0xAA9486Ec...6C2c53E0d
0 ETH0.0024996550
Sweep62351242018-08-29 14:23:522215 days ago1535552632IN
0xAA9486Ec...6C2c53E0d
0 ETH0.0031425550
Transfer62351112018-08-29 14:19:572215 days ago1535552397IN
0xAA9486Ec...6C2c53E0d
3 ETH0.00012636
Sweep59983812018-07-20 13:57:372255 days ago1532095057IN
0xAA9486Ec...6C2c53E0d
0 ETH0.0049993100
Transfer59983492018-07-20 13:48:302255 days ago1532094510IN
0xAA9486Ec...6C2c53E0d
1 ETH0.0002105110
Sweep59882852018-07-18 20:31:512256 days ago1531945911IN
0xAA9486Ec...6C2c53E0d
0 ETH0.0060957100
Sweep59770842018-07-16 22:16:032258 days ago1531779363IN
0xAA9486Ec...6C2c53E0d
0 ETH0.0049993100
Transfer59770522018-07-16 22:08:552258 days ago1531778935IN
0xAA9486Ec...6C2c53E0d
4 ETH0.0002105110
Sweep59641282018-07-14 18:01:192260 days ago1531591279IN
0xAA9486Ec...6C2c53E0d
0 ETH0.0049993100
Transfer59640952018-07-14 17:52:192260 days ago1531590739IN
0xAA9486Ec...6C2c53E0d
4 ETH0.0008420440
Sweep59535202018-07-12 23:31:482262 days ago1531438308IN
0xAA9486Ec...6C2c53E0d
0 ETH0.0061897100
Sweep59431052018-07-11 5:51:302264 days ago1531288290IN
0xAA9486Ec...6C2c53E0d
0 ETH0.0049993100
Transfer59430782018-07-11 5:43:492264 days ago1531287829IN
0xAA9486Ec...6C2c53E0d
4 ETH0.00012636
Sweep59429322018-07-11 5:06:372264 days ago1531285597IN
0xAA9486Ec...6C2c53E0d
0 ETH0.0049993100
Transfer59429102018-07-11 5:02:072264 days ago1531285327IN
0xAA9486Ec...6C2c53E0d
3.22 ETH0.000172618.2
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
62351362018-08-29 14:26:022215 days ago1535552762
0xAA9486Ec...6C2c53E0d
3 ETH
59983812018-07-20 13:57:372255 days ago1532095057
0xAA9486Ec...6C2c53E0d
1 ETH
59770842018-07-16 22:16:032258 days ago1531779363
0xAA9486Ec...6C2c53E0d
4 ETH
59641282018-07-14 18:01:192260 days ago1531591279
0xAA9486Ec...6C2c53E0d
4 ETH
59431052018-07-11 5:51:302264 days ago1531288290
0xAA9486Ec...6C2c53E0d
4 ETH
59429322018-07-11 5:06:372264 days ago1531285597
0xAA9486Ec...6C2c53E0d
3.22 ETH
59427992018-07-11 4:34:512264 days ago1531283691
0xAA9486Ec...6C2c53E0d
4 ETH
58512412018-06-25 10:20:462280 days ago1529922046
0xAA9486Ec...6C2c53E0d
4 ETH
58510372018-06-25 9:28:322280 days ago1529918912
0xAA9486Ec...6C2c53E0d
4 ETH
58165872018-06-19 11:56:292286 days ago1529409389
0xAA9486Ec...6C2c53E0d
4 ETH
58164612018-06-19 11:22:472286 days ago1529407367
0xAA9486Ec...6C2c53E0d
4 ETH
57257732018-06-03 15:14:512302 days ago1528038891
0xAA9486Ec...6C2c53E0d
5 ETH
57094562018-05-31 17:34:302304 days ago1527788070
0xAA9486Ec...6C2c53E0d
4 ETH
57089482018-05-31 15:22:552304 days ago1527780175
0xAA9486Ec...6C2c53E0d
4 ETH
56905602018-05-28 9:12:252308 days ago1527498745
0xAA9486Ec...6C2c53E0d
4 ETH
56735672018-05-25 9:09:492311 days ago1527239389
0xAA9486Ec...6C2c53E0d
5 ETH
56632822018-05-23 13:34:042313 days ago1527082444
0xAA9486Ec...6C2c53E0d
2 ETH
56381442018-05-19 2:13:192317 days ago1526695999
0xAA9486Ec...6C2c53E0d
4 ETH
56303762018-05-17 17:18:502318 days ago1526577530
0xAA9486Ec...6C2c53E0d
5 ETH
56261722018-05-16 23:36:532319 days ago1526513813
0xAA9486Ec...6C2c53E0d
5 ETH
55802852018-05-08 22:45:152327 days ago1525819515
0xAA9486Ec...6C2c53E0d
4 ETH
55753392018-05-08 1:57:462328 days ago1525744666
0xAA9486Ec...6C2c53E0d
5 ETH
55749012018-05-08 0:12:442328 days ago1525738364
0xAA9486Ec...6C2c53E0d
5 ETH
55748272018-05-07 23:53:462328 days ago1525737226
0xAA9486Ec...6C2c53E0d
4 ETH
55611902018-05-05 15:30:142330 days ago1525534214
0xAA9486Ec...6C2c53E0d
5 ETH
View All Internal Transactions
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.