Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 2,754 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 16015343 | 775 days ago | IN | 0 ETH | 0.00028014 | ||||
Buy Box Payable | 15190898 | 897 days ago | IN | 0.08 ETH | 0.00058492 | ||||
Buy Box Payable | 15056777 | 917 days ago | IN | 0.09 ETH | 0.00157348 | ||||
Buy Box Payable | 15018095 | 924 days ago | IN | 0.06 ETH | 0.00232034 | ||||
Buy Box Payable | 15018030 | 924 days ago | IN | 0.06 ETH | 0.00114346 | ||||
Buy Box Payable | 15003054 | 927 days ago | IN | 0.12 ETH | 0.00179651 | ||||
Buy Box Payable | 15003054 | 927 days ago | IN | 0.12 ETH | 0.00184965 | ||||
Buy Box Payable | 15003053 | 927 days ago | IN | 0.12 ETH | 0.0016663 | ||||
Buy Box Payable | 15003051 | 927 days ago | IN | 0.12 ETH | 0.0016074 | ||||
Buy Box Payable | 15003049 | 927 days ago | IN | 0.12 ETH | 0.00169285 | ||||
Buy Box Payable | 15003048 | 927 days ago | IN | 0.12 ETH | 0.00149016 | ||||
Buy Box Payable | 15003046 | 927 days ago | IN | 0.12 ETH | 0.00163953 | ||||
Buy Box Payable | 15003044 | 927 days ago | IN | 0.12 ETH | 0.00177427 | ||||
Buy Box Payable | 15003044 | 927 days ago | IN | 0.12 ETH | 0.0017477 | ||||
Buy Box Payable | 15003044 | 927 days ago | IN | 0.12 ETH | 0.00177427 | ||||
Buy Box Payable | 15003044 | 927 days ago | IN | 0.12 ETH | 0.0017477 | ||||
Buy Box Payable | 15003044 | 927 days ago | IN | 0.12 ETH | 0.00177131 | ||||
Buy Box Payable | 15003044 | 927 days ago | IN | 0.12 ETH | 0.00174787 | ||||
Buy Box Payable | 15002534 | 927 days ago | IN | 0.12 ETH | 0.00280662 | ||||
Buy Box Payable | 15002533 | 927 days ago | IN | 0.12 ETH | 0.002949 | ||||
Buy Box Payable | 15002532 | 927 days ago | IN | 0.12 ETH | 0.00276134 | ||||
Buy Box Payable | 14874993 | 949 days ago | IN | 0.06 ETH | 0.00122666 | ||||
Update Box Time ... | 14811738 | 959 days ago | IN | 0 ETH | 0.00136848 | ||||
Buy Box Payable | 14811677 | 959 days ago | IN | 0.12 ETH | 0.0067863 | ||||
Buy Box Payable | 14810878 | 959 days ago | IN | 0.12 ETH | 0.00417576 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
14811677 | 959 days ago | 0.12 ETH | ||||
14810878 | 959 days ago | 0.12 ETH | ||||
14807704 | 960 days ago | 0.12 ETH | ||||
14805850 | 960 days ago | 0.12 ETH | ||||
14805323 | 960 days ago | 0.12 ETH | ||||
14804185 | 960 days ago | 0.12 ETH | ||||
14803705 | 961 days ago | 0.12 ETH | ||||
14773430 | 965 days ago | 0.12 ETH | ||||
14773401 | 965 days ago | 0.12 ETH | ||||
14773356 | 965 days ago | 0.12 ETH | ||||
14773351 | 965 days ago | 0.12 ETH | ||||
14773341 | 965 days ago | 0.12 ETH | ||||
14773050 | 965 days ago | 0.12 ETH | ||||
14772985 | 965 days ago | 0.12 ETH | ||||
14772820 | 965 days ago | 0.12 ETH | ||||
14772817 | 965 days ago | 0.12 ETH | ||||
14772815 | 965 days ago | 0.12 ETH | ||||
14772811 | 965 days ago | 0.12 ETH | ||||
14772749 | 965 days ago | 0.12 ETH | ||||
14772718 | 965 days ago | 0.12 ETH | ||||
14772716 | 965 days ago | 0.12 ETH | ||||
14772712 | 965 days ago | 0.12 ETH | ||||
14772680 | 965 days ago | 0.12 ETH | ||||
14772641 | 965 days ago | 0.12 ETH | ||||
14772626 | 965 days ago | 0.12 ETH |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
BlindboxProxy
Compiler Version
v0.8.1+commit.df193b15
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity ^0.8.0; import "./IERC1538.sol"; import "./ProxyBaseStorage.sol"; import './BlindboxStorage.sol'; import '@openzeppelin/contracts/access/Ownable.sol'; /////////////////////////////////////////////////////////////////////////////////////////////////// /** * @title ProxyReceiver Contract * @dev Handles forwarding calls to receiver delegates while offering transparency of updates. * Follows ERC-1538 standard. * * NOTE: Not recommended for direct use in a production contract, as no security control. * Provided as simple example only. */ /////////////////////////////////////////////////////////////////////////////////////////////////// contract BlindboxProxy is ProxyBaseStorage, IERC1538, BlindboxStorage, Ownable { constructor() public { proxy = address(this); //Adding ERC1538 updateContract function bytes memory signature = "updateContract(address,string,string)"; bytes4 funcId = bytes4(keccak256(signature)); delegates[funcId] = proxy; funcSignatures.push(signature); funcSignatureToIndex[signature] = funcSignatures.length; emit FunctionUpdate(funcId, address(0), proxy, string(signature)); emit CommitMessage("Added ERC1538 updateContract function at contract creation"); } /////////////////////////////////////////////////////////////////////////////////////////////// fallback() external payable { if (msg.sig == bytes4(0) && msg.value != uint(0)) { // skipping ethers/BNB received to delegate return; } address delegate = delegates[msg.sig]; require(delegate != address(0), "Function does not exist."); assembly { let ptr := mload(0x40) calldatacopy(ptr, 0, calldatasize()) let result := delegatecall(gas(), delegate, ptr, calldatasize(), 0, 0) let size := returndatasize() returndatacopy(ptr, 0, size) switch result case 0 {revert(ptr, size)} default {return (ptr, size)} } } /////////////////////////////////////////////////////////////////////////////////////////////// /// @notice Updates functions in a transparent contract. /// @dev If the value of _delegate is zero then the functions specified /// in _functionSignatures are removed. /// If the value of _delegate is a delegate contract address then the functions /// specified in _functionSignatures will be delegated to that address. /// @param _delegate The address of a delegate contract to delegate to or zero /// @param _functionSignatures A list of function signatures listed one after the other /// @param _commitMessage A short description of the change and why it is made /// This message is passed to the CommitMessage event. function updateContract(address _delegate, string calldata _functionSignatures, string calldata _commitMessage) override onlyOwner external { // pos is first used to check the size of the delegate contract. // After that pos is the current memory location of _functionSignatures. // It is used to move through the characters of _functionSignatures uint256 pos; if(_delegate != address(0)) { assembly { pos := extcodesize(_delegate) } require(pos > 0, "_delegate address is not a contract and is not address(0)"); } // creates a bytes version of _functionSignatures bytes memory signatures = bytes(_functionSignatures); // stores the position in memory where _functionSignatures ends. uint256 signaturesEnd; // stores the starting position of a function signature in _functionSignatures uint256 start; assembly { pos := add(signatures,32) start := pos signaturesEnd := add(pos,mload(signatures)) } // the function id of the current function signature bytes4 funcId; // the delegate address that is being replaced or address(0) if removing functions address oldDelegate; // the length of the current function signature in _functionSignatures uint256 num; // the current character in _functionSignatures uint256 char; // the position of the current function signature in the funcSignatures array uint256 index; // the last position in the funcSignatures array uint256 lastIndex; // parse the _functionSignatures string and handle each function for (; pos < signaturesEnd; pos++) { assembly {char := byte(0,mload(pos))} // 0x29 == ) if (char == 0x29) { pos++; num = (pos - start); start = pos; assembly { mstore(signatures,num) } funcId = bytes4(keccak256(signatures)); oldDelegate = delegates[funcId]; if(_delegate == address(0)) { index = funcSignatureToIndex[signatures]; require(index != 0, "Function does not exist."); index--; lastIndex = funcSignatures.length - 1; if (index != lastIndex) { funcSignatures[index] = funcSignatures[lastIndex]; funcSignatureToIndex[funcSignatures[lastIndex]] = index + 1; } funcSignatures.pop(); delete funcSignatureToIndex[signatures]; delete delegates[funcId]; emit FunctionUpdate(funcId, oldDelegate, address(0), string(signatures)); } else if (funcSignatureToIndex[signatures] == 0) { require(oldDelegate == address(0), "FuncId clash."); delegates[funcId] = _delegate; funcSignatures.push(signatures); funcSignatureToIndex[signatures] = funcSignatures.length; emit FunctionUpdate(funcId, address(0), _delegate, string(signatures)); } else if (delegates[funcId] != _delegate) { delegates[funcId] = _delegate; emit FunctionUpdate(funcId, oldDelegate, _delegate, string(signatures)); } assembly {signatures := add(signatures,num)} } } emit CommitMessage(_commitMessage); } /////////////////////////////////////////////////////////////////////////////////////////////// } ///////////////////////////////////////////////////////////////////////////////////////////////////
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IRand { function getRandomNumber() external returns (bytes32 requestId); function getRandomVal() external view returns (uint256); }
pragma solidity ^0.8.0; /////////////////////////////////////////////////////////////////////////////////////////////////// /** * @title ProxyBaseStorage * @dev Defining base storage for the proxy contract. */ /////////////////////////////////////////////////////////////////////////////////////////////////// contract ProxyBaseStorage { //////////////////////////////////////////// VARS ///////////////////////////////////////////// // maps functions to the delegate contracts that execute the functions. // funcId => delegate contract mapping(bytes4 => address) public delegates; // array of function signatures supported by the contract. bytes[] public funcSignatures; // maps each function signature to its position in the funcSignatures array. // signature => index+1 mapping(bytes => uint256) internal funcSignatureToIndex; // proxy address of itself, can be used for cross-delegate calls but also safety checking. address proxy; /////////////////////////////////////////////////////////////////////////////////////////////// }
pragma solidity ^0.8.0; /// @title ERC1538 Transparent Contract Standard /// @dev Required interface /// Note: the ERC-165 identifier for this interface is 0x61455567 interface IERC1538 { /// @dev This emits when one or a set of functions are updated in a transparent contract. /// The message string should give a short description of the change and why /// the change was made. event CommitMessage(string message); /// @dev This emits for each function that is updated in a transparent contract. /// functionId is the bytes4 of the keccak256 of the function signature. /// oldDelegate is the delegate contract address of the old delegate contract if /// the function is being replaced or removed. /// oldDelegate is the zero value address(0) if a function is being added for the /// first time. /// newDelegate is the delegate contract address of the new delegate contract if /// the function is being added for the first time or if the function is being /// replaced. /// newDelegate is the zero value address(0) if the function is being removed. event FunctionUpdate(bytes4 indexed functionId, address indexed oldDelegate, address indexed newDelegate, string functionSignature); /// @notice Updates functions in a transparent contract. /// @dev If the value of _delegate is zero then the functions specified /// in _functionSignatures are removed. /// If the value of _delegate is a delegate contract address then the functions /// specified in _functionSignatures will be delegated to that address. /// @param _delegate The address of a delegate contract to delegate to or zero /// to remove functions. /// @param _functionSignatures A list of function signatures listed one after the other /// @param _commitMessage A short description of the change and why it is made /// This message is passed to the CommitMessage event. function updateContract(address _delegate, string calldata _functionSignatures, string calldata _commitMessage) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import '@openzeppelin/contracts/utils/Counters.sol'; import '@openzeppelin/contracts/utils/math/SafeMath.sol'; import '../IERC20.sol'; import '../VRF/IRand.sol'; import '../INFT.sol'; import '../IDEX.sol'; import "../LPInterface.sol"; /////////////////////////////////////////////////////////////////////////////////////////////////// /** * @title DexStorage * @dev Defining dex storage for the proxy contract. */ /////////////////////////////////////////////////////////////////////////////////////////////////// contract BlindboxStorage { using Counters for Counters.Counter; using SafeMath for uint256; address a; address b; address c; IRand vrf; IERC20 ALIA; IERC20 ETH; IERC20 USD; IERC20 MATIC; INFT nft; IDEX dex; address platform; IERC20 internal token; Counters.Counter internal _boxId; Counters.Counter public generativeSeriesId; struct Attribute { string name; string uri; uint256 rarity; } struct GenerativeBox { string name; string boxURI; uint256 series; // to track start end Time uint256 countNFTs; // uint256[] attributes; // uint256 attributesRarity; bool isOpened; } struct GenSeries { string name; string seriesURI; string boxName; string boxURI; uint256 startTime; uint256 endTime; uint256 maxBoxes; uint256 perBoxNftMint; uint256 price; // in ALIA Counters.Counter boxId; // to track series's boxId (upto minted so far) Counters.Counter attrType; // attribute Type IDs Counters.Counter attrId; // attribute's ID // attributeType => attributeId => Attribute mapping ( uint256 => mapping( uint256 => Attribute)) attributes; // attributes combination hash => flag mapping ( bytes32 => bool) blackList; } struct NFT { // attrType => attrId mapping (uint256 => uint256) attribute; } // seriesId => Series mapping ( uint256 => GenSeries) public genSeries; mapping ( uint256 => uint256) public genseriesRoyalty; mapping ( uint256 => uint256[]) _allowedCurrenciesGen; mapping ( uint256 => address) public bankAddressGen; mapping ( uint256 => uint256) public baseCurrencyGen; mapping (uint256=>string) public genCollection; // boxId => attributeType => attributeId => Attribute // mapping( uint256 => mapping ( uint256 => mapping( uint256 => Attribute))) public attributes; // boxId => Box mapping ( uint256 => GenerativeBox) public boxesGen; // attributes combination => flag // mapping ( bytes => bool) public blackList; // boxId => boxOpener => array of combinations to be minted // mapping ( uint256 => mapping ( address => bytes[] )) public nftToMint; // boxId => owner mapping ( uint256 => address ) public genBoxOwner; // boxId => NFT index => attrType => attribute mapping (uint256 => mapping( uint256 => mapping (uint256 => uint256))) public nftsToMint; Counters.Counter public nonGenerativeSeriesId; // mapping(address => Counters.Counter) public nonGenerativeSeriesIdByAddress; struct URI { string name; string uri; uint256 rarity; uint256 copies; } struct NonGenerativeBox { string name; string boxURI; uint256 series; // to track start end Time uint256 countNFTs; // uint256[] attributes; // uint256 attributesRarity; bool isOpened; } struct NonGenSeries { string collection; string name; string seriesURI; string boxName; string boxURI; uint256 startTime; uint256 endTime; uint256 maxBoxes; uint256 perBoxNftMint; uint256 price; Counters.Counter boxId; // to track series's boxId (upto minted so far) Counters.Counter attrId; // uriId => URI mapping ( uint256 => URI) uris; } struct IDs { Counters.Counter attrType; Counters.Counter attrId; } struct CopiesData{ uint256 total; mapping(uint256 => uint256) nftCopies; } mapping (uint256 => CopiesData) public _CopiesData; // seriesId => NonGenSeries mapping ( uint256 => NonGenSeries) public nonGenSeries; mapping ( uint256 => uint256[]) _allowedCurrencies; mapping ( uint256 => address) public bankAddress; mapping ( uint256 => uint256) public nonGenseriesRoyalty; mapping ( uint256 => uint256) public baseCurrency; // boxId => IDs // mapping (uint256 => IDs) boxIds; // boxId => attributeType => attributeId => Attribute // mapping( uint256 => mapping ( uint256 => mapping( uint256 => Attribute))) public attributes; // boxId => Box mapping ( uint256 => NonGenerativeBox) public boxesNonGen; // attributes combination => flag // mapping ( bytes => bool) public blackList; // boxId => boxOpener => array of combinations to be minted // mapping ( uint256 => mapping ( address => bytes[] )) public nftToMint; // boxId => owner mapping ( uint256 => address ) public nonGenBoxOwner; // boxId => NFT index => attrType => attribute // mapping (uint256 => mapping( uint256 => mapping (uint256 => uint256))) public nfts; mapping(string => mapping(bool => uint256[])) seriesIdsByCollection; uint256 deployTime; LPInterface LPAlia; LPInterface LPWETH; LPInterface LPMATIC; mapping(bytes32 => mapping(uint256 => bool)) _whitelisted; mapping(uint256 => bool) _isWhiteListed; mapping(address => mapping (uint256=>uint256)) _boxesCrytpoUser; mapping( string => mapping (uint256=>uint256)) _boxesNoncryptoUser; mapping (uint256 => uint256) _perBoxUserLimit; mapping (uint256 => bool) _isCryptoAllowed; mapping (uint256 => uint256) _registrationFee; }
pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see {ERC20Detailed}. */ interface LPInterface { /** * @dev Returns the amount of tokens in existence. */ function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface INFT { function mintWithTokenURI(address to, string calldata tokenURI) external returns (uint256); function transferFrom(address owner, address to, uint256 tokenId) external; function mint(address to_, uint256 countNFTs_) external returns (uint256, uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); function withdraw(uint) external; function deposit() payable external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IDEX { function calculatePrice(uint256 _price, uint256 base, uint256 currencyType, uint256 tokenId, address seller, address nft_a) external view returns(uint256); function mintWithCollection(address collection, address to, string memory tokesnURI, uint256 royalty ) external returns(uint256); function createCollection(string calldata name_, string calldata symbol_) external; function transferCollectionOwnership(address collection, address newOwner) external; function mintNFT(uint256 count) external returns(uint256,uint256); function mintBlindbox(address collection, address to, uint256 quantity, address from, uint256 royalty) external returns(uint256 fromIndex,uint256 toIndex); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @title Counters * @author Matt Condon (@shrugs) * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number * of elements in a mapping, issuing ERC721 ids, or counting request ids. * * Include with `using Counters for Counters.Counter;` */ library Counters { struct Counter { // This variable should never be directly accessed by users of the library: interactions must be restricted to // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add // this feature: see https://github.com/ethereum/solidity/issues/4637 uint256 _value; // default: 0 } function current(Counter storage counter) internal view returns (uint256) { return counter._value; } function increment(Counter storage counter) internal { unchecked { counter._value += 1; } } function decrement(Counter storage counter) internal { uint256 value = counter._value; require(value > 0, "Counter: decrement overflow"); unchecked { counter._value = value - 1; } } function reset(Counter storage counter) internal { counter._value = 0; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @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. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) internal { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
{ "remappings": [], "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "istanbul", "libraries": {}, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"message","type":"string"}],"name":"CommitMessage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes4","name":"functionId","type":"bytes4"},{"indexed":true,"internalType":"address","name":"oldDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"newDelegate","type":"address"},{"indexed":false,"internalType":"string","name":"functionSignature","type":"string"}],"name":"FunctionUpdate","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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_CopiesData","outputs":[{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"bankAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"bankAddressGen","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"baseCurrency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"baseCurrencyGen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"boxesGen","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"boxURI","type":"string"},{"internalType":"uint256","name":"series","type":"uint256"},{"internalType":"uint256","name":"countNFTs","type":"uint256"},{"internalType":"bool","name":"isOpened","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"boxesNonGen","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"boxURI","type":"string"},{"internalType":"uint256","name":"series","type":"uint256"},{"internalType":"uint256","name":"countNFTs","type":"uint256"},{"internalType":"bool","name":"isOpened","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"funcSignatures","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"genBoxOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"genCollection","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"genSeries","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"seriesURI","type":"string"},{"internalType":"string","name":"boxName","type":"string"},{"internalType":"string","name":"boxURI","type":"string"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"maxBoxes","type":"uint256"},{"internalType":"uint256","name":"perBoxNftMint","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"components":[{"internalType":"uint256","name":"_value","type":"uint256"}],"internalType":"struct Counters.Counter","name":"boxId","type":"tuple"},{"components":[{"internalType":"uint256","name":"_value","type":"uint256"}],"internalType":"struct Counters.Counter","name":"attrType","type":"tuple"},{"components":[{"internalType":"uint256","name":"_value","type":"uint256"}],"internalType":"struct Counters.Counter","name":"attrId","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"generativeSeriesId","outputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"genseriesRoyalty","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"nftsToMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"nonGenBoxOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"nonGenSeries","outputs":[{"internalType":"string","name":"collection","type":"string"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"seriesURI","type":"string"},{"internalType":"string","name":"boxName","type":"string"},{"internalType":"string","name":"boxURI","type":"string"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"maxBoxes","type":"uint256"},{"internalType":"uint256","name":"perBoxNftMint","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"components":[{"internalType":"uint256","name":"_value","type":"uint256"}],"internalType":"struct Counters.Counter","name":"boxId","type":"tuple"},{"components":[{"internalType":"uint256","name":"_value","type":"uint256"}],"internalType":"struct Counters.Counter","name":"attrId","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nonGenerativeSeriesId","outputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"nonGenseriesRoyalty","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"},{"internalType":"string","name":"_functionSignatures","type":"string"},{"internalType":"string","name":"_commitMessage","type":"string"}],"name":"updateContract","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50620000266200002062000195565b62000199565b600380546001600160a01b031916301790556040805160608101909152602580825260009190620020766020830139805160208083019182206003546001600160e01b031982166000908152928390526040832080546001600160a01b0319166001600160a01b039092169190911790556001805480820182559252835193945092620000d9927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf69092019190620001eb565b50600154604051600290620000f090859062000291565b908152604051908190036020018120919091556003546001600160a01b0316906000906001600160e01b03198416907f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f5353906200014e908790620002af565b60405180910390a47faa1c0a0a78cec2470f9652e5d29540752e7a64d70f926933cebf13afaeda45de6040516200018590620002e4565b60405180910390a15050620003b1565b3390565b603080546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620001f99062000374565b90600052602060002090601f0160209004810192826200021d576000855562000268565b82601f106200023857805160ff191683800117855562000268565b8280016001018555821562000268579182015b82811115620002685782518255916020019190600101906200024b565b50620002769291506200027a565b5090565b5b808211156200027657600081556001016200027b565b60008251620002a581846020870162000341565b9190910192915050565b6000602082528251806020840152620002d081604085016020870162000341565b601f01601f19169190910160400192915050565b6020808252603a908201527f4164646564204552433135333820757064617465436f6e74726163742066756e60408201527f6374696f6e20617420636f6e7472616374206372656174696f6e000000000000606082015260800190565b60005b838110156200035e57818101518382015260200162000344565b838111156200036e576000848401525b50505050565b6002810460018216806200038957607f821691505b60208210811415620003ab57634e487b7160e01b600052602260045260246000fd5b50919050565b611cb580620003c16000396000f3fe6080604052600436106101405760003560e01c8063715018a6116100b6578063ad453ea81161006f578063ad453ea81461044e578063d118ea9b1461046e578063d6e0583814610483578063e49f46e3146104a3578063e833dce5146104c3578063f2fde38b146104d857610140565b8063715018a6146103a457806372c1f42e146103b95780637c24420c146103d95780638d124c58146103f95780638da5cb5b14610419578063a0a2daf01461042e57610140565b8063437865151161010857806343786515146102bf57806361455567146102df5780636431ab98146102ff5780636595c945146103375780636aba019b146103575780637123e6d91461038457610140565b8063236e3509146101d3578063261a423b1461020957806326a6860a146102365780632fccb87b14610256578063429bf2a714610287575b6000356001600160e01b03191615801561015957503415155b15610163576101d1565b600080356001600160e01b0319168152602081905260409020546001600160a01b0316806101ac5760405162461bcd60e51b81526004016101a390611a52565b60405180910390fd5b60405136600082376000803683855af43d806000843e8180156101cd578184f35b8184fd5b005b3480156101df57600080fd5b506101f36101ee366004611747565b6104f8565b6040516102009190611872565b60405180910390f35b34801561021557600080fd5b50610229610224366004611747565b610513565b6040516102009190611886565b34801561024257600080fd5b50610229610251366004611747565b6105ad565b34801561026257600080fd5b50610276610271366004611747565b6105d8565b604051610200959493929190611a0d565b34801561029357600080fd5b506102a76102a2366004611747565b61071b565b6040516102009c9b9a99989796959493929190611975565b3480156102cb57600080fd5b506102766102da366004611747565b6109b8565b3480156102eb57600080fd5b506101d16102fa3660046116a1565b6109d3565b34801561030b57600080fd5b5061031f61031a366004611747565b610f9f565b6040516102009c9b9a999897969594939291906118c8565b34801561034357600080fd5b506101f3610352366004611747565b6112b8565b34801561036357600080fd5b50610377610372366004611747565b6112d3565b6040516102009190611b88565b34801561039057600080fd5b5061037761039f366004611747565b6112e5565b3480156103b057600080fd5b506101d16112f7565b3480156103c557600080fd5b506101f36103d4366004611747565b611342565b3480156103e557600080fd5b506103776103f4366004611747565b61135d565b34801561040557600080fd5b50610377610414366004611747565b61136e565b34801561042557600080fd5b506101f3611380565b34801561043a57600080fd5b506101f361044936600461171f565b61138f565b34801561045a57600080fd5b5061037761046936600461175f565b6113aa565b34801561047a57600080fd5b506103776113cd565b34801561048f57600080fd5b506101f361049e366004611747565b6113d3565b3480156104af57600080fd5b506103776104be366004611747565b6113ee565b3480156104cf57600080fd5b50610377611400565b3480156104e457600080fd5b506101d16104f3366004611680565b611406565b601f602052600090815260409020546001600160a01b031681565b6017602052600090815260409020805461052c90611c13565b80601f016020809104026020016040519081016040528092919081815260200182805461055890611c13565b80156105a55780601f1061057a576101008083540402835291602001916105a5565b820191906000526020600020905b81548152906001019060200180831161058857829003601f168201915b505050505081565b600181815481106105bd57600080fd5b90600052602060002001600091509050805461052c90611c13565b6022602052600090815260409020805481906105f390611c13565b80601f016020809104026020016040519081016040528092919081815260200182805461061f90611c13565b801561066c5780601f106106415761010080835404028352916020019161066c565b820191906000526020600020905b81548152906001019060200180831161064f57829003601f168201915b50505050509080600101805461068190611c13565b80601f01602080910402602001604051908101604052809291908181526020018280546106ad90611c13565b80156106fa5780601f106106cf576101008083540402835291602001916106fa565b820191906000526020600020905b8154815290600101906020018083116106dd57829003601f168201915b50505050600283015460038401546004909401549293909290915060ff1685565b60126020526000908152604090208054819061073690611c13565b80601f016020809104026020016040519081016040528092919081815260200182805461076290611c13565b80156107af5780601f10610784576101008083540402835291602001916107af565b820191906000526020600020905b81548152906001019060200180831161079257829003601f168201915b5050505050908060010180546107c490611c13565b80601f01602080910402602001604051908101604052809291908181526020018280546107f090611c13565b801561083d5780601f106108125761010080835404028352916020019161083d565b820191906000526020600020905b81548152906001019060200180831161082057829003601f168201915b50505050509080600201805461085290611c13565b80601f016020809104026020016040519081016040528092919081815260200182805461087e90611c13565b80156108cb5780601f106108a0576101008083540402835291602001916108cb565b820191906000526020600020905b8154815290600101906020018083116108ae57829003601f168201915b5050505050908060030180546108e090611c13565b80601f016020809104026020016040519081016040528092919081815260200182805461090c90611c13565b80156109595780601f1061092e57610100808354040283529160200191610959565b820191906000526020600020905b81548152906001019060200180831161093c57829003601f168201915b50505060048401546005850154600686015460078701546008880154604080516020808201835260098c0154825282518082018452600a8d015481528351918201909352600b909b01548b52989995989497509295509093909291908c565b6018602052600090815260409020805481906105f390611c13565b6109db611477565b6001600160a01b03166109ec611380565b6001600160a01b031614610a125760405162461bcd60e51b81526004016101a390611b53565b60006001600160a01b03861615610a435750843b80610a435760405162461bcd60e51b81526004016101a390611af6565b600085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508451602080870198509596508601909401938693509150819050808080805b878a1015610f5557895160001a92508260291415610f435789610ab881611c4e565b9a50610ac69050878b611bb5565b808a526020808b018290206001600160e01b031981166000908152918290526040909120548c99509097506001600160a01b0390811696509094508f16610d0057600289604051610b1791906117bb565b90815260200160405180910390205491508160001415610b495760405162461bcd60e51b81526004016101a390611a52565b81610b5381611bfc565b60018054919450610b65925090611bb5565b9050808214610c325760018181548110610b8f57634e487b7160e01b600052603260045260246000fd5b9060005260206000200160018381548110610bba57634e487b7160e01b600052603260045260246000fd5b90600052602060002001908054610bd090611c13565b610bdb9291906114cd565b50610be7826001611b9d565b600260018381548110610c0a57634e487b7160e01b600052603260045260246000fd5b90600052602060002001604051610c2191906117d7565b908152604051908190036020019020555b6001805480610c5157634e487b7160e01b600052603160045260246000fd5b600190038181906000526020600020016000610c6d9190611558565b9055600289604051610c7f91906117bb565b90815260408051602092819003830181206000908190556001600160e01b03198a168082529381905291822080546001600160a01b031916905590916001600160a01b038816917f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f535390610cf3908e90611886565b60405180910390a4610f3e565b600289604051610d1091906117bb565b90815260200160405180910390205460001415610e4a576001600160a01b03851615610d4e5760405162461bcd60e51b81526004016101a390611acf565b8e600080886001600160e01b0319166001600160e01b031916815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600189908060018154018082558091505060019003906000526020600020016000909190919091509080519060200190610dd4929190611594565b50600154604051600290610de9908c906117bb565b9081526020016040518091039020819055508e6001600160a01b031660006001600160a01b0316876001600160e01b0319167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c604051610cf39190611886565b8e6001600160a01b0316600080886001600160e01b0319166001600160e01b031916815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b031614610f3e578e600080886001600160e01b0319166001600160e01b031916815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508e6001600160a01b0316856001600160a01b0316876001600160e01b0319167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c604051610f359190611886565b60405180910390a45b978301975b89610f4d81611c4e565b9a5050610a96565b7faa1c0a0a78cec2470f9652e5d29540752e7a64d70f926933cebf13afaeda45de8c8c604051610f86929190611899565b60405180910390a1505050505050505050505050505050565b601d60205260009081526040902080548190610fba90611c13565b80601f0160208091040260200160405190810160405280929190818152602001828054610fe690611c13565b80156110335780601f1061100857610100808354040283529160200191611033565b820191906000526020600020905b81548152906001019060200180831161101657829003601f168201915b50505050509080600101805461104890611c13565b80601f016020809104026020016040519081016040528092919081815260200182805461107490611c13565b80156110c15780601f10611096576101008083540402835291602001916110c1565b820191906000526020600020905b8154815290600101906020018083116110a457829003601f168201915b5050505050908060020180546110d690611c13565b80601f016020809104026020016040519081016040528092919081815260200182805461110290611c13565b801561114f5780601f106111245761010080835404028352916020019161114f565b820191906000526020600020905b81548152906001019060200180831161113257829003601f168201915b50505050509080600301805461116490611c13565b80601f016020809104026020016040519081016040528092919081815260200182805461119090611c13565b80156111dd5780601f106111b2576101008083540402835291602001916111dd565b820191906000526020600020905b8154815290600101906020018083116111c057829003601f168201915b5050505050908060040180546111f290611c13565b80601f016020809104026020016040519081016040528092919081815260200182805461121e90611c13565b801561126b5780601f106112405761010080835404028352916020019161126b565b820191906000526020600020905b81548152906001019060200180831161124e57829003601f168201915b50505050600583015460068401546007850154600886015460098701546040805160208082018352600a8b015482528251908101909252600b90990154815296979496939550919390928c565b6015602052600090815260409020546001600160a01b031681565b60136020526000908152604090205481565b60216020526000908152604090205481565b6112ff611477565b6001600160a01b0316611310611380565b6001600160a01b0316146113365760405162461bcd60e51b81526004016101a390611b53565b611340600061147b565b565b6019602052600090815260409020546001600160a01b031681565b602080526000908152604090205481565b60166020526000908152604090205481565b6030546001600160a01b031690565b6000602081905290815260409020546001600160a01b031681565b601a60209081526000938452604080852082529284528284209052825290205481565b601b5481565b6023602052600090815260409020546001600160a01b031681565b601c6020526000908152604090205481565b60115481565b61140e611477565b6001600160a01b031661141f611380565b6001600160a01b0316146114455760405162461bcd60e51b81526004016101a390611b53565b6001600160a01b03811661146b5760405162461bcd60e51b81526004016101a390611a89565b6114748161147b565b50565b3390565b603080546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546114d990611c13565b90600052602060002090601f0160209004810192826114fb5760008555611548565b82601f1061150c5780548555611548565b8280016001018555821561154857600052602060002091601f016020900482015b8281111561154857825482559160010191906001019061152d565b50611554929150611608565b5090565b50805461156490611c13565b6000825580601f106115765750611474565b601f0160209004906000526020600020908101906114749190611608565b8280546115a090611c13565b90600052602060002090601f0160209004810192826115c25760008555611548565b82601f106115db57805160ff1916838001178555611548565b82800160010185558215611548579182015b828111156115485782518255916020019190600101906115ed565b5b808211156115545760008155600101611609565b80356001600160a01b038116811461163457600080fd5b919050565b60008083601f84011261164a578182fd5b50813567ffffffffffffffff811115611661578182fd5b60208301915083602082850101111561167957600080fd5b9250929050565b600060208284031215611691578081fd5b61169a8261161d565b9392505050565b6000806000806000606086880312156116b8578081fd5b6116c18661161d565b9450602086013567ffffffffffffffff808211156116dd578283fd5b6116e989838a01611639565b90965094506040880135915080821115611701578283fd5b5061170e88828901611639565b969995985093965092949392505050565b600060208284031215611730578081fd5b81356001600160e01b03198116811461169a578182fd5b600060208284031215611758578081fd5b5035919050565b600080600060608486031215611773578283fd5b505081359360208301359350604090920135919050565b600081518084526117a2816020860160208601611bcc565b601f01601f19169290920160200192915050565b519052565b600082516117cd818460208701611bcc565b9190910192915050565b81546000908190600281046001808316806117f357607f831692505b602080841082141561181357634e487b7160e01b87526022600452602487fd5b818015611827576001811461183857611864565b60ff19861689528489019650611864565b6118418a611b91565b885b8681101561185c5781548b820152908501908301611843565b505084890196505b509498975050505050505050565b6001600160a01b0391909116815260200190565b60006020825261169a602083018461178a565b60006020825282602083015282846040840137818301604090810191909152601f909201601f19160101919050565b600061018082526118dd61018083018f61178a565b82810360208401526118ef818f61178a565b90508281036040840152611903818e61178a565b90508281036060840152611917818d61178a565b9050828103608084015261192b818c61178a565b9150508860a08301528760c08301528660e0830152856101008301528461012083015283516101408301526119646101608301846117b6565b9d9c50505050505050505050505050565b6000610180825261198a61018083018f61178a565b828103602084015261199c818f61178a565b905082810360408401526119b0818e61178a565b905082810360608401526119c4818d61178a565b608084019b909b52505060a081019790975260c087019590955260e086019390935261010085019190915251610120840152516101408301525161016090910152949350505050565b600060a08252611a2060a083018861178a565b8281036020840152611a32818861178a565b604084019690965250506060810192909252151560809091015292915050565b60208082526018908201527f46756e6374696f6e20646f6573206e6f742065786973742e0000000000000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252600d908201526c233ab731a4b21031b630b9b41760991b604082015260600190565b60208082526039908201527f5f64656c65676174652061646472657373206973206e6f74206120636f6e747260408201527f61637420616e64206973206e6f74206164647265737328302900000000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b90815260200190565b60009081526020902090565b60008219821115611bb057611bb0611c69565b500190565b600082821015611bc757611bc7611c69565b500390565b60005b83811015611be7578181015183820152602001611bcf565b83811115611bf6576000848401525b50505050565b600081611c0b57611c0b611c69565b506000190190565b600281046001821680611c2757607f821691505b60208210811415611c4857634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611c6257611c62611c69565b5060010190565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220f6ac69379310328b4f66f00ae4cbe0d198f14f0aee69543832365f0a4503d98464736f6c63430008010033757064617465436f6e747261637428616464726573732c737472696e672c737472696e6729
Deployed Bytecode
0x6080604052600436106101405760003560e01c8063715018a6116100b6578063ad453ea81161006f578063ad453ea81461044e578063d118ea9b1461046e578063d6e0583814610483578063e49f46e3146104a3578063e833dce5146104c3578063f2fde38b146104d857610140565b8063715018a6146103a457806372c1f42e146103b95780637c24420c146103d95780638d124c58146103f95780638da5cb5b14610419578063a0a2daf01461042e57610140565b8063437865151161010857806343786515146102bf57806361455567146102df5780636431ab98146102ff5780636595c945146103375780636aba019b146103575780637123e6d91461038457610140565b8063236e3509146101d3578063261a423b1461020957806326a6860a146102365780632fccb87b14610256578063429bf2a714610287575b6000356001600160e01b03191615801561015957503415155b15610163576101d1565b600080356001600160e01b0319168152602081905260409020546001600160a01b0316806101ac5760405162461bcd60e51b81526004016101a390611a52565b60405180910390fd5b60405136600082376000803683855af43d806000843e8180156101cd578184f35b8184fd5b005b3480156101df57600080fd5b506101f36101ee366004611747565b6104f8565b6040516102009190611872565b60405180910390f35b34801561021557600080fd5b50610229610224366004611747565b610513565b6040516102009190611886565b34801561024257600080fd5b50610229610251366004611747565b6105ad565b34801561026257600080fd5b50610276610271366004611747565b6105d8565b604051610200959493929190611a0d565b34801561029357600080fd5b506102a76102a2366004611747565b61071b565b6040516102009c9b9a99989796959493929190611975565b3480156102cb57600080fd5b506102766102da366004611747565b6109b8565b3480156102eb57600080fd5b506101d16102fa3660046116a1565b6109d3565b34801561030b57600080fd5b5061031f61031a366004611747565b610f9f565b6040516102009c9b9a999897969594939291906118c8565b34801561034357600080fd5b506101f3610352366004611747565b6112b8565b34801561036357600080fd5b50610377610372366004611747565b6112d3565b6040516102009190611b88565b34801561039057600080fd5b5061037761039f366004611747565b6112e5565b3480156103b057600080fd5b506101d16112f7565b3480156103c557600080fd5b506101f36103d4366004611747565b611342565b3480156103e557600080fd5b506103776103f4366004611747565b61135d565b34801561040557600080fd5b50610377610414366004611747565b61136e565b34801561042557600080fd5b506101f3611380565b34801561043a57600080fd5b506101f361044936600461171f565b61138f565b34801561045a57600080fd5b5061037761046936600461175f565b6113aa565b34801561047a57600080fd5b506103776113cd565b34801561048f57600080fd5b506101f361049e366004611747565b6113d3565b3480156104af57600080fd5b506103776104be366004611747565b6113ee565b3480156104cf57600080fd5b50610377611400565b3480156104e457600080fd5b506101d16104f3366004611680565b611406565b601f602052600090815260409020546001600160a01b031681565b6017602052600090815260409020805461052c90611c13565b80601f016020809104026020016040519081016040528092919081815260200182805461055890611c13565b80156105a55780601f1061057a576101008083540402835291602001916105a5565b820191906000526020600020905b81548152906001019060200180831161058857829003601f168201915b505050505081565b600181815481106105bd57600080fd5b90600052602060002001600091509050805461052c90611c13565b6022602052600090815260409020805481906105f390611c13565b80601f016020809104026020016040519081016040528092919081815260200182805461061f90611c13565b801561066c5780601f106106415761010080835404028352916020019161066c565b820191906000526020600020905b81548152906001019060200180831161064f57829003601f168201915b50505050509080600101805461068190611c13565b80601f01602080910402602001604051908101604052809291908181526020018280546106ad90611c13565b80156106fa5780601f106106cf576101008083540402835291602001916106fa565b820191906000526020600020905b8154815290600101906020018083116106dd57829003601f168201915b50505050600283015460038401546004909401549293909290915060ff1685565b60126020526000908152604090208054819061073690611c13565b80601f016020809104026020016040519081016040528092919081815260200182805461076290611c13565b80156107af5780601f10610784576101008083540402835291602001916107af565b820191906000526020600020905b81548152906001019060200180831161079257829003601f168201915b5050505050908060010180546107c490611c13565b80601f01602080910402602001604051908101604052809291908181526020018280546107f090611c13565b801561083d5780601f106108125761010080835404028352916020019161083d565b820191906000526020600020905b81548152906001019060200180831161082057829003601f168201915b50505050509080600201805461085290611c13565b80601f016020809104026020016040519081016040528092919081815260200182805461087e90611c13565b80156108cb5780601f106108a0576101008083540402835291602001916108cb565b820191906000526020600020905b8154815290600101906020018083116108ae57829003601f168201915b5050505050908060030180546108e090611c13565b80601f016020809104026020016040519081016040528092919081815260200182805461090c90611c13565b80156109595780601f1061092e57610100808354040283529160200191610959565b820191906000526020600020905b81548152906001019060200180831161093c57829003601f168201915b50505060048401546005850154600686015460078701546008880154604080516020808201835260098c0154825282518082018452600a8d015481528351918201909352600b909b01548b52989995989497509295509093909291908c565b6018602052600090815260409020805481906105f390611c13565b6109db611477565b6001600160a01b03166109ec611380565b6001600160a01b031614610a125760405162461bcd60e51b81526004016101a390611b53565b60006001600160a01b03861615610a435750843b80610a435760405162461bcd60e51b81526004016101a390611af6565b600085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508451602080870198509596508601909401938693509150819050808080805b878a1015610f5557895160001a92508260291415610f435789610ab881611c4e565b9a50610ac69050878b611bb5565b808a526020808b018290206001600160e01b031981166000908152918290526040909120548c99509097506001600160a01b0390811696509094508f16610d0057600289604051610b1791906117bb565b90815260200160405180910390205491508160001415610b495760405162461bcd60e51b81526004016101a390611a52565b81610b5381611bfc565b60018054919450610b65925090611bb5565b9050808214610c325760018181548110610b8f57634e487b7160e01b600052603260045260246000fd5b9060005260206000200160018381548110610bba57634e487b7160e01b600052603260045260246000fd5b90600052602060002001908054610bd090611c13565b610bdb9291906114cd565b50610be7826001611b9d565b600260018381548110610c0a57634e487b7160e01b600052603260045260246000fd5b90600052602060002001604051610c2191906117d7565b908152604051908190036020019020555b6001805480610c5157634e487b7160e01b600052603160045260246000fd5b600190038181906000526020600020016000610c6d9190611558565b9055600289604051610c7f91906117bb565b90815260408051602092819003830181206000908190556001600160e01b03198a168082529381905291822080546001600160a01b031916905590916001600160a01b038816917f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f535390610cf3908e90611886565b60405180910390a4610f3e565b600289604051610d1091906117bb565b90815260200160405180910390205460001415610e4a576001600160a01b03851615610d4e5760405162461bcd60e51b81526004016101a390611acf565b8e600080886001600160e01b0319166001600160e01b031916815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600189908060018154018082558091505060019003906000526020600020016000909190919091509080519060200190610dd4929190611594565b50600154604051600290610de9908c906117bb565b9081526020016040518091039020819055508e6001600160a01b031660006001600160a01b0316876001600160e01b0319167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c604051610cf39190611886565b8e6001600160a01b0316600080886001600160e01b0319166001600160e01b031916815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b031614610f3e578e600080886001600160e01b0319166001600160e01b031916815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508e6001600160a01b0316856001600160a01b0316876001600160e01b0319167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c604051610f359190611886565b60405180910390a45b978301975b89610f4d81611c4e565b9a5050610a96565b7faa1c0a0a78cec2470f9652e5d29540752e7a64d70f926933cebf13afaeda45de8c8c604051610f86929190611899565b60405180910390a1505050505050505050505050505050565b601d60205260009081526040902080548190610fba90611c13565b80601f0160208091040260200160405190810160405280929190818152602001828054610fe690611c13565b80156110335780601f1061100857610100808354040283529160200191611033565b820191906000526020600020905b81548152906001019060200180831161101657829003601f168201915b50505050509080600101805461104890611c13565b80601f016020809104026020016040519081016040528092919081815260200182805461107490611c13565b80156110c15780601f10611096576101008083540402835291602001916110c1565b820191906000526020600020905b8154815290600101906020018083116110a457829003601f168201915b5050505050908060020180546110d690611c13565b80601f016020809104026020016040519081016040528092919081815260200182805461110290611c13565b801561114f5780601f106111245761010080835404028352916020019161114f565b820191906000526020600020905b81548152906001019060200180831161113257829003601f168201915b50505050509080600301805461116490611c13565b80601f016020809104026020016040519081016040528092919081815260200182805461119090611c13565b80156111dd5780601f106111b2576101008083540402835291602001916111dd565b820191906000526020600020905b8154815290600101906020018083116111c057829003601f168201915b5050505050908060040180546111f290611c13565b80601f016020809104026020016040519081016040528092919081815260200182805461121e90611c13565b801561126b5780601f106112405761010080835404028352916020019161126b565b820191906000526020600020905b81548152906001019060200180831161124e57829003601f168201915b50505050600583015460068401546007850154600886015460098701546040805160208082018352600a8b015482528251908101909252600b90990154815296979496939550919390928c565b6015602052600090815260409020546001600160a01b031681565b60136020526000908152604090205481565b60216020526000908152604090205481565b6112ff611477565b6001600160a01b0316611310611380565b6001600160a01b0316146113365760405162461bcd60e51b81526004016101a390611b53565b611340600061147b565b565b6019602052600090815260409020546001600160a01b031681565b602080526000908152604090205481565b60166020526000908152604090205481565b6030546001600160a01b031690565b6000602081905290815260409020546001600160a01b031681565b601a60209081526000938452604080852082529284528284209052825290205481565b601b5481565b6023602052600090815260409020546001600160a01b031681565b601c6020526000908152604090205481565b60115481565b61140e611477565b6001600160a01b031661141f611380565b6001600160a01b0316146114455760405162461bcd60e51b81526004016101a390611b53565b6001600160a01b03811661146b5760405162461bcd60e51b81526004016101a390611a89565b6114748161147b565b50565b3390565b603080546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546114d990611c13565b90600052602060002090601f0160209004810192826114fb5760008555611548565b82601f1061150c5780548555611548565b8280016001018555821561154857600052602060002091601f016020900482015b8281111561154857825482559160010191906001019061152d565b50611554929150611608565b5090565b50805461156490611c13565b6000825580601f106115765750611474565b601f0160209004906000526020600020908101906114749190611608565b8280546115a090611c13565b90600052602060002090601f0160209004810192826115c25760008555611548565b82601f106115db57805160ff1916838001178555611548565b82800160010185558215611548579182015b828111156115485782518255916020019190600101906115ed565b5b808211156115545760008155600101611609565b80356001600160a01b038116811461163457600080fd5b919050565b60008083601f84011261164a578182fd5b50813567ffffffffffffffff811115611661578182fd5b60208301915083602082850101111561167957600080fd5b9250929050565b600060208284031215611691578081fd5b61169a8261161d565b9392505050565b6000806000806000606086880312156116b8578081fd5b6116c18661161d565b9450602086013567ffffffffffffffff808211156116dd578283fd5b6116e989838a01611639565b90965094506040880135915080821115611701578283fd5b5061170e88828901611639565b969995985093965092949392505050565b600060208284031215611730578081fd5b81356001600160e01b03198116811461169a578182fd5b600060208284031215611758578081fd5b5035919050565b600080600060608486031215611773578283fd5b505081359360208301359350604090920135919050565b600081518084526117a2816020860160208601611bcc565b601f01601f19169290920160200192915050565b519052565b600082516117cd818460208701611bcc565b9190910192915050565b81546000908190600281046001808316806117f357607f831692505b602080841082141561181357634e487b7160e01b87526022600452602487fd5b818015611827576001811461183857611864565b60ff19861689528489019650611864565b6118418a611b91565b885b8681101561185c5781548b820152908501908301611843565b505084890196505b509498975050505050505050565b6001600160a01b0391909116815260200190565b60006020825261169a602083018461178a565b60006020825282602083015282846040840137818301604090810191909152601f909201601f19160101919050565b600061018082526118dd61018083018f61178a565b82810360208401526118ef818f61178a565b90508281036040840152611903818e61178a565b90508281036060840152611917818d61178a565b9050828103608084015261192b818c61178a565b9150508860a08301528760c08301528660e0830152856101008301528461012083015283516101408301526119646101608301846117b6565b9d9c50505050505050505050505050565b6000610180825261198a61018083018f61178a565b828103602084015261199c818f61178a565b905082810360408401526119b0818e61178a565b905082810360608401526119c4818d61178a565b608084019b909b52505060a081019790975260c087019590955260e086019390935261010085019190915251610120840152516101408301525161016090910152949350505050565b600060a08252611a2060a083018861178a565b8281036020840152611a32818861178a565b604084019690965250506060810192909252151560809091015292915050565b60208082526018908201527f46756e6374696f6e20646f6573206e6f742065786973742e0000000000000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252600d908201526c233ab731a4b21031b630b9b41760991b604082015260600190565b60208082526039908201527f5f64656c65676174652061646472657373206973206e6f74206120636f6e747260408201527f61637420616e64206973206e6f74206164647265737328302900000000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b90815260200190565b60009081526020902090565b60008219821115611bb057611bb0611c69565b500190565b600082821015611bc757611bc7611c69565b500390565b60005b83811015611be7578181015183820152602001611bcf565b83811115611bf6576000848401525b50505050565b600081611c0b57611c0b611c69565b506000190190565b600281046001821680611c2757607f821691505b60208210811415611c4857634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611c6257611c62611c69565b5060010190565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220f6ac69379310328b4f66f00ae4cbe0d198f14f0aee69543832365f0a4503d98464736f6c63430008010033
Loading...
Loading
Loading...
Loading
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.