ETH Price: $2,528.00 (-0.18%)

Contract

0xF0A4AA675872b55506561113768cb7934A28C48b
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Sweep113170332020-11-23 21:58:061375 days ago1606168686IN
0xF0A4AA67...34A28C48b
0 ETH0.00716133110
Transfer113170262020-11-23 21:56:391375 days ago1606168599IN
0xF0A4AA67...34A28C48b
0.8 ETH0.0020917179.28571428
Sweep112976912020-11-20 22:38:581378 days ago1605911938IN
0xF0A4AA67...34A28C48b
0 ETH0.0054686584
Transfer112976862020-11-20 22:37:541378 days ago1605911874IN
0xF0A4AA67...34A28C48b
0.75 ETH0.0010288939
Transfer112703382020-11-16 17:47:181382 days ago1605548838IN
0xF0A4AA67...34A28C48b
0.59818799 ETH0.00079838.00000145
Sweep112702632020-11-16 17:32:441382 days ago1605547964IN
0xF0A4AA67...34A28C48b
0 ETH0.01106955170
Transfer112702582020-11-16 17:31:231382 days ago1605547883IN
0xF0A4AA67...34A28C48b
0.59821822 ETH0.0011871945
Sweep112693922020-11-16 14:22:401382 days ago1605536560IN
0xF0A4AA67...34A28C48b
0 ETH0.0058592790
Transfer112693872020-11-16 14:21:151382 days ago1605536475IN
0xF0A4AA67...34A28C48b
0.59 ETH0.0024271492.00000083
Sweep111154092020-10-23 23:03:451406 days ago1603494225IN
0xF0A4AA67...34A28C48b
0 ETH0.0026041240
Transfer111154002020-10-23 23:01:521406 days ago1603494112IN
0xF0A4AA67...34A28C48b
0.2 ETH0.0005276420
Sweep111086782020-10-22 22:13:421407 days ago1603404822IN
0xF0A4AA67...34A28C48b
0 ETH0.0052082480
Transfer111086712020-10-22 22:12:021407 days ago1603404722IN
0xF0A4AA67...34A28C48b
0.2 ETH0.0011080442
Sweep111077332020-10-22 18:46:481407 days ago1603392408IN
0xF0A4AA67...34A28C48b
0 ETH0.00703112108
Transfer111077262020-10-22 18:44:571407 days ago1603392297IN
0xF0A4AA67...34A28C48b
0.18 ETH0.0014510155
Sweep111066932020-10-22 15:03:411407 days ago1603379021IN
0xF0A4AA67...34A28C48b
0 ETH0.00950503146
Transfer111066832020-10-22 15:01:311407 days ago1603378891IN
0xF0A4AA67...34A28C48b
0.2 ETH0.002106679.85
Sweep111030512020-10-22 1:32:311407 days ago1603330351IN
0xF0A4AA67...34A28C48b
0 ETH0.0087238134
Transfer111030432020-10-22 1:30:411407 days ago1603330241IN
0xF0A4AA67...34A28C48b
0.1 ETH0.0014773956
Sweep94696202020-02-12 17:52:061660 days ago1581529926IN
0xF0A4AA67...34A28C48b
0 ETH0.000325455
Transfer94696132020-02-12 17:50:201660 days ago1581529820IN
0xF0A4AA67...34A28C48b
0.06 ETH0.000211058
Sweep94656082020-02-12 2:50:001660 days ago1581475800IN
0xF0A4AA67...34A28C48b
0 ETH0.000325635
Transfer94655982020-02-12 2:48:361660 days ago1581475716IN
0xF0A4AA67...34A28C48b
0.1063179 ETH0.000118714.5
Sweep94653432020-02-12 1:50:281660 days ago1581472228IN
0xF0A4AA67...34A28C48b
0 ETH0.000325635
Transfer94653312020-02-12 1:48:291660 days ago1581472109IN
0xF0A4AA67...34A28C48b
0.10767088 ETH0.000118714.5
View all transactions

Latest 16 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
113170332020-11-23 21:58:061375 days ago1606168686
0xF0A4AA67...34A28C48b
0.8 ETH
112976912020-11-20 22:38:581378 days ago1605911938
0xF0A4AA67...34A28C48b
0.75 ETH
112702632020-11-16 17:32:441382 days ago1605547964
0xF0A4AA67...34A28C48b
0.59821822 ETH
112693922020-11-16 14:22:401382 days ago1605536560
0xF0A4AA67...34A28C48b
0.59 ETH
111154092020-10-23 23:03:451406 days ago1603494225
0xF0A4AA67...34A28C48b
0.2 ETH
111086782020-10-22 22:13:421407 days ago1603404822
0xF0A4AA67...34A28C48b
0.2 ETH
111077332020-10-22 18:46:481407 days ago1603392408
0xF0A4AA67...34A28C48b
0.18 ETH
111066932020-10-22 15:03:411407 days ago1603379021
0xF0A4AA67...34A28C48b
0.2 ETH
111030512020-10-22 1:32:311407 days ago1603330351
0xF0A4AA67...34A28C48b
0.1 ETH
94696202020-02-12 17:52:061660 days ago1581529926
0xF0A4AA67...34A28C48b
0.06 ETH
94656082020-02-12 2:50:001660 days ago1581475800
0xF0A4AA67...34A28C48b
0.1063179 ETH
94653432020-02-12 1:50:281660 days ago1581472228
0xF0A4AA67...34A28C48b
0.10767088 ETH
94629032020-02-11 16:55:391661 days ago1581440139
0xF0A4AA67...34A28C48b
0.13302068 ETH
93302472020-01-22 8:20:241681 days ago1579681224
0xF0A4AA67...34A28C48b
0.40471494 ETH
91953162020-01-01 10:11:491702 days ago1577873509
0xF0A4AA67...34A28C48b
0.25887347 ETH
77596212019-05-14 16:51:121934 days ago1557852672  Contract Creation0 ETH
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x26Ad77C3...6b233e3d5
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.25+commit.59dbf8f1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2020-10-04
*/

/**
 * verified by 3esmit
*/

/**
 * Allows to create contracts which would be able to receive ETH and tokens.
 * Contract will help to detect ETH deposits faster.
 * Contract idea was borrowed from Bittrex.
 * Version: 2
 * */

pragma solidity 0.4.25;


contract Owned {
    address public owner1;
    address public owner2;

    modifier onlyOwner {
        require(msg.sender != address(0));
        require(msg.sender == owner1 || msg.sender == owner2, "Only owner.");
        _;
    }

    constructor() internal {
        owner1 = msg.sender;
    }

    function setOwner1(address _address) public onlyOwner {
        require(_address != address(0));
        owner1 = _address;
    }

    function setOwner2(address _address) public onlyOwner {
        require(_address != address(0));
        owner2 = _address;
    }
}


contract RequiringAuthorization is Owned {
    Casino public casino;
    bool public casinoAuthorized;
    mapping(address => bool) public authorized;

    modifier onlyAuthorized {
        require(authorized[msg.sender] || casinoAuthorized && casino.authorized(msg.sender), "Caller is not authorized.");
        _;
    }

    constructor(address _casino) internal {
        authorized[msg.sender] = true;
        casino = Casino(_casino);
        casinoAuthorized = true;
    }

    function authorize(address _address) public onlyOwner {
        authorized[_address] = true;
    }

    function deauthorize(address _address) public onlyOwner {
        authorized[_address] = false;
    }

    function authorizeCasino() public onlyOwner {
        casinoAuthorized = true;
    }

    function deauthorizeCasino() public onlyOwner {
        casinoAuthorized = false;
    }

    function setCasino(address _casino) public onlyOwner {
        casino = Casino(_casino);
    }
}


contract WalletController is RequiringAuthorization {
    address public destination;
    address public defaultSweeper = address(new DefaultSweeper(address(this)));
    bool public halted = false;

    mapping(address => address) public sweepers;
    mapping(address => bool) public wallets;

    event EthDeposit(address _from, address _to, uint _amount);
    event WalletCreated(address _address);
    event Sweeped(address _from, address _to, address _token, uint _amount);

    modifier onlyWallet {
        require(wallets[msg.sender], "Caller must be user wallet.");
        _;
    }

    constructor(address _casino) public RequiringAuthorization(_casino) {
        destination = msg.sender;
    }

    function setDestination(address _destination) public onlyOwner {
        destination = _destination;
    }

    function createWallet() public {
        address wallet = address(new UserWallet(this));
        wallets[wallet] = true;
        emit WalletCreated(wallet);
    }

    function createWallets(uint count) public {
        for (uint i = 0; i < count; i++) {
            createWallet();
        }
    }

    function addSweeper(address _token, address _sweeper) public onlyOwner {
        sweepers[_token] = _sweeper;
    }

    function halt() public onlyAuthorized {
        halted = true;
    }

    function start() public onlyOwner {
        halted = false;
    }

    function sweeperOf(address _token) public view returns (address) {
        address sweeper = sweepers[_token];
        if (sweeper == 0) sweeper = defaultSweeper;
        return sweeper;
    }

    function logEthDeposit(address _from, address _to, uint _amount) public onlyWallet {
        emit EthDeposit(_from, _to, _amount);
    }

    function logSweep(address _from, address _to, address _token, uint _amount) public {
        emit Sweeped(_from, _to, _token, _amount);
    }
}


contract UserWallet {
    WalletController private controller;

    constructor (address _controller) public {
        controller = WalletController(_controller);
    }

    function () public payable {
        controller.logEthDeposit(msg.sender, address(this), msg.value);
    }

    function tokenFallback(address _from, uint _value, bytes _data) public pure {
        (_from);
        (_value);
        (_data);
    }

    function sweep(address _token, uint _amount) public returns (bool) {
        (_amount);
        return controller.sweeperOf(_token).delegatecall(msg.data);
    }
}


contract AbstractSweeper {
    WalletController public controller;

    constructor (address _controller) public {
        controller = WalletController(_controller);
    }

    function () public { revert("Contract does not accept ETH."); }

    function sweep(address token, uint amount) public returns (bool);

    modifier canSweep() {
        if (!(controller.authorized(msg.sender) || controller.casinoAuthorized() && controller.casino().authorized(msg.sender))) revert("Caller is not authorized to sweep.");
        if (controller.halted()) revert("Contract is halted.");
        _;
    }
}


contract DefaultSweeper is AbstractSweeper {

    constructor (address controller) public AbstractSweeper(controller) {}

    function sweep(address _token, uint _amount) public 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 > address(this).balance) {
                return false;
            }
            success = destination.send(amountInWei);
        }

        if (success) {
            controller.logSweep(this, destination, _token, _amount);
        }
        return success;
    }
}


contract Token {
    function balanceOf(address a) public pure returns (uint) {
        (a);
        return 0;
    }

    function transfer(address a, uint val) public pure returns (bool) {
        (a);
        (val);
        return false;
    }
}


contract Casino {
    mapping(address => bool) public authorized;
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_amount","type":"uint256"}],"name":"sweep","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"tokenFallback","outputs":[],"payable":false,"stateMutability":"pure","type":"function"},{"inputs":[{"name":"_controller","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"}]

Deployed Bytecode

0x60806040526004361061004b5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416636ea056a981146100de578063c0ee0b8a14610123575b60008054604080517f3128012a000000000000000000000000000000000000000000000000000000008152336004820152306024820152346044820152905173ffffffffffffffffffffffffffffffffffffffff90921692633128012a9260648084019382900301818387803b1580156100c457600080fd5b505af11580156100d8573d6000803e3d6000fd5b50505050005b3480156100ea57600080fd5b5061010f73ffffffffffffffffffffffffffffffffffffffff6004351660243561019b565b604080519115158252519081900360200190f35b34801561012f57600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261019994823573ffffffffffffffffffffffffffffffffffffffff169460248035953695946064949201919081908401838280828437509497506102829650505050505050565b005b60008054604080517f3c18d31800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015291519190921691633c18d31891602480830192602092919082900301818787803b15801561021057600080fd5b505af1158015610224573d6000803e3d6000fd5b505050506040513d602081101561023a57600080fd5b505160405173ffffffffffffffffffffffffffffffffffffffff90911690600090369080838380828437820191505092505050600060405180830381855af495945050505050565b5050505600a165627a7a72305820670b3401d94aec68ef3bdcca24e917d0bcb5bf05491f1d1c1d0f59cf6c11fae60029

Deployed Bytecode Sourcemap

3828:611:0:-;;;;;;;;;;;;;;;;;;;;;;;;;4047:10;;;:62;;;;;;4072:10;4047:62;;;;4092:4;4047:62;;;;4099:9;4047:62;;;;;;:10;;;;;:24;;:62;;;;;;;;;;:10;;:62;;;5:2:-1;;;;30:1;27;20:12;5:2;4047:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4047:62:0;;;;3828:611;4272:164;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4272:164:0;;;;;;;;;;;;;;;;;;;;;;;;;;;4125:139;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4125:139:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4125:139:0;;-1:-1:-1;4125:139:0;;-1:-1:-1;;;;;;;4125:139:0;;;4272:164;4333:4;4377:10;;:28;;;;;;:10;:28;;;;;;;;;:10;;;;;:20;;:28;;;;;;;;;;;;;;4333:4;4377:10;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;4377:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4377:28:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4377:28:0;:51;;:41;;;;;4419:8;;;;4377:51;4419:8;;;;4377:51;;;;;;;;;;;;;;;;;;;;;;4272:164;-1:-1:-1;;;;;4272:164:0:o;4125:139::-;;;;:::o

Swarm Source

bzzr://670b3401d94aec68ef3bdcca24e917d0bcb5bf05491f1d1c1d0f59cf6c11fae6

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.