ETH Price: $3,106.92 (+5.46%)
Gas: 5 Gwei

Token

 

Overview

Max Total Supply

0

Holders

0

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
TokenProxy

Compiler Version
v0.5.8+commit.23d335f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2019-09-05
*/

// File: contracts/OwnableProxy.sol

pragma solidity ^0.5.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be aplied to your functions to restrict their use to
 * the owner.
 */
contract OwnableProxy {
    address private _proxyOwner;
    address private _pendingProxyOwner;

    event ProxyOwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event NewPendingOwner(address indexed currentOwner, address indexed pendingOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        _proxyOwner = msg.sender;
        emit ProxyOwnershipTransferred(address(0), _proxyOwner);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function proxyOwner() public view returns (address) {
        return _proxyOwner;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function pendingProxyOwner() public view returns (address) {
        return _pendingProxyOwner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyProxyOwner() {
        require(isProxyOwner(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isProxyOwner() public view returns (bool) {
        return msg.sender == _proxyOwner;
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferProxyOwnership(address newOwner) public onlyProxyOwner {
        _transferProxyOwnership(newOwner);
        emit NewPendingOwner(_proxyOwner, newOwner);
    }

    function claimProxyOwnership() public {
        _claimProxyOwnership(msg.sender);
    }

    function initProxyOwnership(address newOwner) public {
        require(_proxyOwner == address(0), "Ownable: already owned");
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferProxyOwnership(newOwner);
    }


    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferProxyOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _pendingProxyOwner = newOwner;
    }

    function _claimProxyOwnership(address newOwner) internal {
        require(newOwner == _pendingProxyOwner, "Claimed by wrong address");
        emit ProxyOwnershipTransferred(_proxyOwner, newOwner);
        _proxyOwner = newOwner;
        _pendingProxyOwner = address(0);
    }

}

// File: contracts/TokenProxy.sol

pragma solidity ^0.5.0;



/**
 * @title Proxy
 * @dev Gives the possibility to delegate any call to a foreign implementation.
 */
contract TokenProxy is OwnableProxy {
    event Upgraded(address indexed implementation);
    address public implementation;

    function upgradeTo(address _address) public onlyProxyOwner{
        require(_address != implementation, "New implementation cannot be the same as old");
        implementation = _address;
        emit Upgraded(_address);
    }

    /**
    * @dev Fallback function allowing to perform a delegatecall to the given implementation.
    * This function will return whatever the implementation call returns
    */
    
    function () external payable {
        address _impl = implementation;
        require(_impl != address(0));
        assembly {
            let ptr := mload(0x40)
            calldatacopy(ptr, returndatasize, calldatasize)
            let result := delegatecall(gas, _impl, ptr, calldatasize, returndatasize, returndatasize)
            let size := returndatasize
            returndatacopy(ptr, 0, size)

            switch result
            case 0 { revert(ptr, size) }
            default { return(ptr, size) }
        }
    }
    
 

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"proxyOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingProxyOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"upgradeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"initProxyOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isProxyOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claimProxyOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferProxyOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"ProxyOwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"currentOwner","type":"address"},{"indexed":true,"name":"pendingOwner","type":"address"}],"name":"NewPendingOwner","type":"event"}]

60806040819052600080546001600160a01b03191633178082556001600160a01b0316917f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd9908290a361062c806100576000396000f3fe60806040526004361061007b5760003560e01c80635e55d96f1161004e5780635e55d96f146101445780638f4a3bcd146101775780639965b3d6146101a0578063f1739cae146101b55761007b565b8063025313a2146100b45780630add8140146100e55780633659cfe6146100fa5780635c60da1b1461012f575b6002546001600160a01b03168061009157600080fd5b604051363d82373d3d3683855af43d806000843e8180156100b0578184f35b8184fd5b3480156100c057600080fd5b506100c96101e8565b604080516001600160a01b039092168252519081900360200190f35b3480156100f157600080fd5b506100c96101f7565b34801561010657600080fd5b5061012d6004803603602081101561011d57600080fd5b50356001600160a01b0316610206565b005b34801561013b57600080fd5b506100c96102fc565b34801561015057600080fd5b5061012d6004803603602081101561016757600080fd5b50356001600160a01b031661030b565b34801561018357600080fd5b5061018c6103c0565b604080519115158252519081900360200190f35b3480156101ac57600080fd5b5061012d6103d1565b3480156101c157600080fd5b5061012d600480360360208110156101d857600080fd5b50356001600160a01b03166103dc565b6000546001600160a01b031690565b6001546001600160a01b031690565b61020e6103c0565b6102625760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6002546001600160a01b03828116911614156102b257604051600160e51b62461bcd02815260040180806020018281038252602c8152602001806105d5602c913960400191505060405180910390fd5b600280546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6002546001600160a01b031681565b6000546001600160a01b03161561036c5760408051600160e51b62461bcd02815260206004820152601660248201527f4f776e61626c653a20616c7265616479206f776e656400000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166103b457604051600160e51b62461bcd0281526004018080602001828103825260268152602001806105af6026913960400191505060405180910390fd5b6103bd8161047d565b50565b6000546001600160a01b0316331490565b6103da336104e7565b565b6103e46103c0565b6104385760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6104418161047d565b600080546040516001600160a01b03808516939216917fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b91a350565b6001600160a01b0381166104c557604051600160e51b62461bcd0281526004018080602001828103825260268152602001806105af6026913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b0382811691161461054c5760408051600160e51b62461bcd02815260206004820152601860248201527f436c61696d65642062792077726f6e6720616464726573730000000000000000604482015290519081900360640190fd5b600080546040516001600160a01b03808516939216917f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd991a3600080546001600160a01b039092166001600160a01b031992831617905560018054909116905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734e657720696d706c656d656e746174696f6e2063616e6e6f74206265207468652073616d65206173206f6c64a165627a7a72305820a22e603f0ab9283bea4aa0bcfe740946e8134749a34b8d7b89bd9f1fddd9d6930029

Deployed Bytecode

0x60806040526004361061007b5760003560e01c80635e55d96f1161004e5780635e55d96f146101445780638f4a3bcd146101775780639965b3d6146101a0578063f1739cae146101b55761007b565b8063025313a2146100b45780630add8140146100e55780633659cfe6146100fa5780635c60da1b1461012f575b6002546001600160a01b03168061009157600080fd5b604051363d82373d3d3683855af43d806000843e8180156100b0578184f35b8184fd5b3480156100c057600080fd5b506100c96101e8565b604080516001600160a01b039092168252519081900360200190f35b3480156100f157600080fd5b506100c96101f7565b34801561010657600080fd5b5061012d6004803603602081101561011d57600080fd5b50356001600160a01b0316610206565b005b34801561013b57600080fd5b506100c96102fc565b34801561015057600080fd5b5061012d6004803603602081101561016757600080fd5b50356001600160a01b031661030b565b34801561018357600080fd5b5061018c6103c0565b604080519115158252519081900360200190f35b3480156101ac57600080fd5b5061012d6103d1565b3480156101c157600080fd5b5061012d600480360360208110156101d857600080fd5b50356001600160a01b03166103dc565b6000546001600160a01b031690565b6001546001600160a01b031690565b61020e6103c0565b6102625760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6002546001600160a01b03828116911614156102b257604051600160e51b62461bcd02815260040180806020018281038252602c8152602001806105d5602c913960400191505060405180910390fd5b600280546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6002546001600160a01b031681565b6000546001600160a01b03161561036c5760408051600160e51b62461bcd02815260206004820152601660248201527f4f776e61626c653a20616c7265616479206f776e656400000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166103b457604051600160e51b62461bcd0281526004018080602001828103825260268152602001806105af6026913960400191505060405180910390fd5b6103bd8161047d565b50565b6000546001600160a01b0316331490565b6103da336104e7565b565b6103e46103c0565b6104385760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6104418161047d565b600080546040516001600160a01b03808516939216917fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b91a350565b6001600160a01b0381166104c557604051600160e51b62461bcd0281526004018080602001828103825260268152602001806105af6026913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b0382811691161461054c5760408051600160e51b62461bcd02815260206004820152601860248201527f436c61696d65642062792077726f6e6720616464726573730000000000000000604482015290519081900360640190fd5b600080546040516001600160a01b03808516939216917f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd991a3600080546001600160a01b039092166001600160a01b031992831617905560018054909116905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734e657720696d706c656d656e746174696f6e2063616e6e6f74206265207468652073616d65206173206f6c64a165627a7a72305820a22e603f0ab9283bea4aa0bcfe740946e8134749a34b8d7b89bd9f1fddd9d6930029

Deployed Bytecode Sourcemap

3184:1121:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3803:14;;-1:-1:-1;;;;;3803:14:0;3836:19;3828:28;;;;;;3908:4;3902:11;3961:12;3945:14;3940:3;3927:47;4062:14;4046;4032:12;4027:3;4020:5;4015:3;4002:75;4103:14;4154:4;4151:1;4146:3;4131:28;4182:6;4202:28;;;;4266:4;4261:3;4254:17;4202:28;4223:4;4218:3;4211:17;1039:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1039:89:0;;;:::i;:::-;;;;-1:-1:-1;;;;;1039:89:0;;;;;;;;;;;;;;1209:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1209:103:0;;;:::i;3318:230::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3318:230:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3318:230:0;-1:-1:-1;;;;;3318:230:0;;:::i;:::-;;3280:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3280:29:0;;;:::i;2149:260::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2149:260:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2149:260:0;-1:-1:-1;;;;;2149:260:0;;:::i;1609:102::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1609:102:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;2052:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2052:89:0;;;:::i;1866:178::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1866:178:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1866:178:0;-1:-1:-1;;;;;1866:178:0;;:::i;1039:89::-;1082:7;1109:11;-1:-1:-1;;;;;1109:11:0;1039:89;:::o;1209:103::-;1286:18;;-1:-1:-1;;;;;1286:18:0;1209:103;:::o;3318:230::-;1450:14;:12;:14::i;:::-;1442:59;;;;;-1:-1:-1;;;;;1442:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3407:14;;-1:-1:-1;;;;;3395:26:0;;;3407:14;;3395:26;;3387:83;;;;-1:-1:-1;;;;;3387:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3481:14;:25;;-1:-1:-1;;;;;;3481:25:0;-1:-1:-1;;;;;3481:25:0;;;;;;;;3522:18;;;;-1:-1:-1;;3522:18:0;3318:230;:::o;3280:29::-;;;-1:-1:-1;;;;;3280:29:0;;:::o;2149:260::-;2244:1;2221:11;-1:-1:-1;;;;;2221:11:0;:25;2213:60;;;;;-1:-1:-1;;;;;2213:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2292:22:0;;2284:73;;;;-1:-1:-1;;;;;2284:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2368:33;2392:8;2368:23;:33::i;:::-;2149:260;:::o;1609:102::-;1654:4;1692:11;-1:-1:-1;;;;;1692:11:0;1678:10;:25;;1609:102::o;2052:89::-;2101:32;2122:10;2101:20;:32::i;:::-;2052:89::o;1866:178::-;1450:14;:12;:14::i;:::-;1442:59;;;;;-1:-1:-1;;;;;1442:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1949:33;1973:8;1949:23;:33::i;:::-;2014:11;;;1998:38;;-1:-1:-1;;;;;1998:38:0;;;;2014:11;;;1998:38;;;1866:178;:::o;2517:192::-;-1:-1:-1;;;;;2596:22:0;;2588:73;;;;-1:-1:-1;;;;;2588:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2672:18;:29;;-1:-1:-1;;;;;;2672:29:0;-1:-1:-1;;;;;2672:29:0;;;;;;;;;;2517:192::o;2717:282::-;2805:18;;-1:-1:-1;;;;;2793:30:0;;;2805:18;;2793:30;2785:67;;;;;-1:-1:-1;;;;;2785:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2894:11;;;2868:48;;-1:-1:-1;;;;;2868:48:0;;;;2894:11;;;2868:48;;;2927:11;:22;;-1:-1:-1;;;;;2927:22:0;;;-1:-1:-1;;;;;;2927:22:0;;;;;;;2960:31;;;;;;;2717:282::o

Swarm Source

bzzr://a22e603f0ab9283bea4aa0bcfe740946e8134749a34b8d7b89bd9f1fddd9d693
Loading...
Loading
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.