ETH Price: $2,494.20 (-1.61%)
Gas: 4.2 Gwei

Contract

0x0689C0AcCf6Ea360f781314BA3601Fc181e7B470
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Sweep124344732021-05-14 19:39:261267 days ago1621021166IN
0x0689C0Ac...181e7B470
0 ETH0.00566132100.05000129
Sweep50633782018-02-10 6:25:042457 days ago1518243904IN
0x0689C0Ac...181e7B470
0 ETH0.0044936190
Transfer50633512018-02-10 6:19:082457 days ago1518243548IN
0x0689C0Ac...181e7B470
0.03 ETH0.0004210220
Transfer50391102018-02-06 4:27:292461 days ago1517891249IN
0x0689C0Ac...181e7B470
0.03831762 ETH0.0004210220
Sweep50127842018-02-01 18:02:552465 days ago1517508175IN
0x0689C0Ac...181e7B470
0 ETH0.0044993790
Transfer50127562018-02-01 17:56:192465 days ago1517507779IN
0x0689C0Ac...181e7B470
0.01879727 ETH0.0010525550
Transfer48997892018-01-13 4:55:012485 days ago1515819301IN
0x0689C0Ac...181e7B470
0.040794 ETH0.0010525550
Sweep48949452018-01-12 7:29:212486 days ago1515742161IN
0x0689C0Ac...181e7B470
0 ETH0.0044993790
Transfer48949162018-01-12 7:21:562486 days ago1515741716IN
0x0689C0Ac...181e7B470
0.1 ETH0.0016840880
Sweep48920162018-01-11 18:35:362486 days ago1515695736IN
0x0689C0Ac...181e7B470
0 ETH0.0044936190
Transfer48919772018-01-11 18:25:152486 days ago1515695115IN
0x0689C0Ac...181e7B470
0.05 ETH0.00233666111
Sweep48864862018-01-10 17:56:492487 days ago1515607009IN
0x0689C0Ac...181e7B470
0 ETH0.00833449166.5
Transfer48864172018-01-10 17:39:102487 days ago1515605950IN
0x0689C0Ac...181e7B470
0.099603 ETH0.00246296117
Sweep48860882018-01-10 16:13:582487 days ago1515600838IN
0x0689C0Ac...181e7B470
0 ETH0.0044936190
Transfer48860432018-01-10 16:02:122487 days ago1515600132IN
0x0689C0Ac...181e7B470
0.05 ETH0.00250506119

Latest 9 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
124344732021-05-14 19:39:261267 days ago1621021166
0x0689C0Ac...181e7B470
0.615598 ETH
124344572021-05-14 19:36:301267 days ago1621020990
0x0689C0Ac...181e7B470
0.615598 ETH
50633782018-02-10 6:25:042457 days ago1518243904
0x0689C0Ac...181e7B470
0.06831762 ETH
50127842018-02-01 18:02:552465 days ago1517508175
0x0689C0Ac...181e7B470
0.05959127 ETH
48949452018-01-12 7:29:212486 days ago1515742161
0x0689C0Ac...181e7B470
0.1 ETH
48920162018-01-11 18:35:362486 days ago1515695736
0x0689C0Ac...181e7B470
0.05 ETH
48864862018-01-10 17:56:492487 days ago1515607009
0x0689C0Ac...181e7B470
0.099603 ETH
48860882018-01-10 16:13:582487 days ago1515600838
0x0689C0Ac...181e7B470
0.05 ETH
44330582017-10-26 12:40:572564 days ago1509021657  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.