ETH Price: $2,982.96 (-2.24%)
Gas: 4 Gwei

Token

 

Overview

Max Total Supply

2,887

Holders

13

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
OKX 92
0xcb0963264231bb08b2f680ab3ed89a49c9641bb3
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:
OwnedUpgradeabilityProxy

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

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

pragma solidity ^0.5.0;


/**
 * @title Proxy
 * @dev Gives the possibility to delegate any call to a foreign implementation.
 */
contract Proxy {
    /**
    * @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, 0, calldatasize)
            let result := delegatecall(gas, _impl, ptr, calldatasize, 0, 0)
            let size := returndatasize
            returndatacopy(ptr, 0, size)

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

    /**
    * @dev Tells the address of the implementation where every call will be delegated.
    * @return address of the implementation to which it will be delegated
    */
    function implementation() public view returns (address);
}

/**
 * @title UpgradeabilityProxy
 * @dev This contract represents a proxy where the implementation address to which it will delegate can be upgraded
 */
contract UpgradeabilityProxy is Proxy {
    /**
    * @dev This event will be emitted every time the implementation gets upgraded
    * @param implementation representing the address of the upgraded implementation
    */
    event Upgraded(address indexed implementation);

    // Storage position of the address of the current implementation
    bytes32 private constant IMPLEMENTATION_POSITION = keccak256("mintable.erc1155.proxy.implementation");

    /**
    * @dev Constructor function
    */
    constructor() public {}

    /**
    * @dev Tells the address of the current implementation
    * @return address of the current implementation
    */
    function implementation() public view returns (address impl) {
        bytes32 position = IMPLEMENTATION_POSITION;
        assembly {
            impl := sload(position)
        }
    }

    /**
    * @dev Sets the address of the current implementation
    * @param _newImplementation address representing the new implementation to be set
    */
    function _setImplementation(address _newImplementation) internal {
        bytes32 position = IMPLEMENTATION_POSITION;
        assembly {
            sstore(position, _newImplementation)
        }
    }

    /**
    * @dev Upgrades the implementation address
    * @param _newImplementation representing the address of the new implementation to be set
    */
    function _upgradeTo(address _newImplementation) internal {
        address currentImplementation = implementation();
        require(currentImplementation != _newImplementation);
        _setImplementation(_newImplementation);
        emit Upgraded(_newImplementation);
    }
}

/**
 * @title OwnedUpgradeabilityProxy
 * @dev This contract combines an upgradeability proxy with basic authorization control functionalities
 */
contract OwnedUpgradeabilityProxy is UpgradeabilityProxy {
    /**
    * @dev Event to show ownership has been transferred
    * @param previousOwner representing the address of the previous owner
    * @param newOwner representing the address of the new owner
    */
    event ProxyOwnershipTransferred(address previousOwner, address newOwner);

    // Storage position of the owner of the contract
    bytes32 private constant PROXY_OWNER_POSITION = keccak256("mintable.erc1155.proxy.owner");

    /**
    * @dev the constructor sets the original owner of the contract to the sender account.
    */
    constructor(address _implementation) public {
        _setUpgradeabilityOwner(msg.sender);
        _upgradeTo(_implementation);
    }

    /**
    * @dev Throws if called by any account other than the owner.
    */
    modifier onlyProxyOwner() {
        require(msg.sender == proxyOwner());
        _;
    }

    /**
    * @dev Tells the address of the owner
    * @return the address of the owner
    */
    function proxyOwner() public view returns (address owner) {
        bytes32 position = PROXY_OWNER_POSITION;
        assembly {
            owner := sload(position)
        }
    }

    /**
    * @dev Allows the current owner to transfer control of the contract to a newOwner.
    * @param _newOwner The address to transfer ownership to.
    */
    function transferProxyOwnership(address _newOwner) public onlyProxyOwner {
        require(_newOwner != address(0));
        _setUpgradeabilityOwner(_newOwner);
        emit ProxyOwnershipTransferred(proxyOwner(), _newOwner);
    }

    /**
    * @dev Allows the proxy owner to upgrade the current version of the proxy.
    * @param _implementation representing the address of the new implementation to be set.
    */
    function upgradeTo(address _implementation) public onlyProxyOwner {
        _upgradeTo(_implementation);
    }

    /**
     * @dev Sets the address of the owner
    */
    function _setUpgradeabilityOwner(address _newProxyOwner) internal {
        bytes32 position = PROXY_OWNER_POSITION;
        assembly {
            sstore(position, _newProxyOwner)
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_implementation","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"ProxyOwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"impl","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"proxyOwner","outputs":[{"internalType":"address","name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferProxyOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_implementation","type":"address"}],"name":"upgradeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b506040516104f23803806104f28339818101604052602081101561003357600080fd5b5051610047336001600160e01b0361005f16565b610059816001600160e01b0361009416565b50610157565b604080517f6d696e7461626c652e657263313135352e70726f78792e6f776e6572000000008152905190819003601c01902055565b60006100a76001600160e01b0361011216565b9050816001600160a01b0316816001600160a01b031614156100c857600080fd5b6100da826001600160e01b0361013516565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a25050565b60008060405180806104cd60259139604051908190036025019020549392505050565b600060405180806104cd60259139604051908190036025019020929092555050565b610367806101666000396000f3fe60806040526004361061003f5760003560e01c8063025313a2146100835780633659cfe6146100b45780635c60da1b146100e9578063f1739cae146100fe575b6000610049610131565b90506001600160a01b03811661005e57600080fd5b60405136600082376000803683855af43d806000843e81801561007f578184f35b8184fd5b34801561008f57600080fd5b50610098610154565b604080516001600160a01b039092168252519081900360200190f35b3480156100c057600080fd5b506100e7600480360360208110156100d757600080fd5b50356001600160a01b031661018a565b005b3480156100f557600080fd5b50610098610131565b34801561010a57600080fd5b506100e76004803603602081101561012157600080fd5b50356001600160a01b03166101bb565b600080604051808061030e60259139604051908190036025019020549392505050565b604080517f6d696e7461626c652e657263313135352e70726f78792e6f776e6572000000008152905190819003601c0190205490565b610192610154565b6001600160a01b0316336001600160a01b0316146101af57600080fd5b6101b88161024a565b50565b6101c3610154565b6001600160a01b0316336001600160a01b0316146101e057600080fd5b6001600160a01b0381166101f357600080fd5b6101fc816102b6565b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd9610225610154565b604080516001600160a01b03928316815291841660208301528051918290030190a150565b6000610254610131565b9050816001600160a01b0316816001600160a01b0316141561027557600080fd5b61027e826102eb565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a25050565b604080517f6d696e7461626c652e657263313135352e70726f78792e6f776e6572000000008152905190819003601c01902055565b6000604051808061030e6025913960405190819003602501902092909255505056fe6d696e7461626c652e657263313135352e70726f78792e696d706c656d656e746174696f6ea265627a7a723158207d2f31823349cc4e7de8a76b0f2db7e4470635f98d9cc69987ee7974e7c28b7464736f6c634300051100326d696e7461626c652e657263313135352e70726f78792e696d706c656d656e746174696f6e00000000000000000000000088899ef152e066b8afc57b09cefe8c7e04e62ffc

Deployed Bytecode

0x60806040526004361061003f5760003560e01c8063025313a2146100835780633659cfe6146100b45780635c60da1b146100e9578063f1739cae146100fe575b6000610049610131565b90506001600160a01b03811661005e57600080fd5b60405136600082376000803683855af43d806000843e81801561007f578184f35b8184fd5b34801561008f57600080fd5b50610098610154565b604080516001600160a01b039092168252519081900360200190f35b3480156100c057600080fd5b506100e7600480360360208110156100d757600080fd5b50356001600160a01b031661018a565b005b3480156100f557600080fd5b50610098610131565b34801561010a57600080fd5b506100e76004803603602081101561012157600080fd5b50356001600160a01b03166101bb565b600080604051808061030e60259139604051908190036025019020549392505050565b604080517f6d696e7461626c652e657263313135352e70726f78792e6f776e6572000000008152905190819003601c0190205490565b610192610154565b6001600160a01b0316336001600160a01b0316146101af57600080fd5b6101b88161024a565b50565b6101c3610154565b6001600160a01b0316336001600160a01b0316146101e057600080fd5b6001600160a01b0381166101f357600080fd5b6101fc816102b6565b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd9610225610154565b604080516001600160a01b03928316815291841660208301528051918290030190a150565b6000610254610131565b9050816001600160a01b0316816001600160a01b0316141561027557600080fd5b61027e826102eb565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a25050565b604080517f6d696e7461626c652e657263313135352e70726f78792e6f776e6572000000008152905190819003601c01902055565b6000604051808061030e6025913960405190819003602501902092909255505056fe6d696e7461626c652e657263313135352e70726f78792e696d706c656d656e746174696f6ea265627a7a723158207d2f31823349cc4e7de8a76b0f2db7e4470635f98d9cc69987ee7974e7c28b7464736f6c63430005110032

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

00000000000000000000000088899ef152e066b8afc57b09cefe8c7e04e62ffc

-----Decoded View---------------
Arg [0] : _implementation (address): 0x88899eF152e066b8AFC57B09CEfe8C7E04e62FFC

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000088899ef152e066b8afc57b09cefe8c7e04e62ffc


Deployed Bytecode Sourcemap

3111:2222:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;384:13;400:16;:14;:16::i;:::-;384:32;-1:-1:-1;;;;;;435:19:0;;427:28;;;;;;509:4;503:11;549:12;546:1;541:3;528:34;637:1;634;620:12;615:3;608:5;603:3;590:49;665:14;716:4;713:1;708:3;693:28;744:6;764:28;;;;828:4;823:3;816:17;764:28;785:4;780:3;773:17;4157:185;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4157:185:0;;;:::i;:::-;;;;-1:-1:-1;;;;;4157:185:0;;;;;;;;;;;;;;4949:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4949:112:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4949:112:0;-1:-1:-1;;;;;4949:112:0;;:::i;:::-;;1938:190;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1938:190:0;;;:::i;4517:235::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4517:235:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4517:235:0;-1:-1:-1;;;;;4517:235:0;;:::i;1938:190::-;1985:12;2010:16;1668:50;;;;;;;;;;;;;;;;;;2095:15;;2072:49;-1:-1:-1;;;2072:49:0:o;4157:185::-;3572:41;;;;;;;;;;;;;;;;4309:15;;4285:50::o;4949:112::-;4016:12;:10;:12::i;:::-;-1:-1:-1;;;;;4002:26:0;:10;-1:-1:-1;;;;;4002:26:0;;3994:35;;;;;;5026:27;5037:15;5026:10;:27::i;:::-;4949:112;:::o;4517:235::-;4016:12;:10;:12::i;:::-;-1:-1:-1;;;;;4002:26:0;:10;-1:-1:-1;;;;;4002:26:0;;3994:35;;;;;;-1:-1:-1;;;;;4609:23:0;;4601:32;;;;;;4644:34;4668:9;4644:23;:34::i;:::-;4694:50;4720:12;:10;:12::i;:::-;4694:50;;;-1:-1:-1;;;;;4694:50:0;;;;;;;;;;;;;;;;;;;;;4517:235;:::o;2673:280::-;2741:29;2773:16;:14;:16::i;:::-;2741:48;;2833:18;-1:-1:-1;;;;;2808:43:0;:21;-1:-1:-1;;;;;2808:43:0;;;2800:52;;;;;;2863:38;2882:18;2863;:38::i;:::-;2917:28;;-1:-1:-1;;;;;2917:28:0;;;;;;;;2673:280;;:::o;5129:201::-;3572:41;;;;;;;;;;;;;;;;5280:32;5265:58::o;2299:207::-;2375:16;1668:50;;;;;;;;;;;;;;;;;;2452:36;;;;-1:-1:-1;;2437:62:0:o

Swarm Source

bzzr://7d2f31823349cc4e7de8a76b0f2db7e4470635f98d9cc69987ee7974e7c28b74
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ 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.