Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x69a7c4F8a8754644e02aaF25d558650322EB83cb
Balance 0 ETH
Nonce 1
Code Size 545 bytes
Last Active
Indexed Transactions 11 (10,608,76510,652,832)
Gas Used (indexed) 551,196
External Etherscan · Sourcify

Contract Bytecode

545 bytes
0x606060405236156100495763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416636ea056a98114610052578063c0ee0b8a14610092575b6100505b5b565b005b341561005a57fe5b61007e73ffffffffffffffffffffffffffffffffffffffff60043516602435610104565b604080519115158252519081900360200190f35b341561009a57fe5b604080516020600460443581810135601f810184900484028501840190955284845261005094823573ffffffffffffffffffffffffffffffffffffffff169460248035956064949293919092019181908401838280828437509496506101ef95505050505050565b005b6000805460408051602090810184905281517f3c18d31800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015292519290931692633c18d318926024808301939282900301818787803b151561017b57fe5b6102c65a03f1151561018957fe5b5050506040518051905073ffffffffffffffffffffffffffffffffffffffff1660003660006040516020015260405180838380828437820191505092505050602060405180830381856102c65a03f415156101e057fe5b50506040515190505b92915050565b5b5050505600a165627a7a723058204cdd69fdcf3cf6cbee9677fe380fa5f044048aa9e060ec5619a21ca5a5bd4cd10029

Verified Source Code Partial Match

Compiler: v0.4.11+commit.68ef5810 Optimization: Yes (200 runs)
UserWallet.sol 170 lines
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);
    }
}

Write Contract 2 functions

These functions modify contract state and require a wallet transaction to execute.

sweep 0x6ea056a9
address _token
uint256 _amount
returns: bool
tokenFallback 0xc0ee0b8a
address _from
uint256 _value
bytes _data

Top Interactions

AddressTxnsSentReceived
0xFBb1b73C...BB98 10 10

Recent Transactions

CSV View All 11 Transactions →
|
Hash Method Block Age From/To Value Txn Fee Type
0x1d0c86b3...a9fc00 0x6ea056a9 10,652,832 IN 0xFBb1b73C...BB98 0 ETH 0.00994843 ETH Legacy
0xc2f94ecc...3becaa 0x6ea056a9 10,652,832 IN 0xFBb1b73C...BB98 0 ETH 0.01025587 ETH Legacy
0xae7aca26...8e0ae9 0x6ea056a9 10,649,204 IN 0xFBb1b73C...BB98 0 ETH 0.02232331 ETH Legacy
0x3e823193...f7c72d 0x6ea056a9 10,648,810 IN 0xFBb1b73C...BB98 0 ETH 0.02018947 ETH Legacy
0x2d5c1a72...e124c2 0x6ea056a9 10,632,017 IN 0xFBb1b73C...BB98 0 ETH 0.00996562 ETH Legacy
0x246cbe6a...1ea682 0x6ea056a9 10,615,462 IN 0xFBb1b73C...BB98 0 ETH 0.00386435 ETH Legacy
0x3564432e...618e6b 0x6ea056a9 10,614,155 IN 0xFBb1b73C...BB98 0 ETH 0.00771222 ETH Legacy
0x315bd7b0...7e48c8 0x6ea056a9 10,609,054 IN 0xFBb1b73C...BB98 0 ETH 0.00271875 ETH Legacy
0x034795b4...2821a0 0x6ea056a9 10,608,881 IN 0xFBb1b73C...BB98 0 ETH 0.00300456 ETH Legacy
0x3fa61029...0585b7 0x6ea056a9 10,608,765 IN 0xFBb1b73C...BB98 0 ETH 0.00409097 ETH Legacy