ETH Price: $3,482.88 (-1.48%)
Gas: 3 Gwei

Contract

0x8791eC0Dec5D1fe565b9071142704d700daa4Eb7
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Sweep158165782022-10-24 7:49:35637 days ago1666597775IN
0x8791eC0D...00daa4Eb7
0 ETH0.0018903330
Sweep157800382022-10-19 5:22:47642 days ago1666156967IN
0x8791eC0D...00daa4Eb7
0 ETH0.0022286130
Sweep151069742022-07-09 7:14:19744 days ago1657350859IN
0x8791eC0D...00daa4Eb7
0 ETH0.0022286130
Sweep144225492022-03-20 9:51:15855 days ago1647769875IN
0x8791eC0D...00daa4Eb7
0 ETH0.0016971930
Transfer144225302022-03-20 9:46:58855 days ago1647769618IN
0x8791eC0D...00daa4Eb7
0.05493499 ETH0.0003512816.6871897
Sweep144103662022-03-18 12:19:49857 days ago1647605989IN
0x8791eC0D...00daa4Eb7
0 ETH0.0029337651.85810891
Transfer144103452022-03-18 12:13:02857 days ago1647605582IN
0x8791eC0D...00daa4Eb7
0.117472 ETH0.0008127938.61080802
Sweep143479592022-03-08 19:09:37867 days ago1646766577IN
0x8791eC0D...00daa4Eb7
0 ETH0.0029716852.51716498
Transfer143479452022-03-08 19:05:23867 days ago1646766323IN
0x8791eC0D...00daa4Eb7
0.08954122 ETH0.0008151738.72360815
Sweep140348922022-01-19 8:29:42915 days ago1642580982IN
0x8791eC0D...00daa4Eb7
0 ETH0.0059086104.4199269
Transfer140348782022-01-19 8:26:18915 days ago1642580778IN
0x8791eC0D...00daa4Eb7
0.20366393 ETH0.0019631493.25647109
Sweep136708832021-11-23 12:38:00972 days ago1637671080IN
0x8791eC0D...00daa4Eb7
0 ETH0.00783589105.48137141
Sweep135555902021-11-05 8:41:29990 days ago1636101689IN
0x8791eC0D...00daa4Eb7
0 ETH0.00980679132.01224169
Sweep135179382021-10-30 10:29:29996 days ago1635589769IN
0x8791eC0D...00daa4Eb7
0 ETH0.0099531133.98181936
Sweep126175832021-06-12 4:29:361136 days ago1623472176IN
0x8791eC0D...00daa4Eb7
0 ETH0.0016971930
Transfer126175672021-06-12 4:25:061136 days ago1623471906IN
0x8791eC0D...00daa4Eb7
0.1464 ETH0.0006315330
Sweep117984252021-02-05 20:24:281263 days ago1612556668IN
0x8791eC0D...00daa4Eb7
0 ETH0.01155255205.2
Sweep117981042021-02-05 19:06:291263 days ago1612551989IN
0x8791eC0D...00daa4Eb7
0 ETH0.0108898193.428

Latest 6 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
144225492022-03-20 9:51:15855 days ago1647769875
0x8791eC0D...00daa4Eb7
0.05493499 ETH
144103662022-03-18 12:19:49857 days ago1647605989
0x8791eC0D...00daa4Eb7
0.117472 ETH
143479592022-03-08 19:09:37867 days ago1646766577
0x8791eC0D...00daa4Eb7
0.08954122 ETH
140348922022-01-19 8:29:42915 days ago1642580982
0x8791eC0D...00daa4Eb7
0.20366393 ETH
126175832021-06-12 4:29:361136 days ago1623472176
0x8791eC0D...00daa4Eb7
0.1464 ETH
53269302018-03-26 19:24:552310 days ago1522092295  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.