Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 8 from a total of 8 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Add_721_vault | 13756751 | 1179 days ago | IN | 0 ETH | 0.02584534 | ||||
Add_721_vault | 13756733 | 1179 days ago | IN | 0 ETH | 0.02289891 | ||||
Add_721_vault | 13422930 | 1231 days ago | IN | 0 ETH | 0.01733328 | ||||
Add_721_vault | 13422919 | 1231 days ago | IN | 0 ETH | 0.0173304 | ||||
Add_721_vault | 13422908 | 1231 days ago | IN | 0 ETH | 0.0173304 | ||||
Add_721_vault | 13422896 | 1231 days ago | IN | 0 ETH | 0.0173304 | ||||
Set Approval For... | 13420128 | 1232 days ago | IN | 0 ETH | 0.00305788 | ||||
Add_721_vault | 13378379 | 1238 days ago | IN | 0 ETH | 0.01938096 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
dust_for_punkz
Compiler Version
v0.8.2+commit.661d1103
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol"; import "@openzeppelin/contracts/token/ERC777/IERC777Recipient.sol"; import "@openzeppelin/contracts/token/ERC777/IERC777.sol"; import "@openzeppelin/contracts/utils/introspection/IERC1820Registry.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "../interfaces/IRNG.sol"; import "../interfaces/IRNGrequestor.sol"; import "../interfaces/dust_redeemer.sol"; // import "hardhat/console.sol"; struct DustBuster { string name; uint256 price; address vault; address token; uint256 reserved; address handler; bool enabled; } contract dust_for_punkz is Ownable, dust_redeemer, IRNGrequestor,IERC777Recipient, ReentrancyGuard { IRNG public rng; address public DUST_TOKEN; uint256 public next_redeemable; mapping(uint256 => DustBuster) redeemables; mapping(bytes32 => DustBusterPro) waiting; mapping(address => bytes32[]) public userhashes; string constant public punksForDust = "https://www.youtube.com/watch?v=wsOHvP1XnRg"; bytes32 constant private TOKENS_RECIPIENT_INTERFACE_HASH = keccak256("ERC777TokensRecipient"); IERC1820Registry internal constant _ERC1820_REGISTRY = IERC1820Registry(0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24); // // higher level than onlyAuth // event RedemptionRequest(bytes32 hash); constructor(IRNG _rng,address dust) { rng = _rng; DUST_TOKEN = dust; _ERC1820_REGISTRY.setInterfaceImplementer(address(this), TOKENS_RECIPIENT_INTERFACE_HASH, address(this)); } function add_external_redeemer( string memory name, uint256 price, address vault, address token, address handler ) external onlyOwner { redeemables[next_redeemable++] = DustBuster(name,price,vault,token,0,handler, true); } function add_721_vault( string memory name, uint256 price, address vault, address token ) external onlyOwner { redeemables[next_redeemable++] = DustBuster(name,price,vault,token,0,address(this),true); } function vaultName(uint256 vaultID) external view returns (string memory) { return redeemables[vaultID].name; } function vaultPrice(uint256 vaultID) external view returns (uint256) { return redeemables[vaultID].price; } function vaultAddress(uint256 vaultID) external view returns (address) { return redeemables[vaultID].vault; } function vaultToken(uint256 vaultID) external view returns (address) { return redeemables[vaultID].token; } function change_vault_price(uint vaultID, uint256 price) external onlyOwner { redeemables[vaultID].price = price; } function enable_vault(uint vaultID, bool enabled) external onlyOwner { redeemables[vaultID].enabled = enabled; } function toUint256(bytes memory _bytes, uint256 _start) internal pure returns (uint256) { require(_bytes.length >= (_start + 32), "Read out of bounds"); uint256 tempUint; assembly { tempUint := mload(add(add(_bytes, 0x20), _start)) } return tempUint; } function tokensReceived( address , address from, address , uint256 amount, bytes calldata userData, bytes calldata ) external override nonReentrant { require(msg.sender == DUST_TOKEN,"Unauthorised"); require(userData.length == 32,"Invalid user data"); uint pos = toUint256(userData, 0); DustBuster memory db = redeemables[pos]; require(db.enabled,"Vault not enabled"); require(dust_redeemer(db.handler).balanceOf(db.token,db.vault) > db.reserved,"Insufficient tokens in vault"); redeemables[pos].reserved++; require(amount>= db.price,"Insufficent Dust sent"); bytes32 hash = rng.requestRandomNumberWithCallback( ); waiting[hash] = DustBusterPro(db.name,db.vault,db.token,0,from, db.handler,pos,0,false); userhashes[from].push(hash); bytes memory data; IERC777(DUST_TOKEN).burn(amount,data); emit RedemptionRequest(hash); } // The built in function assumes that the token is an ERC721. // This cannot be called directly - only from this contract as function redeem(DustBusterPro memory general) external override returns (uint256) { require(msg.sender == address(this),"Invalid sender"); IERC721Enumerable token = IERC721Enumerable(general.token); require(token.supportsInterface(type(IERC721Enumerable).interfaceId),"Not an ERC721Enumerable"); uint256 balance = token.balanceOf(general.vault); require(balance > 0,"No NFTs in vault"); uint256 tokenPos = general.random % balance; uint256 tokenId = token.tokenOfOwnerByIndex(general.vault, tokenPos); token.safeTransferFrom(general.vault,general.recipient,tokenId); return tokenId; } function balanceOf(address token, address vault) external override view returns(uint256) { return IERC721Enumerable(token).balanceOf(vault); } function process(uint256 rand, bytes32 requestId) external override { require(msg.sender == address(rng),"unauthorised"); DustBusterPro memory dbp = waiting[requestId]; dbp.random = rand; redeemables[dbp.position].reserved--; uint256 tokenId = dust_redeemer(dbp.handler).redeem(dbp); dbp.token_id = tokenId; dbp.redeemed = true; waiting[requestId] = dbp; } function numberOfHashes(address user) external view returns (uint256){ return userhashes[user].length; } function redeemedTokenId(bytes32 hash) external view returns (uint256) { return waiting[hash].token_id; } function isTokenRedeemed(bytes32 hash) external view returns (bool) { return waiting[hash].redeemed; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../IERC721.sol"; /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC777TokensRecipient standard as defined in the EIP. * * Accounts can be notified of {IERC777} tokens being sent to them by having a * contract implement this interface (contract holders can be their own * implementer) and registering it on the * https://eips.ethereum.org/EIPS/eip-1820[ERC1820 global registry]. * * See {IERC1820Registry} and {ERC1820Implementer}. */ interface IERC777Recipient { /** * @dev Called by an {IERC777} token contract whenever tokens are being * moved or created into a registered account (`to`). The type of operation * is conveyed by `from` being the zero address or not. * * This call occurs _after_ the token contract's state is updated, so * {IERC777-balanceOf}, etc., can be used to query the post-operation state. * * This function may revert to prevent the operation from being executed. */ function tokensReceived( address operator, address from, address to, uint256 amount, bytes calldata userData, bytes calldata operatorData ) external; }
// SPDX-License-Identifier: MIT pragma solidity ^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.8.0; /** * @dev Interface of the global ERC1820 Registry, as defined in the * https://eips.ethereum.org/EIPS/eip-1820[EIP]. Accounts may register * implementers for interfaces in this registry, as well as query support. * * Implementers may be shared by multiple accounts, and can also implement more * than a single interface for each account. Contracts can implement interfaces * for themselves, but externally-owned accounts (EOA) must delegate this to a * contract. * * {IERC165} interfaces can also be queried via the registry. * * For an in-depth explanation and source code analysis, see the EIP text. */ interface IERC1820Registry { /** * @dev Sets `newManager` as the manager for `account`. A manager of an * account is able to set interface implementers for it. * * By default, each account is its own manager. Passing a value of `0x0` in * `newManager` will reset the manager to this initial state. * * Emits a {ManagerChanged} event. * * Requirements: * * - the caller must be the current manager for `account`. */ function setManager(address account, address newManager) external; /** * @dev Returns the manager for `account`. * * See {setManager}. */ function getManager(address account) external view returns (address); /** * @dev Sets the `implementer` contract as ``account``'s implementer for * `interfaceHash`. * * `account` being the zero address is an alias for the caller's address. * The zero address can also be used in `implementer` to remove an old one. * * See {interfaceHash} to learn how these are created. * * Emits an {InterfaceImplementerSet} event. * * Requirements: * * - the caller must be the current manager for `account`. * - `interfaceHash` must not be an {IERC165} interface id (i.e. it must not * end in 28 zeroes). * - `implementer` must implement {IERC1820Implementer} and return true when * queried for support, unless `implementer` is the caller. See * {IERC1820Implementer-canImplementInterfaceForAddress}. */ function setInterfaceImplementer( address account, bytes32 _interfaceHash, address implementer ) external; /** * @dev Returns the implementer of `interfaceHash` for `account`. If no such * implementer is registered, returns the zero address. * * If `interfaceHash` is an {IERC165} interface id (i.e. it ends with 28 * zeroes), `account` will be queried for support of it. * * `account` being the zero address is an alias for the caller's address. */ function getInterfaceImplementer(address account, bytes32 _interfaceHash) external view returns (address); /** * @dev Returns the interface hash for an `interfaceName`, as defined in the * corresponding * https://eips.ethereum.org/EIPS/eip-1820#interface-name[section of the EIP]. */ function interfaceHash(string calldata interfaceName) external pure returns (bytes32); /** * @notice Updates the cache with whether the contract implements an ERC165 interface or not. * @param account Address of the contract for which to update the cache. * @param interfaceId ERC165 interface for which to update the cache. */ function updateERC165Cache(address account, bytes4 interfaceId) external; /** * @notice Checks whether a contract implements an ERC165 interface or not. * If the result is not cached a direct lookup on the contract address is performed. * If the result is not cached or the cached value is out-of-date, the cache MUST be updated manually by calling * {updateERC165Cache} with the contract address. * @param account Address of the contract to check. * @param interfaceId ERC165 interface to check. * @return True if `account` implements `interfaceId`, false otherwise. */ function implementsERC165Interface(address account, bytes4 interfaceId) external view returns (bool); /** * @notice Checks whether a contract implements an ERC165 interface or not without using nor updating the cache. * @param account Address of the contract to check. * @param interfaceId ERC165 interface to check. * @return True if `account` implements `interfaceId`, false otherwise. */ function implementsERC165InterfaceNoCache(address account, bytes4 interfaceId) external view returns (bool); event InterfaceImplementerSet(address indexed account, bytes32 indexed interfaceHash, address indexed implementer); event ManagerChanged(address indexed account, address indexed newManager); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
pragma solidity ^0.8.0; interface IRNG { function requestRandomNumber( ) external returns (bytes32); function requestRandomNumberWithCallback( ) external returns (bytes32); function isRequestComplete(bytes32 requestId) external view returns (bool isCompleted); function randomNumber(bytes32 requestId) external view returns (uint256 randomNum); }
pragma solidity ^0.8.0; interface IRNGrequestor { function process(uint256 rand, bytes32 requestId) external; }
pragma solidity ^0.8.0; interface dust_redeemer { function redeem(DustBusterPro memory general) external returns (uint256) ; function balanceOf(address token, address vault) external view returns(uint256); } struct DustBusterPro { string name; address vault; address token; uint256 random; address recipient; address handler; uint256 position; uint256 token_id; bool redeemed; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../../utils/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.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); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract IRNG","name":"_rng","type":"address"},{"internalType":"address","name":"dust","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":"bytes32","name":"hash","type":"bytes32"}],"name":"RedemptionRequest","type":"event"},{"inputs":[],"name":"DUST_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"address","name":"vault","type":"address"},{"internalType":"address","name":"token","type":"address"}],"name":"add_721_vault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"address","name":"vault","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"handler","type":"address"}],"name":"add_external_redeemer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"vault","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"vaultID","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"change_vault_price","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"vaultID","type":"uint256"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"enable_vault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"name":"isTokenRedeemed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"next_redeemable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"numberOfHashes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rand","type":"uint256"},{"internalType":"bytes32","name":"requestId","type":"bytes32"}],"name":"process","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"punksForDust","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"vault","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"random","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"address","name":"handler","type":"address"},{"internalType":"uint256","name":"position","type":"uint256"},{"internalType":"uint256","name":"token_id","type":"uint256"},{"internalType":"bool","name":"redeemed","type":"bool"}],"internalType":"struct DustBusterPro","name":"general","type":"tuple"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"name":"redeemedTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rng","outputs":[{"internalType":"contract IRNG","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"tokensReceived","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"userhashes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"vaultID","type":"uint256"}],"name":"vaultAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"vaultID","type":"uint256"}],"name":"vaultName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"vaultID","type":"uint256"}],"name":"vaultPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"vaultID","type":"uint256"}],"name":"vaultToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051620020393803806200203983398101604081905262000034916200015e565b6200003f336200010e565b60018055600280546001600160a01b038481166001600160a01b03199283161790925560038054928416929091169190911790556040516329965a1d60e01b815230600482018190527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b158015620000ed57600080fd5b505af115801562000102573d6000803e3d6000fd5b505050505050620001b5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806040838503121562000171578182fd5b82516200017e816200019c565b602084015190925062000191816200019c565b809150509250929050565b6001600160a01b0381168114620001b257600080fd5b50565b611e7480620001c56000396000f3fe608060405234801561001057600080fd5b506004361061014c5760003560e01c8063a0aeac30116100c3578063cf6078b01161007c578063cf6078b014610304578063d605787b1461033a578063f2fde38b1461034d578063f508b92614610360578063f7888aec14610373578063f88ee3fc146103865761014c565b8063a0aeac301461027e578063a233893914610291578063bb68a584146102a4578063bced6181146102ac578063bdcaa08b146102d8578063c206e7b8146102e15761014c565b80634e1a982e116101155780634e1a982e146101f6578063715018a61461021f5780637643c6aa146102275780638af77abb146102475780638da5cb5b1461025a57806390bcc5dd1461026b5761014c565b806223de291461015157806309dbbc29146101665780633adb080d1461018c5780633d64ac9b1461019f5780634be4e91f146101b2575b600080fd5b61016461015f36600461185e565b610399565b005b61017961017436600461194b565b610a90565b6040519081526020015b60405180910390f35b61017961019a366004611906565b610aa8565b6101646101ad366004611b6e565b610ad9565b6101de6101c036600461194b565b6000908152600560205260409020600201546001600160a01b031690565b6040516001600160a01b039091168152602001610183565b610179610204366004611812565b6001600160a01b031660009081526007602052604090205490565b610164610dda565b61023a61023536600461194b565b610e10565b6040516101839190611bda565b610164610255366004611b6e565b610eb2565b6000546001600160a01b03166101de565b6003546101de906001600160a01b031681565b61016461028c366004611b3f565b610ef1565b61016461029f36600461197b565b610f4b565b61023a611080565b6101de6102ba36600461194b565b6000908152600560205260409020600301546001600160a01b031690565b61017960045481565b6101796102ef36600461194b565b60009081526005602052604090206001015490565b61032a61031236600461194b565b60009081526006602052604090206008015460ff1690565b6040519015158152602001610183565b6002546101de906001600160a01b031681565b61016461035b366004611812565b61109c565b61016461036e3660046119e1565b611137565b61017961038136600461182c565b611280565b610179610394366004611a58565b611304565b600260015414156103f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556003546001600160a01b0316331461043f5760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5cd95960a21b60448201526064016103e8565b602083146104835760405162461bcd60e51b8152602060048201526011602482015270496e76616c69642075736572206461746160781b60448201526064016103e8565b60006104c485858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092506115fa915050565b90506000600560008381526020019081526020016000206040518060e00160405290816000820180546104f690611d63565b80601f016020809104026020016040519081016040528092919081815260200182805461052290611d63565b801561056f5780601f106105445761010080835404028352916020019161056f565b820191906000526020600020905b81548152906001019060200180831161055257829003601f168201915b50505091835250506001820154602082015260028201546001600160a01b0390811660408301526003830154811660608301526004830154608083015260059092015491821660a0820152600160a01b90910460ff16151560c0918201528101519091506106135760405162461bcd60e51b815260206004820152601160248201527015985d5b1d081b9bdd08195b98589b1959607a1b60448201526064016103e8565b608081015160a082015160608301516040808501519051633de222bb60e21b81526001600160a01b039283166004820152908216602482015291169063f7888aec9060440160206040518083038186803b15801561067057600080fd5b505afa158015610684573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a89190611963565b116106f55760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e7420746f6b656e7320696e207661756c740000000060448201526064016103e8565b600082815260056020526040812060040180549161071283611d9e565b919050555080602001518710156107635760405162461bcd60e51b8152602060048201526015602482015274125b9cdd59999a58d95b9d08111d5cdd081cd95b9d605a1b60448201526064016103e8565b6002546040805163314caeeb60e21b815290516000926001600160a01b03169163c532bbac91600480830192602092919082900301818787803b1580156107a957600080fd5b505af11580156107bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e19190611963565b90506040518061012001604052808360000151815260200183604001516001600160a01b0316815260200183606001516001600160a01b03168152602001600081526020018b6001600160a01b031681526020018360a001516001600160a01b03168152602001848152602001600081526020016000151581525060066000838152602001908152602001600020600082015181600001908051906020019061088b9291906116a5565b5060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506060820151816003015560808201518160040160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08201518160050160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060c0820151816006015560e082015181600701556101008201518160080160006101000a81548160ff021916908315150217905550905050600760008b6001600160a01b03166001600160a01b031681526020019081526020016000208190806001815401808255809150506001900390600052602060002001600090919091909150556060600360009054906101000a90046001600160a01b03166001600160a01b031663fe9d93038a836040518363ffffffff1660e01b8152600401610a13929190611ce2565b600060405180830381600087803b158015610a2d57600080fd5b505af1158015610a41573d6000803e3d6000fd5b505050507fc6a199457be3a940e08891b9d943de2eb7d5a9b1a3ef5198106939406aaa35b782604051610a7691815260200190565b60405180910390a150506001805550505050505050505050565b6000818152600660205260409020600701545b919050565b60076020528160005260406000208181548110610ac457600080fd5b90600052602060002001600091509150505481565b6002546001600160a01b03163314610b225760405162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5cd95960a21b60448201526064016103e8565b60008181526006602052604080822081516101208101909252805482908290610b4a90611d63565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7690611d63565b8015610bc35780601f10610b9857610100808354040283529160200191610bc3565b820191906000526020600020905b815481529060010190602001808311610ba657829003601f168201915b505050918352505060018201546001600160a01b039081166020808401919091526002840154821660408085019190915260038501546060808601919091526004808701548516608087015260058088015490951660a0870152600687015460c080880191909152600788015460e088015260089097015460ff16151561010090960195909552860189905293850151600090815291905291822001805492935090610c6e83611d4c565b909155505060a0810151604051633e23b8ff60e21b81526000916001600160a01b03169063f88ee3fc90610ca6908590600401611c22565b602060405180830381600087803b158015610cc057600080fd5b505af1158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190611963565b60e08301819052600161010084015260008481526006602090815260409091208451805193945085939192610d32928492909101906116a5565b5060208201516001820180546001600160a01b03199081166001600160a01b039384161790915560408401516002840180548316918416919091179055606084015160038401556080840151600484018054831691841691909117905560a0840151600584018054909216921691909117905560c0820151600682015560e08201516007820155610100909101516008909101805460ff191691151591909117905550505050565b6000546001600160a01b03163314610e045760405162461bcd60e51b81526004016103e890611bed565b610e0e6000611655565b565b6000818152600560205260409020805460609190610e2d90611d63565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5990611d63565b8015610ea65780601f10610e7b57610100808354040283529160200191610ea6565b820191906000526020600020905b815481529060010190602001808311610e8957829003601f168201915b50505050509050919050565b6000546001600160a01b03163314610edc5760405162461bcd60e51b81526004016103e890611bed565b60009182526005602052604090912060010155565b6000546001600160a01b03163314610f1b5760405162461bcd60e51b81526004016103e890611bed565b60009182526005602081905260409092209091018054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610f755760405162461bcd60e51b81526004016103e890611bed565b6040805160e081018252858152602081018590526001600160a01b038085169282019290925290821660608201526000608082018190523060a0830152600160c0830152600480546005929182610fcb83611d9e565b909155508152602080820192909252604001600020825180519192610ff5928492909101906116a5565b506020820151600182015560408201516002820180546001600160a01b039283166001600160a01b03199182161790915560608401516003840180549184169183169190911790556080840151600484015560a08401516005909301805460c0909501511515600160a01b0260ff60a01b199490931694909116939093179190911617905550505050565b6040518060600160405280602b8152602001611e14602b913981565b6000546001600160a01b031633146110c65760405162461bcd60e51b81526004016103e890611bed565b6001600160a01b03811661112b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103e8565b61113481611655565b50565b6000546001600160a01b031633146111615760405162461bcd60e51b81526004016103e890611bed565b6040518060e00160405280868152602001858152602001846001600160a01b03168152602001836001600160a01b0316815260200160008152602001826001600160a01b031681526020016001151581525060056000600460008154809291906111ca90611d9e565b9091555081526020808201929092526040016000208251805191926111f4928492909101906116a5565b506020820151600182015560408201516002820180546001600160a01b039283166001600160a01b03199182161790915560608401516003840180549184169183169190911790556080840151600484015560a08401516005909301805460c0909501511515600160a01b0260ff60a01b19949093169490911693909317919091161790555050505050565b6040516370a0823160e01b81526001600160a01b038281166004830152600091908416906370a082319060240160206040518083038186803b1580156112c557600080fd5b505afa1580156112d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112fd9190611963565b9392505050565b60003330146113465760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039b2b73232b960911b60448201526064016103e8565b60408281015190516301ffc9a760e01b815263780e9d6360e01b60048201526001600160a01b038216906301ffc9a79060240160206040518083038186803b15801561139157600080fd5b505afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c9919061192f565b6114155760405162461bcd60e51b815260206004820152601760248201527f4e6f7420616e20455243373231456e756d657261626c6500000000000000000060448201526064016103e8565b60208301516040516370a0823160e01b81526001600160a01b0391821660048201526000918316906370a082319060240160206040518083038186803b15801561145e57600080fd5b505afa158015611472573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114969190611963565b9050600081116114db5760405162461bcd60e51b815260206004820152601060248201526f139bc81391951cc81a5b881d985d5b1d60821b60448201526064016103e8565b60008185606001516114ed9190611db9565b6020860151604051632f745c5960e01b81526001600160a01b0391821660048201526024810183905291925060009190851690632f745c599060440160206040518083038186803b15801561154157600080fd5b505afa158015611555573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115799190611963565b60208701516080880151604051632142170760e11b81526001600160a01b0392831660048201529082166024820152604481018390529192508516906342842e0e90606401600060405180830381600087803b1580156115d857600080fd5b505af11580156115ec573d6000803e3d6000fd5b509298975050505050505050565b6000611607826020611d34565b8351101561164c5760405162461bcd60e51b815260206004820152601260248201527152656164206f7574206f6620626f756e647360701b60448201526064016103e8565b50016020015190565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546116b190611d63565b90600052602060002090601f0160209004810192826116d35760008555611719565b82601f106116ec57805160ff1916838001178555611719565b82800160010185558215611719579182015b828111156117195782518255916020019190600101906116fe565b50611725929150611729565b5090565b5b80821115611725576000815560010161172a565b80356001600160a01b0381168114610aa357600080fd5b8035610aa381611e05565b60008083601f840112611771578182fd5b50813567ffffffffffffffff811115611788578182fd5b6020830191508360208285010111156117a057600080fd5b9250929050565b600082601f8301126117b7578081fd5b813567ffffffffffffffff8111156117d1576117d1611def565b6117e4601f8201601f1916602001611d03565b8181528460208386010111156117f8578283fd5b816020850160208301379081016020019190915292915050565b600060208284031215611823578081fd5b6112fd8261173e565b6000806040838503121561183e578081fd5b6118478361173e565b91506118556020840161173e565b90509250929050565b60008060008060008060008060c0898b031215611879578384fd5b6118828961173e565b975061189060208a0161173e565b965061189e60408a0161173e565b955060608901359450608089013567ffffffffffffffff808211156118c1578586fd5b6118cd8c838d01611760565b909650945060a08b01359150808211156118e5578384fd5b506118f28b828c01611760565b999c989b5096995094979396929594505050565b60008060408385031215611918578182fd5b6119218361173e565b946020939093013593505050565b600060208284031215611940578081fd5b81516112fd81611e05565b60006020828403121561195c578081fd5b5035919050565b600060208284031215611974578081fd5b5051919050565b60008060008060808587031215611990578384fd5b843567ffffffffffffffff8111156119a6578485fd5b6119b2878288016117a7565b945050602085013592506119c86040860161173e565b91506119d66060860161173e565b905092959194509250565b600080600080600060a086880312156119f8578081fd5b853567ffffffffffffffff811115611a0e578182fd5b611a1a888289016117a7565b95505060208601359350611a306040870161173e565b9250611a3e6060870161173e565b9150611a4c6080870161173e565b90509295509295909350565b600060208284031215611a69578081fd5b813567ffffffffffffffff80821115611a80578283fd5b8184019150610120808387031215611a96578384fd5b611a9f81611d03565b9050823582811115611aaf578485fd5b611abb878286016117a7565b825250611aca6020840161173e565b6020820152611adb6040840161173e565b604082015260608301356060820152611af66080840161173e565b6080820152611b0760a0840161173e565b60a082015260c083013560c082015260e083013560e08201526101009150611b30828401611755565b91810191909152949350505050565b60008060408385031215611b51578182fd5b823591506020830135611b6381611e05565b809150509250929050565b60008060408385031215611b80578182fd5b50508035926020909101359150565b60008151808452815b81811015611bb457602081850181015186830182015201611b98565b81811115611bc55782602083870101525b50601f01601f19169290920160200192915050565b6000602082526112fd6020830184611b8f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082528251610120806020850152611c41610140850183611b8f565b91506020850151611c5d60408601826001600160a01b03169052565b5060408501516001600160a01b038116606086015250606085015160808501526080850151611c9760a08601826001600160a01b03169052565b5060a08501516001600160a01b03811660c08601525060c085015160e085015260e0850151610100818187015280870151915050611cd88286018215159052565b5090949350505050565b600083825260406020830152611cfb6040830184611b8f565b949350505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715611d2c57611d2c611def565b604052919050565b60008219821115611d4757611d47611dd9565b500190565b600081611d5b57611d5b611dd9565b506000190190565b600281046001821680611d7757607f821691505b60208210811415611d9857634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611db257611db2611dd9565b5060010190565b600082611dd457634e487b7160e01b81526012600452602481fd5b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b801515811461113457600080fdfe68747470733a2f2f7777772e796f75747562652e636f6d2f77617463683f763d77734f48765031586e5267a26469706673582212208f245c4c2c2e7627918a2dee66d7e09dadf13b3973b14a11d30ab7b3b9d68ac464736f6c6343000802003300000000000000000000000072170f577f3b221b3478e09ccd5323445a8460d7000000000000000000000000e2e109f1b4eaa8915655fe8fdefc112a34acc5f0
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061014c5760003560e01c8063a0aeac30116100c3578063cf6078b01161007c578063cf6078b014610304578063d605787b1461033a578063f2fde38b1461034d578063f508b92614610360578063f7888aec14610373578063f88ee3fc146103865761014c565b8063a0aeac301461027e578063a233893914610291578063bb68a584146102a4578063bced6181146102ac578063bdcaa08b146102d8578063c206e7b8146102e15761014c565b80634e1a982e116101155780634e1a982e146101f6578063715018a61461021f5780637643c6aa146102275780638af77abb146102475780638da5cb5b1461025a57806390bcc5dd1461026b5761014c565b806223de291461015157806309dbbc29146101665780633adb080d1461018c5780633d64ac9b1461019f5780634be4e91f146101b2575b600080fd5b61016461015f36600461185e565b610399565b005b61017961017436600461194b565b610a90565b6040519081526020015b60405180910390f35b61017961019a366004611906565b610aa8565b6101646101ad366004611b6e565b610ad9565b6101de6101c036600461194b565b6000908152600560205260409020600201546001600160a01b031690565b6040516001600160a01b039091168152602001610183565b610179610204366004611812565b6001600160a01b031660009081526007602052604090205490565b610164610dda565b61023a61023536600461194b565b610e10565b6040516101839190611bda565b610164610255366004611b6e565b610eb2565b6000546001600160a01b03166101de565b6003546101de906001600160a01b031681565b61016461028c366004611b3f565b610ef1565b61016461029f36600461197b565b610f4b565b61023a611080565b6101de6102ba36600461194b565b6000908152600560205260409020600301546001600160a01b031690565b61017960045481565b6101796102ef36600461194b565b60009081526005602052604090206001015490565b61032a61031236600461194b565b60009081526006602052604090206008015460ff1690565b6040519015158152602001610183565b6002546101de906001600160a01b031681565b61016461035b366004611812565b61109c565b61016461036e3660046119e1565b611137565b61017961038136600461182c565b611280565b610179610394366004611a58565b611304565b600260015414156103f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556003546001600160a01b0316331461043f5760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5cd95960a21b60448201526064016103e8565b602083146104835760405162461bcd60e51b8152602060048201526011602482015270496e76616c69642075736572206461746160781b60448201526064016103e8565b60006104c485858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092506115fa915050565b90506000600560008381526020019081526020016000206040518060e00160405290816000820180546104f690611d63565b80601f016020809104026020016040519081016040528092919081815260200182805461052290611d63565b801561056f5780601f106105445761010080835404028352916020019161056f565b820191906000526020600020905b81548152906001019060200180831161055257829003601f168201915b50505091835250506001820154602082015260028201546001600160a01b0390811660408301526003830154811660608301526004830154608083015260059092015491821660a0820152600160a01b90910460ff16151560c0918201528101519091506106135760405162461bcd60e51b815260206004820152601160248201527015985d5b1d081b9bdd08195b98589b1959607a1b60448201526064016103e8565b608081015160a082015160608301516040808501519051633de222bb60e21b81526001600160a01b039283166004820152908216602482015291169063f7888aec9060440160206040518083038186803b15801561067057600080fd5b505afa158015610684573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a89190611963565b116106f55760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e7420746f6b656e7320696e207661756c740000000060448201526064016103e8565b600082815260056020526040812060040180549161071283611d9e565b919050555080602001518710156107635760405162461bcd60e51b8152602060048201526015602482015274125b9cdd59999a58d95b9d08111d5cdd081cd95b9d605a1b60448201526064016103e8565b6002546040805163314caeeb60e21b815290516000926001600160a01b03169163c532bbac91600480830192602092919082900301818787803b1580156107a957600080fd5b505af11580156107bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e19190611963565b90506040518061012001604052808360000151815260200183604001516001600160a01b0316815260200183606001516001600160a01b03168152602001600081526020018b6001600160a01b031681526020018360a001516001600160a01b03168152602001848152602001600081526020016000151581525060066000838152602001908152602001600020600082015181600001908051906020019061088b9291906116a5565b5060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506060820151816003015560808201518160040160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08201518160050160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060c0820151816006015560e082015181600701556101008201518160080160006101000a81548160ff021916908315150217905550905050600760008b6001600160a01b03166001600160a01b031681526020019081526020016000208190806001815401808255809150506001900390600052602060002001600090919091909150556060600360009054906101000a90046001600160a01b03166001600160a01b031663fe9d93038a836040518363ffffffff1660e01b8152600401610a13929190611ce2565b600060405180830381600087803b158015610a2d57600080fd5b505af1158015610a41573d6000803e3d6000fd5b505050507fc6a199457be3a940e08891b9d943de2eb7d5a9b1a3ef5198106939406aaa35b782604051610a7691815260200190565b60405180910390a150506001805550505050505050505050565b6000818152600660205260409020600701545b919050565b60076020528160005260406000208181548110610ac457600080fd5b90600052602060002001600091509150505481565b6002546001600160a01b03163314610b225760405162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5cd95960a21b60448201526064016103e8565b60008181526006602052604080822081516101208101909252805482908290610b4a90611d63565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7690611d63565b8015610bc35780601f10610b9857610100808354040283529160200191610bc3565b820191906000526020600020905b815481529060010190602001808311610ba657829003601f168201915b505050918352505060018201546001600160a01b039081166020808401919091526002840154821660408085019190915260038501546060808601919091526004808701548516608087015260058088015490951660a0870152600687015460c080880191909152600788015460e088015260089097015460ff16151561010090960195909552860189905293850151600090815291905291822001805492935090610c6e83611d4c565b909155505060a0810151604051633e23b8ff60e21b81526000916001600160a01b03169063f88ee3fc90610ca6908590600401611c22565b602060405180830381600087803b158015610cc057600080fd5b505af1158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190611963565b60e08301819052600161010084015260008481526006602090815260409091208451805193945085939192610d32928492909101906116a5565b5060208201516001820180546001600160a01b03199081166001600160a01b039384161790915560408401516002840180548316918416919091179055606084015160038401556080840151600484018054831691841691909117905560a0840151600584018054909216921691909117905560c0820151600682015560e08201516007820155610100909101516008909101805460ff191691151591909117905550505050565b6000546001600160a01b03163314610e045760405162461bcd60e51b81526004016103e890611bed565b610e0e6000611655565b565b6000818152600560205260409020805460609190610e2d90611d63565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5990611d63565b8015610ea65780601f10610e7b57610100808354040283529160200191610ea6565b820191906000526020600020905b815481529060010190602001808311610e8957829003601f168201915b50505050509050919050565b6000546001600160a01b03163314610edc5760405162461bcd60e51b81526004016103e890611bed565b60009182526005602052604090912060010155565b6000546001600160a01b03163314610f1b5760405162461bcd60e51b81526004016103e890611bed565b60009182526005602081905260409092209091018054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610f755760405162461bcd60e51b81526004016103e890611bed565b6040805160e081018252858152602081018590526001600160a01b038085169282019290925290821660608201526000608082018190523060a0830152600160c0830152600480546005929182610fcb83611d9e565b909155508152602080820192909252604001600020825180519192610ff5928492909101906116a5565b506020820151600182015560408201516002820180546001600160a01b039283166001600160a01b03199182161790915560608401516003840180549184169183169190911790556080840151600484015560a08401516005909301805460c0909501511515600160a01b0260ff60a01b199490931694909116939093179190911617905550505050565b6040518060600160405280602b8152602001611e14602b913981565b6000546001600160a01b031633146110c65760405162461bcd60e51b81526004016103e890611bed565b6001600160a01b03811661112b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103e8565b61113481611655565b50565b6000546001600160a01b031633146111615760405162461bcd60e51b81526004016103e890611bed565b6040518060e00160405280868152602001858152602001846001600160a01b03168152602001836001600160a01b0316815260200160008152602001826001600160a01b031681526020016001151581525060056000600460008154809291906111ca90611d9e565b9091555081526020808201929092526040016000208251805191926111f4928492909101906116a5565b506020820151600182015560408201516002820180546001600160a01b039283166001600160a01b03199182161790915560608401516003840180549184169183169190911790556080840151600484015560a08401516005909301805460c0909501511515600160a01b0260ff60a01b19949093169490911693909317919091161790555050505050565b6040516370a0823160e01b81526001600160a01b038281166004830152600091908416906370a082319060240160206040518083038186803b1580156112c557600080fd5b505afa1580156112d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112fd9190611963565b9392505050565b60003330146113465760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039b2b73232b960911b60448201526064016103e8565b60408281015190516301ffc9a760e01b815263780e9d6360e01b60048201526001600160a01b038216906301ffc9a79060240160206040518083038186803b15801561139157600080fd5b505afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c9919061192f565b6114155760405162461bcd60e51b815260206004820152601760248201527f4e6f7420616e20455243373231456e756d657261626c6500000000000000000060448201526064016103e8565b60208301516040516370a0823160e01b81526001600160a01b0391821660048201526000918316906370a082319060240160206040518083038186803b15801561145e57600080fd5b505afa158015611472573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114969190611963565b9050600081116114db5760405162461bcd60e51b815260206004820152601060248201526f139bc81391951cc81a5b881d985d5b1d60821b60448201526064016103e8565b60008185606001516114ed9190611db9565b6020860151604051632f745c5960e01b81526001600160a01b0391821660048201526024810183905291925060009190851690632f745c599060440160206040518083038186803b15801561154157600080fd5b505afa158015611555573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115799190611963565b60208701516080880151604051632142170760e11b81526001600160a01b0392831660048201529082166024820152604481018390529192508516906342842e0e90606401600060405180830381600087803b1580156115d857600080fd5b505af11580156115ec573d6000803e3d6000fd5b509298975050505050505050565b6000611607826020611d34565b8351101561164c5760405162461bcd60e51b815260206004820152601260248201527152656164206f7574206f6620626f756e647360701b60448201526064016103e8565b50016020015190565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546116b190611d63565b90600052602060002090601f0160209004810192826116d35760008555611719565b82601f106116ec57805160ff1916838001178555611719565b82800160010185558215611719579182015b828111156117195782518255916020019190600101906116fe565b50611725929150611729565b5090565b5b80821115611725576000815560010161172a565b80356001600160a01b0381168114610aa357600080fd5b8035610aa381611e05565b60008083601f840112611771578182fd5b50813567ffffffffffffffff811115611788578182fd5b6020830191508360208285010111156117a057600080fd5b9250929050565b600082601f8301126117b7578081fd5b813567ffffffffffffffff8111156117d1576117d1611def565b6117e4601f8201601f1916602001611d03565b8181528460208386010111156117f8578283fd5b816020850160208301379081016020019190915292915050565b600060208284031215611823578081fd5b6112fd8261173e565b6000806040838503121561183e578081fd5b6118478361173e565b91506118556020840161173e565b90509250929050565b60008060008060008060008060c0898b031215611879578384fd5b6118828961173e565b975061189060208a0161173e565b965061189e60408a0161173e565b955060608901359450608089013567ffffffffffffffff808211156118c1578586fd5b6118cd8c838d01611760565b909650945060a08b01359150808211156118e5578384fd5b506118f28b828c01611760565b999c989b5096995094979396929594505050565b60008060408385031215611918578182fd5b6119218361173e565b946020939093013593505050565b600060208284031215611940578081fd5b81516112fd81611e05565b60006020828403121561195c578081fd5b5035919050565b600060208284031215611974578081fd5b5051919050565b60008060008060808587031215611990578384fd5b843567ffffffffffffffff8111156119a6578485fd5b6119b2878288016117a7565b945050602085013592506119c86040860161173e565b91506119d66060860161173e565b905092959194509250565b600080600080600060a086880312156119f8578081fd5b853567ffffffffffffffff811115611a0e578182fd5b611a1a888289016117a7565b95505060208601359350611a306040870161173e565b9250611a3e6060870161173e565b9150611a4c6080870161173e565b90509295509295909350565b600060208284031215611a69578081fd5b813567ffffffffffffffff80821115611a80578283fd5b8184019150610120808387031215611a96578384fd5b611a9f81611d03565b9050823582811115611aaf578485fd5b611abb878286016117a7565b825250611aca6020840161173e565b6020820152611adb6040840161173e565b604082015260608301356060820152611af66080840161173e565b6080820152611b0760a0840161173e565b60a082015260c083013560c082015260e083013560e08201526101009150611b30828401611755565b91810191909152949350505050565b60008060408385031215611b51578182fd5b823591506020830135611b6381611e05565b809150509250929050565b60008060408385031215611b80578182fd5b50508035926020909101359150565b60008151808452815b81811015611bb457602081850181015186830182015201611b98565b81811115611bc55782602083870101525b50601f01601f19169290920160200192915050565b6000602082526112fd6020830184611b8f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082528251610120806020850152611c41610140850183611b8f565b91506020850151611c5d60408601826001600160a01b03169052565b5060408501516001600160a01b038116606086015250606085015160808501526080850151611c9760a08601826001600160a01b03169052565b5060a08501516001600160a01b03811660c08601525060c085015160e085015260e0850151610100818187015280870151915050611cd88286018215159052565b5090949350505050565b600083825260406020830152611cfb6040830184611b8f565b949350505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715611d2c57611d2c611def565b604052919050565b60008219821115611d4757611d47611dd9565b500190565b600081611d5b57611d5b611dd9565b506000190190565b600281046001821680611d7757607f821691505b60208210811415611d9857634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611db257611db2611dd9565b5060010190565b600082611dd457634e487b7160e01b81526012600452602481fd5b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b801515811461113457600080fdfe68747470733a2f2f7777772e796f75747562652e636f6d2f77617463683f763d77734f48765031586e5267a26469706673582212208f245c4c2c2e7627918a2dee66d7e09dadf13b3973b14a11d30ab7b3b9d68ac464736f6c63430008020033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000072170f577f3b221b3478e09ccd5323445a8460d7000000000000000000000000e2e109f1b4eaa8915655fe8fdefc112a34acc5f0
-----Decoded View---------------
Arg [0] : _rng (address): 0x72170F577F3B221b3478E09ccD5323445a8460d7
Arg [1] : dust (address): 0xe2E109f1b4eaA8915655fE8fDEfC112a34ACc5F0
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000072170f577f3b221b3478e09ccd5323445a8460d7
Arg [1] : 000000000000000000000000e2e109f1b4eaa8915655fe8fdefc112a34acc5f0
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.