ETH Price: $2,401.72 (-4.28%)

Contract

0x01AfC37F4F85babc47c0E2d0EAbABC7FB49793c8
 

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw123499182021-05-01 18:22:401221 days ago1619893360IN
W-GNT
0 ETH0.0019247852
Transfer123499152021-05-01 18:20:581221 days ago1619893258IN
W-GNT
0 ETH0.0019896354
Withdraw123498882021-05-01 18:15:491221 days ago1619892949IN
W-GNT
0 ETH0.0025428447
Transfer123498732021-05-01 18:13:061221 days ago1619892786IN
W-GNT
0 ETH0.0026953152
Transfer123490602021-05-01 15:19:561221 days ago1619882396IN
W-GNT
0 ETH0.0025791570
Create Broker108685762020-09-15 19:32:471449 days ago1600198367IN
W-GNT
0 ETH0.02334438106
Approve72545932019-02-22 21:14:122020 days ago1550870052IN
W-GNT
0 ETH0.000181454
Approve66140412018-10-30 22:55:032135 days ago1540940103IN
W-GNT
0 ETH0.000094312
Notify Deposit57398232018-06-06 3:00:402282 days ago1528254040IN
W-GNT
0 ETH0.0032525715
Create Broker57398132018-06-06 2:58:382282 days ago1528253918IN
W-GNT
0 ETH0.0032525715
Approve57362702018-06-05 11:38:162282 days ago1528198696IN
W-GNT
0 ETH0.000377248
Approve57106882018-05-31 22:45:292287 days ago1527806729IN
W-GNT
0 ETH0.0005187111
Approve56968922018-05-29 11:57:332289 days ago1527595053IN
W-GNT
0 ETH0.0005187111
Approve55326662018-04-30 14:52:562318 days ago1525099976IN
W-GNT
0 ETH0.000235785
Approve55174332018-04-27 23:18:232321 days ago1524871103IN
W-GNT
0 ETH0.000141463
Approve54464252018-04-15 18:22:022333 days ago1523816522IN
W-GNT
0 ETH0.000047151
Approve53029372018-03-22 19:37:022357 days ago1521747422IN
W-GNT
0 ETH0.000188624
Approve52599022018-03-15 13:46:322364 days ago1521121592IN
W-GNT
0 ETH0.000094312
Approve50197022018-02-02 22:32:232405 days ago1517610743IN
W-GNT
0 ETH0.000094312
Withdraw49211852018-01-17 2:24:042422 days ago1516155844IN
W-GNT
0 ETH0.0005820312
Approve49133092018-01-15 16:01:412423 days ago1516032101IN
W-GNT
0 ETH0.002357850
Approve48175492017-12-29 9:37:182441 days ago1514540238IN
W-GNT
0 ETH0.0009431220
Approve48169902017-12-29 7:22:372441 days ago1514532157IN
W-GNT
0 ETH0.000047151
Withdraw47965802017-12-25 20:51:192444 days ago1514235079IN
W-GNT
0 ETH0.000048431
Withdraw47735342017-12-21 23:02:102448 days ago1513897330IN
W-GNT
0 ETH0.00193540
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
108685762020-09-15 19:32:471449 days ago1600198367
W-GNT
 Contract Creation0 ETH
57398132018-06-06 2:58:382282 days ago1528253918
W-GNT
 Contract Creation0 ETH
41889482017-08-22 6:03:552570 days ago1503381835
W-GNT
 Contract Creation0 ETH
41346042017-08-09 2:59:402583 days ago1502247580
W-GNT
 Contract Creation0 ETH
41345672017-08-09 2:48:032583 days ago1502246883
W-GNT
 Contract Creation0 ETH
41273032017-08-07 8:13:302585 days ago1502093610
W-GNT
 Contract Creation0 ETH
40765622017-07-26 14:12:482596 days ago1501078368
W-GNT
 Contract Creation0 ETH
40039372017-07-10 17:16:172612 days ago1499706977
W-GNT
 Contract Creation0 ETH
38545862017-06-11 7:29:112642 days ago1497166151
W-GNT
 Contract Creation0 ETH
38435502017-06-09 5:16:132644 days ago1496985373
W-GNT
 Contract Creation0 ETH
38035502017-06-01 12:36:502651 days ago1496320610
W-GNT
 Contract Creation0 ETH
37989462017-05-31 15:43:352652 days ago1496245415
W-GNT
 Contract Creation0 ETH
37963922017-05-31 4:32:132653 days ago1496205133
W-GNT
 Contract Creation0 ETH
37454242017-05-21 21:16:252662 days ago1495401385
W-GNT
 Contract Creation0 ETH
36929872017-05-12 6:54:122672 days ago1494572052
W-GNT
 Contract Creation0 ETH
36697172017-05-08 4:30:562676 days ago1494217856
W-GNT
 Contract Creation0 ETH
36695812017-05-08 3:50:212676 days ago1494215421
W-GNT
 Contract Creation0 ETH
36688942017-05-08 0:58:492676 days ago1494205129
W-GNT
 Contract Creation0 ETH
36628952017-05-06 23:37:002677 days ago1494113820
W-GNT
 Contract Creation0 ETH
36385172017-05-02 16:16:312681 days ago1493741791
W-GNT
 Contract Creation0 ETH
34866152017-04-06 10:00:252708 days ago1491472825
W-GNT
 Contract Creation0 ETH
34742132017-04-04 7:58:402710 days ago1491292720
W-GNT
 Contract Creation0 ETH
34734272017-04-04 4:46:002710 days ago1491281160
W-GNT
 Contract Creation0 ETH
34667632017-04-03 2:15:032711 days ago1491185703
W-GNT
 Contract Creation0 ETH
34597702017-04-01 21:12:082712 days ago1491081128
W-GNT
 Contract Creation0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TokenWrapper

Compiler Version
v0.4.4+commit.4633f3de

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2016-12-07
*/

/*
   Copyright 2016 Nexus Development, LLC

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
*/

pragma solidity ^0.4.2;

// Token standard API
// https://github.com/ethereum/EIPs/issues/20

contract ERC20Constant {
    function totalSupply() constant returns (uint supply);
    function balanceOf( address who ) constant returns (uint value);
    function allowance(address owner, address spender) constant returns (uint _allowance);
}
contract ERC20Stateful {
    function transfer( address to, uint value) returns (bool ok);
    function transferFrom( address from, address to, uint value) returns (bool ok);
    function approve(address spender, uint value) returns (bool ok);
}
contract ERC20Events {
    event Transfer(address indexed from, address indexed to, uint value);
    event Approval( address indexed owner, address indexed spender, uint value);
}
contract ERC20 is ERC20Constant, ERC20Stateful, ERC20Events {}

contract ERC20Base is ERC20
{
    mapping( address => uint ) _balances;
    mapping( address => mapping( address => uint ) ) _approvals;
    uint _supply;
    function ERC20Base( uint initial_balance ) {
        _balances[msg.sender] = initial_balance;
        _supply = initial_balance;
    }
    function totalSupply() constant returns (uint supply) {
        return _supply;
    }
    function balanceOf( address who ) constant returns (uint value) {
        return _balances[who];
    }
    function transfer( address to, uint value) returns (bool ok) {
        if( _balances[msg.sender] < value ) {
            throw;
        }
        if( !safeToAdd(_balances[to], value) ) {
            throw;
        }
        _balances[msg.sender] -= value;
        _balances[to] += value;
        Transfer( msg.sender, to, value );
        return true;
    }
    function transferFrom( address from, address to, uint value) returns (bool ok) {
        // if you don't have enough balance, throw
        if( _balances[from] < value ) {
            throw;
        }
        // if you don't have approval, throw
        if( _approvals[from][msg.sender] < value ) {
            throw;
        }
        if( !safeToAdd(_balances[to], value) ) {
            throw;
        }
        // transfer and return true
        _approvals[from][msg.sender] -= value;
        _balances[from] -= value;
        _balances[to] += value;
        Transfer( from, to, value );
        return true;
    }
    function approve(address spender, uint value) returns (bool ok) {
        _approvals[msg.sender][spender] = value;
        Approval( msg.sender, spender, value );
        return true;
    }
    function allowance(address owner, address spender) constant returns (uint _allowance) {
        return _approvals[owner][spender];
    }
    function safeToAdd(uint a, uint b) internal returns (bool) {
        return (a + b >= a);
    }
}

contract ReducedToken {
    function balanceOf(address _owner) returns (uint256);
    function transfer(address _to, uint256 _value) returns (bool);
    function migrate(uint256 _value);
}

contract DepositBrokerInterface {
    function clear();
}

contract TokenWrapperInterface is ERC20 {
    function withdraw(uint amount);

    // NO deposit, must be done via broker! Sorry!
    function createBroker() returns (DepositBrokerInterface);

    // broker contracts only - transfer to a personal broker then use `clear`
    function notifyDeposit(uint amount);

    function getBroker(address owner) returns (DepositBrokerInterface);
}

contract DepositBroker is DepositBrokerInterface {
    ReducedToken _g;
    TokenWrapperInterface _w;
    function DepositBroker( ReducedToken token ) {
        _w = TokenWrapperInterface(msg.sender);
        _g = token;
    }
    function clear() {
        var amount = _g.balanceOf(this);
        _g.transfer(_w, amount);
        _w.notifyDeposit(amount);
    }
}

contract TokenWrapperEvents {
    event LogBroker(address indexed broker);
}

// Deposits only accepted via broker!
contract TokenWrapper is ERC20Base(0), TokenWrapperInterface, TokenWrapperEvents {
    ReducedToken _unwrapped;
    mapping(address=>address) _broker2owner;
    mapping(address=>address) _owner2broker;
    function TokenWrapper( ReducedToken unwrapped) {
        _unwrapped = unwrapped;
    }
    function createBroker() returns (DepositBrokerInterface) {
        DepositBroker broker;
        if( _owner2broker[msg.sender] == address(0) ) {
            broker = new DepositBroker(_unwrapped);
            _broker2owner[broker] = msg.sender;
            _owner2broker[msg.sender] = broker;
            LogBroker(broker);
        }
        else {
            broker = DepositBroker(_owner2broker[msg.sender]);
        }
        
        return broker;
    }
    function notifyDeposit(uint amount) {
        var owner = _broker2owner[msg.sender];
        if( owner == address(0) ) {
            throw;
        }
        _balances[owner] += amount;
        _supply += amount;
    }
    function withdraw(uint amount) {
        if( _balances[msg.sender] < amount ) {
            throw;
        }
        _balances[msg.sender] -= amount;
        _supply -= amount;
        _unwrapped.transfer(msg.sender, amount);
    }
    function getBroker(address owner) returns (DepositBrokerInterface) {
        return DepositBroker(_owner2broker[msg.sender]);
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"ok","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"supply","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"ok","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"notifyDeposit","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"createBroker","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"balanceOf","outputs":[{"name":"value","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"ok","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"}],"name":"getBroker","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"_allowance","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[{"name":"unwrapped","type":"address"}],"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"broker","type":"address"}],"name":"LogBroker","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

60606040526040516020806108838339506080604052516000600160a060020a0333166000908152602081905260409020819055600281905550600380546c0100000000000000000000000080840204600160a060020a0319909116179055506108168061006d6000396000f3606060405236156100825760e060020a6000350463095ea7b3811461008757806318160ddd1461010057806323b872dd1461011b5780632e1a7d4d146101525780635949a8f71461018357806370620168146101b557806370a08231146102c0578063a9059cbb146102ea578063d17248811461031e578063dd62ed3e14610349575b610002565b3461000257610382600435602435600160a060020a03338116600081815260016020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b34610002576002545b60408051918252519081900360200190f35b3461000257610382600435602435604435600160a060020a038316600090815260208190526040812054829010156103b457610002565b3461000257610396600435600160a060020a033316600090815260208190526040902054819010156104a957610002565b3461000257610396600435600160a060020a033381166000908152600460205260409020541680151561054257610002565b3461000257600160a060020a0333811660009081526005602052604081205461039892829116151561056a57600354604051600160a060020a03909116906101f0806106268339018082600160a060020a03168152602001915050604051809103906000f0801561000257600160a060020a03808216600081815260046020908152604080832080546c010000000000000000000000003381810282900473ffffffffffffffffffffffffffffffffffffffff19938416179093559690911684526005909252808320805486880296909604959092169490941790559151929350917fde9f57f51f1a060752ee33f22ef4612db4f633d9d16d95b11c08014eb45fe6049190a26102e5565b3461000257610109600435600160a060020a0381166000908152602081905260409020545b919050565b3461000257610382600435602435600160a060020a0333166000908152602081905260408120548290101561058b57610002565b3461000257610398600435600160a060020a03338116600090815260056020526040902054166102e5565b3461000257610109600435602435600160a060020a038083166000908152600160209081526040808320938516835292905220546100fa565b604080519115158252519081900360200190f35b005b60408051600160a060020a039092168252519081900360200190f35b600160a060020a0380851660009081526001602090815260408083203390941683529290522054829010156103e857610002565b600160a060020a03831660009081526020819052604090205461041390835b808201829010156100fa565b151561041e57610002565b600160a060020a038085166000818152600160209081526040808320338616845282528083208054889003905583835282825280832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b600160a060020a03338116600081815260208181526040808320805487900390556002805487900390556003548151830184905281517fa9059cbb000000000000000000000000000000000000000000000000000000008152600481019590955260248501879052905194169363a9059cbb93604480820194918390030190829087803b156100025760325a03f1156100025750505050565b600160a060020a03166000908152602081905260409020805482019055600280549091019055565b50600160a060020a0333811660009081526005602052604090205416919050565b600160a060020a0383166000908152602081905260409020546105ae9083610407565b15156105b957610002565b600160a060020a0333811660008181526020818152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060016100fa5660606040526040516020806101f0833950608060405251600180546c01000000000000000000000000338102819004600160a060020a0319928316179092556000805484840293909304929091169190911790555061018e806100626000396000f3606060405260e060020a600035046352efea6e811461001e575b610002565b346100025761018c6000805460408051602090810184905281517f70a0823100000000000000000000000000000000000000000000000000000000815230600160a060020a039081166004830152925192909316926370a08231926024808301939282900301818787803b156100025760325a03f11561000257505060408051805160008054600154602094850183905285517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a03918216600482015260248101859052955193975016945063a9059cbb936044808201949392918390030190829087803b156100025760325a03f115610002575050604080516001547f5949a8f7000000000000000000000000000000000000000000000000000000008252600482018590529151600160a060020a039092169250635949a8f791602480830192600092919082900301818387803b156100025760325a03f1156100025750505050565b00

Deployed Bytecode

0x606060405236156100825760e060020a6000350463095ea7b3811461008757806318160ddd1461010057806323b872dd1461011b5780632e1a7d4d146101525780635949a8f71461018357806370620168146101b557806370a08231146102c0578063a9059cbb146102ea578063d17248811461031e578063dd62ed3e14610349575b610002565b3461000257610382600435602435600160a060020a03338116600081815260016020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b34610002576002545b60408051918252519081900360200190f35b3461000257610382600435602435604435600160a060020a038316600090815260208190526040812054829010156103b457610002565b3461000257610396600435600160a060020a033316600090815260208190526040902054819010156104a957610002565b3461000257610396600435600160a060020a033381166000908152600460205260409020541680151561054257610002565b3461000257600160a060020a0333811660009081526005602052604081205461039892829116151561056a57600354604051600160a060020a03909116906101f0806106268339018082600160a060020a03168152602001915050604051809103906000f0801561000257600160a060020a03808216600081815260046020908152604080832080546c010000000000000000000000003381810282900473ffffffffffffffffffffffffffffffffffffffff19938416179093559690911684526005909252808320805486880296909604959092169490941790559151929350917fde9f57f51f1a060752ee33f22ef4612db4f633d9d16d95b11c08014eb45fe6049190a26102e5565b3461000257610109600435600160a060020a0381166000908152602081905260409020545b919050565b3461000257610382600435602435600160a060020a0333166000908152602081905260408120548290101561058b57610002565b3461000257610398600435600160a060020a03338116600090815260056020526040902054166102e5565b3461000257610109600435602435600160a060020a038083166000908152600160209081526040808320938516835292905220546100fa565b604080519115158252519081900360200190f35b005b60408051600160a060020a039092168252519081900360200190f35b600160a060020a0380851660009081526001602090815260408083203390941683529290522054829010156103e857610002565b600160a060020a03831660009081526020819052604090205461041390835b808201829010156100fa565b151561041e57610002565b600160a060020a038085166000818152600160209081526040808320338616845282528083208054889003905583835282825280832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b600160a060020a03338116600081815260208181526040808320805487900390556002805487900390556003548151830184905281517fa9059cbb000000000000000000000000000000000000000000000000000000008152600481019590955260248501879052905194169363a9059cbb93604480820194918390030190829087803b156100025760325a03f1156100025750505050565b600160a060020a03166000908152602081905260409020805482019055600280549091019055565b50600160a060020a0333811660009081526005602052604090205416919050565b600160a060020a0383166000908152602081905260409020546105ae9083610407565b15156105b957610002565b600160a060020a0333811660008181526020818152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060016100fa5660606040526040516020806101f0833950608060405251600180546c01000000000000000000000000338102819004600160a060020a0319928316179092556000805484840293909304929091169190911790555061018e806100626000396000f3606060405260e060020a600035046352efea6e811461001e575b610002565b346100025761018c6000805460408051602090810184905281517f70a0823100000000000000000000000000000000000000000000000000000000815230600160a060020a039081166004830152925192909316926370a08231926024808301939282900301818787803b156100025760325a03f11561000257505060408051805160008054600154602094850183905285517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a03918216600482015260248101859052955193975016945063a9059cbb936044808201949392918390030190829087803b156100025760325a03f115610002575050604080516001547f5949a8f7000000000000000000000000000000000000000000000000000000008252600482018590529151600160a060020a039092169250635949a8f791602480830192600092919082900301818387803b156100025760325a03f1156100025750505050565b00

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000a74476443119a942de498590fe1f2454d7d4ac0d

-----Decoded View---------------
Arg [0] : unwrapped (address): 0xa74476443119A942dE498590Fe1f2454d7D4aC0d

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a74476443119a942de498590fe1f2454d7d4ac0d


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.