Address Contract Partially Verified
Address
0x77eCB45a80809559f35D1ef18BE7076aFB57DB9f
Balance
0 ETH
Nonce
1
Code Size
540 bytes
Creator
0x7142EB34...0fDD at tx 0xe46e933b...af606d
Indexed Transactions
0
Contract Bytecode
540 bytes
0x60806040526004361061004b5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663c0ee0b8a811461004d578063c18cfe86146100c3575b005b34801561005957600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261004b94823573ffffffffffffffffffffffffffffffffffffffff169460248035953695946064949201919081908401838280828437509497506101059650505050505050565b3480156100cf57600080fd5b506100f173ffffffffffffffffffffffffffffffffffffffff6004351661010a565b604080519115158252519081900360200190f35b505050565b60008054604080517f3c18d31800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015291519190921691633c18d31891602480830192602092919082900301818787803b15801561017f57600080fd5b505af1158015610193573d6000803e3d6000fd5b505050506040513d60208110156101a957600080fd5b505160405173ffffffffffffffffffffffffffffffffffffffff90911690600090369080838380828437820191505092505050600060405180830381855af49493505050505600a165627a7a72305820ec90d4e55fb69f839fa555767145d6ac7a8f1aa98ed098b09c220c4a34f02ba10029
Verified Source Code Partial Match
Compiler: v0.4.24+commit.e67f0147
EVM: byzantium
Optimization: Yes (200 runs)
UserWallet.sol 142 lines
pragma solidity ^0.4.24;
contract AbstractSweeper {
function sweepAll(address token) public returns (bool);
function() public { revert(); }
Controller controller;
constructor(address _controller) public {
controller = Controller(_controller);
}
modifier canSweep() {
if(msg.sender != controller.authorizedCaller() && msg.sender != controller.owner()){ revert(); }
if(controller.halted()){ revert(); }
_;
}
}
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 DefaultSweeper is AbstractSweeper {
constructor(address controller) AbstractSweeper(controller) public { }
function sweepAll(address _token) public canSweep returns (bool) {
bool success = false;
address destination = controller.destination();
if(_token != address(0)){
Token token = Token(_token);
success = token.transfer(destination, token.balanceOf(this));
}else{
success = destination.send(address(this).balance);
}
return success;
}
}
contract UserWallet {
AbstractSweeperList sweeperList;
constructor(address _sweeperlist) public {
sweeperList = AbstractSweeperList(_sweeperlist);
}
function() public payable { }
function tokenFallback(address _from, uint _value, bytes _data) public pure {
(_from);
(_value);
(_data);
}
function sweepAll(address _token) public returns (bool) {
return sweeperList.sweeperOf(_token).delegatecall(msg.data);
}
}
contract AbstractSweeperList {
function sweeperOf(address _token) public returns (address);
}
contract Controller is AbstractSweeperList {
address public owner;
address public authorizedCaller;
address public destination;
bool public halted;
event NewWalletCreated(address receiver);
modifier onlyOwner() {
if(msg.sender != owner){ revert(); }
_;
}
modifier onlyAuthorizedCaller() {
if(msg.sender != authorizedCaller){ revert(); }
_;
}
modifier onlyAdmins() {
if(msg.sender != authorizedCaller && msg.sender != owner){ revert(); }
_;
}
constructor() public {
owner = msg.sender;
destination = msg.sender;
authorizedCaller = msg.sender;
}
function setAuthorizedCaller(address _newCaller) public onlyOwner {
authorizedCaller = _newCaller;
}
function setDestination(address _dest) public onlyOwner {
destination = _dest;
}
function setOwner(address _owner) public onlyOwner {
owner = _owner;
}
function newWallet() public onlyAdmins returns (address wallet) {
wallet = address(new UserWallet(this));
emit NewWalletCreated(wallet);
}
function halt() public onlyAdmins {
halted = true;
}
function start() public onlyOwner {
halted = false;
}
address public defaultSweeper = address(new DefaultSweeper(this));
mapping (address => address) sweepers;
function addSweeper(address _token, address _sweeper) public onlyOwner {
sweepers[_token] = _sweeper;
}
function sweeperOf(address _token) public returns (address) {
address sweeper = sweepers[_token];
if(sweeper == 0){ sweeper = defaultSweeper; }
return sweeper;
}
}
Read Contract
tokenFallback 0xc0ee0b8a
Write Contract 1 functions
These functions modify contract state and require a wallet transaction to execute.
sweepAll 0xc18cfe86
address _token
returns: bool
Recent Transactions
No transactions found for this address