ETH Price: $2,068.02 (-5.28%)

Contract

0xca2569E93B2C9Ec60D2a560007E6B6052F8A0A8e
 

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
Sweep100329782020-05-09 15:58:242146 days ago1589039904IN
0xca2569E9...52F8A0A8e
0 ETH0.0012539322
Transfer100329562020-05-09 15:53:042146 days ago1589039584IN
0xca2569E9...52F8A0A8e
23.39473515 ETH0.0003368116
Sweep52316382018-03-10 18:04:452937 days ago1520705085IN
0xca2569E9...52F8A0A8e
0 ETH0.0025028550
Transfer52316132018-03-10 17:57:282937 days ago1520704648IN
0xca2569E9...52F8A0A8e
3.0012495 ETH0.00012636
Sweep51674412018-02-27 20:46:462948 days ago1519764406IN
0xca2569E9...52F8A0A8e
0 ETH0.0024996550
Transfer51673972018-02-27 20:35:042948 days ago1519763704IN
0xca2569E9...52F8A0A8e
1.5164 ETH0.0002387611.342
Sweep46934972017-12-07 23:19:343030 days ago1512688774IN
0xca2569E9...52F8A0A8e
0 ETH0.0042047884
Transfer46934522017-12-07 23:11:083030 days ago1512688268IN
0xca2569E9...52F8A0A8e
2.32234 ETH0.0012630660
Sweep42247812017-08-31 22:19:333128 days ago1504217973IN
0xca2569E9...52F8A0A8e
0 ETH0.0026996254
Transfer42247682017-08-31 22:14:113128 days ago1504217651IN
0xca2569E9...52F8A0A8e
2 ETH0.0007578336
Sweep41619912017-08-15 18:54:583144 days ago1502823298IN
0xca2569E9...52F8A0A8e
0 ETH0.0010498521
Transfer41619632017-08-15 18:47:393144 days ago1502822859IN
0xca2569E9...52F8A0A8e
1 ETH0.0004420721
Sweep41544432017-08-13 23:06:533146 days ago1502665613IN
0xca2569E9...52F8A0A8e
0 ETH0.0010498521
Transfer41544202017-08-13 23:00:553146 days ago1502665255IN
0xca2569E9...52F8A0A8e
5 ETH0.0004420721
Sweep41543772017-08-13 22:45:453146 days ago1502664345IN
0xca2569E9...52F8A0A8e
0 ETH0.0010498521
Transfer41543632017-08-13 22:41:363146 days ago1502664096IN
0xca2569E9...52F8A0A8e
0.15 ETH0.0004420721

Latest 9 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
-100329782020-05-09 15:58:242146 days ago1589039904
0xca2569E9...52F8A0A8e
23.39473515 ETH
Transfer52316382018-03-10 18:04:452937 days ago1520705085
0xca2569E9...52F8A0A8e
3.0012495 ETH
Transfer51674412018-02-27 20:46:462948 days ago1519764406
0xca2569E9...52F8A0A8e
1.5164 ETH
Transfer46934972017-12-07 23:19:343030 days ago1512688774
0xca2569E9...52F8A0A8e
2.32234 ETH
Transfer42247812017-08-31 22:19:333128 days ago1504217973
0xca2569E9...52F8A0A8e
2 ETH
Transfer41619912017-08-15 18:54:583144 days ago1502823298
0xca2569E9...52F8A0A8e
1 ETH
Transfer41544432017-08-13 23:06:533146 days ago1502665613
0xca2569E9...52F8A0A8e
5 ETH
Transfer41543772017-08-13 22:45:453146 days ago1502664345
0xca2569E9...52F8A0A8e
0.15 ETH
Transfer41539502017-08-13 20:27:483146 days ago1502656068  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.