Latest 25 from a total of 1,023 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Redeem | 24264209 | 34 days ago | IN | 0 ETH | 0.00000295 | ||||
| Redeem | 24225170 | 39 days ago | IN | 0 ETH | 0.00016383 | ||||
| Redeem | 24066370 | 61 days ago | IN | 0 ETH | 0.00000257 | ||||
| Redeem | 23963263 | 76 days ago | IN | 0 ETH | 0.00003833 | ||||
| Redeem | 23949099 | 78 days ago | IN | 0 ETH | 0.0000034 | ||||
| Redeem | 23941388 | 79 days ago | IN | 0 ETH | 0.00000631 | ||||
| Redeem | 23934107 | 80 days ago | IN | 0 ETH | 0.00000498 | ||||
| Redeem | 23746718 | 106 days ago | IN | 0 ETH | 0.00046611 | ||||
| Redeem | 23625649 | 123 days ago | IN | 0 ETH | 0.00012774 | ||||
| Redeem | 23625059 | 123 days ago | IN | 0 ETH | 0.00001666 | ||||
| Redeem | 23310054 | 167 days ago | IN | 0 ETH | 0.00009163 | ||||
| Redeem | 23300623 | 169 days ago | IN | 0 ETH | 0.00002054 | ||||
| Redeem | 23289341 | 170 days ago | IN | 0 ETH | 0.00008622 | ||||
| Redeem | 23180915 | 185 days ago | IN | 0 ETH | 0.00002169 | ||||
| Redeem | 23153002 | 189 days ago | IN | 0 ETH | 0.00004935 | ||||
| Redeem | 23149368 | 190 days ago | IN | 0 ETH | 0.0000745 | ||||
| Redeem | 23149360 | 190 days ago | IN | 0 ETH | 0.00010565 | ||||
| Redeem | 23135501 | 192 days ago | IN | 0 ETH | 0.00026318 | ||||
| Redeem | 23098687 | 197 days ago | IN | 0 ETH | 0.00004777 | ||||
| Redeem | 23079229 | 200 days ago | IN | 0 ETH | 0.00003343 | ||||
| Redeem | 23044188 | 204 days ago | IN | 0 ETH | 0.00002391 | ||||
| Redeem | 22998993 | 211 days ago | IN | 0 ETH | 0.00003305 | ||||
| Redeem | 22973197 | 214 days ago | IN | 0 ETH | 0.00042111 | ||||
| Redeem | 22969053 | 215 days ago | IN | 0 ETH | 0.00112319 | ||||
| Redeem | 22951363 | 217 days ago | IN | 0 ETH | 0.00008616 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
DustPoolExtraAllocator
Compiler Version
v0.7.5+commit.eb77ed08
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: Unlicensed
/***
* ███████ ██ ██ ███████ ██████ ██ ██ ██████ ███ ██ ███████ ██████ ███████ ████████ ███████
* ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ ██ ██ ██ ██ ██
* █████ ██ ██ █████ ██████ ████ ██ ██ ██ ██ ██ █████ ██ ███ █████ ██ ███████
* ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
* ███████ ████ ███████ ██ ██ ██ ██████ ██ ████ ███████ ██████ ███████ ██ ███████
*
*
* ███████ ██████ ███ ███ ███████ ██████ ██ ██ ███████ ████████
* ██ ██ ██ ████ ████ ██ ██ ██ ██ ██ ██ ██
* ███████ ██ ██ ██ ████ ██ █████ ██ ██ ██ ██ ███████ ██
* ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
* ███████ ██████ ██ ██ ███████ ██████ ██████ ███████ ██
*
*
* ETHER.CARDS - DUST TOKEN ALLOCATOR for EXTRA POOLS
*
*/
pragma solidity >=0.6.0 <0.8.0;
pragma abicoder v2;
import "@openzeppelin/contracts/math/SafeMath.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/ERC721/IERC721.sol";
import "@openzeppelin/contracts/token/ERC777/IERC777.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
contract DustPoolExtraAllocator is Ownable {
using SafeMath for uint256;
mapping(uint8 => uint256) public cardTypeAmounts;
mapping(uint16 => uint8) internal tokenData;
IERC721 public erc721; // Ether Cards
IERC20 public erc20; // Dust
bool public locked;
uint256 public unlockTime;
event Redeemed(uint16 tokenId);
event Skipped(uint16 tokenId);
constructor(address _erc721, address _erc20) {
erc721 = IERC721(_erc721);
erc20 = IERC20(_erc20);
// set card type values
cardTypeAmounts[1] = 21100 ether;
cardTypeAmounts[2] = 2110 ether;
cardTypeAmounts[3] = 211 ether;
// Fri Oct 15 2021 16:00:00 GMT+0300 (Eastern European Summer Time)
unlockTime = 1634302800;
}
function redeem(uint16[] calldata _tokenIds) public {
require(!locked && getBlockTimestamp() > unlockTime, "Contract locked");
uint256 totalAmount;
for(uint8 i = 0; i < _tokenIds.length; i++) {
uint16 _tokenId = _tokenIds[i];
require(erc721.ownerOf(_tokenId) == msg.sender, "ERC721: not owner of token");
if(!isTokenUsed(_tokenId)) {
totalAmount = totalAmount.add(
cardTypeAmounts[getCardTypeFromId(_tokenId)]
);
setTokenUsed(_tokenId);
emit Redeemed(_tokenId);
} else {
emit Skipped(_tokenId);
}
}
erc20.transfer(msg.sender, totalAmount);
}
function getAvailableBalance(uint16[] calldata _tokenIds) external view returns (uint256 balance) {
for(uint8 i = 0; i < _tokenIds.length; i++) {
uint16 _tokenId = _tokenIds[i];
if(!isTokenUsed(_tokenId)) {
balance = balance.add(
cardTypeAmounts[getCardTypeFromId(_tokenId)]
);
}
}
}
function getCardTypeFromId(uint16 _tokenId) public pure returns (uint8 _cardType) {
if(_tokenId < 10) {
revert("CardType not allowed");
}
if(_tokenId < 100) {
return 1;
}
if (_tokenId < 1000) {
return 2;
}
if (_tokenId < 10000) {
return 3;
}
revert("CardType not found");
}
function toggleLocked () public onlyOwner {
locked = !locked;
}
function removeUnlockTime () public onlyOwner {
unlockTime = block.timestamp;
}
function getBlockTimestamp() public view virtual returns (uint256) {
return block.timestamp;
}
function isTokenUsed(uint16 _position) public view returns (bool result) {
uint16 byteNum = uint16(_position / 8);
uint16 bitPos = uint8(_position - byteNum * 8);
if (tokenData[byteNum] == 0) return false;
return tokenData[byteNum] & (0x01 * 2**bitPos) != 0;
}
function setTokenUsed(uint16 _position) internal {
uint16 byteNum = uint16(_position / 8);
uint16 bitPos = uint8(_position - byteNum * 8);
tokenData[byteNum] = uint8(tokenData[byteNum] | (2**bitPos));
}
/// web3 Frontend - VIEW METHODS
// 0 - 1250 to get all 10k records
function getUsedTokenData(uint8 _page, uint16 _perPage)
public
view
returns (uint8[] memory)
{
_perPage = _perPage / 8;
uint16 i = _perPage * _page;
uint16 max = i + (_perPage);
uint16 j = 0;
uint8[] memory retValues;
assembly {
mstore(retValues, _perPage)
}
while (i < max) {
retValues[j] = tokenData[i];
j++;
i++;
}
assembly {
// move pointer to freespace otherwise return calldata gets messed up
mstore(0x40, msize())
}
return retValues;
}
// blackhole prevention methods
function retrieveERC20(address _tracker, uint256 amount) external onlyOwner {
IERC20(_tracker).transfer(msg.sender, amount);
}
function retrieve721(address _tracker, uint256 id) external onlyOwner {
IERC721(_tracker).transferFrom(address(this), msg.sender, id);
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
/**
* @dev Returns the substraction of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b > a) return (false, 0);
return (true, a - b);
}
/**
* @dev Returns the multiplication of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
/**
* @dev Returns the division of two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b == 0) return (false, 0);
return (true, a / b);
}
/**
* @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b == 0) return (false, 0);
return (true, a % b);
}
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a, "SafeMath: subtraction overflow");
return a - b;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) return 0;
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0, "SafeMath: division by zero");
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0, "SafeMath: modulo by zero");
return a % b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {trySub}.
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
return a - b;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting with custom message on
* division by zero. The result is rounded towards zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryDiv}.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting with custom message when dividing by zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryMod}.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
return a % b;
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor () internal {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
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 virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.6.2 <0.8.0;
import "../../introspection/IERC165.sol";
/**
* @dev Required interface of an ERC721 compliant contract.
*/
interface IERC721 is IERC165 {
/**
* @dev Emitted when `tokenId` token is transferred from `from` to `to`.
*/
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
/**
* @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
*/
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
/**
* @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
*/
event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
/**
* @dev Returns the number of tokens in ``owner``'s account.
*/
function balanceOf(address owner) external view returns (uint256 balance);
/**
* @dev Returns the owner of the `tokenId` token.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function ownerOf(uint256 tokenId) external view returns (address owner);
/**
* @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
* are aware of the ERC721 protocol to prevent tokens from being forever locked.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function safeTransferFrom(address from, address to, uint256 tokenId) external;
/**
* @dev Transfers `tokenId` token from `from` to `to`.
*
* WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must be owned by `from`.
* - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 tokenId) external;
/**
* @dev Gives permission to `to` to transfer `tokenId` token to another account.
* The approval is cleared when the token is transferred.
*
* Only a single account can be approved at a time, so approving the zero address clears previous approvals.
*
* Requirements:
*
* - The caller must own the token or be an approved operator.
* - `tokenId` must exist.
*
* Emits an {Approval} event.
*/
function approve(address to, uint256 tokenId) external;
/**
* @dev Returns the account approved for `tokenId` token.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function getApproved(uint256 tokenId) external view returns (address operator);
/**
* @dev Approve or remove `operator` as an operator for the caller.
* Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
*
* Requirements:
*
* - The `operator` cannot be the caller.
*
* Emits an {ApprovalForAll} event.
*/
function setApprovalForAll(address operator, bool _approved) external;
/**
* @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
*
* See {setApprovalForAll}
*/
function isApprovedForAll(address owner, address operator) external view returns (bool);
/**
* @dev Safely transfers `tokenId` token from `from` to `to`.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;
}// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
/**
* @dev Interface of the ERC777Token standard as defined in the EIP.
*
* This contract uses the
* https://eips.ethereum.org/EIPS/eip-1820[ERC1820 registry standard] to let
* token holders and recipients react to token movements by using setting implementers
* for the associated interfaces in said registry. See {IERC1820Registry} and
* {ERC1820Implementer}.
*/
interface IERC777 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the smallest part of the token that is not divisible. This
* means all token operations (creation, movement and destruction) must have
* amounts that are a multiple of this number.
*
* For most token contracts, this value will equal 1.
*/
function granularity() external view returns (uint256);
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by an account (`owner`).
*/
function balanceOf(address owner) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* If send or receive hooks are registered for the caller and `recipient`,
* the corresponding functions will be called with `data` and empty
* `operatorData`. See {IERC777Sender} and {IERC777Recipient}.
*
* Emits a {Sent} event.
*
* Requirements
*
* - the caller must have at least `amount` tokens.
* - `recipient` cannot be the zero address.
* - if `recipient` is a contract, it must implement the {IERC777Recipient}
* interface.
*/
function send(address recipient, uint256 amount, bytes calldata data) external;
/**
* @dev Destroys `amount` tokens from the caller's account, reducing the
* total supply.
*
* If a send hook is registered for the caller, the corresponding function
* will be called with `data` and empty `operatorData`. See {IERC777Sender}.
*
* Emits a {Burned} event.
*
* Requirements
*
* - the caller must have at least `amount` tokens.
*/
function burn(uint256 amount, bytes calldata data) external;
/**
* @dev Returns true if an account is an operator of `tokenHolder`.
* Operators can send and burn tokens on behalf of their owners. All
* accounts are their own operator.
*
* See {operatorSend} and {operatorBurn}.
*/
function isOperatorFor(address operator, address tokenHolder) external view returns (bool);
/**
* @dev Make an account an operator of the caller.
*
* See {isOperatorFor}.
*
* Emits an {AuthorizedOperator} event.
*
* Requirements
*
* - `operator` cannot be calling address.
*/
function authorizeOperator(address operator) external;
/**
* @dev Revoke an account's operator status for the caller.
*
* See {isOperatorFor} and {defaultOperators}.
*
* Emits a {RevokedOperator} event.
*
* Requirements
*
* - `operator` cannot be calling address.
*/
function revokeOperator(address operator) external;
/**
* @dev Returns the list of default operators. These accounts are operators
* for all token holders, even if {authorizeOperator} was never called on
* them.
*
* This list is immutable, but individual holders may revoke these via
* {revokeOperator}, in which case {isOperatorFor} will return false.
*/
function defaultOperators() external view returns (address[] memory);
/**
* @dev Moves `amount` tokens from `sender` to `recipient`. The caller must
* be an operator of `sender`.
*
* If send or receive hooks are registered for `sender` and `recipient`,
* the corresponding functions will be called with `data` and
* `operatorData`. See {IERC777Sender} and {IERC777Recipient}.
*
* Emits a {Sent} event.
*
* Requirements
*
* - `sender` cannot be the zero address.
* - `sender` must have at least `amount` tokens.
* - the caller must be an operator for `sender`.
* - `recipient` cannot be the zero address.
* - if `recipient` is a contract, it must implement the {IERC777Recipient}
* interface.
*/
function operatorSend(
address sender,
address recipient,
uint256 amount,
bytes calldata data,
bytes calldata operatorData
) external;
/**
* @dev Destroys `amount` tokens from `account`, reducing the total supply.
* The caller must be an operator of `account`.
*
* If a send hook is registered for `account`, the corresponding function
* will be called with `data` and `operatorData`. See {IERC777Sender}.
*
* Emits a {Burned} event.
*
* Requirements
*
* - `account` cannot be the zero address.
* - `account` must have at least `amount` tokens.
* - the caller must be an operator for `account`.
*/
function operatorBurn(
address account,
uint256 amount,
bytes calldata data,
bytes calldata operatorData
) external;
event Sent(
address indexed operator,
address indexed from,
address indexed to,
uint256 amount,
bytes data,
bytes operatorData
);
event Minted(address indexed operator, address indexed to, uint256 amount, bytes data, bytes operatorData);
event Burned(address indexed operator, address indexed from, uint256 amount, bytes data, bytes operatorData);
event AuthorizedOperator(address indexed operator, address indexed tokenHolder);
event RevokedOperator(address indexed operator, address indexed tokenHolder);
}// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with 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.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}{
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"metadata": {
"useLiteralContent": true
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_erc721","type":"address"},{"internalType":"address","name":"_erc20","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"tokenId","type":"uint16"}],"name":"Redeemed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"tokenId","type":"uint16"}],"name":"Skipped","type":"event"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"}],"name":"cardTypeAmounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"erc20","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"erc721","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16[]","name":"_tokenIds","type":"uint16[]"}],"name":"getAvailableBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBlockTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_tokenId","type":"uint16"}],"name":"getCardTypeFromId","outputs":[{"internalType":"uint8","name":"_cardType","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint8","name":"_page","type":"uint8"},{"internalType":"uint16","name":"_perPage","type":"uint16"}],"name":"getUsedTokenData","outputs":[{"internalType":"uint8[]","name":"","type":"uint8[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_position","type":"uint16"}],"name":"isTokenUsed","outputs":[{"internalType":"bool","name":"result","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16[]","name":"_tokenIds","type":"uint16[]"}],"name":"redeem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeUnlockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tracker","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"retrieve721","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tracker","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"retrieveERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleLocked","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60806040523480156200001157600080fd5b5060405162001d5338038062001d5383398181016040528101906200003791906200020b565b600062000049620001ec60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550690477d5529f68a630000060016000600160ff1681526020019081526020016000208190555068726221dcbdaa38000060016000600260ff16815260200190815260200160002081905550680b70369612f76c000060016000600360ff168152602001908152602001600020819055506361697b5060058190555050506200029a565b600033905090565b600081519050620002058162000280565b92915050565b600080604083850312156200021f57600080fd5b60006200022f85828601620001f4565b92505060206200024285828601620001f4565b9150509250929050565b6000620002598262000260565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6200028b816200024c565b81146200029757600080fd5b50565b611aa980620002aa6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063796b89b9116100a2578063bca6ce6411610071578063bca6ce6414610295578063c9c2c570146102b3578063cf309012146102e3578063da90e8b714610301578063f2fde38b1461033157610116565b8063796b89b914610221578063854d5a4e1461023f5780638da5cb5b1461025b578063a5b3abfb1461027957610116565b806347a8aa90116100e957806347a8aa901461018f57806351328984146101bf578063715018a6146101c957806376d76d3b146101d3578063785e9e861461020357610116565b806301b117921461011b5780630d1bc6311461012557806317fd1e2f14610155578063251c1aa314610171575b600080fd5b61012361034d565b005b61013f600480360381019061013a9190611429565b610428565b60405161014c9190611760565b60405180910390f35b61016f600480360381019061016a919061137f565b6104ce565b005b61017961060f565b6040516101869190611867565b60405180910390f35b6101a960048036038101906101a49190611429565b610615565b6040516101b69190611882565b60405180910390f35b6101c76106e3565b005b6101d161079b565b005b6101ed60048036038101906101e8919061147b565b610908565b6040516101fa919061173e565b60405180910390f35b61020b6109b7565b604051610218919061177b565b60405180910390f35b6102296109dd565b6040516102369190611867565b60405180910390f35b610259600480360381019061025491906113bb565b6109e5565b005b610263610d23565b60405161027091906116c3565b60405180910390f35b610293600480360381019061028e919061137f565b610d4c565b005b61029d610e6e565b6040516102aa9190611796565b60405180910390f35b6102cd60048036038101906102c89190611452565b610e94565b6040516102da9190611867565b60405180910390f35b6102eb610eac565b6040516102f89190611760565b60405180910390f35b61031b600480360381019061031691906113bb565b610ebf565b6040516103289190611867565b60405180910390f35b61034b6004803603810190610346919061132d565b610f56565b005b610355611148565b73ffffffffffffffffffffffffffffffffffffffff16610373610d23565b73ffffffffffffffffffffffffffffffffffffffff16146103fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600460149054906101000a900460ff1615600460146101000a81548160ff021916908315150217905550565b60008060088361ffff168161043957fe5b049050600060088202840360ff1690506000600260008461ffff1661ffff16815260200190815260200160002060009054906101000a900460ff1660ff161415610488576000925050506104c9565b60008161ffff1660020a600102600260008561ffff1661ffff16815260200190815260200160002060009054906101000a900460ff1660ff16161415925050505b919050565b6104d6611148565b73ffffffffffffffffffffffffffffffffffffffff166104f4610d23565b73ffffffffffffffffffffffffffffffffffffffff161461057d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016105b89291906116de565b602060405180830381600087803b1580156105d257600080fd5b505af11580156105e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060a9190611400565b505050565b60055481565b6000600a8261ffff16101561065f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610656906117b1565b60405180910390fd5b60648261ffff16101561067557600190506106de565b6103e88261ffff16101561068c57600290506106de565b6127108261ffff1610156106a357600390506106de565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d5906117f1565b60405180910390fd5b919050565b6106eb611148565b73ffffffffffffffffffffffffffffffffffffffff16610709610d23565b73ffffffffffffffffffffffffffffffffffffffff1614610792576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b42600581905550565b6107a3611148565b73ffffffffffffffffffffffffffffffffffffffff166107c1610d23565b73ffffffffffffffffffffffffffffffffffffffff161461084a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060088261ffff168161091857fe5b04915060008360ff168302905060008382019050600060608581525b8261ffff168461ffff1610156109a657600260008561ffff1661ffff16815260200190815260200160002060009054906101000a900460ff16818361ffff168151811061097d57fe5b602002602001019060ff16908160ff168152505081806001019250508380600101945050610934565b596040528094505050505092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600042905090565b600460149054906101000a900460ff16158015610a0a5750600554610a086109dd565b115b610a49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a40906117d1565b60405180910390fd5b600080600090505b838390508160ff161015610c6d57600084848360ff16818110610a7057fe5b9050602002016020810190610a859190611429565b90503373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401610af9919061184c565b60206040518083038186803b158015610b1157600080fd5b505afa158015610b25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b499190611356565b73ffffffffffffffffffffffffffffffffffffffff1614610b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9690611811565b60405180910390fd5b610ba881610428565b610c2757610be060016000610bbc84610615565b60ff1660ff168152602001908152602001600020548461115090919063ffffffff16565b9250610beb816111d8565b7f8357b7cc123a6e8fe3739217d8a978c9ce32211b7ffe2799cf67dd211ed93ce081604051610c1a9190611831565b60405180910390a1610c5f565b7f0af875050dac9daa78c864b492f6180ca5886897dc0421e62dbded38509d1e6f81604051610c569190611831565b60405180910390a15b508080600101915050610a51565b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610ccb9291906116de565b602060405180830381600087803b158015610ce557600080fd5b505af1158015610cf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1d9190611400565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610d54611148565b73ffffffffffffffffffffffffffffffffffffffff16610d72610d23565b73ffffffffffffffffffffffffffffffffffffffff1614610dfb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3033846040518463ffffffff1660e01b8152600401610e3893929190611707565b600060405180830381600087803b158015610e5257600080fd5b505af1158015610e66573d6000803e3d6000fd5b505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090505481565b600460149054906101000a900460ff1681565b600080600090505b838390508160ff161015610f4f57600084848360ff16818110610ee657fe5b9050602002016020810190610efb9190611429565b9050610f0681610428565b610f4157610f3e60016000610f1a84610615565b60ff1660ff168152602001908152602001600020548461115090919063ffffffff16565b92505b508080600101915050610ec7565b5092915050565b610f5e611148565b73ffffffffffffffffffffffffffffffffffffffff16610f7c610d23565b73ffffffffffffffffffffffffffffffffffffffff1614611005576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561108b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611a4e6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b6000808284019050838110156111ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600060088261ffff16816111e857fe5b049050600060088202830360ff1690508061ffff1660020a600260008461ffff1661ffff16815260200190815260200160002060009054906101000a900460ff1660ff1617600260008461ffff1661ffff16815260200190815260200160002060006101000a81548160ff021916908360ff160217905550505050565b600081359050611274816119da565b92915050565b600081519050611289816119da565b92915050565b60008083601f8401126112a157600080fd5b8235905067ffffffffffffffff8111156112ba57600080fd5b6020830191508360208202830111156112d257600080fd5b9250929050565b6000815190506112e8816119f1565b92915050565b6000813590506112fd81611a08565b92915050565b60008135905061131281611a1f565b92915050565b60008135905061132781611a36565b92915050565b60006020828403121561133f57600080fd5b600061134d84828501611265565b91505092915050565b60006020828403121561136857600080fd5b60006113768482850161127a565b91505092915050565b6000806040838503121561139257600080fd5b60006113a085828601611265565b92505060206113b185828601611303565b9150509250929050565b600080602083850312156113ce57600080fd5b600083013567ffffffffffffffff8111156113e857600080fd5b6113f48582860161128f565b92509250509250929050565b60006020828403121561141257600080fd5b6000611420848285016112d9565b91505092915050565b60006020828403121561143b57600080fd5b6000611449848285016112ee565b91505092915050565b60006020828403121561146457600080fd5b600061147284828501611318565b91505092915050565b6000806040838503121561148e57600080fd5b600061149c85828601611318565b92505060206114ad858286016112ee565b9150509250929050565b60006114c383836116a5565b60208301905092915050565b6114d88161194a565b82525050565b6114e7816118e7565b82525050565b60006114f8826118ad565b61150281856118c5565b935061150d8361189d565b8060005b8381101561153e57815161152588826114b7565b9750611530836118b8565b925050600181019050611511565b5085935050505092915050565b611554816118f9565b82525050565b6115638161195c565b82525050565b61157281611980565b82525050565b60006115856014836118d6565b91507f4361726454797065206e6f7420616c6c6f7765640000000000000000000000006000830152602082019050919050565b60006115c5600f836118d6565b91507f436f6e7472616374206c6f636b656400000000000000000000000000000000006000830152602082019050919050565b60006116056012836118d6565b91507f4361726454797065206e6f7420666f756e6400000000000000000000000000006000830152602082019050919050565b6000611645601a836118d6565b91507f4552433732313a206e6f74206f776e6572206f6620746f6b656e0000000000006000830152602082019050919050565b61168181611905565b82525050565b611690816119c8565b82525050565b61169f81611933565b82525050565b6116ae8161193d565b82525050565b6116bd8161193d565b82525050565b60006020820190506116d860008301846114de565b92915050565b60006040820190506116f360008301856114cf565b6117006020830184611696565b9392505050565b600060608201905061171c60008301866114de565b61172960208301856114cf565b6117366040830184611696565b949350505050565b6000602082019050818103600083015261175881846114ed565b905092915050565b6000602082019050611775600083018461154b565b92915050565b6000602082019050611790600083018461155a565b92915050565b60006020820190506117ab6000830184611569565b92915050565b600060208201905081810360008301526117ca81611578565b9050919050565b600060208201905081810360008301526117ea816115b8565b9050919050565b6000602082019050818103600083015261180a816115f8565b9050919050565b6000602082019050818103600083015261182a81611638565b9050919050565b60006020820190506118466000830184611678565b92915050565b60006020820190506118616000830184611687565b92915050565b600060208201905061187c6000830184611696565b92915050565b600060208201905061189760008301846116b4565b92915050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006118f282611913565b9050919050565b60008115159050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611955826119a4565b9050919050565b60006119678261196e565b9050919050565b600061197982611913565b9050919050565b600061198b82611992565b9050919050565b600061199d82611913565b9050919050565b60006119af826119b6565b9050919050565b60006119c182611913565b9050919050565b60006119d382611905565b9050919050565b6119e3816118e7565b81146119ee57600080fd5b50565b6119fa816118f9565b8114611a0557600080fd5b50565b611a1181611905565b8114611a1c57600080fd5b50565b611a2881611933565b8114611a3357600080fd5b50565b611a3f8161193d565b8114611a4a57600080fd5b5056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a264697066735822122096c8f5965c955eb458181bb05d6d1a0cac3d8351183b92fc7a93182f02e12bde64736f6c6343000705003300000000000000000000000097ca7fe0b0288f5eb85f386fed876618fb9b8ab8000000000000000000000000e2e109f1b4eaa8915655fe8fdefc112a34acc5f0
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063796b89b9116100a2578063bca6ce6411610071578063bca6ce6414610295578063c9c2c570146102b3578063cf309012146102e3578063da90e8b714610301578063f2fde38b1461033157610116565b8063796b89b914610221578063854d5a4e1461023f5780638da5cb5b1461025b578063a5b3abfb1461027957610116565b806347a8aa90116100e957806347a8aa901461018f57806351328984146101bf578063715018a6146101c957806376d76d3b146101d3578063785e9e861461020357610116565b806301b117921461011b5780630d1bc6311461012557806317fd1e2f14610155578063251c1aa314610171575b600080fd5b61012361034d565b005b61013f600480360381019061013a9190611429565b610428565b60405161014c9190611760565b60405180910390f35b61016f600480360381019061016a919061137f565b6104ce565b005b61017961060f565b6040516101869190611867565b60405180910390f35b6101a960048036038101906101a49190611429565b610615565b6040516101b69190611882565b60405180910390f35b6101c76106e3565b005b6101d161079b565b005b6101ed60048036038101906101e8919061147b565b610908565b6040516101fa919061173e565b60405180910390f35b61020b6109b7565b604051610218919061177b565b60405180910390f35b6102296109dd565b6040516102369190611867565b60405180910390f35b610259600480360381019061025491906113bb565b6109e5565b005b610263610d23565b60405161027091906116c3565b60405180910390f35b610293600480360381019061028e919061137f565b610d4c565b005b61029d610e6e565b6040516102aa9190611796565b60405180910390f35b6102cd60048036038101906102c89190611452565b610e94565b6040516102da9190611867565b60405180910390f35b6102eb610eac565b6040516102f89190611760565b60405180910390f35b61031b600480360381019061031691906113bb565b610ebf565b6040516103289190611867565b60405180910390f35b61034b6004803603810190610346919061132d565b610f56565b005b610355611148565b73ffffffffffffffffffffffffffffffffffffffff16610373610d23565b73ffffffffffffffffffffffffffffffffffffffff16146103fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600460149054906101000a900460ff1615600460146101000a81548160ff021916908315150217905550565b60008060088361ffff168161043957fe5b049050600060088202840360ff1690506000600260008461ffff1661ffff16815260200190815260200160002060009054906101000a900460ff1660ff161415610488576000925050506104c9565b60008161ffff1660020a600102600260008561ffff1661ffff16815260200190815260200160002060009054906101000a900460ff1660ff16161415925050505b919050565b6104d6611148565b73ffffffffffffffffffffffffffffffffffffffff166104f4610d23565b73ffffffffffffffffffffffffffffffffffffffff161461057d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016105b89291906116de565b602060405180830381600087803b1580156105d257600080fd5b505af11580156105e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060a9190611400565b505050565b60055481565b6000600a8261ffff16101561065f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610656906117b1565b60405180910390fd5b60648261ffff16101561067557600190506106de565b6103e88261ffff16101561068c57600290506106de565b6127108261ffff1610156106a357600390506106de565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d5906117f1565b60405180910390fd5b919050565b6106eb611148565b73ffffffffffffffffffffffffffffffffffffffff16610709610d23565b73ffffffffffffffffffffffffffffffffffffffff1614610792576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b42600581905550565b6107a3611148565b73ffffffffffffffffffffffffffffffffffffffff166107c1610d23565b73ffffffffffffffffffffffffffffffffffffffff161461084a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060088261ffff168161091857fe5b04915060008360ff168302905060008382019050600060608581525b8261ffff168461ffff1610156109a657600260008561ffff1661ffff16815260200190815260200160002060009054906101000a900460ff16818361ffff168151811061097d57fe5b602002602001019060ff16908160ff168152505081806001019250508380600101945050610934565b596040528094505050505092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600042905090565b600460149054906101000a900460ff16158015610a0a5750600554610a086109dd565b115b610a49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a40906117d1565b60405180910390fd5b600080600090505b838390508160ff161015610c6d57600084848360ff16818110610a7057fe5b9050602002016020810190610a859190611429565b90503373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401610af9919061184c565b60206040518083038186803b158015610b1157600080fd5b505afa158015610b25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b499190611356565b73ffffffffffffffffffffffffffffffffffffffff1614610b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9690611811565b60405180910390fd5b610ba881610428565b610c2757610be060016000610bbc84610615565b60ff1660ff168152602001908152602001600020548461115090919063ffffffff16565b9250610beb816111d8565b7f8357b7cc123a6e8fe3739217d8a978c9ce32211b7ffe2799cf67dd211ed93ce081604051610c1a9190611831565b60405180910390a1610c5f565b7f0af875050dac9daa78c864b492f6180ca5886897dc0421e62dbded38509d1e6f81604051610c569190611831565b60405180910390a15b508080600101915050610a51565b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610ccb9291906116de565b602060405180830381600087803b158015610ce557600080fd5b505af1158015610cf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1d9190611400565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610d54611148565b73ffffffffffffffffffffffffffffffffffffffff16610d72610d23565b73ffffffffffffffffffffffffffffffffffffffff1614610dfb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3033846040518463ffffffff1660e01b8152600401610e3893929190611707565b600060405180830381600087803b158015610e5257600080fd5b505af1158015610e66573d6000803e3d6000fd5b505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090505481565b600460149054906101000a900460ff1681565b600080600090505b838390508160ff161015610f4f57600084848360ff16818110610ee657fe5b9050602002016020810190610efb9190611429565b9050610f0681610428565b610f4157610f3e60016000610f1a84610615565b60ff1660ff168152602001908152602001600020548461115090919063ffffffff16565b92505b508080600101915050610ec7565b5092915050565b610f5e611148565b73ffffffffffffffffffffffffffffffffffffffff16610f7c610d23565b73ffffffffffffffffffffffffffffffffffffffff1614611005576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561108b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611a4e6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b6000808284019050838110156111ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600060088261ffff16816111e857fe5b049050600060088202830360ff1690508061ffff1660020a600260008461ffff1661ffff16815260200190815260200160002060009054906101000a900460ff1660ff1617600260008461ffff1661ffff16815260200190815260200160002060006101000a81548160ff021916908360ff160217905550505050565b600081359050611274816119da565b92915050565b600081519050611289816119da565b92915050565b60008083601f8401126112a157600080fd5b8235905067ffffffffffffffff8111156112ba57600080fd5b6020830191508360208202830111156112d257600080fd5b9250929050565b6000815190506112e8816119f1565b92915050565b6000813590506112fd81611a08565b92915050565b60008135905061131281611a1f565b92915050565b60008135905061132781611a36565b92915050565b60006020828403121561133f57600080fd5b600061134d84828501611265565b91505092915050565b60006020828403121561136857600080fd5b60006113768482850161127a565b91505092915050565b6000806040838503121561139257600080fd5b60006113a085828601611265565b92505060206113b185828601611303565b9150509250929050565b600080602083850312156113ce57600080fd5b600083013567ffffffffffffffff8111156113e857600080fd5b6113f48582860161128f565b92509250509250929050565b60006020828403121561141257600080fd5b6000611420848285016112d9565b91505092915050565b60006020828403121561143b57600080fd5b6000611449848285016112ee565b91505092915050565b60006020828403121561146457600080fd5b600061147284828501611318565b91505092915050565b6000806040838503121561148e57600080fd5b600061149c85828601611318565b92505060206114ad858286016112ee565b9150509250929050565b60006114c383836116a5565b60208301905092915050565b6114d88161194a565b82525050565b6114e7816118e7565b82525050565b60006114f8826118ad565b61150281856118c5565b935061150d8361189d565b8060005b8381101561153e57815161152588826114b7565b9750611530836118b8565b925050600181019050611511565b5085935050505092915050565b611554816118f9565b82525050565b6115638161195c565b82525050565b61157281611980565b82525050565b60006115856014836118d6565b91507f4361726454797065206e6f7420616c6c6f7765640000000000000000000000006000830152602082019050919050565b60006115c5600f836118d6565b91507f436f6e7472616374206c6f636b656400000000000000000000000000000000006000830152602082019050919050565b60006116056012836118d6565b91507f4361726454797065206e6f7420666f756e6400000000000000000000000000006000830152602082019050919050565b6000611645601a836118d6565b91507f4552433732313a206e6f74206f776e6572206f6620746f6b656e0000000000006000830152602082019050919050565b61168181611905565b82525050565b611690816119c8565b82525050565b61169f81611933565b82525050565b6116ae8161193d565b82525050565b6116bd8161193d565b82525050565b60006020820190506116d860008301846114de565b92915050565b60006040820190506116f360008301856114cf565b6117006020830184611696565b9392505050565b600060608201905061171c60008301866114de565b61172960208301856114cf565b6117366040830184611696565b949350505050565b6000602082019050818103600083015261175881846114ed565b905092915050565b6000602082019050611775600083018461154b565b92915050565b6000602082019050611790600083018461155a565b92915050565b60006020820190506117ab6000830184611569565b92915050565b600060208201905081810360008301526117ca81611578565b9050919050565b600060208201905081810360008301526117ea816115b8565b9050919050565b6000602082019050818103600083015261180a816115f8565b9050919050565b6000602082019050818103600083015261182a81611638565b9050919050565b60006020820190506118466000830184611678565b92915050565b60006020820190506118616000830184611687565b92915050565b600060208201905061187c6000830184611696565b92915050565b600060208201905061189760008301846116b4565b92915050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006118f282611913565b9050919050565b60008115159050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611955826119a4565b9050919050565b60006119678261196e565b9050919050565b600061197982611913565b9050919050565b600061198b82611992565b9050919050565b600061199d82611913565b9050919050565b60006119af826119b6565b9050919050565b60006119c182611913565b9050919050565b60006119d382611905565b9050919050565b6119e3816118e7565b81146119ee57600080fd5b50565b6119fa816118f9565b8114611a0557600080fd5b50565b611a1181611905565b8114611a1c57600080fd5b50565b611a2881611933565b8114611a3357600080fd5b50565b611a3f8161193d565b8114611a4a57600080fd5b5056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a264697066735822122096c8f5965c955eb458181bb05d6d1a0cac3d8351183b92fc7a93182f02e12bde64736f6c63430007050033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000097ca7fe0b0288f5eb85f386fed876618fb9b8ab8000000000000000000000000e2e109f1b4eaa8915655fe8fdefc112a34acc5f0
-----Decoded View---------------
Arg [0] : _erc721 (address): 0x97CA7FE0b0288f5EB85F386FeD876618FB9b8Ab8
Arg [1] : _erc20 (address): 0xe2E109f1b4eaA8915655fE8fDEfC112a34ACc5F0
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000097ca7fe0b0288f5eb85f386fed876618fb9b8ab8
Arg [1] : 000000000000000000000000e2e109f1b4eaa8915655fe8fdefc112a34acc5f0
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.