ERC-20
Overview
Max Total Supply
0 SAPE
Holders
0
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 0 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x185B6B13...13E4DDD3d The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
SimpleVaultProxy
Compiler Version
v0.8.18+commit.87f61d96
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.18; import { EnumerableSet } from '@solidstate/contracts/data/EnumerableSet.sol'; import { IDiamondReadable } from '@solidstate/contracts/proxy/diamond/readable/IDiamondReadable.sol'; import { OwnableInternal } from '@solidstate/contracts/access/ownable/OwnableInternal.sol'; import { Proxy } from '@solidstate/contracts/proxy/Proxy.sol'; import { ERC1155MetadataExtensionInternal } from './ERC1155MetadataExtensionInternal.sol'; import { SimpleVaultStorage } from './SimpleVaultStorage.sol'; /** * @title Upgradeable proxy with externally controlled SimpleVault implementation */ contract SimpleVaultProxy is Proxy, OwnableInternal, ERC1155MetadataExtensionInternal { using EnumerableSet for EnumerableSet.AddressSet; address private immutable SIMPLE_VAULT_DIAMOND; constructor( address simpleVaultDiamond, address whitelist, uint256 shardValue, uint64 maxSupply, uint64 maxMintBalance, uint16 acquisitionFeeBP, uint16 saleFeeBP, address[] memory collections, string memory name, string memory symbol ) { SIMPLE_VAULT_DIAMOND = simpleVaultDiamond; _setOwner(msg.sender); _setName(name); _setSymbol(symbol); SimpleVaultStorage.Layout storage l = SimpleVaultStorage.layout(); l.whitelist = whitelist; l.shardValue = shardValue; l.maxSupply = maxSupply; l.maxMintBalance = maxMintBalance; l.acquisitionFeeBP = acquisitionFeeBP; l.saleFeeBP = saleFeeBP; uint256 collectionsLength = collections.length; unchecked { for (uint256 i; i < collectionsLength; ++i) { l.vaultCollections.add(collections[i]); } } } /** * @inheritdoc Proxy * @notice fetch logic implementation address from external diamond proxy */ function _getImplementation() internal view override returns (address) { return IDiamondReadable(SIMPLE_VAULT_DIAMOND).facetAddress(msg.sig); } /** * @notice required in order to accept ETH in exchange for minting shards */ receive() external payable {} }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.8; import { IERC173Internal } from '../../interfaces/IERC173Internal.sol'; interface IOwnableInternal is IERC173Internal { error Ownable__NotOwner(); error Ownable__NotTransitiveOwner(); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.8; import { IERC173 } from '../../interfaces/IERC173.sol'; import { AddressUtils } from '../../utils/AddressUtils.sol'; import { IOwnableInternal } from './IOwnableInternal.sol'; import { OwnableStorage } from './OwnableStorage.sol'; abstract contract OwnableInternal is IOwnableInternal { using AddressUtils for address; modifier onlyOwner() { if (msg.sender != _owner()) revert Ownable__NotOwner(); _; } modifier onlyTransitiveOwner() { if (msg.sender != _transitiveOwner()) revert Ownable__NotTransitiveOwner(); _; } function _owner() internal view virtual returns (address) { return OwnableStorage.layout().owner; } function _transitiveOwner() internal view virtual returns (address owner) { owner = _owner(); while (owner.isContract()) { try IERC173(owner).owner() returns (address transitiveOwner) { owner = transitiveOwner; } catch { break; } } } function _transferOwnership(address account) internal virtual { _setOwner(account); } function _setOwner(address account) internal virtual { OwnableStorage.Layout storage l = OwnableStorage.layout(); emit OwnershipTransferred(l.owner, account); l.owner = account; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.8; library OwnableStorage { struct Layout { address owner; } bytes32 internal constant STORAGE_SLOT = keccak256('solidstate.contracts.storage.Ownable'); function layout() internal pure returns (Layout storage l) { bytes32 slot = STORAGE_SLOT; assembly { l.slot := slot } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.8; /** * @title Set implementation with enumeration functions * @dev derived from https://github.com/OpenZeppelin/openzeppelin-contracts (MIT license) */ library EnumerableSet { error EnumerableSet__IndexOutOfBounds(); struct Set { bytes32[] _values; // 1-indexed to allow 0 to signify nonexistence mapping(bytes32 => uint256) _indexes; } struct Bytes32Set { Set _inner; } struct AddressSet { Set _inner; } struct UintSet { Set _inner; } function at( Bytes32Set storage set, uint256 index ) internal view returns (bytes32) { return _at(set._inner, index); } function at( AddressSet storage set, uint256 index ) internal view returns (address) { return address(uint160(uint256(_at(set._inner, index)))); } function at( UintSet storage set, uint256 index ) internal view returns (uint256) { return uint256(_at(set._inner, index)); } function contains( Bytes32Set storage set, bytes32 value ) internal view returns (bool) { return _contains(set._inner, value); } function contains( AddressSet storage set, address value ) internal view returns (bool) { return _contains(set._inner, bytes32(uint256(uint160(value)))); } function contains( UintSet storage set, uint256 value ) internal view returns (bool) { return _contains(set._inner, bytes32(value)); } function indexOf( Bytes32Set storage set, bytes32 value ) internal view returns (uint256) { return _indexOf(set._inner, value); } function indexOf( AddressSet storage set, address value ) internal view returns (uint256) { return _indexOf(set._inner, bytes32(uint256(uint160(value)))); } function indexOf( UintSet storage set, uint256 value ) internal view returns (uint256) { return _indexOf(set._inner, bytes32(value)); } function length(Bytes32Set storage set) internal view returns (uint256) { return _length(set._inner); } function length(AddressSet storage set) internal view returns (uint256) { return _length(set._inner); } function length(UintSet storage set) internal view returns (uint256) { return _length(set._inner); } function add( Bytes32Set storage set, bytes32 value ) internal returns (bool) { return _add(set._inner, value); } function add( AddressSet storage set, address value ) internal returns (bool) { return _add(set._inner, bytes32(uint256(uint160(value)))); } function add(UintSet storage set, uint256 value) internal returns (bool) { return _add(set._inner, bytes32(value)); } function remove( Bytes32Set storage set, bytes32 value ) internal returns (bool) { return _remove(set._inner, value); } function remove( AddressSet storage set, address value ) internal returns (bool) { return _remove(set._inner, bytes32(uint256(uint160(value)))); } function remove( UintSet storage set, uint256 value ) internal returns (bool) { return _remove(set._inner, bytes32(value)); } function toArray( Bytes32Set storage set ) internal view returns (bytes32[] memory) { return set._inner._values; } function toArray( AddressSet storage set ) internal view returns (address[] memory) { bytes32[] storage values = set._inner._values; address[] storage array; assembly { array.slot := values.slot } return array; } function toArray( UintSet storage set ) internal view returns (uint256[] memory) { bytes32[] storage values = set._inner._values; uint256[] storage array; assembly { array.slot := values.slot } return array; } function _at( Set storage set, uint256 index ) private view returns (bytes32) { if (index >= set._values.length) revert EnumerableSet__IndexOutOfBounds(); return set._values[index]; } function _contains( Set storage set, bytes32 value ) private view returns (bool) { return set._indexes[value] != 0; } function _indexOf( Set storage set, bytes32 value ) private view returns (uint256) { unchecked { return set._indexes[value] - 1; } } function _length(Set storage set) private view returns (uint256) { return set._values.length; } function _add( Set storage set, bytes32 value ) private returns (bool status) { if (!_contains(set, value)) { set._values.push(value); set._indexes[value] = set._values.length; status = true; } } function _remove( Set storage set, bytes32 value ) private returns (bool status) { uint256 valueIndex = set._indexes[value]; if (valueIndex != 0) { unchecked { bytes32 last = set._values[set._values.length - 1]; // move last value to now-vacant index set._values[valueIndex - 1] = last; set._indexes[last] = valueIndex; } // clear last index set._values.pop(); delete set._indexes[value]; status = true; } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.8; import { IERC173Internal } from './IERC173Internal.sol'; /** * @title Contract ownership standard interface * @dev see https://eips.ethereum.org/EIPS/eip-173 */ interface IERC173 is IERC173Internal { /** * @notice get the ERC173 contract owner * @return conrtact owner */ function owner() external view returns (address); /** * @notice transfer contract ownership to new account * @param account address of new owner */ function transferOwnership(address account) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.8; /** * @title Partial ERC173 interface needed by internal functions */ interface IERC173Internal { event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.8; /** * @title Diamond proxy introspection interface * @dev see https://eips.ethereum.org/EIPS/eip-2535 */ interface IDiamondReadable { struct Facet { address target; bytes4[] selectors; } /** * @notice get all facets and their selectors * @return diamondFacets array of structured facet data */ function facets() external view returns (Facet[] memory diamondFacets); /** * @notice get all selectors for given facet address * @param facet address of facet to query * @return selectors array of function selectors */ function facetFunctionSelectors( address facet ) external view returns (bytes4[] memory selectors); /** * @notice get addresses of all facets used by diamond * @return addresses array of facet addresses */ function facetAddresses() external view returns (address[] memory addresses); /** * @notice get the address of the facet associated with given selector * @param selector function selector to query * @return facet facet address (zero address if not found) */ function facetAddress( bytes4 selector ) external view returns (address facet); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.8; interface IProxy { error Proxy__ImplementationIsNotContract(); fallback() external payable; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.8; import { AddressUtils } from '../utils/AddressUtils.sol'; import { IProxy } from './IProxy.sol'; /** * @title Base proxy contract */ abstract contract Proxy is IProxy { using AddressUtils for address; /** * @notice delegate all calls to implementation contract * @dev reverts if implementation address contains no code, for compatibility with metamorphic contracts * @dev memory location in use by assembly may be unsafe in other contexts */ fallback() external payable virtual { address implementation = _getImplementation(); if (!implementation.isContract()) revert Proxy__ImplementationIsNotContract(); assembly { calldatacopy(0, 0, calldatasize()) let result := delegatecall( gas(), implementation, 0, calldatasize(), 0, 0 ) returndatacopy(0, 0, returndatasize()) switch result case 0 { revert(0, returndatasize()) } default { return(0, returndatasize()) } } } /** * @notice get logic implementation address * @return implementation address */ function _getImplementation() internal virtual returns (address); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.8; import { UintUtils } from './UintUtils.sol'; library AddressUtils { using UintUtils for uint256; error AddressUtils__InsufficientBalance(); error AddressUtils__NotContract(); error AddressUtils__SendValueFailed(); function toString(address account) internal pure returns (string memory) { return uint256(uint160(account)).toHexString(20); } function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable account, uint256 amount) internal { (bool success, ) = account.call{ value: amount }(''); if (!success) revert AddressUtils__SendValueFailed(); } function functionCall( address target, bytes memory data ) internal returns (bytes memory) { return functionCall(target, data, 'AddressUtils: failed low-level call'); } function functionCall( address target, bytes memory data, string memory error ) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, error); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue( target, data, value, 'AddressUtils: failed low-level call with value' ); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory error ) internal returns (bytes memory) { if (value > address(this).balance) revert AddressUtils__InsufficientBalance(); return _functionCallWithValue(target, data, value, error); } /** * @notice execute arbitrary external call with limited gas usage and amount of copied return data * @dev derived from https://github.com/nomad-xyz/ExcessivelySafeCall (MIT License) * @param target recipient of call * @param gasAmount gas allowance for call * @param value native token value to include in call * @param maxCopy maximum number of bytes to copy from return data * @param data encoded call data * @return success whether call is successful * @return returnData copied return data */ function excessivelySafeCall( address target, uint256 gasAmount, uint256 value, uint16 maxCopy, bytes memory data ) internal returns (bool success, bytes memory returnData) { returnData = new bytes(maxCopy); assembly { // execute external call via assembly to avoid automatic copying of return data success := call( gasAmount, target, value, add(data, 0x20), mload(data), 0, 0 ) // determine whether to limit amount of data to copy let toCopy := returndatasize() if gt(toCopy, maxCopy) { toCopy := maxCopy } // store the length of the copied bytes mstore(returnData, toCopy) // copy the bytes from returndata[0:toCopy] returndatacopy(add(returnData, 0x20), 0, toCopy) } } function _functionCallWithValue( address target, bytes memory data, uint256 value, string memory error ) private returns (bytes memory) { if (!isContract(target)) revert AddressUtils__NotContract(); (bool success, bytes memory returnData) = target.call{ value: value }( data ); if (success) { return returnData; } else if (returnData.length > 0) { assembly { let returnData_size := mload(returnData) revert(add(32, returnData), returnData_size) } } else { revert(error); } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.8; /** * @title utility functions for uint256 operations * @dev derived from https://github.com/OpenZeppelin/openzeppelin-contracts/ (MIT license) */ library UintUtils { error UintUtils__InsufficientHexLength(); bytes16 private constant HEX_SYMBOLS = '0123456789abcdef'; function add(uint256 a, int256 b) internal pure returns (uint256) { return b < 0 ? sub(a, -b) : a + uint256(b); } function sub(uint256 a, int256 b) internal pure returns (uint256) { return b < 0 ? add(a, -b) : a - uint256(b); } function toString(uint256 value) internal pure returns (string memory) { if (value == 0) { return '0'; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return '0x00'; } uint256 length = 0; for (uint256 temp = value; temp != 0; temp >>= 8) { unchecked { length++; } } return toHexString(value, length); } function toHexString( uint256 value, uint256 length ) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = '0'; buffer[1] = 'x'; unchecked { for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = HEX_SYMBOLS[value & 0xf]; value >>= 4; } } if (value != 0) revert UintUtils__InsufficientHexLength(); return string(buffer); } }
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.18; import { ERC1155MetadataExtensionStorage } from './ERC1155MetadataExtensionStorage.sol'; import { IERC1155MetadataExtensionInternal } from './IERC1155MetadataExtensionInternal.sol'; abstract contract ERC1155MetadataExtensionInternal is IERC1155MetadataExtensionInternal { /** * @notice sets a new name for ECR1155 collection * @param name name to set */ function _setName(string memory name) internal { ERC1155MetadataExtensionStorage.layout().name = name; emit NameSet(name); } /** * @notice sets a new symbol for ECR1155 collection * @param symbol symbol to set */ function _setSymbol(string memory symbol) internal { ERC1155MetadataExtensionStorage.layout().symbol = symbol; emit SymbolSet(symbol); } /** * @notice reads ERC1155 collcetion name * @return name ERC1155 collection name */ function _name() internal view returns (string memory name) { name = ERC1155MetadataExtensionStorage.layout().name; } /** * @notice reads ERC1155 collcetion symbol * @return symbol ERC1155 collection symbol */ function _symbol() internal view returns (string memory symbol) { symbol = ERC1155MetadataExtensionStorage.layout().symbol; } }
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.18; library ERC1155MetadataExtensionStorage { struct Layout { string name; string symbol; } bytes32 internal constant STORAGE_SLOT = keccak256('insrt.contracts.storage.ERC1155MetadataExtensionStorage'); function layout() internal pure returns (Layout storage l) { bytes32 slot = STORAGE_SLOT; assembly { l.slot := slot } } }
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.18; interface IERC1155MetadataExtensionInternal { /** * @notice emitted when a name for the ECR1155 collection is set * @param name set name */ event NameSet(string name); /** * @notice emitted when a symbol for the ECR1155 collection is set * @param symbol set symbol */ event SymbolSet(string symbol); }
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.18; import { EnumerableSet } from '@solidstate/contracts/data/EnumerableSet.sol'; library SimpleVaultStorage { struct Layout { uint256 shardValue; uint256 accruedFees; //maximum tokens of MINT_TOKEN_ID which may be minted from deposits. //will be set to current totalSupply of MINT_TOKEN_ID if ERC721 asset //is purchased by vault prior to maxSupply of shards being minted uint64 maxSupply; uint16 saleFeeBP; uint16 acquisitionFeeBP; address whitelist; uint64 maxMintBalance; uint64 reservedSupply; uint48 whitelistEndsAt; bool isEnabled; bool isYieldClaiming; EnumerableSet.AddressSet vaultCollections; EnumerableSet.UintSet ownedTokenIds; mapping(address collection => mapping(uint256 tokenId => uint256 price)) priceOfSale; } bytes32 internal constant STORAGE_SLOT = keccak256('insrt.contracts.storage.SimpleVault'); function layout() internal pure returns (Layout storage l) { bytes32 slot = STORAGE_SLOT; assembly { l.slot := slot } } }
{ "optimizer": { "enabled": true, "runs": 200 }, "viaIR": true, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"simpleVaultDiamond","type":"address"},{"internalType":"address","name":"whitelist","type":"address"},{"internalType":"uint256","name":"shardValue","type":"uint256"},{"internalType":"uint64","name":"maxSupply","type":"uint64"},{"internalType":"uint64","name":"maxMintBalance","type":"uint64"},{"internalType":"uint16","name":"acquisitionFeeBP","type":"uint16"},{"internalType":"uint16","name":"saleFeeBP","type":"uint16"},{"internalType":"address[]","name":"collections","type":"address[]"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"Ownable__NotOwner","type":"error"},{"inputs":[],"name":"Ownable__NotTransitiveOwner","type":"error"},{"inputs":[],"name":"Proxy__ImplementationIsNotContract","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"name","type":"string"}],"name":"NameSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"symbol","type":"string"}],"name":"SymbolSet","type":"event"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040523461071057610a1b803803908161001a81610730565b9182396101408183810103126107105761003381610755565b9061004060208201610755565b9060408101519061005360608201610769565b9161006060808301610769565b9061006d60a0840161077d565b9561007a60c0850161077d565b60e08501519094906001600160401b03811161071057810198808201601f8b011215610710578951996001600160401b038b11610497578a60051b60206100c2818301610730565b809d8152019083850160208285010111610710579060208301915b602081850101831061071557505050506101008201516001600160401b03811161071057610110908284019084016107af565b6101208301519092906001600160401b0381116107105761013492820191016107af565b6080929092527f8a22373512790c48b83a1fe2efdd2888d4a917bcdc24d0adf63e60f6716804608054336001600160a01b0382167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b0319163317905580516001600160401b0381116104975760008051602061099b83398151915254600181811c91168015610706575b60208210146105d757601f8111610698575b506020601f8211600114610602579181610235926000805160206109bb833981519152946000916105f7575b508160011b916000199060031b1c19161760008051602061099b833981519152555b604051918291826107ff565b0390a180516001600160401b038111610497576000805160206109fb83398151915254600181811c911680156105ed575b60208210146105d757601f8111610569575b506020601f82116001146104b8576102ec69ffff00000000000000009593836bffff000000000000000000009896946000805160206109db833981519152946000916104ad575b508160011b916000199060031b1c1916176000805160206109fb83398151915255604051918291826107ff565b0390a17f991f11b8cb8fdc405625748ebd0eed93fd0b0484fbcdd6b2328b5a75d0a057a7557f991f11b8cb8fdc405625748ebd0eed93fd0b0484fbcdd6b2328b5a75d0a057aa80546001600160401b0319166001600160401b039283161790559390931660609490941b6001600160601b0319169390931760509490941b169290921760409290921b16177f991f11b8cb8fdc405625748ebd0eed93fd0b0484fbcdd6b2328b5a75d0a057a95580519060005b8281106103bd5760405161016f908161082c82396080518160310152f35b81518110156104815760018060a01b0360208260051b840101511690816000527f991f11b8cb8fdc405625748ebd0eed93fd0b0484fbcdd6b2328b5a75d0a057ac91826020526040600020541561041a575b50600191500161039f565b7f991f11b8cb8fdc405625748ebd0eed93fd0b0484fbcdd6b2328b5a75d0a057ab928354936801000000000000000085101561049757600185018082558510156104815782600195826000526020600020015554916000526020526040600020553861040f565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b9050820151386102bf565b6000805160206109fb83398151915260005260206000209060005b601f1984168110610551575069ffff000000000000000095936001846000805160206109db833981519152946102ec946bffff000000000000000000009b9997601f19811610610538575b5050811b016000805160206109fb83398151915255610229565b84015160001960f88460031b161c19169055388061051e565b909160206001819285880151815501930191016104d3565b6000805160206109fb8339815191526000527f7198d0367d548998e048ece7cfc488883a44eeb446336bbd5e93fee3b71ef454601f830160051c8101602084106105d0575b601f830160051c820181106105c4575050610278565b600081556001016105ae565b50806105ae565b634e487b7160e01b600052602260045260246000fd5b90607f1690610266565b905082015138610207565b60008051602061099b83398151915260005260206000209060005b601f19841681106106805750826000805160206109bb833981519152949260019261023595601f19811610610667575b5050811b0160008051602061099b83398151915255610229565b84015160001960f88460031b161c19169055388061064d565b9091602060018192858801518155019301910161061d565b60008051602061099b8339815191526000527f15a835dde94f849de570caf2dc14e7c16b168afcdd1d4429a9065a4687ec63de601f830160051c8101602084106106ff575b601f830160051c820181106106f35750506101db565b600081556001016106dd565b50806106dd565b90607f16906101c9565b600080fd5b602080809361072386610755565b81520193019291506100dd565b6040519190601f01601f191682016001600160401b0381118382101761049757604052565b51906001600160a01b038216820361071057565b51906001600160401b038216820361071057565b519061ffff8216820361071057565b60005b83811061079f5750506000910152565b818101518382015260200161078f565b81601f820112156107105780516001600160401b038111610497576107dd601f8201601f1916602001610730565b9281845260208284010111610710576107fc916020808501910161078c565b90565b6040916020825261081f815180928160208601526020868601910161078c565b601f01601f191601019056fe608060405236156100d7576366ffd66360e11b6080908152600080356001600160e01b031916608452906020906024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156100ca57819061009e575b803b1561008c57818091368280378136915af43d82803e15610088573d90f35b3d90fd5b6040516321f27f0d60e21b8152600490fd5b5060203d81116100c3575b806100b66100be926100d9565b608001610112565b610068565b503d6100a9565b50604051903d90823e3d90fd5b005b601f80199101166080016080811067ffffffffffffffff8211176100fc57604052565b634e487b7160e01b600052604160045260246000fd5b602090607f190112610134576080516001600160a01b03811681036101345790565b600080fdfea2646970667358221220ee342625f6669ad6c010b8f207562d4292bb5c5aa03a8b8a1f10c1d309b96a6464736f6c6343000812003352bfbcfc92034947ca356582e906865f97f74bd80fb770b31bd1f81e02bf0b5113c98778b0c1a086bb98d7f1986e15788b5d3a1ad4c492e1d78f1c4cc51c20cf3e46ff90086ee29856e77591e82c82ff8ed513379b0fd82e84fc5290dd633c9952bfbcfc92034947ca356582e906865f97f74bd80fb770b31bd1f81e02bf0b520000000000000000000000009d781ec50967ce6bb4f0714d36b3a21b1d94596f000000000000000000000000a09a0950b2e5ec673dc406edb3811c021d049b6300000000000000000000000000000000000000000000000001aa535d3d0c000000000000000000000000000000000000000000000000000000000000000004d200000000000000000000000000000000000000000000000000000000000004d2000000000000000000000000000000000000000000000000000000000000028a00000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a3f5998047579334607c47a6a2889bf87a17fc02000000000000000000000000000000000000000000000000000000000000000c53686172645661756c74203300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005524f434b53000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405236156100d7576366ffd66360e11b6080908152600080356001600160e01b031916608452906020906024817f0000000000000000000000009d781ec50967ce6bb4f0714d36b3a21b1d94596f6001600160a01b03165afa80156100ca57819061009e575b803b1561008c57818091368280378136915af43d82803e15610088573d90f35b3d90fd5b6040516321f27f0d60e21b8152600490fd5b5060203d81116100c3575b806100b66100be926100d9565b608001610112565b610068565b503d6100a9565b50604051903d90823e3d90fd5b005b601f80199101166080016080811067ffffffffffffffff8211176100fc57604052565b634e487b7160e01b600052604160045260246000fd5b602090607f190112610134576080516001600160a01b03811681036101345790565b600080fdfea2646970667358221220ee342625f6669ad6c010b8f207562d4292bb5c5aa03a8b8a1f10c1d309b96a6464736f6c63430008120033
Loading...
Loading
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.