ETH Price: $2,422.57 (-0.10%)

Contract

0x3Fa9F416955fb4a27f6f2Bf617eCbE609baa9C4C
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim Badge134379452021-10-17 21:46:191084 days ago1634507179IN
0x3Fa9F416...09baa9C4C
0 ETH0.00368612156
Claim134379442021-10-17 21:46:181084 days ago1634507178IN
0x3Fa9F416...09baa9C4C
0 ETH0.00412705173.8
Claim128434212021-07-17 9:20:081177 days ago1626513608IN
0x3Fa9F416...09baa9C4C
0 ETH0.000569924
Claim Badge128125472021-07-12 12:52:041181 days ago1626094324IN
0x3Fa9F416...09baa9C4C
0 ETH0.00250467106
Claim128120352021-07-12 10:54:541181 days ago1626087294IN
0x3Fa9F416...09baa9C4C
0 ETH0.0006648828
Claim Badge126509152021-06-17 8:35:331207 days ago1623918933IN
0x3Fa9F416...09baa9C4C
0 ETH0.0005434623
Claim Badge125072182021-05-26 2:22:511229 days ago1621995771IN
0x3Fa9F416...09baa9C4C
0 ETH0.00531652225
Claim124855302021-05-22 17:43:041232 days ago1621705384IN
0x3Fa9F416...09baa9C4C
0 ETH0.0023508599
Set Token URI123636022021-05-03 21:13:361251 days ago1620076416IN
0x3Fa9F416...09baa9C4C
0 ETH0.0039839586
Set Token URI123635692021-05-03 21:05:481251 days ago1620075948IN
0x3Fa9F416...09baa9C4C
0 ETH0.0043545594
Set Token URI123616222021-05-03 13:52:591251 days ago1620049979IN
0x3Fa9F416...09baa9C4C
0 ETH0.0025478755
Set Token URI123616042021-05-03 13:49:261251 days ago1620049766IN
0x3Fa9F416...09baa9C4C
0 ETH0.0025015554
Set Token URI123615852021-05-03 13:45:081251 days ago1620049508IN
0x3Fa9F416...09baa9C4C
0 ETH0.0024552253
Set Token URI123426652021-04-30 15:32:211254 days ago1619796741IN
0x3Fa9F416...09baa9C4C
0 ETH0.0030111265
Set Token URI123426332021-04-30 15:24:371254 days ago1619796277IN
0x3Fa9F416...09baa9C4C
0 ETH0.0034743775
Claim Badge123175152021-04-26 18:15:171258 days ago1619460917IN
0x3Fa9F416...09baa9C4C
0 ETH0.0013232256
Claim123007412021-04-24 4:24:071261 days ago1619238247IN
0x3Fa9F416...09baa9C4C
0 ETH0.0014247660
Claim Badge122856712021-04-21 20:18:091263 days ago1619036289IN
0x3Fa9F416...09baa9C4C
0 ETH0.00389878165
Claim122798002021-04-20 22:32:181264 days ago1618957938IN
0x3Fa9F416...09baa9C4C
0 ETH0.0047492200
Toggle Claims Al...122540362021-04-16 23:12:421268 days ago1618614762IN
0x3Fa9F416...09baa9C4C
0 ETH0.00474046166
Claim Badge122537112021-04-16 22:00:441268 days ago1618610444IN
0x3Fa9F416...09baa9C4C
0 ETH0.01205755139
Claim122537092021-04-16 22:00:241268 days ago1618610424IN
0x3Fa9F416...09baa9C4C
0 ETH0.01453022139
Claim122535292021-04-16 21:19:101268 days ago1618607950IN
0x3Fa9F416...09baa9C4C
0 ETH0.01259049144
Claim122535292021-04-16 21:19:101268 days ago1618607950IN
0x3Fa9F416...09baa9C4C
0 ETH0.01174326134.31
Claim Badge122535162021-04-16 21:16:521268 days ago1618607812IN
0x3Fa9F416...09baa9C4C
0 ETH0.01464214141
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
NFTClaimManager

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 5 : NFTClaimManager.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.1;

import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/ERC1155/IERC1155.sol";

interface ICollection is IERC1155 {
    function mint(
        address account,
        uint256 id,
        uint256 amount,
        bytes memory data,
        string memory newURI
    ) external;

    function setURI(string memory newURI) external;

    function setTokenURI(uint256 id, string memory newURI) external;
}

contract NFTClaimManager is Ownable {
    mapping(address => UserData) public userPoints;
    mapping(uint256 => Nft) public nftPrices;

    struct UserData {
        uint256 points;
        uint248 pointsSpent;
        bool claimedBadge;
    }

    struct Nft {
        uint248 price;
        bool isBadge;
        string uri;
    }

    ICollection public collection;

    bool public claimsAllowed;

    event NFTClaimed(address user, uint256 id, uint256 amount);

    modifier allowed() {
        require(claimsAllowed);
        _;
    }

    constructor(ICollection _collection) {
        collection = _collection;
    }

    function setUserPoints(address[] memory users, uint256[] memory points) external onlyOwner {
        for (uint256 i = 0; i < users.length; i++) {
            userPoints[users[i]] = UserData(points[i], 0, false);
        }
    }

    function balanceOf(address user) external view returns (uint256) {
        return userPoints[user].points - userPoints[user].pointsSpent;
    }

    function getPrice(uint256 id) external view returns (uint248) {
        return nftPrices[id].price;
    }

    function setPrices(
        uint256[] memory ids,
        uint248[] memory prices,
        string[] memory uris
    ) external onlyOwner {
        for (uint256 i = 0; i < ids.length; i++) {
            nftPrices[ids[i]] = Nft(prices[i], false, uris[i]);
        }
    }

    function setBadges(uint256[] memory ids) external onlyOwner {
        for (uint256 i = 0; i < ids.length; i++) {
            nftPrices[ids[i]].isBadge = true;
        }
    }

    function claim(uint256 id, uint256 amount) external allowed {
        UserData storage user = userPoints[msg.sender];
        Nft storage nft = nftPrices[id];
        require(!nft.isBadge, "wrong function to claim badge");
        uint256 price = uint256(nft.price);
        require(price > 0, "nft doesn't exist");
        uint256 pointsLeft = user.points - user.pointsSpent;
        require(pointsLeft >= amount * price, "not enough points");

        user.pointsSpent += uint248(price * amount);
        collection.mint(msg.sender, id, amount, bytes(""), nft.uri);

        emit NFTClaimed(msg.sender, id, amount);
    }

    function claimBadge(uint256 id) external allowed {
        UserData storage user = userPoints[msg.sender];
        Nft storage nft = nftPrices[id];
        require(nft.isBadge, "not a badge");
        require(!user.claimedBadge, "badge already claimed");
        require(user.points > nft.price, "not enough points");

        user.claimedBadge = true;
        collection.mint(msg.sender, id, 1, bytes(""), nft.uri);

        emit NFTClaimed(msg.sender, id, 1);
    }

    function setCollectionURI(string memory newURI) external onlyOwner {
        collection.setURI(newURI);
    }

    function setTokenURI(uint256 id, string memory newURI) external onlyOwner {
        collection.setTokenURI(id, newURI);
    }

    function toggleClaimsAllowed() external onlyOwner {
        claimsAllowed = !claimsAllowed;
    }
}

File 2 of 5 : Ownable.sol
// 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 () {
        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;
    }
}

File 3 of 5 : IERC1155.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../../utils/introspection/IERC165.sol";

/**
 * @dev Required interface of an ERC1155 compliant contract, as defined in the
 * https://eips.ethereum.org/EIPS/eip-1155[EIP].
 *
 * _Available since v3.1._
 */
interface IERC1155 is IERC165 {
    /**
     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
     */
    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);

    /**
     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all
     * transfers.
     */
    event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values);

    /**
     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to
     * `approved`.
     */
    event ApprovalForAll(address indexed account, address indexed operator, bool approved);

    /**
     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.
     *
     * If an {URI} event was emitted for `id`, the standard
     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value
     * returned by {IERC1155MetadataURI-uri}.
     */
    event URI(string value, uint256 indexed id);

    /**
     * @dev Returns the amount of tokens of token type `id` owned by `account`.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function balanceOf(address account, uint256 id) external view returns (uint256);

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.
     *
     * Requirements:
     *
     * - `accounts` and `ids` must have the same length.
     */
    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory);

    /**
     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,
     *
     * Emits an {ApprovalForAll} event.
     *
     * Requirements:
     *
     * - `operator` cannot be the caller.
     */
    function setApprovalForAll(address operator, bool approved) external;

    /**
     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.
     *
     * See {setApprovalForAll}.
     */
    function isApprovedForAll(address account, address operator) external view returns (bool);

    /**
     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.
     * - `from` must have a balance of tokens of type `id` of at least `amount`.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external;

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function safeBatchTransferFrom(address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data) external;
}

File 4 of 5 : Context.sol
// 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) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

File 5 of 5 : IERC165.sol
// 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);
}

Settings
{
  "metadata": {
    "bytecodeHash": "none"
  },
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract ICollection","name":"_collection","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"NFTClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"claimBadge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimsAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"collection","outputs":[{"internalType":"contract ICollection","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getPrice","outputs":[{"internalType":"uint248","name":"","type":"uint248"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"nftPrices","outputs":[{"internalType":"uint248","name":"price","type":"uint248"},{"internalType":"bool","name":"isBadge","type":"bool"},{"internalType":"string","name":"uri","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"setBadges","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newURI","type":"string"}],"name":"setCollectionURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint248[]","name":"prices","type":"uint248[]"},{"internalType":"string[]","name":"uris","type":"string[]"}],"name":"setPrices","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"newURI","type":"string"}],"name":"setTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"users","type":"address[]"},{"internalType":"uint256[]","name":"points","type":"uint256[]"}],"name":"setUserPoints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleClaimsAllowed","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"}],"name":"userPoints","outputs":[{"internalType":"uint256","name":"points","type":"uint256"},{"internalType":"uint248","name":"pointsSpent","type":"uint248"},{"internalType":"bool","name":"claimedBadge","type":"bool"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b506040516117d13803806117d183398101604081905261002f916100ac565b60006100396100a8565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600380546001600160a01b0319166001600160a01b03929092169190911790556100da565b3390565b6000602082840312156100bd578081fd5b81516001600160a01b03811681146100d3578182fd5b9392505050565b6116e8806100e96000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80637de1e536116100a2578063c349026311610071578063c3490263146101ef578063d9f10a2b14610202578063e757223014610224578063f2fde38b14610244578063f50ddbc7146102575761010b565b80637de1e536146101ac5780638da5cb5b146101c15780639bb1b92d146101c9578063a1f65e0c146101dc5761010b565b80634b4cd483116100de5780634b4cd4831461015357806355c60c7c1461016657806370a0823114610184578063715018a6146101a45761010b565b8063162094c4146101105780631f72c95314610125578063234151351461012d5780632639f46014610140575b600080fd5b61012361011e3660046111c9565b610279565b005b610123610329565b61012361013b3660046111b1565b610389565b61012361014e36600461117e565b61050d565b610123610161366004611091565b6105b1565b61016e61071a565b60405161017b9190611391565b60405180910390f35b610197610192366004610f77565b61072a565b60405161017b9190611554565b610123610765565b6101b46107ee565b60405161017b9190611311565b6101b46107fd565b6101236101d7366004611056565b61080c565b6101236101ea366004610f98565b6108c4565b6101236101fd366004611204565b6109ff565b6102156102103660046111b1565b610bd3565b60405161017b9392919061151f565b6102376102323660046111b1565b610c8e565b60405161017b919061150b565b610123610252366004610f77565b610ca9565b61026a610265366004610f77565b610d69565b60405161017b93929190611576565b610281610d97565b6001600160a01b03166102926107fd565b6001600160a01b0316146102c15760405162461bcd60e51b81526004016102b890611486565b60405180910390fd5b600354604051630588253160e21b81526001600160a01b039091169063162094c4906102f3908590859060040161155d565b600060405180830381600087803b15801561030d57600080fd5b505af1158015610321573d6000803e3d6000fd5b505050505050565b610331610d97565b6001600160a01b03166103426107fd565b6001600160a01b0316146103685760405162461bcd60e51b81526004016102b890611486565b6003805460ff60a01b198116600160a01b9182900460ff1615909102179055565b600354600160a01b900460ff1661039f57600080fd5b33600090815260016020908152604080832084845260029092529091208054600160f81b900460ff166103e45760405162461bcd60e51b81526004016102b8906114e6565b6001820154600160f81b900460ff16156104105760405162461bcd60e51b81526004016102b8906113af565b805482546001600160f81b039091161061043c5760405162461bcd60e51b81526004016102b8906114bb565b600182810180546001600160f81b0316600160f81b1790556003546040805160208101825260008152905163c1341c4f60e01b81526001600160a01b039092169263c1341c4f9261049a923392899290919088830190600401611346565b600060405180830381600087803b1580156104b457600080fd5b505af11580156104c8573d6000803e3d6000fd5b505050507fd93bbb9e10b7af5aa4b410ac845ae87a717d305e8a4777959ad1dd06e6a1ac983384600160405161050093929190611325565b60405180910390a1505050565b610515610d97565b6001600160a01b03166105266107fd565b6001600160a01b03161461054c5760405162461bcd60e51b81526004016102b890611486565b6003546040516302fe530560e01b81526001600160a01b03909116906302fe53059061057c90849060040161139c565b600060405180830381600087803b15801561059657600080fd5b505af11580156105aa573d6000803e3d6000fd5b5050505050565b6105b9610d97565b6001600160a01b03166105ca6107fd565b6001600160a01b0316146105f05760405162461bcd60e51b81526004016102b890611486565b60005b835181101561071457604051806060016040528084838151811061062757634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160f81b0316815260200160001515815260200183838151811061066657634e487b7160e01b600052603260045260246000fd5b60200260200101518152506002600086848151811061069557634e487b7160e01b600052603260045260246000fd5b602090810291909101810151825281810192909252604090810160002083518154858501511515600160f81b026001600160f81b039283166001600160f81b03199092169190911790911617815590830151805191926106fd92600185019290910190610d9b565b50905050808061070c90611694565b9150506105f3565b50505050565b600354600160a01b900460ff1681565b6001600160a01b0381166000908152600160208190526040822090810154905461075d916001600160f81b031690611642565b90505b919050565b61076d610d97565b6001600160a01b031661077e6107fd565b6001600160a01b0316146107a45760405162461bcd60e51b81526004016102b890611486565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6003546001600160a01b031681565b6000546001600160a01b031690565b610814610d97565b6001600160a01b03166108256107fd565b6001600160a01b03161461084b5760405162461bcd60e51b81526004016102b890611486565b60005b81518110156108c05760016002600084848151811061087d57634e487b7160e01b600052603260045260246000fd5b60200260200101518152602001908152602001600020600001601f6101000a81548160ff02191690831515021790555080806108b890611694565b91505061084e565b5050565b6108cc610d97565b6001600160a01b03166108dd6107fd565b6001600160a01b0316146109035760405162461bcd60e51b81526004016102b890611486565b60005b82518110156109fa57604051806060016040528083838151811061093a57634e487b7160e01b600052603260045260246000fd5b6020026020010151815260200160006001600160f81b03168152602001600015158152506001600085848151811061098257634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b0316825281810192909252604090810160002083518155918301516001909201805493909101511515600160f81b026001600160f81b039283166001600160f81b031990941693909317909116919091179055806109f281611694565b915050610906565b505050565b600354600160a01b900460ff16610a1557600080fd5b33600090815260016020908152604080832085845260029092529091208054600160f81b900460ff1615610a5b5760405162461bcd60e51b81526004016102b890611424565b80546001600160f81b031680610a835760405162461bcd60e51b81526004016102b89061145b565b60018301548354600091610aa2916001600160f81b0390911690611642565b9050610aae8286611623565b811015610acd5760405162461bcd60e51b81526004016102b8906114bb565b610ad78583611623565b600185018054600090610af49084906001600160f81b03166115f8565b82546001600160f81b039182166101009390930a9283029190920219909116179055506003546040805160208101825260008152905163c1341c4f60e01b81526001600160a01b039092169163c1341c4f91610b5e9133918b918b919060018b0190600401611346565b600060405180830381600087803b158015610b7857600080fd5b505af1158015610b8c573d6000803e3d6000fd5b505050507fd93bbb9e10b7af5aa4b410ac845ae87a717d305e8a4777959ad1dd06e6a1ac98338787604051610bc393929190611325565b60405180910390a1505050505050565b600260205260009081526040902080546001820180546001600160f81b03831693600160f81b90930460ff16929190610c0b90611659565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3790611659565b8015610c845780601f10610c5957610100808354040283529160200191610c84565b820191906000526020600020905b815481529060010190602001808311610c6757829003601f168201915b5050505050905083565b6000908152600260205260409020546001600160f81b031690565b610cb1610d97565b6001600160a01b0316610cc26107fd565b6001600160a01b031614610ce85760405162461bcd60e51b81526004016102b890611486565b6001600160a01b038116610d0e5760405162461bcd60e51b81526004016102b8906113de565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600160208190526000918252604090912080549101546001600160f81b03811690600160f81b900460ff1683565b3390565b828054610da790611659565b90600052602060002090601f016020900481019282610dc95760008555610e0f565b82601f10610de257805160ff1916838001178555610e0f565b82800160010185558215610e0f579182015b82811115610e0f578251825591602001919060010190610df4565b50610e1b929150610e1f565b5090565b5b80821115610e1b5760008155600101610e20565b80356001600160a01b038116811461076057600080fd5b600082601f830112610e5b578081fd5b81356020610e70610e6b836115c8565b611597565b82815281810190858301855b85811015610ea557610e93898684358b0101610f0c565b84529284019290840190600101610e7c565b5090979650505050505050565b600082601f830112610ec2578081fd5b81356020610ed2610e6b836115c8565b8281528181019085830183850287018401881015610eee578586fd5b855b85811015610ea557813584529284019290840190600101610ef0565b600082601f830112610f1c578081fd5b813567ffffffffffffffff811115610f3657610f366116c5565b610f49601f8201601f1916602001611597565b818152846020838601011115610f5d578283fd5b816020850160208301379081016020019190915292915050565b600060208284031215610f88578081fd5b610f9182610e34565b9392505050565b60008060408385031215610faa578081fd5b823567ffffffffffffffff80821115610fc1578283fd5b818501915085601f830112610fd4578283fd5b81356020610fe4610e6b836115c8565b82815281810190858301838502870184018b1015611000578788fd5b8796505b848710156110295761101581610e34565b835260019690960195918301918301611004565b509650508601359250508082111561103f578283fd5b5061104c85828601610eb2565b9150509250929050565b600060208284031215611067578081fd5b813567ffffffffffffffff81111561107d578182fd5b61108984828501610eb2565b949350505050565b6000806000606084860312156110a5578081fd5b833567ffffffffffffffff808211156110bc578283fd5b6110c887838801610eb2565b94506020915081860135818111156110de578384fd5b8601601f810188136110ee578384fd5b80356110fc610e6b826115c8565b81815284810190838601868402850187018c1015611118578788fd5b8794505b8385101561114e5780356001600160f81b038116811461113a578889fd5b83526001949094019391860191860161111c565b5096505050506040860135915080821115611167578283fd5b5061117486828701610e4b565b9150509250925092565b60006020828403121561118f578081fd5b813567ffffffffffffffff8111156111a5578182fd5b61108984828501610f0c565b6000602082840312156111c2578081fd5b5035919050565b600080604083850312156111db578182fd5b82359150602083013567ffffffffffffffff8111156111f8578182fd5b61104c85828601610f0c565b60008060408385031215611216578182fd5b50508035926020909101359150565b60008151808452815b8181101561124a5760208185018101518683018201520161122e565b8181111561125b5782602083870101525b50601f01601f19169290920160200192915050565b80546000906002810460018083168061128a57607f831692505b60208084108214156112aa57634e487b7160e01b86526022600452602486fd5b6112b48489611554565b8280156112c857600181146112d957611304565b60ff19871682528282019750611304565b6112e2896115ec565b60005b878110156112fe578154848201529086019084016112e5565b83019850505b5050505050505092915050565b6001600160a01b0391909116815260200190565b6001600160a01b039390931683526020830191909152604082015260600190565b600060018060a01b038716825285602083015284604083015260a0606083015261137360a0830185611225565b82810360808401526113858185611270565b98975050505050505050565b901515815260200190565b600060208252610f916020830184611225565b60208082526015908201527418985919d948185b1c9958591e4818db185a5b5959605a1b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601d908201527f77726f6e672066756e6374696f6e20746f20636c61696d206261646765000000604082015260600190565b6020808252601190820152701b999d08191bd95cdb89dd08195e1a5cdd607a1b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601190820152706e6f7420656e6f75676820706f696e747360781b604082015260600190565b6020808252600b908201526a6e6f74206120626164676560a81b604082015260600190565b6001600160f81b0391909116815260200190565b6001600160f81b0384168152821515602082015260606040820181905260009061154b90830184611225565b95945050505050565b90815260200190565b6000838252604060208301526110896040830184611225565b9283526001600160f81b039190911660208301521515604082015260600190565b604051601f8201601f1916810167ffffffffffffffff811182821017156115c0576115c06116c5565b604052919050565b600067ffffffffffffffff8211156115e2576115e26116c5565b5060209081020190565b60009081526020902090565b60006001600160f81b0382811684821680830382111561161a5761161a6116af565b01949350505050565b600081600019048311821515161561163d5761163d6116af565b500290565b600082821015611654576116546116af565b500390565b60028104600182168061166d57607f821691505b6020821081141561168e57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156116a8576116a86116af565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea164736f6c6343000801000a0000000000000000000000004222b2a98daa443c6a0a761300d7d6bfd9161e52

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061010b5760003560e01c80637de1e536116100a2578063c349026311610071578063c3490263146101ef578063d9f10a2b14610202578063e757223014610224578063f2fde38b14610244578063f50ddbc7146102575761010b565b80637de1e536146101ac5780638da5cb5b146101c15780639bb1b92d146101c9578063a1f65e0c146101dc5761010b565b80634b4cd483116100de5780634b4cd4831461015357806355c60c7c1461016657806370a0823114610184578063715018a6146101a45761010b565b8063162094c4146101105780631f72c95314610125578063234151351461012d5780632639f46014610140575b600080fd5b61012361011e3660046111c9565b610279565b005b610123610329565b61012361013b3660046111b1565b610389565b61012361014e36600461117e565b61050d565b610123610161366004611091565b6105b1565b61016e61071a565b60405161017b9190611391565b60405180910390f35b610197610192366004610f77565b61072a565b60405161017b9190611554565b610123610765565b6101b46107ee565b60405161017b9190611311565b6101b46107fd565b6101236101d7366004611056565b61080c565b6101236101ea366004610f98565b6108c4565b6101236101fd366004611204565b6109ff565b6102156102103660046111b1565b610bd3565b60405161017b9392919061151f565b6102376102323660046111b1565b610c8e565b60405161017b919061150b565b610123610252366004610f77565b610ca9565b61026a610265366004610f77565b610d69565b60405161017b93929190611576565b610281610d97565b6001600160a01b03166102926107fd565b6001600160a01b0316146102c15760405162461bcd60e51b81526004016102b890611486565b60405180910390fd5b600354604051630588253160e21b81526001600160a01b039091169063162094c4906102f3908590859060040161155d565b600060405180830381600087803b15801561030d57600080fd5b505af1158015610321573d6000803e3d6000fd5b505050505050565b610331610d97565b6001600160a01b03166103426107fd565b6001600160a01b0316146103685760405162461bcd60e51b81526004016102b890611486565b6003805460ff60a01b198116600160a01b9182900460ff1615909102179055565b600354600160a01b900460ff1661039f57600080fd5b33600090815260016020908152604080832084845260029092529091208054600160f81b900460ff166103e45760405162461bcd60e51b81526004016102b8906114e6565b6001820154600160f81b900460ff16156104105760405162461bcd60e51b81526004016102b8906113af565b805482546001600160f81b039091161061043c5760405162461bcd60e51b81526004016102b8906114bb565b600182810180546001600160f81b0316600160f81b1790556003546040805160208101825260008152905163c1341c4f60e01b81526001600160a01b039092169263c1341c4f9261049a923392899290919088830190600401611346565b600060405180830381600087803b1580156104b457600080fd5b505af11580156104c8573d6000803e3d6000fd5b505050507fd93bbb9e10b7af5aa4b410ac845ae87a717d305e8a4777959ad1dd06e6a1ac983384600160405161050093929190611325565b60405180910390a1505050565b610515610d97565b6001600160a01b03166105266107fd565b6001600160a01b03161461054c5760405162461bcd60e51b81526004016102b890611486565b6003546040516302fe530560e01b81526001600160a01b03909116906302fe53059061057c90849060040161139c565b600060405180830381600087803b15801561059657600080fd5b505af11580156105aa573d6000803e3d6000fd5b5050505050565b6105b9610d97565b6001600160a01b03166105ca6107fd565b6001600160a01b0316146105f05760405162461bcd60e51b81526004016102b890611486565b60005b835181101561071457604051806060016040528084838151811061062757634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160f81b0316815260200160001515815260200183838151811061066657634e487b7160e01b600052603260045260246000fd5b60200260200101518152506002600086848151811061069557634e487b7160e01b600052603260045260246000fd5b602090810291909101810151825281810192909252604090810160002083518154858501511515600160f81b026001600160f81b039283166001600160f81b03199092169190911790911617815590830151805191926106fd92600185019290910190610d9b565b50905050808061070c90611694565b9150506105f3565b50505050565b600354600160a01b900460ff1681565b6001600160a01b0381166000908152600160208190526040822090810154905461075d916001600160f81b031690611642565b90505b919050565b61076d610d97565b6001600160a01b031661077e6107fd565b6001600160a01b0316146107a45760405162461bcd60e51b81526004016102b890611486565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6003546001600160a01b031681565b6000546001600160a01b031690565b610814610d97565b6001600160a01b03166108256107fd565b6001600160a01b03161461084b5760405162461bcd60e51b81526004016102b890611486565b60005b81518110156108c05760016002600084848151811061087d57634e487b7160e01b600052603260045260246000fd5b60200260200101518152602001908152602001600020600001601f6101000a81548160ff02191690831515021790555080806108b890611694565b91505061084e565b5050565b6108cc610d97565b6001600160a01b03166108dd6107fd565b6001600160a01b0316146109035760405162461bcd60e51b81526004016102b890611486565b60005b82518110156109fa57604051806060016040528083838151811061093a57634e487b7160e01b600052603260045260246000fd5b6020026020010151815260200160006001600160f81b03168152602001600015158152506001600085848151811061098257634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b0316825281810192909252604090810160002083518155918301516001909201805493909101511515600160f81b026001600160f81b039283166001600160f81b031990941693909317909116919091179055806109f281611694565b915050610906565b505050565b600354600160a01b900460ff16610a1557600080fd5b33600090815260016020908152604080832085845260029092529091208054600160f81b900460ff1615610a5b5760405162461bcd60e51b81526004016102b890611424565b80546001600160f81b031680610a835760405162461bcd60e51b81526004016102b89061145b565b60018301548354600091610aa2916001600160f81b0390911690611642565b9050610aae8286611623565b811015610acd5760405162461bcd60e51b81526004016102b8906114bb565b610ad78583611623565b600185018054600090610af49084906001600160f81b03166115f8565b82546001600160f81b039182166101009390930a9283029190920219909116179055506003546040805160208101825260008152905163c1341c4f60e01b81526001600160a01b039092169163c1341c4f91610b5e9133918b918b919060018b0190600401611346565b600060405180830381600087803b158015610b7857600080fd5b505af1158015610b8c573d6000803e3d6000fd5b505050507fd93bbb9e10b7af5aa4b410ac845ae87a717d305e8a4777959ad1dd06e6a1ac98338787604051610bc393929190611325565b60405180910390a1505050505050565b600260205260009081526040902080546001820180546001600160f81b03831693600160f81b90930460ff16929190610c0b90611659565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3790611659565b8015610c845780601f10610c5957610100808354040283529160200191610c84565b820191906000526020600020905b815481529060010190602001808311610c6757829003601f168201915b5050505050905083565b6000908152600260205260409020546001600160f81b031690565b610cb1610d97565b6001600160a01b0316610cc26107fd565b6001600160a01b031614610ce85760405162461bcd60e51b81526004016102b890611486565b6001600160a01b038116610d0e5760405162461bcd60e51b81526004016102b8906113de565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600160208190526000918252604090912080549101546001600160f81b03811690600160f81b900460ff1683565b3390565b828054610da790611659565b90600052602060002090601f016020900481019282610dc95760008555610e0f565b82601f10610de257805160ff1916838001178555610e0f565b82800160010185558215610e0f579182015b82811115610e0f578251825591602001919060010190610df4565b50610e1b929150610e1f565b5090565b5b80821115610e1b5760008155600101610e20565b80356001600160a01b038116811461076057600080fd5b600082601f830112610e5b578081fd5b81356020610e70610e6b836115c8565b611597565b82815281810190858301855b85811015610ea557610e93898684358b0101610f0c565b84529284019290840190600101610e7c565b5090979650505050505050565b600082601f830112610ec2578081fd5b81356020610ed2610e6b836115c8565b8281528181019085830183850287018401881015610eee578586fd5b855b85811015610ea557813584529284019290840190600101610ef0565b600082601f830112610f1c578081fd5b813567ffffffffffffffff811115610f3657610f366116c5565b610f49601f8201601f1916602001611597565b818152846020838601011115610f5d578283fd5b816020850160208301379081016020019190915292915050565b600060208284031215610f88578081fd5b610f9182610e34565b9392505050565b60008060408385031215610faa578081fd5b823567ffffffffffffffff80821115610fc1578283fd5b818501915085601f830112610fd4578283fd5b81356020610fe4610e6b836115c8565b82815281810190858301838502870184018b1015611000578788fd5b8796505b848710156110295761101581610e34565b835260019690960195918301918301611004565b509650508601359250508082111561103f578283fd5b5061104c85828601610eb2565b9150509250929050565b600060208284031215611067578081fd5b813567ffffffffffffffff81111561107d578182fd5b61108984828501610eb2565b949350505050565b6000806000606084860312156110a5578081fd5b833567ffffffffffffffff808211156110bc578283fd5b6110c887838801610eb2565b94506020915081860135818111156110de578384fd5b8601601f810188136110ee578384fd5b80356110fc610e6b826115c8565b81815284810190838601868402850187018c1015611118578788fd5b8794505b8385101561114e5780356001600160f81b038116811461113a578889fd5b83526001949094019391860191860161111c565b5096505050506040860135915080821115611167578283fd5b5061117486828701610e4b565b9150509250925092565b60006020828403121561118f578081fd5b813567ffffffffffffffff8111156111a5578182fd5b61108984828501610f0c565b6000602082840312156111c2578081fd5b5035919050565b600080604083850312156111db578182fd5b82359150602083013567ffffffffffffffff8111156111f8578182fd5b61104c85828601610f0c565b60008060408385031215611216578182fd5b50508035926020909101359150565b60008151808452815b8181101561124a5760208185018101518683018201520161122e565b8181111561125b5782602083870101525b50601f01601f19169290920160200192915050565b80546000906002810460018083168061128a57607f831692505b60208084108214156112aa57634e487b7160e01b86526022600452602486fd5b6112b48489611554565b8280156112c857600181146112d957611304565b60ff19871682528282019750611304565b6112e2896115ec565b60005b878110156112fe578154848201529086019084016112e5565b83019850505b5050505050505092915050565b6001600160a01b0391909116815260200190565b6001600160a01b039390931683526020830191909152604082015260600190565b600060018060a01b038716825285602083015284604083015260a0606083015261137360a0830185611225565b82810360808401526113858185611270565b98975050505050505050565b901515815260200190565b600060208252610f916020830184611225565b60208082526015908201527418985919d948185b1c9958591e4818db185a5b5959605a1b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601d908201527f77726f6e672066756e6374696f6e20746f20636c61696d206261646765000000604082015260600190565b6020808252601190820152701b999d08191bd95cdb89dd08195e1a5cdd607a1b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601190820152706e6f7420656e6f75676820706f696e747360781b604082015260600190565b6020808252600b908201526a6e6f74206120626164676560a81b604082015260600190565b6001600160f81b0391909116815260200190565b6001600160f81b0384168152821515602082015260606040820181905260009061154b90830184611225565b95945050505050565b90815260200190565b6000838252604060208301526110896040830184611225565b9283526001600160f81b039190911660208301521515604082015260600190565b604051601f8201601f1916810167ffffffffffffffff811182821017156115c0576115c06116c5565b604052919050565b600067ffffffffffffffff8211156115e2576115e26116c5565b5060209081020190565b60009081526020902090565b60006001600160f81b0382811684821680830382111561161a5761161a6116af565b01949350505050565b600081600019048311821515161561163d5761163d6116af565b500290565b600082821015611654576116546116af565b500390565b60028104600182168061166d57607f821691505b6020821081141561168e57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156116a8576116a86116af565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea164736f6c6343000801000a

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000004222b2a98daa443c6a0a761300d7d6bfd9161e52

-----Decoded View---------------
Arg [0] : _collection (address): 0x4222b2a98dAa443C6a0a761300d7d6bfD9161E52

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000004222b2a98daa443c6a0a761300d7d6bfd9161e52


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.