ERC-721
Overview
Max Total Supply
32 MetaX
Holders
14
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 MetaXLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
OwnedUpgradeabilityProxy
Compiler Version
v0.5.2+commit.1df8f40c
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-14 */ 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.erc721.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.erc721.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
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"proxyOwner","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_implementation","type":"address"}],"name":"upgradeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"name":"impl","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferProxyOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_implementation","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"previousOwner","type":"address"},{"indexed":false,"name":"newOwner","type":"address"}],"name":"ProxyOwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}]
Contract Creation Code
608060405234801561001057600080fd5b506040516020806104e68339810180604052602081101561003057600080fd5b50516100443364010000000061005c810204565b61005681640100000000610091810204565b5061014e565b604080517f6d696e7461626c652e6572633732312e70726f78792e6f776e657200000000008152905190819003601b01902055565b60006100a4640100000000610109810204565b9050600160a060020a0380821690831614156100bf57600080fd5b6100d18264010000000061012c810204565b604051600160a060020a038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a25050565b60008060405180806104c260249139604051908190036024019020549392505050565b600060405180806104c260249139604051908190036024019020929092555050565b6103658061015d6000396000f3fe60806040526004361061005b577c01000000000000000000000000000000000000000000000000000000006000350463025313a281146100a15780633659cfe6146100d25780635c60da1b14610107578063f1739cae1461011c575b600061006561014f565b9050600160a060020a038116151561007c57600080fd5b60405136600082376000803683855af43d806000843e81801561009d578184f35b8184fd5b3480156100ad57600080fd5b506100b6610172565b60408051600160a060020a039092168252519081900360200190f35b3480156100de57600080fd5b50610105600480360360208110156100f557600080fd5b5035600160a060020a03166101a8565b005b34801561011357600080fd5b506100b661014f565b34801561012857600080fd5b506101056004803603602081101561013f57600080fd5b5035600160a060020a03166101d0565b600080604051808061031660249139604051908190036024019020549392505050565b604080517f6d696e7461626c652e6572633732312e70726f78792e6f776e657200000000008152905190819003601b0190205490565b6101b0610172565b600160a060020a031633146101c457600080fd5b6101cd81610258565b50565b6101d8610172565b600160a060020a031633146101ec57600080fd5b600160a060020a038116151561020157600080fd5b61020a816102be565b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd9610233610172565b60408051600160a060020a03928316815291841660208301528051918290030190a150565b600061026261014f565b9050600160a060020a03808216908316141561027d57600080fd5b610286826102f3565b604051600160a060020a038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a25050565b604080517f6d696e7461626c652e6572633732312e70726f78792e6f776e657200000000008152905190819003601b01902055565b600060405180806103166024913960405190819003602401902092909255505056fe6d696e7461626c652e6572633732312e70726f78792e696d706c656d656e746174696f6ea165627a7a72305820c6d34bfa42a0a41960fc28b63b0e657c4d3a121951008da41fd80be1c18af13000296d696e7461626c652e6572633732312e70726f78792e696d706c656d656e746174696f6e0000000000000000000000004fe8e4782c44657bc1dfbd00b719032626599b45
Deployed Bytecode
0x60806040526004361061005b577c01000000000000000000000000000000000000000000000000000000006000350463025313a281146100a15780633659cfe6146100d25780635c60da1b14610107578063f1739cae1461011c575b600061006561014f565b9050600160a060020a038116151561007c57600080fd5b60405136600082376000803683855af43d806000843e81801561009d578184f35b8184fd5b3480156100ad57600080fd5b506100b6610172565b60408051600160a060020a039092168252519081900360200190f35b3480156100de57600080fd5b50610105600480360360208110156100f557600080fd5b5035600160a060020a03166101a8565b005b34801561011357600080fd5b506100b661014f565b34801561012857600080fd5b506101056004803603602081101561013f57600080fd5b5035600160a060020a03166101d0565b600080604051808061031660249139604051908190036024019020549392505050565b604080517f6d696e7461626c652e6572633732312e70726f78792e6f776e657200000000008152905190819003601b0190205490565b6101b0610172565b600160a060020a031633146101c457600080fd5b6101cd81610258565b50565b6101d8610172565b600160a060020a031633146101ec57600080fd5b600160a060020a038116151561020157600080fd5b61020a816102be565b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd9610233610172565b60408051600160a060020a03928316815291841660208301528051918290030190a150565b600061026261014f565b9050600160a060020a03808216908316141561027d57600080fd5b610286826102f3565b604051600160a060020a038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a25050565b604080517f6d696e7461626c652e6572633732312e70726f78792e6f776e657200000000008152905190819003601b01902055565b600060405180806103166024913960405190819003602401902092909255505056fe6d696e7461626c652e6572633732312e70726f78792e696d706c656d656e746174696f6ea165627a7a72305820c6d34bfa42a0a41960fc28b63b0e657c4d3a121951008da41fd80be1c18af1300029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004fe8e4782c44657bc1dfbd00b719032626599b45
-----Decoded View---------------
Arg [0] : _implementation (address): 0x4FE8E4782C44657bC1DfbD00B719032626599B45
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000004fe8e4782c44657bc1dfbd00b719032626599b45
Deployed Bytecode Sourcemap
3110:2221: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;4155:185;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4155:185:0;;;:::i;:::-;;;;-1:-1:-1;;;;;4155:185:0;;;;;;;;;;;;;;4947:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4947:112:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4947:112:0;-1:-1:-1;;;;;4947:112:0;;:::i;:::-;;1937:190;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1937:190:0;;;:::i;4515:235::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4515:235:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4515:235:0;-1:-1:-1;;;;;4515:235:0;;:::i;1937:190::-;1984:12;2009:16;1668:49;;;;;;;;;;;;;;;;;;2094:15;;2071:49;-1:-1:-1;;;2071:49:0:o;4155:185::-;3571:40;;;;;;;;;;;;;;;;4307:15;;4283:50::o;4947:112::-;4014:12;:10;:12::i;:::-;-1:-1:-1;;;;;4000:26:0;:10;:26;3992:35;;;;;;5024:27;5035:15;5024:10;:27::i;:::-;4947:112;:::o;4515:235::-;4014:12;:10;:12::i;:::-;-1:-1:-1;;;;;4000:26:0;:10;:26;3992:35;;;;;;-1:-1:-1;;;;;4607:23:0;;;;4599:32;;;;;;4642:34;4666:9;4642:23;:34::i;:::-;4692:50;4718:12;:10;:12::i;:::-;4692:50;;;-1:-1:-1;;;;;4692:50:0;;;;;;;;;;;;;;;;;;;;;4515:235;:::o;2672:280::-;2740:29;2772:16;:14;:16::i;:::-;2740:48;-1:-1:-1;;;;;;2807:43:0;;;;;;;;2799:52;;;;;;2862:38;2881:18;2862;:38::i;:::-;2916:28;;-1:-1:-1;;;;;2916:28:0;;;;;;;;2672:280;;:::o;5127:201::-;3571:40;;;;;;;;;;;;;;;;5278:32;5263:58::o;2298:207::-;2374:16;1668:49;;;;;;;;;;;;;;;;;;2451:36;;;;-1:-1:-1;;2436:62:0:o
Swarm Source
bzzr://c6d34bfa42a0a41960fc28b63b0e657c4d3a121951008da41fd80be1c18af130
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.