Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 4,531 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Purchase NFT | 11963471 | 1404 days ago | IN | 0 ETH | 0.006622 | ||||
Purchase NFT | 11893652 | 1415 days ago | IN | 0 ETH | 0.00368183 | ||||
Purchase NFT | 11891931 | 1415 days ago | IN | 0 ETH | 0.0088205 | ||||
Purchase NFT | 11890059 | 1416 days ago | IN | 0 ETH | 0.00317856 | ||||
Purchase NFT | 11889610 | 1416 days ago | IN | 0 ETH | 0.00399968 | ||||
Purchase NFT | 11887032 | 1416 days ago | IN | 0 ETH | 0.00844967 | ||||
Purchase NFT | 11887032 | 1416 days ago | IN | 0 ETH | 0.00911187 | ||||
Purchase NFT | 11886248 | 1416 days ago | IN | 0 ETH | 0.00442879 | ||||
Purchase NFT | 11881038 | 1417 days ago | IN | 0 ETH | 0.00884699 | ||||
Purchase NFT | 11881038 | 1417 days ago | IN | 0 ETH | 0.00588033 | ||||
Purchase NFT | 11879095 | 1417 days ago | IN | 0 ETH | 0.0119196 | ||||
Purchase NFT | 11877374 | 1418 days ago | IN | 0 ETH | 0.00884699 | ||||
Purchase NFT | 11877374 | 1418 days ago | IN | 0 ETH | 0.00958865 | ||||
Purchase NFT | 11877374 | 1418 days ago | IN | 0 ETH | 0.0158928 | ||||
Purchase NFT | 11877374 | 1418 days ago | IN | 0 ETH | 0.0185416 | ||||
Purchase NFT | 11877374 | 1418 days ago | IN | 0 ETH | 0.013244 | ||||
Purchase NFT | 11877374 | 1418 days ago | IN | 0 ETH | 0.0158928 | ||||
Purchase NFT | 11877206 | 1418 days ago | IN | 0 ETH | 0.0158928 | ||||
Purchase NFT | 11877206 | 1418 days ago | IN | 0 ETH | 0.013244 | ||||
Purchase NFT | 11877206 | 1418 days ago | IN | 0 ETH | 0.01271424 | ||||
Purchase NFT | 11877206 | 1418 days ago | IN | 0 ETH | 0.013244 | ||||
Purchase NFT | 11877206 | 1418 days ago | IN | 0 ETH | 0.00696634 | ||||
Purchase NFT | 11877202 | 1418 days ago | IN | 0 ETH | 0.013244 | ||||
Purchase NFT | 11876984 | 1418 days ago | IN | 0 ETH | 0.00402617 | ||||
Purchase NFT | 11876984 | 1418 days ago | IN | 0 ETH | 0.00402617 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
BCCGDistributor
Compiler Version
v0.5.0+commit.1d4f565a
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-02-10 */ pragma solidity ^0.5.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 GSN 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. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor() internal {} // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ 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() internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner(), "Ownable: caller is not the owner"); _; } /** * @dev Returns true if the caller is the current owner. */ function isOwner() public view returns (bool) { return _msgSender() == _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 onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = 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 onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see {ERC20Detailed}. */ 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 ); } interface IERC1155 { // Events /** * @dev Either TransferSingle or TransferBatch MUST emit when tokens are transferred, including zero amount transfers as well as minting or burning * Operator MUST be msg.sender * When minting/creating tokens, the `_from` field MUST be set to `0x0` * When burning/destroying tokens, the `_to` field MUST be set to `0x0` * The total amount transferred from address 0x0 minus the total amount transferred to 0x0 may be used by clients and exchanges to be added to the "circulating supply" for a given token ID * To broadcast the existence of a token ID with no initial balance, the contract SHOULD emit the TransferSingle event from `0x0` to `0x0`, with the token creator as `_operator`, and a `_amount` of 0 */ event TransferSingle( address indexed _operator, address indexed _from, address indexed _to, uint256 _id, uint256 _amount ); /** * @dev Either TransferSingle or TransferBatch MUST emit when tokens are transferred, including zero amount transfers as well as minting or burning * Operator MUST be msg.sender * When minting/creating tokens, the `_from` field MUST be set to `0x0` * When burning/destroying tokens, the `_to` field MUST be set to `0x0` * The total amount transferred from address 0x0 minus the total amount transferred to 0x0 may be used by clients and exchanges to be added to the "circulating supply" for a given token ID * To broadcast the existence of multiple token IDs with no initial balance, this SHOULD emit the TransferBatch event from `0x0` to `0x0`, with the token creator as `_operator`, and a `_amount` of 0 */ event TransferBatch( address indexed _operator, address indexed _from, address indexed _to, uint256[] _ids, uint256[] _amounts ); /** * @dev MUST emit when an approval is updated */ event ApprovalForAll( address indexed _owner, address indexed _operator, bool _approved ); /** * @dev MUST emit when the URI is updated for a token ID * URIs are defined in RFC 3986 * The URI MUST point a JSON file that conforms to the "ERC-1155 Metadata JSON Schema" */ event URI(string _amount, uint256 indexed _id); /** * @notice Transfers amount of an _id from the _from address to the _to address specified * @dev MUST emit TransferSingle event on success * Caller must be approved to manage the _from account's tokens (see isApprovedForAll) * MUST throw if `_to` is the zero address * MUST throw if balance of sender for token `_id` is lower than the `_amount` sent * MUST throw on any other error * When transfer is complete, this function MUST check if `_to` is a smart contract (code size > 0). If so, it MUST call `onERC1155Received` on `_to` and revert if the return amount is not `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` * @param _from Source address * @param _to Target address * @param _id ID of the token type * @param _amount Transfered amount * @param _data Additional data with no specified format, sent in call to `_to` */ function safeTransferFrom( address _from, address _to, uint256 _id, uint256 _amount, bytes calldata _data ) external; /** * @notice Send multiple types of Tokens from the _from address to the _to address (with safety call) * @dev MUST emit TransferBatch event on success * Caller must be approved to manage the _from account's tokens (see isApprovedForAll) * MUST throw if `_to` is the zero address * MUST throw if length of `_ids` is not the same as length of `_amounts` * MUST throw if any of the balance of sender for token `_ids` is lower than the respective `_amounts` sent * MUST throw on any other error * When transfer is complete, this function MUST check if `_to` is a smart contract (code size > 0). If so, it MUST call `onERC1155BatchReceived` on `_to` and revert if the return amount is not `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` * Transfers and events MUST occur in the array order they were submitted (_ids[0] before _ids[1], etc) * @param _from Source addresses * @param _to Target addresses * @param _ids IDs of each token type * @param _amounts Transfer amounts per token type * @param _data Additional data with no specified format, sent in call to `_to` */ function safeBatchTransferFrom( address _from, address _to, uint256[] calldata _ids, uint256[] calldata _amounts, bytes calldata _data ) external; /** * @notice Get the balance of an account's Tokens * @param _owner The address of the token holder * @param _id ID of the Token * @return The _owner's balance of the Token type requested */ function balanceOf(address _owner, uint256 _id) external view returns (uint256); /** * @notice Get the balance of multiple account/token pairs * @param _owners The addresses of the token holders * @param _ids ID of the Tokens * @return The _owner's balance of the Token types requested (i.e. balance for each (owner, id) pair) */ function balanceOfBatch(address[] calldata _owners, uint256[] calldata _ids) external view returns (uint256[] memory); /** * @notice Enable or disable approval for a third party ("operator") to manage all of caller's tokens * @dev MUST emit the ApprovalForAll event on success * @param _operator Address to add to the set of authorized operators * @param _approved True if the operator is approved, false to revoke approval */ function setApprovalForAll(address _operator, bool _approved) external; /** * @notice Queries the approval status of an operator for a given owner * @param _owner The owner of the Tokens * @param _operator Address of authorized operator * @return True if the operator is approved, false if not */ function isApprovedForAll(address _owner, address _operator) external view returns (bool isOperator); } interface IERC1155Metadata { /***********************************| | Metadata Public Function s | |__________________________________*/ /** * @notice A distinct Uniform Resource Identifier (URI) for a given token. * @dev URIs are defined in RFC 3986. * URIs are assumed to be deterministically generated based on token ID * Token IDs are assumed to be represented in their hex format in URIs * @return URI string */ function uri(uint256 _id) external view returns (string memory); } library Strings { // via https://github.com/oraclize/ethereum-api/blob/master/oraclizeAPI_0.5.sol function strConcat( string memory _a, string memory _b, string memory _c, string memory _d, string memory _e ) internal pure returns (string memory) { bytes memory _ba = bytes(_a); bytes memory _bb = bytes(_b); bytes memory _bc = bytes(_c); bytes memory _bd = bytes(_d); bytes memory _be = bytes(_e); string memory abcde = new string( _ba.length + _bb.length + _bc.length + _bd.length + _be.length ); bytes memory babcde = bytes(abcde); uint256 k = 0; for (uint256 i = 0; i < _ba.length; i++) babcde[k++] = _ba[i]; for (uint256 i = 0; i < _bb.length; i++) babcde[k++] = _bb[i]; for (uint256 i = 0; i < _bc.length; i++) babcde[k++] = _bc[i]; for (uint256 i = 0; i < _bd.length; i++) babcde[k++] = _bd[i]; for (uint256 i = 0; i < _be.length; i++) babcde[k++] = _be[i]; return string(babcde); } function strConcat( string memory _a, string memory _b, string memory _c, string memory _d ) internal pure returns (string memory) { return strConcat(_a, _b, _c, _d, ""); } function strConcat( string memory _a, string memory _b, string memory _c ) internal pure returns (string memory) { return strConcat(_a, _b, _c, "", ""); } function strConcat(string memory _a, string memory _b) internal pure returns (string memory) { return strConcat(_a, _b, "", "", ""); } function uint2str(uint256 _i) internal pure returns (string memory _uintAsString) { if (_i == 0) { return "0"; } uint256 j = _i; uint256 len; while (j != 0) { len++; j /= 10; } bytes memory bstr = new bytes(len); uint256 k = len - 1; while (_i != 0) { bstr[k--] = bytes1(uint8(48 + (_i % 10))); _i /= 10; } return string(bstr); } } /** * @title SafeMath * @dev Unsigned math operations with safety checks that revert on error */ library SafeMath { /** * @dev Multiplies two unsigned integers, reverts on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // 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-solidity/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath#mul: OVERFLOW"); return c; } /** * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, "SafeMath#div: DIVISION_BY_ZERO"); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath#sub: UNDERFLOW"); uint256 c = a - b; return c; } /** * @dev Adds two unsigned integers, reverts on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath#add: OVERFLOW"); return c; } /** * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo), * reverts when dividing by zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0, "SafeMath#mod: DIVISION_BY_ZERO"); return a % b; } } /** * Copyright 2018 ZeroEx Intl. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Utility library of inline functions on addresses */ library Address { /** * Returns whether the target address is a contract * @dev This function will return false if invoked during the constructor of a contract, * as the code is not actually created until after the constructor finishes. * @param account address of the account to check * @return whether the target address is a contract */ function isContract(address account) internal view returns (bool) { bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // XXX Currently there is no better way to check if there is a contract in an address // than to check the size of the code at that address. // See https://ethereum.stackexchange.com/a/14016/36603 // for more details about how this works. // TODO Check this again before the Serenity release, because all addresses will be // contracts then. assembly { codehash := extcodehash(account) } return (codehash != 0x0 && codehash != accountHash); } } contract BCCGDistributor is Ownable { using Strings for string; using SafeMath for uint256; using Address for address; uint256 public _currentCardId = 0; address private _salesperson; uint256 private _limitPerWallet; bool public _saleStarted = false; struct Card { uint256 cardId; address contractAddress; uint256 tokenId; uint256 totalAmount; uint256 currentAmount; address paymentToken; uint256 basePrice; uint256 limitForFree; bool isFinished; bool isPrivate; mapping(address => bool) whitelist; } struct History { address contractAddress; mapping(uint256 => mapping(address => uint256)) purchasedHistories; } // Events event CreateCard( address indexed _from, uint256 _cardId, address indexed _contractAddress, uint256 _tokenId, uint256 _totalAmount, address _paymentToken, uint256 _basePrice ); event PurchaseCard(address indexed _from, uint256 _cardId, uint256 _amount); event CardChanged(uint256 _cardId); event WhiteListAdded(uint256 _cardId, address indexed addr); event WhiteListRemoved(uint256 _cardId, address indexed addr); event BatchWhiteListAdded(uint256 _cardId, address[] addr); event BatchWhiteListRemoved(uint256 _cardId, address[] addr); mapping(uint256 => Card) internal _cards; mapping(uint256 => uint256) internal _earning; mapping(address => History) internal _history; constructor() public { _salesperson = msg.sender; _limitPerWallet = 1; } function setLimitPerWallet(uint256 limit) public onlyOwner returns (bool) { _limitPerWallet = limit; return true; } function setSalesPerson(address newSalesPerson) public onlyOwner returns (bool) { _salesperson = newSalesPerson; return true; } function getEarning(uint256 _cardId) public view returns (uint256) { return _earning[_cardId]; } function startSale() public onlyOwner returns (bool) { _saleStarted = true; return true; } function stopSale() public onlyOwner returns (bool) { _saleStarted = false; return false; } function createCard( address _contractAddress, uint256 _tokenId, uint256 _totalAmount, address _paymentToken, uint256 _basePrice, uint256 _limitForFree, bool _isPrivate ) public onlyOwner returns (uint256) { IERC1155 _contract = IERC1155(_contractAddress); require( _contract.balanceOf(msg.sender, _tokenId) >= _totalAmount, "Initial supply cannot be more than available supply" ); require( _contract.isApprovedForAll(msg.sender, address(this)) == true, "Contract must be whitelisted by owner" ); uint256 _id = _getNextCardID(); _incrementCardId(); Card memory _newCard; _newCard.cardId = _id; _newCard.contractAddress = _contractAddress; _newCard.tokenId = _tokenId; _newCard.totalAmount = _totalAmount; _newCard.currentAmount = _totalAmount; _newCard.paymentToken = _paymentToken; _newCard.basePrice = _basePrice; _newCard.limitForFree = _limitForFree; _newCard.isFinished = false; _newCard.isPrivate = _isPrivate; _cards[_id] = _newCard; _earning[_id] = 0; emit CreateCard( msg.sender, _id, _contractAddress, _tokenId, _totalAmount, _paymentToken, _basePrice ); return _id; } function purchaseNFT(uint256 _cardId, uint256 _amount) public returns (bool) { require(_saleStarted == true, "Sale stopped"); Card storage _currentCard = _cards[_cardId]; require(_currentCard.isFinished == false, "Card is finished"); require( _currentCard.isPrivate == false || _currentCard.whitelist[msg.sender] == true, "Not allowed to buy" ); IERC1155 _contract = IERC1155(_currentCard.contractAddress); require( _currentCard.currentAmount >= _amount, "Order exceeds the max number of available NFTs" ); History storage _currentHistory = _history[_currentCard.contractAddress]; uint256 _currentBoughtAmount = _currentHistory.purchasedHistories[_currentCard.tokenId][ msg.sender ]; require( _currentBoughtAmount < _limitPerWallet, "Order exceeds the max limit of NFTs per wallet" ); uint256 availableAmount = _limitPerWallet.sub(_currentBoughtAmount); if (availableAmount > _amount) { availableAmount = _amount; } if (_currentCard.basePrice != 0) { IERC20 _paymentContract = IERC20(_currentCard.paymentToken); uint256 _price = _currentCard.basePrice.mul(availableAmount); require( _paymentContract.balanceOf(msg.sender) >= _price, "Do not have enough funds" ); require( _paymentContract.allowance(msg.sender, address(this)) >= _price, "Must be approved for purchase" ); _paymentContract.transferFrom(msg.sender, _salesperson, _price); _earning[_cardId] = _earning[_cardId].add(_price); } else { IERC20 _paymentContract = IERC20(_currentCard.paymentToken); uint256 accountBalance = msg.sender.balance; require( _paymentContract.balanceOf(msg.sender).add(accountBalance) >= _currentCard.limitForFree, "Do not have enough funds" ); } _contract.safeTransferFrom( owner(), msg.sender, _currentCard.tokenId, availableAmount, "" ); _currentCard.currentAmount = _currentCard.currentAmount.sub( availableAmount ); _currentHistory.purchasedHistories[_currentCard.tokenId][ msg.sender ] = _currentBoughtAmount.add(availableAmount); emit PurchaseCard(msg.sender, _cardId, availableAmount); return true; } function _getNextCardID() private view returns (uint256) { return _currentCardId.add(1); } function _incrementCardId() private { _currentCardId++; } function cancelCard(uint256 _cardId) public onlyOwner returns (bool) { _cards[_cardId].isFinished = true; emit CardChanged(_cardId); return true; } function setCardPaymentToken(uint256 _cardId, address _newTokenAddress) public onlyOwner returns (bool) { _cards[_cardId].paymentToken = _newTokenAddress; emit CardChanged(_cardId); return true; } function setCardPrice( uint256 _cardId, uint256 _newPrice, uint256 _newLimit ) public onlyOwner returns (bool) { _cards[_cardId].basePrice = _newPrice; _cards[_cardId].limitForFree = _newLimit; emit CardChanged(_cardId); return true; } function setCardAmount(uint256 _cardId, uint256 _amount) public onlyOwner returns (bool) { _cards[_cardId].currentAmount = _cards[_cardId].currentAmount.sub( _amount ); emit CardChanged(_cardId); return true; } function setCardVisibility(uint256 _cardId, bool _isPrivate) public onlyOwner returns (bool) { _cards[_cardId].isPrivate = _isPrivate; emit CardChanged(_cardId); return true; } function addWhiteListAddress(uint256 _cardId, address addr) public onlyOwner returns (bool) { _cards[_cardId].whitelist[addr] = true; emit WhiteListAdded(_cardId, addr); return true; } function batchAddWhiteListAddress(uint256 _cardId, address[] memory addr) public onlyOwner returns (bool) { Card storage currentCard = _cards[_cardId]; for (uint256 i = 0; i < addr.length; i++) { currentCard.whitelist[addr[i]] = true; } emit BatchWhiteListAdded(_cardId, addr); return true; } function removeWhiteListAddress(uint256 _cardId, address addr) public onlyOwner returns (bool) { _cards[_cardId].whitelist[addr] = false; emit WhiteListRemoved(_cardId, addr); return true; } function batchRemoveWhiteListAddress(uint256 _cardId, address[] memory addr) public onlyOwner returns (bool) { Card storage currentCard = _cards[_cardId]; for (uint256 i = 0; i < addr.length; i++) { currentCard.whitelist[addr[i]] = false; } emit BatchWhiteListRemoved(_cardId, addr); return true; } function isCardPrivate(uint256 _cardId) public view returns (bool) { return _cards[_cardId].isPrivate; } function isAllowedCard(uint256 _cardId) public view returns (bool) { return _cards[_cardId].whitelist[msg.sender]; } function isCardCompleted(uint256 _cardId) public view returns (bool) { return _cards[_cardId].isFinished; } function isCardFree(uint256 _cardId) public view returns (bool) { if (_cards[_cardId].basePrice == 0) return true; return false; } function getCardPaymentToken(uint256 _cardId) public view returns (address) { return _cards[_cardId].paymentToken; } function getCardRequirement(uint256 _cardId) public view returns (uint256) { return _cards[_cardId].limitForFree; } function getCardContract(uint256 _cardId) public view returns (address) { return _cards[_cardId].contractAddress; } function getCardTokenId(uint256 _cardId) public view returns (uint256) { return _cards[_cardId].tokenId; } function getCardTotalAmount(uint256 _cardId) public view returns (uint256) { return _cards[_cardId].totalAmount; } function getCardCurrentAmount(uint256 _cardId) public view returns (uint256) { return _cards[_cardId].currentAmount; } function getCardBasePrice(uint256 _cardId) public view returns (uint256) { return _cards[_cardId].basePrice; } function getCardURL(uint256 _cardId) public view returns (string memory) { return IERC1155Metadata(_cards[_cardId].contractAddress).uri( _cards[_cardId].tokenId ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[{"name":"_cardId","type":"uint256"}],"name":"getCardPaymentToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_cardId","type":"uint256"},{"name":"addr","type":"address[]"}],"name":"batchRemoveWhiteListAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_cardId","type":"uint256"}],"name":"getCardBasePrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_cardId","type":"uint256"},{"name":"_isPrivate","type":"bool"}],"name":"setCardVisibility","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_cardId","type":"uint256"}],"name":"getCardContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_cardId","type":"uint256"}],"name":"getCardURL","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_currentCardId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_cardId","type":"uint256"}],"name":"isCardCompleted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_cardId","type":"uint256"}],"name":"getCardTokenId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_cardId","type":"uint256"}],"name":"isCardFree","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_cardId","type":"uint256"}],"name":"cancelCard","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_cardId","type":"uint256"},{"name":"_newTokenAddress","type":"address"}],"name":"setCardPaymentToken","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"limit","type":"uint256"}],"name":"setLimitPerWallet","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_cardId","type":"uint256"},{"name":"addr","type":"address"}],"name":"addWhiteListAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_cardId","type":"uint256"}],"name":"getCardRequirement","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_saleStarted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_cardId","type":"uint256"},{"name":"_amount","type":"uint256"}],"name":"setCardAmount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_cardId","type":"uint256"},{"name":"_amount","type":"uint256"}],"name":"purchaseNFT","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newSalesPerson","type":"address"}],"name":"setSalesPerson","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_cardId","type":"uint256"}],"name":"isCardPrivate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startSale","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_cardId","type":"uint256"},{"name":"_newPrice","type":"uint256"},{"name":"_newLimit","type":"uint256"}],"name":"setCardPrice","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_cardId","type":"uint256"}],"name":"getCardTotalAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_cardId","type":"uint256"}],"name":"getCardCurrentAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_contractAddress","type":"address"},{"name":"_tokenId","type":"uint256"},{"name":"_totalAmount","type":"uint256"},{"name":"_paymentToken","type":"address"},{"name":"_basePrice","type":"uint256"},{"name":"_limitForFree","type":"uint256"},{"name":"_isPrivate","type":"bool"}],"name":"createCard","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_cardId","type":"uint256"}],"name":"getEarning","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_cardId","type":"uint256"},{"name":"addr","type":"address[]"}],"name":"batchAddWhiteListAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stopSale","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_cardId","type":"uint256"},{"name":"addr","type":"address"}],"name":"removeWhiteListAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_cardId","type":"uint256"}],"name":"isAllowedCard","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":false,"name":"_cardId","type":"uint256"},{"indexed":true,"name":"_contractAddress","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"},{"indexed":false,"name":"_totalAmount","type":"uint256"},{"indexed":false,"name":"_paymentToken","type":"address"},{"indexed":false,"name":"_basePrice","type":"uint256"}],"name":"CreateCard","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":false,"name":"_cardId","type":"uint256"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"PurchaseCard","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_cardId","type":"uint256"}],"name":"CardChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_cardId","type":"uint256"},{"indexed":true,"name":"addr","type":"address"}],"name":"WhiteListAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_cardId","type":"uint256"},{"indexed":true,"name":"addr","type":"address"}],"name":"WhiteListRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_cardId","type":"uint256"},{"indexed":false,"name":"addr","type":"address[]"}],"name":"BatchWhiteListAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_cardId","type":"uint256"},{"indexed":false,"name":"addr","type":"address[]"}],"name":"BatchWhiteListRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
608060405260006001556004805460ff1916905534801561001f57600080fd5b506000610033640100000000610099810204565b60008054600160a060020a031916600160a060020a0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060028054600160a060020a03191633179055600160035561009d565b3390565b6124f9806100ac6000396000f3fe6080604052600436106101aa5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041662d5098881146101af578063087e0d79146101f55780630ba6b6fd146102c05780630c066084146102fc57806312e013631461032e57806316ad0333146103585780631e1fd2a4146103f75780632ed2a1851461040c5780632f8a82cb146104365780633387ab1d146104605780634b88ac0b1461048a5780635a05ae50146104b457806363c766b9146104ed578063715018a614610517578063825f81f61461052e57806384f4ee391461056757806387c348bf146105915780638da5cb5b146105a65780638f32d59b146105bb5780639e53ea51146105d0578063ad4451a314610600578063b18fc16714610630578063b3b85d9f14610663578063b66a0e5d1461068d578063b7095b91146106a2578063ba873286146106d8578063c0a6011d14610702578063c3136b051461072c578063d2519c1e14610789578063e0433b4b146107b3578063e36b0b371461086a578063e6fc67ea1461087f578063f2fde38b146108b8578063fbda561c146108eb575b600080fd5b3480156101bb57600080fd5b506101d9600480360360208110156101d257600080fd5b5035610915565b60408051600160a060020a039092168252519081900360200190f35b34801561020157600080fd5b506102ac6004803603604081101561021857600080fd5b8135919081019060408101602082013564010000000081111561023a57600080fd5b82018360208201111561024c57600080fd5b8035906020019184602083028401116401000000008311171561026e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610937945050505050565b604080519115158252519081900360200190f35b3480156102cc57600080fd5b506102ea600480360360208110156102e357600080fd5b5035610a78565b60408051918252519081900360200190f35b34801561030857600080fd5b506102ac6004803603604081101561031f57600080fd5b50803590602001351515610a8d565b34801561033a57600080fd5b506101d96004803603602081101561035157600080fd5b5035610b29565b34801561036457600080fd5b506103826004803603602081101561037b57600080fd5b5035610b47565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103bc5781810151838201526020016103a4565b50505050905090810190601f1680156103e95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040357600080fd5b506102ea610c4f565b34801561041857600080fd5b506102ac6004803603602081101561042f57600080fd5b5035610c55565b34801561044257600080fd5b506102ea6004803603602081101561045957600080fd5b5035610c6d565b34801561046c57600080fd5b506102ac6004803603602081101561048357600080fd5b5035610c82565b34801561049657600080fd5b506102ac600480360360208110156104ad57600080fd5b5035610caa565b3480156104c057600080fd5b506102ac600480360360408110156104d757600080fd5b5080359060200135600160a060020a0316610d3f565b3480156104f957600080fd5b506102ac6004803603602081101561051057600080fd5b5035610df0565b34801561052357600080fd5b5061052c610e47565b005b34801561053a57600080fd5b506102ac6004803603604081101561055157600080fd5b5080359060200135600160a060020a0316610eea565b34801561057357600080fd5b506102ea6004803603602081101561058a57600080fd5b5035610fa7565b34801561059d57600080fd5b506102ac610fbc565b3480156105b257600080fd5b506101d9610fc5565b3480156105c757600080fd5b506102ac610fd4565b3480156105dc57600080fd5b506102ac600480360360408110156105f357600080fd5b5080359060200135610ff8565b34801561060c57600080fd5b506102ac6004803603604081101561062357600080fd5b50803590602001356110aa565b34801561063c57600080fd5b506102ac6004803603602081101561065357600080fd5b5035600160a060020a0316611895565b34801561066f57600080fd5b506102ac6004803603602081101561068657600080fd5b5035611915565b34801561069957600080fd5b506102ac611932565b3480156106ae57600080fd5b506102ac600480360360608110156106c557600080fd5b5080359060208101359060400135611994565b3480156106e457600080fd5b506102ea600480360360208110156106fb57600080fd5b5035611a2a565b34801561070e57600080fd5b506102ea6004803603602081101561072557600080fd5b5035611a3f565b34801561073857600080fd5b506102ea600480360360e081101561074f57600080fd5b50600160a060020a03813581169160208101359160408201359160608101359091169060808101359060a08101359060c001351515611a54565b34801561079557600080fd5b506102ea600480360360208110156107ac57600080fd5b5035611f0c565b3480156107bf57600080fd5b506102ac600480360360408110156107d657600080fd5b813591908101906040810160208201356401000000008111156107f857600080fd5b82018360208201111561080a57600080fd5b8035906020019184602083028401116401000000008311171561082c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611f1e945050505050565b34801561087657600080fd5b506102ac61203e565b34801561088b57600080fd5b506102ac600480360360408110156108a257600080fd5b5080359060200135600160a060020a031661209c565b3480156108c457600080fd5b5061052c600480360360208110156108db57600080fd5b5035600160a060020a0316612156565b3480156108f757600080fd5b506102ac6004803603602081101561090e57600080fd5b50356121ae565b60008181526005602081905260409091200154600160a060020a03165b919050565b6000610941610fd4565b1515610985576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b6000838152600560205260408120905b83518110156109ee57600082600901600086848151811015156109b457fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff1916911515919091179055600101610995565b507f17ec02e80248167e5ec06e9f93f4ff97d9eb282950e0957749583f7493e0f33584846040518083815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015610a58578181015183820152602001610a40565b50505050905001935050505060405180910390a160019150505b92915050565b60009081526005602052604090206006015490565b6000610a97610fd4565b1515610adb576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b600083815260056020908152604091829020600801805461ff001916610100861515021790558151858152915160008051602061248e8339815191529281900390910190a150600192915050565b600090815260056020526040902060010154600160a060020a031690565b600081815260056020526040808220600181015460029091015482517f0e89341c00000000000000000000000000000000000000000000000000000000815260048101919091529151606093600160a060020a0390921692630e89341c926024808301939192829003018186803b158015610bc157600080fd5b505afa158015610bd5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610bfe57600080fd5b810190808051640100000000811115610c1657600080fd5b82016020810184811115610c2957600080fd5b8151640100000000811182820187101715610c4357600080fd5b50909695505050505050565b60015481565b60009081526005602052604090206008015460ff1690565b60009081526005602052604090206002015490565b6000818152600560205260408120600601541515610ca257506001610932565b506000919050565b6000610cb4610fd4565b1515610cf8576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b600082815260056020908152604091829020600801805460ff191660011790558151848152915160008051602061248e8339815191529281900390910190a1506001919050565b6000610d49610fd4565b1515610d8d576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b600083815260056020818152604092839020909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0386161790558151858152915160008051602061248e8339815191529281900390910190a150600192915050565b6000610dfa610fd4565b1515610e3e576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b50600355600190565b610e4f610fd4565b1515610e93576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b6000610ef4610fd4565b1515610f38576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b6000838152600560209081526040808320600160a060020a0386168085526009909101835292819020805460ff19166001179055805186815290517fdf157f4829c7548751c987de37e98b5ec71cdd4f25c283daefa05a2bdb167758929181900390910190a250600192915050565b60009081526005602052604090206007015490565b60045460ff1681565b600054600160a060020a031690565b60008054600160a060020a0316610fe96121d1565b600160a060020a031614905090565b6000611002610fd4565b1515611046576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b600083815260056020526040902060040154611068908363ffffffff6121d516565b600084815260056020908152604091829020600401929092558051858152905160008051602061248e833981519152929181900390910190a150600192915050565b60045460009060ff16151560011461110c576040805160e560020a62461bcd02815260206004820152600c60248201527f53616c652073746f707065640000000000000000000000000000000000000000604482015290519081900360640190fd5b6000838152600560205260409020600881015460ff1615611177576040805160e560020a62461bcd02815260206004820152601060248201527f436172642069732066696e697368656400000000000000000000000000000000604482015290519081900360640190fd5b6008810154610100900460ff1615806111a6575033600090815260098201602052604090205460ff1615156001145b15156111fc576040805160e560020a62461bcd02815260206004820152601260248201527f4e6f7420616c6c6f77656420746f206275790000000000000000000000000000604482015290519081900360640190fd5b60018101546004820154600160a060020a039091169084111561128f576040805160e560020a62461bcd02815260206004820152602e60248201527f4f72646572206578636565647320746865206d6178206e756d626572206f662060448201527f617661696c61626c65204e465473000000000000000000000000000000000000606482015290519081900360840190fd5b600180830154600160a060020a031660009081526007602090815260408083206002870154845293840182528083203384529091529020546003548110611346576040805160e560020a62461bcd02815260206004820152602e60248201527f4f72646572206578636565647320746865206d6178206c696d6974206f66204e60448201527f465473207065722077616c6c6574000000000000000000000000000000000000606482015290519081900360840190fd5b60035460009061135c908363ffffffff6121d516565b9050868111156113695750855b6006850154156116435760058501546006860154600160a060020a039091169060009061139c908463ffffffff61223516565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015290519192508291600160a060020a038516916370a08231916024808301926020929190829003018186803b15801561140057600080fd5b505afa158015611414573d6000803e3d6000fd5b505050506040513d602081101561142a57600080fd5b50511015611482576040805160e560020a62461bcd02815260206004820152601860248201527f446f206e6f74206861766520656e6f7567682066756e64730000000000000000604482015290519081900360640190fd5b604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015290518291600160a060020a0385169163dd62ed3e91604480820192602092909190829003018186803b1580156114ea57600080fd5b505afa1580156114fe573d6000803e3d6000fd5b505050506040513d602081101561151457600080fd5b5051101561156c576040805160e560020a62461bcd02815260206004820152601d60248201527f4d75737420626520617070726f76656420666f72207075726368617365000000604482015290519081900360640190fd5b600254604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a039283166024820152604481018490529051918416916323b872dd916064808201926020929091908290030181600087803b1580156115e157600080fd5b505af11580156115f5573d6000803e3d6000fd5b505050506040513d602081101561160b57600080fd5b505060008a81526006602052604090205461162c908263ffffffff6122b216565b60008b8152600660205260409020555061174c9050565b60058501546007860154604080517f70a0823100000000000000000000000000000000000000000000000000000000815233600482018190529151600160a060020a0390941693913192916116f391849186916370a08231916024808301926020929190829003018186803b1580156116bb57600080fd5b505afa1580156116cf573d6000803e3d6000fd5b505050506040513d60208110156116e557600080fd5b50519063ffffffff6122b216565b1015611749576040805160e560020a62461bcd02815260206004820152601860248201527f446f206e6f74206861766520656e6f7567682066756e64730000000000000000604482015290519081900360640190fd5b50505b83600160a060020a031663f242432a611763610fc5565b6002880154604080517c010000000000000000000000000000000000000000000000000000000063ffffffff8616028152600160a060020a03909316600484015233602484015260448301919091526064820185905260a06084830152600060a48301819052905160e48084019382900301818387803b1580156117e657600080fd5b505af11580156117fa573d6000803e3d6000fd5b505050600486015461181391508263ffffffff6121d516565b6004860155611828828263ffffffff6122b216565b60028601546000908152600185016020908152604080832033808552908352928190209390935582518b8152908101849052825191927fc54aab3546f0a86ae0fc33cdadcda77da8b3d056b1157a0cbc251b625c7bac7392918290030190a2506001979650505050505050565b600061189f610fd4565b15156118e3576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b5060028054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b600090815260056020526040902060080154610100900460ff1690565b600061193c610fd4565b1515611980576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b506004805460ff1916600190811790915590565b600061199e610fd4565b15156119e2576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b600084815260056020908152604091829020600681018690556007018490558151868152915160008051602061248e8339815191529281900390910190a15060019392505050565b60009081526005602052604090206003015490565b60009081526005602052604090206004015490565b6000611a5e610fd4565b1515611aa2576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b604080517efdd58e00000000000000000000000000000000000000000000000000000000815233600482015260248101899052905189918891600160a060020a0384169162fdd58e916044808301926020929190829003018186803b158015611b0a57600080fd5b505afa158015611b1e573d6000803e3d6000fd5b505050506040513d6020811015611b3457600080fd5b50511015611bb2576040805160e560020a62461bcd02815260206004820152603360248201527f496e697469616c20737570706c792063616e6e6f74206265206d6f726520746860448201527f616e20617661696c61626c6520737570706c7900000000000000000000000000606482015290519081900360840190fd5b604080517fe985e9c50000000000000000000000000000000000000000000000000000000081523360048201523060248201529051600160a060020a0383169163e985e9c5916044808301926020929190829003018186803b158015611c1757600080fd5b505afa158015611c2b573d6000803e3d6000fd5b505050506040513d6020811015611c4157600080fd5b50511515600114611cc2576040805160e560020a62461bcd02815260206004820152602560248201527f436f6e7472616374206d7573742062652077686974656c69737465642062792060448201527f6f776e6572000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000611ccc61230f565b9050611cd661232b565b611cde612423565b818160000181815250508a8160200190600160a060020a03169081600160a060020a031681525050898160400181815250508881606001818152505088816080018181525050878160a00190600160a060020a03169081600160a060020a031681525050868160c0018181525050858160e0018181525050600081610100019015159081151581525050848161012001901515908115158152505080600560008481526020019081526020016000206000820151816000015560208201518160010160006101000a815481600160a060020a030219169083600160a060020a0316021790555060408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a815481600160a060020a030219169083600160a060020a0316021790555060c0820151816006015560e082015181600701556101008201518160080160006101000a81548160ff0219169083151502179055506101208201518160080160016101000a81548160ff021916908315150217905550905050600060066000848152602001908152602001600020819055508a600160a060020a031633600160a060020a03167f604a0b7f5f819107ce44f5c5b6dcc9f2b63329adbe59ff63b2001fa3d3b8a977848d8d8d8d6040518086815260200185815260200184815260200183600160a060020a0316600160a060020a031681526020018281526020019550505050505060405180910390a3509998505050505050505050565b60009081526006602052604090205490565b6000611f28610fd4565b1515611f6c576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b6000838152600560205260408120905b8351811015611fd55760018260090160008684815181101515611f9b57fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff1916911515919091179055600101611f7c565b507f43b98403e1ebf41c994d81703660db61a9e09d64fe9e0e0e3f649c92bdd02124848460405180838152602001806020018281038252838181518152602001915080519060200190602002808383600083811015610a58578181015183820152602001610a40565b6000612048610fd4565b151561208c576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b506004805460ff19169055600090565b60006120a6610fd4565b15156120ea576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b6000838152600560209081526040808320600160a060020a0386168085526009909101835292819020805460ff19169055805186815290517fd98f1a07cfd90a565527b81305a8808820e80328eaebf3f80097c1386c975e43929181900390910190a250600192915050565b61215e610fd4565b15156121a2576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b6121ab81612335565b50565b600090815260056020908152604080832033845260090190915290205460ff1690565b3390565b60008282111561222f576040805160e560020a62461bcd02815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b600082151561224657506000610a72565b82820282848281151561225557fe5b04146122ab576040805160e560020a62461bcd02815260206004820152601660248201527f536166654d617468236d756c3a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b6000828201838110156122ab576040805160e560020a62461bcd02815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b6000612326600180546122b290919063ffffffff16565b905090565b6001805481019055565b600160a060020a03811615156123bb576040805160e560020a62461bcd02815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b61014060405190810160405280600081526020016000600160a060020a031681526020016000815260200160008152602001600081526020016000600160a060020a031681526020016000815260200160008152602001600015158152602001600015158152509056feed6db11026ebcc6aae64d66d0a08276ffed7c75ac478965350fd6ab360b8d2094f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a165627a7a72305820d5c413672c4e5074724ad393870c4ee8149b1a97226c438aa75ef6416fbf08d00029
Deployed Bytecode
0x6080604052600436106101aa5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041662d5098881146101af578063087e0d79146101f55780630ba6b6fd146102c05780630c066084146102fc57806312e013631461032e57806316ad0333146103585780631e1fd2a4146103f75780632ed2a1851461040c5780632f8a82cb146104365780633387ab1d146104605780634b88ac0b1461048a5780635a05ae50146104b457806363c766b9146104ed578063715018a614610517578063825f81f61461052e57806384f4ee391461056757806387c348bf146105915780638da5cb5b146105a65780638f32d59b146105bb5780639e53ea51146105d0578063ad4451a314610600578063b18fc16714610630578063b3b85d9f14610663578063b66a0e5d1461068d578063b7095b91146106a2578063ba873286146106d8578063c0a6011d14610702578063c3136b051461072c578063d2519c1e14610789578063e0433b4b146107b3578063e36b0b371461086a578063e6fc67ea1461087f578063f2fde38b146108b8578063fbda561c146108eb575b600080fd5b3480156101bb57600080fd5b506101d9600480360360208110156101d257600080fd5b5035610915565b60408051600160a060020a039092168252519081900360200190f35b34801561020157600080fd5b506102ac6004803603604081101561021857600080fd5b8135919081019060408101602082013564010000000081111561023a57600080fd5b82018360208201111561024c57600080fd5b8035906020019184602083028401116401000000008311171561026e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610937945050505050565b604080519115158252519081900360200190f35b3480156102cc57600080fd5b506102ea600480360360208110156102e357600080fd5b5035610a78565b60408051918252519081900360200190f35b34801561030857600080fd5b506102ac6004803603604081101561031f57600080fd5b50803590602001351515610a8d565b34801561033a57600080fd5b506101d96004803603602081101561035157600080fd5b5035610b29565b34801561036457600080fd5b506103826004803603602081101561037b57600080fd5b5035610b47565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103bc5781810151838201526020016103a4565b50505050905090810190601f1680156103e95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040357600080fd5b506102ea610c4f565b34801561041857600080fd5b506102ac6004803603602081101561042f57600080fd5b5035610c55565b34801561044257600080fd5b506102ea6004803603602081101561045957600080fd5b5035610c6d565b34801561046c57600080fd5b506102ac6004803603602081101561048357600080fd5b5035610c82565b34801561049657600080fd5b506102ac600480360360208110156104ad57600080fd5b5035610caa565b3480156104c057600080fd5b506102ac600480360360408110156104d757600080fd5b5080359060200135600160a060020a0316610d3f565b3480156104f957600080fd5b506102ac6004803603602081101561051057600080fd5b5035610df0565b34801561052357600080fd5b5061052c610e47565b005b34801561053a57600080fd5b506102ac6004803603604081101561055157600080fd5b5080359060200135600160a060020a0316610eea565b34801561057357600080fd5b506102ea6004803603602081101561058a57600080fd5b5035610fa7565b34801561059d57600080fd5b506102ac610fbc565b3480156105b257600080fd5b506101d9610fc5565b3480156105c757600080fd5b506102ac610fd4565b3480156105dc57600080fd5b506102ac600480360360408110156105f357600080fd5b5080359060200135610ff8565b34801561060c57600080fd5b506102ac6004803603604081101561062357600080fd5b50803590602001356110aa565b34801561063c57600080fd5b506102ac6004803603602081101561065357600080fd5b5035600160a060020a0316611895565b34801561066f57600080fd5b506102ac6004803603602081101561068657600080fd5b5035611915565b34801561069957600080fd5b506102ac611932565b3480156106ae57600080fd5b506102ac600480360360608110156106c557600080fd5b5080359060208101359060400135611994565b3480156106e457600080fd5b506102ea600480360360208110156106fb57600080fd5b5035611a2a565b34801561070e57600080fd5b506102ea6004803603602081101561072557600080fd5b5035611a3f565b34801561073857600080fd5b506102ea600480360360e081101561074f57600080fd5b50600160a060020a03813581169160208101359160408201359160608101359091169060808101359060a08101359060c001351515611a54565b34801561079557600080fd5b506102ea600480360360208110156107ac57600080fd5b5035611f0c565b3480156107bf57600080fd5b506102ac600480360360408110156107d657600080fd5b813591908101906040810160208201356401000000008111156107f857600080fd5b82018360208201111561080a57600080fd5b8035906020019184602083028401116401000000008311171561082c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611f1e945050505050565b34801561087657600080fd5b506102ac61203e565b34801561088b57600080fd5b506102ac600480360360408110156108a257600080fd5b5080359060200135600160a060020a031661209c565b3480156108c457600080fd5b5061052c600480360360208110156108db57600080fd5b5035600160a060020a0316612156565b3480156108f757600080fd5b506102ac6004803603602081101561090e57600080fd5b50356121ae565b60008181526005602081905260409091200154600160a060020a03165b919050565b6000610941610fd4565b1515610985576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b6000838152600560205260408120905b83518110156109ee57600082600901600086848151811015156109b457fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff1916911515919091179055600101610995565b507f17ec02e80248167e5ec06e9f93f4ff97d9eb282950e0957749583f7493e0f33584846040518083815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015610a58578181015183820152602001610a40565b50505050905001935050505060405180910390a160019150505b92915050565b60009081526005602052604090206006015490565b6000610a97610fd4565b1515610adb576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b600083815260056020908152604091829020600801805461ff001916610100861515021790558151858152915160008051602061248e8339815191529281900390910190a150600192915050565b600090815260056020526040902060010154600160a060020a031690565b600081815260056020526040808220600181015460029091015482517f0e89341c00000000000000000000000000000000000000000000000000000000815260048101919091529151606093600160a060020a0390921692630e89341c926024808301939192829003018186803b158015610bc157600080fd5b505afa158015610bd5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610bfe57600080fd5b810190808051640100000000811115610c1657600080fd5b82016020810184811115610c2957600080fd5b8151640100000000811182820187101715610c4357600080fd5b50909695505050505050565b60015481565b60009081526005602052604090206008015460ff1690565b60009081526005602052604090206002015490565b6000818152600560205260408120600601541515610ca257506001610932565b506000919050565b6000610cb4610fd4565b1515610cf8576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b600082815260056020908152604091829020600801805460ff191660011790558151848152915160008051602061248e8339815191529281900390910190a1506001919050565b6000610d49610fd4565b1515610d8d576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b600083815260056020818152604092839020909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0386161790558151858152915160008051602061248e8339815191529281900390910190a150600192915050565b6000610dfa610fd4565b1515610e3e576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b50600355600190565b610e4f610fd4565b1515610e93576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b6000610ef4610fd4565b1515610f38576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b6000838152600560209081526040808320600160a060020a0386168085526009909101835292819020805460ff19166001179055805186815290517fdf157f4829c7548751c987de37e98b5ec71cdd4f25c283daefa05a2bdb167758929181900390910190a250600192915050565b60009081526005602052604090206007015490565b60045460ff1681565b600054600160a060020a031690565b60008054600160a060020a0316610fe96121d1565b600160a060020a031614905090565b6000611002610fd4565b1515611046576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b600083815260056020526040902060040154611068908363ffffffff6121d516565b600084815260056020908152604091829020600401929092558051858152905160008051602061248e833981519152929181900390910190a150600192915050565b60045460009060ff16151560011461110c576040805160e560020a62461bcd02815260206004820152600c60248201527f53616c652073746f707065640000000000000000000000000000000000000000604482015290519081900360640190fd5b6000838152600560205260409020600881015460ff1615611177576040805160e560020a62461bcd02815260206004820152601060248201527f436172642069732066696e697368656400000000000000000000000000000000604482015290519081900360640190fd5b6008810154610100900460ff1615806111a6575033600090815260098201602052604090205460ff1615156001145b15156111fc576040805160e560020a62461bcd02815260206004820152601260248201527f4e6f7420616c6c6f77656420746f206275790000000000000000000000000000604482015290519081900360640190fd5b60018101546004820154600160a060020a039091169084111561128f576040805160e560020a62461bcd02815260206004820152602e60248201527f4f72646572206578636565647320746865206d6178206e756d626572206f662060448201527f617661696c61626c65204e465473000000000000000000000000000000000000606482015290519081900360840190fd5b600180830154600160a060020a031660009081526007602090815260408083206002870154845293840182528083203384529091529020546003548110611346576040805160e560020a62461bcd02815260206004820152602e60248201527f4f72646572206578636565647320746865206d6178206c696d6974206f66204e60448201527f465473207065722077616c6c6574000000000000000000000000000000000000606482015290519081900360840190fd5b60035460009061135c908363ffffffff6121d516565b9050868111156113695750855b6006850154156116435760058501546006860154600160a060020a039091169060009061139c908463ffffffff61223516565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015290519192508291600160a060020a038516916370a08231916024808301926020929190829003018186803b15801561140057600080fd5b505afa158015611414573d6000803e3d6000fd5b505050506040513d602081101561142a57600080fd5b50511015611482576040805160e560020a62461bcd02815260206004820152601860248201527f446f206e6f74206861766520656e6f7567682066756e64730000000000000000604482015290519081900360640190fd5b604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015290518291600160a060020a0385169163dd62ed3e91604480820192602092909190829003018186803b1580156114ea57600080fd5b505afa1580156114fe573d6000803e3d6000fd5b505050506040513d602081101561151457600080fd5b5051101561156c576040805160e560020a62461bcd02815260206004820152601d60248201527f4d75737420626520617070726f76656420666f72207075726368617365000000604482015290519081900360640190fd5b600254604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a039283166024820152604481018490529051918416916323b872dd916064808201926020929091908290030181600087803b1580156115e157600080fd5b505af11580156115f5573d6000803e3d6000fd5b505050506040513d602081101561160b57600080fd5b505060008a81526006602052604090205461162c908263ffffffff6122b216565b60008b8152600660205260409020555061174c9050565b60058501546007860154604080517f70a0823100000000000000000000000000000000000000000000000000000000815233600482018190529151600160a060020a0390941693913192916116f391849186916370a08231916024808301926020929190829003018186803b1580156116bb57600080fd5b505afa1580156116cf573d6000803e3d6000fd5b505050506040513d60208110156116e557600080fd5b50519063ffffffff6122b216565b1015611749576040805160e560020a62461bcd02815260206004820152601860248201527f446f206e6f74206861766520656e6f7567682066756e64730000000000000000604482015290519081900360640190fd5b50505b83600160a060020a031663f242432a611763610fc5565b6002880154604080517c010000000000000000000000000000000000000000000000000000000063ffffffff8616028152600160a060020a03909316600484015233602484015260448301919091526064820185905260a06084830152600060a48301819052905160e48084019382900301818387803b1580156117e657600080fd5b505af11580156117fa573d6000803e3d6000fd5b505050600486015461181391508263ffffffff6121d516565b6004860155611828828263ffffffff6122b216565b60028601546000908152600185016020908152604080832033808552908352928190209390935582518b8152908101849052825191927fc54aab3546f0a86ae0fc33cdadcda77da8b3d056b1157a0cbc251b625c7bac7392918290030190a2506001979650505050505050565b600061189f610fd4565b15156118e3576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b5060028054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b600090815260056020526040902060080154610100900460ff1690565b600061193c610fd4565b1515611980576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b506004805460ff1916600190811790915590565b600061199e610fd4565b15156119e2576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b600084815260056020908152604091829020600681018690556007018490558151868152915160008051602061248e8339815191529281900390910190a15060019392505050565b60009081526005602052604090206003015490565b60009081526005602052604090206004015490565b6000611a5e610fd4565b1515611aa2576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b604080517efdd58e00000000000000000000000000000000000000000000000000000000815233600482015260248101899052905189918891600160a060020a0384169162fdd58e916044808301926020929190829003018186803b158015611b0a57600080fd5b505afa158015611b1e573d6000803e3d6000fd5b505050506040513d6020811015611b3457600080fd5b50511015611bb2576040805160e560020a62461bcd02815260206004820152603360248201527f496e697469616c20737570706c792063616e6e6f74206265206d6f726520746860448201527f616e20617661696c61626c6520737570706c7900000000000000000000000000606482015290519081900360840190fd5b604080517fe985e9c50000000000000000000000000000000000000000000000000000000081523360048201523060248201529051600160a060020a0383169163e985e9c5916044808301926020929190829003018186803b158015611c1757600080fd5b505afa158015611c2b573d6000803e3d6000fd5b505050506040513d6020811015611c4157600080fd5b50511515600114611cc2576040805160e560020a62461bcd02815260206004820152602560248201527f436f6e7472616374206d7573742062652077686974656c69737465642062792060448201527f6f776e6572000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000611ccc61230f565b9050611cd661232b565b611cde612423565b818160000181815250508a8160200190600160a060020a03169081600160a060020a031681525050898160400181815250508881606001818152505088816080018181525050878160a00190600160a060020a03169081600160a060020a031681525050868160c0018181525050858160e0018181525050600081610100019015159081151581525050848161012001901515908115158152505080600560008481526020019081526020016000206000820151816000015560208201518160010160006101000a815481600160a060020a030219169083600160a060020a0316021790555060408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a815481600160a060020a030219169083600160a060020a0316021790555060c0820151816006015560e082015181600701556101008201518160080160006101000a81548160ff0219169083151502179055506101208201518160080160016101000a81548160ff021916908315150217905550905050600060066000848152602001908152602001600020819055508a600160a060020a031633600160a060020a03167f604a0b7f5f819107ce44f5c5b6dcc9f2b63329adbe59ff63b2001fa3d3b8a977848d8d8d8d6040518086815260200185815260200184815260200183600160a060020a0316600160a060020a031681526020018281526020019550505050505060405180910390a3509998505050505050505050565b60009081526006602052604090205490565b6000611f28610fd4565b1515611f6c576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b6000838152600560205260408120905b8351811015611fd55760018260090160008684815181101515611f9b57fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff1916911515919091179055600101611f7c565b507f43b98403e1ebf41c994d81703660db61a9e09d64fe9e0e0e3f649c92bdd02124848460405180838152602001806020018281038252838181518152602001915080519060200190602002808383600083811015610a58578181015183820152602001610a40565b6000612048610fd4565b151561208c576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b506004805460ff19169055600090565b60006120a6610fd4565b15156120ea576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b6000838152600560209081526040808320600160a060020a0386168085526009909101835292819020805460ff19169055805186815290517fd98f1a07cfd90a565527b81305a8808820e80328eaebf3f80097c1386c975e43929181900390910190a250600192915050565b61215e610fd4565b15156121a2576040805160e560020a62461bcd02815260206004820181905260248201526000805160206124ae833981519152604482015290519081900360640190fd5b6121ab81612335565b50565b600090815260056020908152604080832033845260090190915290205460ff1690565b3390565b60008282111561222f576040805160e560020a62461bcd02815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b600082151561224657506000610a72565b82820282848281151561225557fe5b04146122ab576040805160e560020a62461bcd02815260206004820152601660248201527f536166654d617468236d756c3a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b6000828201838110156122ab576040805160e560020a62461bcd02815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b6000612326600180546122b290919063ffffffff16565b905090565b6001805481019055565b600160a060020a03811615156123bb576040805160e560020a62461bcd02815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b61014060405190810160405280600081526020016000600160a060020a031681526020016000815260200160008152602001600081526020016000600160a060020a031681526020016000815260200160008152602001600015158152602001600015158152509056feed6db11026ebcc6aae64d66d0a08276ffed7c75ac478965350fd6ab360b8d2094f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a165627a7a72305820d5c413672c4e5074724ad393870c4ee8149b1a97226c438aa75ef6416fbf08d00029
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $3,665.44 | 4.05 | $14,845.03 |
Loading...
Loading
[ 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.