Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,415 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Purchase NFT | 11943526 | 1470 days ago | IN | 0 ETH | 0.0013233 | ||||
Purchase NFT | 11809008 | 1490 days ago | IN | 0 ETH | 0.00211728 | ||||
Purchase NFT | 11780193 | 1495 days ago | IN | 0 ETH | 0.01351171 | ||||
Purchase NFT | 11780189 | 1495 days ago | IN | 0 ETH | 0.01858256 | ||||
Set Limit Per Wa... | 11780153 | 1495 days ago | IN | 0 ETH | 0.0054941 | ||||
Purchase NFT | 11778600 | 1495 days ago | IN | 0 ETH | 0.01107256 | ||||
Purchase NFT | 11778595 | 1495 days ago | IN | 0 ETH | 0.01140064 | ||||
Purchase NFT | 11778594 | 1495 days ago | IN | 0 ETH | 0.02185405 | ||||
Purchase NFT | 11778593 | 1495 days ago | IN | 0 ETH | 0.01680011 | ||||
Purchase NFT | 11778593 | 1495 days ago | IN | 0 ETH | 0.01692549 | ||||
Purchase NFT | 11778592 | 1495 days ago | IN | 0 ETH | 0.02779405 | ||||
Purchase NFT | 11778590 | 1495 days ago | IN | 0 ETH | 0.02482405 | ||||
Purchase NFT | 11778587 | 1495 days ago | IN | 0 ETH | 0.01742698 | ||||
Purchase NFT | 11778586 | 1495 days ago | IN | 0 ETH | 0.02469867 | ||||
Purchase NFT | 11778585 | 1495 days ago | IN | 0 ETH | 0.02043596 | ||||
Purchase NFT | 11778584 | 1495 days ago | IN | 0 ETH | 0.01614301 | ||||
Purchase NFT | 11778581 | 1495 days ago | IN | 0 ETH | 0.02274058 | ||||
Purchase NFT | 11778579 | 1495 days ago | IN | 0 ETH | 0.02469867 | ||||
Purchase NFT | 11778579 | 1495 days ago | IN | 0 ETH | 0.02482405 | ||||
Purchase NFT | 11778578 | 1495 days ago | IN | 0 ETH | 0.02274058 | ||||
Purchase NFT | 11778577 | 1495 days ago | IN | 0 ETH | 0.02469867 | ||||
Purchase NFT | 11778575 | 1495 days ago | IN | 0 ETH | 0.01755236 | ||||
Purchase NFT | 11778575 | 1495 days ago | IN | 0 ETH | 0.02557629 | ||||
Purchase NFT | 11778572 | 1495 days ago | IN | 0 ETH | 0.02274058 | ||||
Purchase NFT | 11778571 | 1495 days ago | IN | 0 ETH | 0.02469867 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
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-01-29 */ 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 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
Contract ABI
API[{"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":"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
608060405260006001556004805460ff1916905534801561001f57600080fd5b506000610033640100000000610099810204565b60008054600160a060020a031916600160a060020a0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060028054600160a060020a03191633179055600160035561009d565b3390565b61240c806100ac6000396000f3fe60806040526004361061019f5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041662d5098881146101a4578063087e0d79146101ea5780630ba6b6fd146102b55780630c066084146102f157806312e013631461032357806316ad03331461034d5780631e1fd2a4146103ec5780632ed2a185146104015780632f8a82cb1461042b5780633387ab1d146104555780634b88ac0b1461047f5780635a05ae50146104a957806363c766b9146104e2578063715018a61461050c578063825f81f61461052357806384f4ee391461055c57806387c348bf146105865780638da5cb5b1461059b5780638f32d59b146105b0578063ad4451a3146105c5578063b18fc167146105f5578063b3b85d9f14610628578063b66a0e5d14610652578063b7095b9114610667578063ba8732861461069d578063c0a6011d146106c7578063c3136b05146106f1578063d2519c1e1461074e578063e0433b4b14610778578063e36b0b371461082f578063e6fc67ea14610844578063f2fde38b1461087d578063fbda561c146108b0575b600080fd5b3480156101b057600080fd5b506101ce600480360360208110156101c757600080fd5b50356108da565b60408051600160a060020a039092168252519081900360200190f35b3480156101f657600080fd5b506102a16004803603604081101561020d57600080fd5b8135919081019060408101602082013564010000000081111561022f57600080fd5b82018360208201111561024157600080fd5b8035906020019184602083028401116401000000008311171561026357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506108fc945050505050565b604080519115158252519081900360200190f35b3480156102c157600080fd5b506102df600480360360208110156102d857600080fd5b5035610a3d565b60408051918252519081900360200190f35b3480156102fd57600080fd5b506102a16004803603604081101561031457600080fd5b50803590602001351515610a52565b34801561032f57600080fd5b506101ce6004803603602081101561034657600080fd5b5035610aee565b34801561035957600080fd5b506103776004803603602081101561037057600080fd5b5035610b0c565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103b1578181015183820152602001610399565b50505050905090810190601f1680156103de5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103f857600080fd5b506102df610c14565b34801561040d57600080fd5b506102a16004803603602081101561042457600080fd5b5035610c1a565b34801561043757600080fd5b506102df6004803603602081101561044e57600080fd5b5035610c32565b34801561046157600080fd5b506102a16004803603602081101561047857600080fd5b5035610c47565b34801561048b57600080fd5b506102a1600480360360208110156104a257600080fd5b5035610c6f565b3480156104b557600080fd5b506102a1600480360360408110156104cc57600080fd5b5080359060200135600160a060020a0316610d04565b3480156104ee57600080fd5b506102a16004803603602081101561050557600080fd5b5035610db5565b34801561051857600080fd5b50610521610e0c565b005b34801561052f57600080fd5b506102a16004803603604081101561054657600080fd5b5080359060200135600160a060020a0316610eaf565b34801561056857600080fd5b506102df6004803603602081101561057f57600080fd5b5035610f6c565b34801561059257600080fd5b506102a1610f81565b3480156105a757600080fd5b506101ce610f8a565b3480156105bc57600080fd5b506102a1610f99565b3480156105d157600080fd5b506102a1600480360360408110156105e857600080fd5b5080359060200135610fbd565b34801561060157600080fd5b506102a16004803603602081101561061857600080fd5b5035600160a060020a03166117a8565b34801561063457600080fd5b506102a16004803603602081101561064b57600080fd5b5035611828565b34801561065e57600080fd5b506102a1611845565b34801561067357600080fd5b506102a16004803603606081101561068a57600080fd5b50803590602081013590604001356118a7565b3480156106a957600080fd5b506102df600480360360208110156106c057600080fd5b503561193d565b3480156106d357600080fd5b506102df600480360360208110156106ea57600080fd5b5035611952565b3480156106fd57600080fd5b506102df600480360360e081101561071457600080fd5b50600160a060020a03813581169160208101359160408201359160608101359091169060808101359060a08101359060c001351515611967565b34801561075a57600080fd5b506102df6004803603602081101561077157600080fd5b5035611e1f565b34801561078457600080fd5b506102a16004803603604081101561079b57600080fd5b813591908101906040810160208201356401000000008111156107bd57600080fd5b8201836020820111156107cf57600080fd5b803590602001918460208302840111640100000000831117156107f157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611e31945050505050565b34801561083b57600080fd5b506102a1611f51565b34801561085057600080fd5b506102a16004803603604081101561086757600080fd5b5080359060200135600160a060020a0316611faf565b34801561088957600080fd5b50610521600480360360208110156108a057600080fd5b5035600160a060020a0316612069565b3480156108bc57600080fd5b506102a1600480360360208110156108d357600080fd5b50356120c1565b60008181526005602081905260409091200154600160a060020a03165b919050565b6000610906610f99565b151561094a576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b6000838152600560205260408120905b83518110156109b3576000826009016000868481518110151561097957fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff191691151591909117905560010161095a565b507f17ec02e80248167e5ec06e9f93f4ff97d9eb282950e0957749583f7493e0f33584846040518083815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015610a1d578181015183820152602001610a05565b50505050905001935050505060405180910390a160019150505b92915050565b60009081526005602052604090206006015490565b6000610a5c610f99565b1515610aa0576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b600083815260056020908152604091829020600801805461ff00191661010086151502179055815185815291516000805160206123a18339815191529281900390910190a150600192915050565b600090815260056020526040902060010154600160a060020a031690565b600081815260056020526040808220600181015460029091015482517f0e89341c00000000000000000000000000000000000000000000000000000000815260048101919091529151606093600160a060020a0390921692630e89341c926024808301939192829003018186803b158015610b8657600080fd5b505afa158015610b9a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610bc357600080fd5b810190808051640100000000811115610bdb57600080fd5b82016020810184811115610bee57600080fd5b8151640100000000811182820187101715610c0857600080fd5b50909695505050505050565b60015481565b60009081526005602052604090206008015460ff1690565b60009081526005602052604090206002015490565b6000818152600560205260408120600601541515610c67575060016108f7565b506000919050565b6000610c79610f99565b1515610cbd576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b600082815260056020908152604091829020600801805460ff19166001179055815184815291516000805160206123a18339815191529281900390910190a1506001919050565b6000610d0e610f99565b1515610d52576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b600083815260056020818152604092839020909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038616179055815185815291516000805160206123a18339815191529281900390910190a150600192915050565b6000610dbf610f99565b1515610e03576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b50600355600190565b610e14610f99565b1515610e58576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b6000610eb9610f99565b1515610efd576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b6000838152600560209081526040808320600160a060020a0386168085526009909101835292819020805460ff19166001179055805186815290517fdf157f4829c7548751c987de37e98b5ec71cdd4f25c283daefa05a2bdb167758929181900390910190a250600192915050565b60009081526005602052604090206007015490565b60045460ff1681565b600054600160a060020a031690565b60008054600160a060020a0316610fae6120e4565b600160a060020a031614905090565b60045460009060ff16151560011461101f576040805160e560020a62461bcd02815260206004820152600c60248201527f53616c652073746f707065640000000000000000000000000000000000000000604482015290519081900360640190fd5b6000838152600560205260409020600881015460ff161561108a576040805160e560020a62461bcd02815260206004820152601060248201527f436172642069732066696e697368656400000000000000000000000000000000604482015290519081900360640190fd5b6008810154610100900460ff1615806110b9575033600090815260098201602052604090205460ff1615156001145b151561110f576040805160e560020a62461bcd02815260206004820152601260248201527f4e6f7420616c6c6f77656420746f206275790000000000000000000000000000604482015290519081900360640190fd5b60018101546004820154600160a060020a03909116908411156111a2576040805160e560020a62461bcd02815260206004820152602e60248201527f4f72646572206578636565647320746865206d6178206e756d626572206f662060448201527f617661696c61626c65204e465473000000000000000000000000000000000000606482015290519081900360840190fd5b600180830154600160a060020a031660009081526007602090815260408083206002870154845293840182528083203384529091529020546003548110611259576040805160e560020a62461bcd02815260206004820152602e60248201527f4f72646572206578636565647320746865206d6178206c696d6974206f66204e60448201527f465473207065722077616c6c6574000000000000000000000000000000000000606482015290519081900360840190fd5b60035460009061126f908363ffffffff6120e816565b90508681111561127c5750855b6006850154156115565760058501546006860154600160a060020a03909116906000906112af908463ffffffff61214816565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015290519192508291600160a060020a038516916370a08231916024808301926020929190829003018186803b15801561131357600080fd5b505afa158015611327573d6000803e3d6000fd5b505050506040513d602081101561133d57600080fd5b50511015611395576040805160e560020a62461bcd02815260206004820152601860248201527f446f206e6f74206861766520656e6f7567682066756e64730000000000000000604482015290519081900360640190fd5b604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015290518291600160a060020a0385169163dd62ed3e91604480820192602092909190829003018186803b1580156113fd57600080fd5b505afa158015611411573d6000803e3d6000fd5b505050506040513d602081101561142757600080fd5b5051101561147f576040805160e560020a62461bcd02815260206004820152601d60248201527f4d75737420626520617070726f76656420666f72207075726368617365000000604482015290519081900360640190fd5b600254604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a039283166024820152604481018490529051918416916323b872dd916064808201926020929091908290030181600087803b1580156114f457600080fd5b505af1158015611508573d6000803e3d6000fd5b505050506040513d602081101561151e57600080fd5b505060008a81526006602052604090205461153f908263ffffffff6121c516565b60008b8152600660205260409020555061165f9050565b60058501546007860154604080517f70a0823100000000000000000000000000000000000000000000000000000000815233600482018190529151600160a060020a03909416939131929161160691849186916370a08231916024808301926020929190829003018186803b1580156115ce57600080fd5b505afa1580156115e2573d6000803e3d6000fd5b505050506040513d60208110156115f857600080fd5b50519063ffffffff6121c516565b101561165c576040805160e560020a62461bcd02815260206004820152601860248201527f446f206e6f74206861766520656e6f7567682066756e64730000000000000000604482015290519081900360640190fd5b50505b83600160a060020a031663f242432a611676610f8a565b6002880154604080517c010000000000000000000000000000000000000000000000000000000063ffffffff8616028152600160a060020a03909316600484015233602484015260448301919091526064820185905260a06084830152600060a48301819052905160e48084019382900301818387803b1580156116f957600080fd5b505af115801561170d573d6000803e3d6000fd5b505050600486015461172691508263ffffffff6120e816565b600486015561173b828263ffffffff6121c516565b60028601546000908152600185016020908152604080832033808552908352928190209390935582518b8152908101849052825191927fc54aab3546f0a86ae0fc33cdadcda77da8b3d056b1157a0cbc251b625c7bac7392918290030190a2506001979650505050505050565b60006117b2610f99565b15156117f6576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b5060028054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b600090815260056020526040902060080154610100900460ff1690565b600061184f610f99565b1515611893576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b506004805460ff1916600190811790915590565b60006118b1610f99565b15156118f5576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b60008481526005602090815260409182902060068101869055600701849055815186815291516000805160206123a18339815191529281900390910190a15060019392505050565b60009081526005602052604090206003015490565b60009081526005602052604090206004015490565b6000611971610f99565b15156119b5576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b604080517efdd58e00000000000000000000000000000000000000000000000000000000815233600482015260248101899052905189918891600160a060020a0384169162fdd58e916044808301926020929190829003018186803b158015611a1d57600080fd5b505afa158015611a31573d6000803e3d6000fd5b505050506040513d6020811015611a4757600080fd5b50511015611ac5576040805160e560020a62461bcd02815260206004820152603360248201527f496e697469616c20737570706c792063616e6e6f74206265206d6f726520746860448201527f616e20617661696c61626c6520737570706c7900000000000000000000000000606482015290519081900360840190fd5b604080517fe985e9c50000000000000000000000000000000000000000000000000000000081523360048201523060248201529051600160a060020a0383169163e985e9c5916044808301926020929190829003018186803b158015611b2a57600080fd5b505afa158015611b3e573d6000803e3d6000fd5b505050506040513d6020811015611b5457600080fd5b50511515600114611bd5576040805160e560020a62461bcd02815260206004820152602560248201527f436f6e7472616374206d7573742062652077686974656c69737465642062792060448201527f6f776e6572000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000611bdf612222565b9050611be961223e565b611bf1612336565b818160000181815250508a8160200190600160a060020a03169081600160a060020a031681525050898160400181815250508881606001818152505088816080018181525050878160a00190600160a060020a03169081600160a060020a031681525050868160c0018181525050858160e0018181525050600081610100019015159081151581525050848161012001901515908115158152505080600560008481526020019081526020016000206000820151816000015560208201518160010160006101000a815481600160a060020a030219169083600160a060020a0316021790555060408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a815481600160a060020a030219169083600160a060020a0316021790555060c0820151816006015560e082015181600701556101008201518160080160006101000a81548160ff0219169083151502179055506101208201518160080160016101000a81548160ff021916908315150217905550905050600060066000848152602001908152602001600020819055508a600160a060020a031633600160a060020a03167f604a0b7f5f819107ce44f5c5b6dcc9f2b63329adbe59ff63b2001fa3d3b8a977848d8d8d8d6040518086815260200185815260200184815260200183600160a060020a0316600160a060020a031681526020018281526020019550505050505060405180910390a3509998505050505050505050565b60009081526006602052604090205490565b6000611e3b610f99565b1515611e7f576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b6000838152600560205260408120905b8351811015611ee85760018260090160008684815181101515611eae57fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff1916911515919091179055600101611e8f565b507f43b98403e1ebf41c994d81703660db61a9e09d64fe9e0e0e3f649c92bdd02124848460405180838152602001806020018281038252838181518152602001915080519060200190602002808383600083811015610a1d578181015183820152602001610a05565b6000611f5b610f99565b1515611f9f576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b506004805460ff19169055600090565b6000611fb9610f99565b1515611ffd576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b6000838152600560209081526040808320600160a060020a0386168085526009909101835292819020805460ff19169055805186815290517fd98f1a07cfd90a565527b81305a8808820e80328eaebf3f80097c1386c975e43929181900390910190a250600192915050565b612071610f99565b15156120b5576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b6120be81612248565b50565b600090815260056020908152604080832033845260090190915290205460ff1690565b3390565b600082821115612142576040805160e560020a62461bcd02815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b600082151561215957506000610a37565b82820282848281151561216857fe5b04146121be576040805160e560020a62461bcd02815260206004820152601660248201527f536166654d617468236d756c3a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b6000828201838110156121be576040805160e560020a62461bcd02815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b6000612239600180546121c590919063ffffffff16565b905090565b6001805481019055565b600160a060020a03811615156122ce576040805160e560020a62461bcd02815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b61014060405190810160405280600081526020016000600160a060020a031681526020016000815260200160008152602001600081526020016000600160a060020a031681526020016000815260200160008152602001600015158152602001600015158152509056feed6db11026ebcc6aae64d66d0a08276ffed7c75ac478965350fd6ab360b8d2094f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a165627a7a72305820cb5f270f4539dc8178394855f5792026f71fecd60756040242e87ea3c302899e0029
Deployed Bytecode
0x60806040526004361061019f5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041662d5098881146101a4578063087e0d79146101ea5780630ba6b6fd146102b55780630c066084146102f157806312e013631461032357806316ad03331461034d5780631e1fd2a4146103ec5780632ed2a185146104015780632f8a82cb1461042b5780633387ab1d146104555780634b88ac0b1461047f5780635a05ae50146104a957806363c766b9146104e2578063715018a61461050c578063825f81f61461052357806384f4ee391461055c57806387c348bf146105865780638da5cb5b1461059b5780638f32d59b146105b0578063ad4451a3146105c5578063b18fc167146105f5578063b3b85d9f14610628578063b66a0e5d14610652578063b7095b9114610667578063ba8732861461069d578063c0a6011d146106c7578063c3136b05146106f1578063d2519c1e1461074e578063e0433b4b14610778578063e36b0b371461082f578063e6fc67ea14610844578063f2fde38b1461087d578063fbda561c146108b0575b600080fd5b3480156101b057600080fd5b506101ce600480360360208110156101c757600080fd5b50356108da565b60408051600160a060020a039092168252519081900360200190f35b3480156101f657600080fd5b506102a16004803603604081101561020d57600080fd5b8135919081019060408101602082013564010000000081111561022f57600080fd5b82018360208201111561024157600080fd5b8035906020019184602083028401116401000000008311171561026357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506108fc945050505050565b604080519115158252519081900360200190f35b3480156102c157600080fd5b506102df600480360360208110156102d857600080fd5b5035610a3d565b60408051918252519081900360200190f35b3480156102fd57600080fd5b506102a16004803603604081101561031457600080fd5b50803590602001351515610a52565b34801561032f57600080fd5b506101ce6004803603602081101561034657600080fd5b5035610aee565b34801561035957600080fd5b506103776004803603602081101561037057600080fd5b5035610b0c565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103b1578181015183820152602001610399565b50505050905090810190601f1680156103de5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103f857600080fd5b506102df610c14565b34801561040d57600080fd5b506102a16004803603602081101561042457600080fd5b5035610c1a565b34801561043757600080fd5b506102df6004803603602081101561044e57600080fd5b5035610c32565b34801561046157600080fd5b506102a16004803603602081101561047857600080fd5b5035610c47565b34801561048b57600080fd5b506102a1600480360360208110156104a257600080fd5b5035610c6f565b3480156104b557600080fd5b506102a1600480360360408110156104cc57600080fd5b5080359060200135600160a060020a0316610d04565b3480156104ee57600080fd5b506102a16004803603602081101561050557600080fd5b5035610db5565b34801561051857600080fd5b50610521610e0c565b005b34801561052f57600080fd5b506102a16004803603604081101561054657600080fd5b5080359060200135600160a060020a0316610eaf565b34801561056857600080fd5b506102df6004803603602081101561057f57600080fd5b5035610f6c565b34801561059257600080fd5b506102a1610f81565b3480156105a757600080fd5b506101ce610f8a565b3480156105bc57600080fd5b506102a1610f99565b3480156105d157600080fd5b506102a1600480360360408110156105e857600080fd5b5080359060200135610fbd565b34801561060157600080fd5b506102a16004803603602081101561061857600080fd5b5035600160a060020a03166117a8565b34801561063457600080fd5b506102a16004803603602081101561064b57600080fd5b5035611828565b34801561065e57600080fd5b506102a1611845565b34801561067357600080fd5b506102a16004803603606081101561068a57600080fd5b50803590602081013590604001356118a7565b3480156106a957600080fd5b506102df600480360360208110156106c057600080fd5b503561193d565b3480156106d357600080fd5b506102df600480360360208110156106ea57600080fd5b5035611952565b3480156106fd57600080fd5b506102df600480360360e081101561071457600080fd5b50600160a060020a03813581169160208101359160408201359160608101359091169060808101359060a08101359060c001351515611967565b34801561075a57600080fd5b506102df6004803603602081101561077157600080fd5b5035611e1f565b34801561078457600080fd5b506102a16004803603604081101561079b57600080fd5b813591908101906040810160208201356401000000008111156107bd57600080fd5b8201836020820111156107cf57600080fd5b803590602001918460208302840111640100000000831117156107f157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611e31945050505050565b34801561083b57600080fd5b506102a1611f51565b34801561085057600080fd5b506102a16004803603604081101561086757600080fd5b5080359060200135600160a060020a0316611faf565b34801561088957600080fd5b50610521600480360360208110156108a057600080fd5b5035600160a060020a0316612069565b3480156108bc57600080fd5b506102a1600480360360208110156108d357600080fd5b50356120c1565b60008181526005602081905260409091200154600160a060020a03165b919050565b6000610906610f99565b151561094a576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b6000838152600560205260408120905b83518110156109b3576000826009016000868481518110151561097957fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff191691151591909117905560010161095a565b507f17ec02e80248167e5ec06e9f93f4ff97d9eb282950e0957749583f7493e0f33584846040518083815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015610a1d578181015183820152602001610a05565b50505050905001935050505060405180910390a160019150505b92915050565b60009081526005602052604090206006015490565b6000610a5c610f99565b1515610aa0576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b600083815260056020908152604091829020600801805461ff00191661010086151502179055815185815291516000805160206123a18339815191529281900390910190a150600192915050565b600090815260056020526040902060010154600160a060020a031690565b600081815260056020526040808220600181015460029091015482517f0e89341c00000000000000000000000000000000000000000000000000000000815260048101919091529151606093600160a060020a0390921692630e89341c926024808301939192829003018186803b158015610b8657600080fd5b505afa158015610b9a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610bc357600080fd5b810190808051640100000000811115610bdb57600080fd5b82016020810184811115610bee57600080fd5b8151640100000000811182820187101715610c0857600080fd5b50909695505050505050565b60015481565b60009081526005602052604090206008015460ff1690565b60009081526005602052604090206002015490565b6000818152600560205260408120600601541515610c67575060016108f7565b506000919050565b6000610c79610f99565b1515610cbd576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b600082815260056020908152604091829020600801805460ff19166001179055815184815291516000805160206123a18339815191529281900390910190a1506001919050565b6000610d0e610f99565b1515610d52576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b600083815260056020818152604092839020909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038616179055815185815291516000805160206123a18339815191529281900390910190a150600192915050565b6000610dbf610f99565b1515610e03576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b50600355600190565b610e14610f99565b1515610e58576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b6000610eb9610f99565b1515610efd576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b6000838152600560209081526040808320600160a060020a0386168085526009909101835292819020805460ff19166001179055805186815290517fdf157f4829c7548751c987de37e98b5ec71cdd4f25c283daefa05a2bdb167758929181900390910190a250600192915050565b60009081526005602052604090206007015490565b60045460ff1681565b600054600160a060020a031690565b60008054600160a060020a0316610fae6120e4565b600160a060020a031614905090565b60045460009060ff16151560011461101f576040805160e560020a62461bcd02815260206004820152600c60248201527f53616c652073746f707065640000000000000000000000000000000000000000604482015290519081900360640190fd5b6000838152600560205260409020600881015460ff161561108a576040805160e560020a62461bcd02815260206004820152601060248201527f436172642069732066696e697368656400000000000000000000000000000000604482015290519081900360640190fd5b6008810154610100900460ff1615806110b9575033600090815260098201602052604090205460ff1615156001145b151561110f576040805160e560020a62461bcd02815260206004820152601260248201527f4e6f7420616c6c6f77656420746f206275790000000000000000000000000000604482015290519081900360640190fd5b60018101546004820154600160a060020a03909116908411156111a2576040805160e560020a62461bcd02815260206004820152602e60248201527f4f72646572206578636565647320746865206d6178206e756d626572206f662060448201527f617661696c61626c65204e465473000000000000000000000000000000000000606482015290519081900360840190fd5b600180830154600160a060020a031660009081526007602090815260408083206002870154845293840182528083203384529091529020546003548110611259576040805160e560020a62461bcd02815260206004820152602e60248201527f4f72646572206578636565647320746865206d6178206c696d6974206f66204e60448201527f465473207065722077616c6c6574000000000000000000000000000000000000606482015290519081900360840190fd5b60035460009061126f908363ffffffff6120e816565b90508681111561127c5750855b6006850154156115565760058501546006860154600160a060020a03909116906000906112af908463ffffffff61214816565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015290519192508291600160a060020a038516916370a08231916024808301926020929190829003018186803b15801561131357600080fd5b505afa158015611327573d6000803e3d6000fd5b505050506040513d602081101561133d57600080fd5b50511015611395576040805160e560020a62461bcd02815260206004820152601860248201527f446f206e6f74206861766520656e6f7567682066756e64730000000000000000604482015290519081900360640190fd5b604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015290518291600160a060020a0385169163dd62ed3e91604480820192602092909190829003018186803b1580156113fd57600080fd5b505afa158015611411573d6000803e3d6000fd5b505050506040513d602081101561142757600080fd5b5051101561147f576040805160e560020a62461bcd02815260206004820152601d60248201527f4d75737420626520617070726f76656420666f72207075726368617365000000604482015290519081900360640190fd5b600254604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a039283166024820152604481018490529051918416916323b872dd916064808201926020929091908290030181600087803b1580156114f457600080fd5b505af1158015611508573d6000803e3d6000fd5b505050506040513d602081101561151e57600080fd5b505060008a81526006602052604090205461153f908263ffffffff6121c516565b60008b8152600660205260409020555061165f9050565b60058501546007860154604080517f70a0823100000000000000000000000000000000000000000000000000000000815233600482018190529151600160a060020a03909416939131929161160691849186916370a08231916024808301926020929190829003018186803b1580156115ce57600080fd5b505afa1580156115e2573d6000803e3d6000fd5b505050506040513d60208110156115f857600080fd5b50519063ffffffff6121c516565b101561165c576040805160e560020a62461bcd02815260206004820152601860248201527f446f206e6f74206861766520656e6f7567682066756e64730000000000000000604482015290519081900360640190fd5b50505b83600160a060020a031663f242432a611676610f8a565b6002880154604080517c010000000000000000000000000000000000000000000000000000000063ffffffff8616028152600160a060020a03909316600484015233602484015260448301919091526064820185905260a06084830152600060a48301819052905160e48084019382900301818387803b1580156116f957600080fd5b505af115801561170d573d6000803e3d6000fd5b505050600486015461172691508263ffffffff6120e816565b600486015561173b828263ffffffff6121c516565b60028601546000908152600185016020908152604080832033808552908352928190209390935582518b8152908101849052825191927fc54aab3546f0a86ae0fc33cdadcda77da8b3d056b1157a0cbc251b625c7bac7392918290030190a2506001979650505050505050565b60006117b2610f99565b15156117f6576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b5060028054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b600090815260056020526040902060080154610100900460ff1690565b600061184f610f99565b1515611893576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b506004805460ff1916600190811790915590565b60006118b1610f99565b15156118f5576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b60008481526005602090815260409182902060068101869055600701849055815186815291516000805160206123a18339815191529281900390910190a15060019392505050565b60009081526005602052604090206003015490565b60009081526005602052604090206004015490565b6000611971610f99565b15156119b5576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b604080517efdd58e00000000000000000000000000000000000000000000000000000000815233600482015260248101899052905189918891600160a060020a0384169162fdd58e916044808301926020929190829003018186803b158015611a1d57600080fd5b505afa158015611a31573d6000803e3d6000fd5b505050506040513d6020811015611a4757600080fd5b50511015611ac5576040805160e560020a62461bcd02815260206004820152603360248201527f496e697469616c20737570706c792063616e6e6f74206265206d6f726520746860448201527f616e20617661696c61626c6520737570706c7900000000000000000000000000606482015290519081900360840190fd5b604080517fe985e9c50000000000000000000000000000000000000000000000000000000081523360048201523060248201529051600160a060020a0383169163e985e9c5916044808301926020929190829003018186803b158015611b2a57600080fd5b505afa158015611b3e573d6000803e3d6000fd5b505050506040513d6020811015611b5457600080fd5b50511515600114611bd5576040805160e560020a62461bcd02815260206004820152602560248201527f436f6e7472616374206d7573742062652077686974656c69737465642062792060448201527f6f776e6572000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000611bdf612222565b9050611be961223e565b611bf1612336565b818160000181815250508a8160200190600160a060020a03169081600160a060020a031681525050898160400181815250508881606001818152505088816080018181525050878160a00190600160a060020a03169081600160a060020a031681525050868160c0018181525050858160e0018181525050600081610100019015159081151581525050848161012001901515908115158152505080600560008481526020019081526020016000206000820151816000015560208201518160010160006101000a815481600160a060020a030219169083600160a060020a0316021790555060408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a815481600160a060020a030219169083600160a060020a0316021790555060c0820151816006015560e082015181600701556101008201518160080160006101000a81548160ff0219169083151502179055506101208201518160080160016101000a81548160ff021916908315150217905550905050600060066000848152602001908152602001600020819055508a600160a060020a031633600160a060020a03167f604a0b7f5f819107ce44f5c5b6dcc9f2b63329adbe59ff63b2001fa3d3b8a977848d8d8d8d6040518086815260200185815260200184815260200183600160a060020a0316600160a060020a031681526020018281526020019550505050505060405180910390a3509998505050505050505050565b60009081526006602052604090205490565b6000611e3b610f99565b1515611e7f576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b6000838152600560205260408120905b8351811015611ee85760018260090160008684815181101515611eae57fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff1916911515919091179055600101611e8f565b507f43b98403e1ebf41c994d81703660db61a9e09d64fe9e0e0e3f649c92bdd02124848460405180838152602001806020018281038252838181518152602001915080519060200190602002808383600083811015610a1d578181015183820152602001610a05565b6000611f5b610f99565b1515611f9f576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b506004805460ff19169055600090565b6000611fb9610f99565b1515611ffd576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b6000838152600560209081526040808320600160a060020a0386168085526009909101835292819020805460ff19169055805186815290517fd98f1a07cfd90a565527b81305a8808820e80328eaebf3f80097c1386c975e43929181900390910190a250600192915050565b612071610f99565b15156120b5576040805160e560020a62461bcd02815260206004820181905260248201526000805160206123c1833981519152604482015290519081900360640190fd5b6120be81612248565b50565b600090815260056020908152604080832033845260090190915290205460ff1690565b3390565b600082821115612142576040805160e560020a62461bcd02815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b600082151561215957506000610a37565b82820282848281151561216857fe5b04146121be576040805160e560020a62461bcd02815260206004820152601660248201527f536166654d617468236d756c3a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b6000828201838110156121be576040805160e560020a62461bcd02815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b6000612239600180546121c590919063ffffffff16565b905090565b6001805481019055565b600160a060020a03811615156122ce576040805160e560020a62461bcd02815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b61014060405190810160405280600081526020016000600160a060020a031681526020016000815260200160008152602001600081526020016000600160a060020a031681526020016000815260200160008152602001600015158152602001600015158152509056feed6db11026ebcc6aae64d66d0a08276ffed7c75ac478965350fd6ab360b8d2094f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a165627a7a72305820cb5f270f4539dc8178394855f5792026f71fecd60756040242e87ea3c302899e0029
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.