ETH Price: $2,496.03 (-2.96%)
Gas: 4.17 Gwei

Token

interface particles (IN][PA)
 

Overview

Max Total Supply

161 IN][PA

Holders

160

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
twodam.eth
0xca6ed3fdc8162304d7f1fcfc9ca3a81632d5e5b0
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Social mobile app with human readable web3 feed. Follow wallets and see their activity in a single readable feed. Stay updated with live notifications. See which assets you have in common with others.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Particles

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 7 : Particles.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.4;

import "solmate/tokens/ERC1155.sol";
import "solmate/utils/ReentrancyGuard.sol";
import "openzeppelin-contracts/contracts/access/Ownable.sol";
import "./IRenderer.sol";
import "./Errors.sol";

/*
.                            .

          :=+*#**+**=         
        =*%%%##%%%@%*+=       
     .=#%%%@@%%%%#+++++#+.    
    .%%@@@@@@%#+==+=+#@%*:    
    -%%@@@%*+==++*##@@#+*=    
    =@@%#++++*#%@@%%*++#%#.   
    .#**##%@@@@@%*++*%%%#=    
    +#%@@@@@%#*+*#%%%%*+:     
    :=*%##*#%%%%%###*++:      
     .-=*#%%@@%#+***+-.       
          =++==*#+-:    

.                            .      
 */

contract Particles is ERC1155, Ownable, ReentrancyGuard {
  // emitted when new particles get spawned
  event Spawn(
    uint256 indexed tokenId,
    uint256 maxSpawn,
    address minter,
    address renderer,
    string ipfsHash
  );

  struct Particle {
    uint256 spawned;
    uint256 maxSpawn;
    address minter;
    address renderer;
    bytes metadata;
  }

  string public baseURI;
  string public contractURI;

  mapping(uint256 => Particle) public particles;

  string public name = "interface particles";
  string public symbol = "IN][PA";

  constructor(string memory _baseURI, string memory _contractURI) {
    baseURI = _baseURI;
    contractURI = _contractURI;
  }

  function particleExists(uint256 tokenId) public view returns (bool) {
    if (particles[tokenId].maxSpawn != 0) {
      return true;
    }
    return false;
  }

  function spawn(
    uint256 tokenId,
    uint256 maxSpawn,
    address minter,
    address renderer,
    bytes calldata ipfsHash
  ) external onlyOwner {
    if (particleExists(tokenId)) revert Errors.ParticleAlreadyExists();
    if (maxSpawn == 0) revert Errors.ParticleMaxSpawnCannotBeZero();

    particles[tokenId].spawned = 0;
    particles[tokenId].maxSpawn = maxSpawn;
    particles[tokenId].metadata = ipfsHash;
    particles[tokenId].minter = minter;
    particles[tokenId].renderer = renderer;

    emit URI(uri(tokenId), tokenId);
    emit Spawn(tokenId, maxSpawn, minter, renderer, string(ipfsHash));
  }

  function mint(
    address sender,
    uint256 tokenId,
    uint256 editions
  ) public nonReentrant {
    if (tokenId == 0) revert Errors.UnknownParticle();
    if (!particleExists(tokenId)) revert Errors.UnknownParticle();
    if (particles[tokenId].minter != msg.sender) revert Errors.InvalidMinter();
    if (particles[tokenId].spawned + editions > particles[tokenId].maxSpawn)
      revert Errors.MaxSpawnMinted();

    particles[tokenId].spawned += editions;
    _mint(sender, tokenId, editions, "");
  }

  function burn(uint256 tokenId, uint256 editions) public nonReentrant {
    if (tokenId == 0) revert Errors.UnknownParticle();
    if (!particleExists(tokenId)) revert Errors.UnknownParticle();
    if (balanceOf[msg.sender][tokenId] < editions)
      revert Errors.CannotBurnWhatYouDontOwn();

    _burn(msg.sender, tokenId, editions);
  }

  function setContractURI(string calldata _contractURI) public onlyOwner {
    contractURI = _contractURI;
  }

  function setBaseURI(string calldata _baseURI) public onlyOwner {
    baseURI = _baseURI;
  }

  function updateTokenURI(uint256 tokenId, bytes calldata path)
    external
    onlyOwner
  {
    particles[tokenId].metadata = path;
    emit URI(uri(tokenId), tokenId);
  }

  function updateTokenRenderer(uint256 tokenId, address _renderer)
    external
    onlyOwner
  {
    particles[tokenId].renderer = _renderer;
  }

  function uri(uint256 tokenId) public view override returns (string memory) {
    if (particles[tokenId].renderer == address(0)) {
      return string(abi.encodePacked(baseURI, particles[tokenId].metadata));
    }

    IRenderer renderer = IRenderer(particles[tokenId].renderer);
    return renderer.uri(tokenId);
  }

  function maxSupply(uint256 id) public view returns (uint256) {
    return particles[id].maxSpawn;
  }

  function spawned(uint256 id) public view returns (uint256) {
    return particles[id].spawned;
  }

  // just in case someone sends accidental funds or something
  function withdraw(address payable payee) external onlyOwner {
    uint256 balance = address(this).balance;
    (bool sent, ) = payee.call{value: balance}("");
    if (!sent) {
      revert Errors.WithdrawTransfer();
    }
  }
}

File 2 of 7 : ERC1155.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Minimalist and gas efficient standard ERC1155 implementation.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155.sol)
abstract contract ERC1155 {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event TransferSingle(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256 id,
        uint256 amount
    );

    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] amounts
    );

    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    event URI(string value, uint256 indexed id);

    /*//////////////////////////////////////////////////////////////
                             ERC1155 STORAGE
    //////////////////////////////////////////////////////////////*/

    mapping(address => mapping(uint256 => uint256)) public balanceOf;

    mapping(address => mapping(address => bool)) public isApprovedForAll;

    /*//////////////////////////////////////////////////////////////
                             METADATA LOGIC
    //////////////////////////////////////////////////////////////*/

    function uri(uint256 id) public view virtual returns (string memory);

    /*//////////////////////////////////////////////////////////////
                              ERC1155 LOGIC
    //////////////////////////////////////////////////////////////*/

    function setApprovalForAll(address operator, bool approved) public virtual {
        isApprovedForAll[msg.sender][operator] = approved;

        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) public virtual {
        require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED");

        balanceOf[from][id] -= amount;
        balanceOf[to][id] += amount;

        emit TransferSingle(msg.sender, from, to, id, amount);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, from, id, amount, data) ==
                    ERC1155TokenReceiver.onERC1155Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) public virtual {
        require(ids.length == amounts.length, "LENGTH_MISMATCH");

        require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED");

        // Storing these outside the loop saves ~15 gas per iteration.
        uint256 id;
        uint256 amount;

        for (uint256 i = 0; i < ids.length; ) {
            id = ids[i];
            amount = amounts[i];

            balanceOf[from][id] -= amount;
            balanceOf[to][id] += amount;

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, from, to, ids, amounts);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, from, ids, amounts, data) ==
                    ERC1155TokenReceiver.onERC1155BatchReceived.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function balanceOfBatch(address[] calldata owners, uint256[] calldata ids)
        public
        view
        virtual
        returns (uint256[] memory balances)
    {
        require(owners.length == ids.length, "LENGTH_MISMATCH");

        balances = new uint256[](owners.length);

        // Unchecked because the only math done is incrementing
        // the array index counter which cannot possibly overflow.
        unchecked {
            for (uint256 i = 0; i < owners.length; ++i) {
                balances[i] = balanceOf[owners[i]][ids[i]];
            }
        }
    }

    /*//////////////////////////////////////////////////////////////
                              ERC165 LOGIC
    //////////////////////////////////////////////////////////////*/

    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
            interfaceId == 0xd9b67a26 || // ERC165 Interface ID for ERC1155
            interfaceId == 0x0e89341c; // ERC165 Interface ID for ERC1155MetadataURI
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        balanceOf[to][id] += amount;

        emit TransferSingle(msg.sender, address(0), to, id, amount);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, address(0), id, amount, data) ==
                    ERC1155TokenReceiver.onERC1155Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _batchMint(
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        uint256 idsLength = ids.length; // Saves MLOADs.

        require(idsLength == amounts.length, "LENGTH_MISMATCH");

        for (uint256 i = 0; i < idsLength; ) {
            balanceOf[to][ids[i]] += amounts[i];

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, address(0), to, ids, amounts);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, address(0), ids, amounts, data) ==
                    ERC1155TokenReceiver.onERC1155BatchReceived.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _batchBurn(
        address from,
        uint256[] memory ids,
        uint256[] memory amounts
    ) internal virtual {
        uint256 idsLength = ids.length; // Saves MLOADs.

        require(idsLength == amounts.length, "LENGTH_MISMATCH");

        for (uint256 i = 0; i < idsLength; ) {
            balanceOf[from][ids[i]] -= amounts[i];

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, from, address(0), ids, amounts);
    }

    function _burn(
        address from,
        uint256 id,
        uint256 amount
    ) internal virtual {
        balanceOf[from][id] -= amount;

        emit TransferSingle(msg.sender, from, address(0), id, amount);
    }
}

/// @notice A generic interface for a contract which properly accepts ERC1155 tokens.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155.sol)
abstract contract ERC1155TokenReceiver {
    function onERC1155Received(
        address,
        address,
        uint256,
        uint256,
        bytes calldata
    ) external virtual returns (bytes4) {
        return ERC1155TokenReceiver.onERC1155Received.selector;
    }

    function onERC1155BatchReceived(
        address,
        address,
        uint256[] calldata,
        uint256[] calldata,
        bytes calldata
    ) external virtual returns (bytes4) {
        return ERC1155TokenReceiver.onERC1155BatchReceived.selector;
    }
}

File 3 of 7 : ReentrancyGuard.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Gas optimized reentrancy protection for smart contracts.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/ReentrancyGuard.sol)
/// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/security/ReentrancyGuard.sol)
abstract contract ReentrancyGuard {
    uint256 private locked = 1;

    modifier nonReentrant() virtual {
        require(locked == 1, "REENTRANCY");

        locked = 2;

        _;

        locked = 1;
    }
}

File 4 of 7 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

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() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        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 {
        _transferOwnership(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");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 5 of 7 : IRenderer.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface IRenderer {
  function uri(uint256 tokenId) external view returns (string memory);
}

File 6 of 7 : Errors.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

library Errors {
  /* Particles.sol */
  error WithdrawTransfer();
  error UnknownParticle();
  error InvalidMinter();
  error MaxSpawnMinted();
  error ParticlePropertiesMissMatch();
  error ParticleMaxSpawnCannotBeZero();
  error ParticleAlreadyExists();
  error PropertyAlreadyExists();
  error PropertyMinCannotBeBiggerMax();
  error PropertyMaxSpawnCannotBeZero();
  error ParticleValueOutOfRangeOrDoesntExist();
  error CannotBurnWhatYouDontOwn();

  /* MerkleMinter.sol */
  error NotAllowListed();
  error InsufficientFunds();
  error AlreadyMinted();
  error MintNotStarted();
}

File 7 of 7 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

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;
    }
}

Settings
{
  "remappings": [
    "ds-test/=lib/solmate/lib/ds-test/src/",
    "forge-std/=lib/forge-std/src/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "solmate/=lib/solmate/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "bytecodeHash": "ipfs"
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "london",
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_baseURI","type":"string"},{"internalType":"string","name":"_contractURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CannotBurnWhatYouDontOwn","type":"error"},{"inputs":[],"name":"InvalidMinter","type":"error"},{"inputs":[],"name":"MaxSpawnMinted","type":"error"},{"inputs":[],"name":"ParticleAlreadyExists","type":"error"},{"inputs":[],"name":"ParticleMaxSpawnCannotBeZero","type":"error"},{"inputs":[],"name":"UnknownParticle","type":"error"},{"inputs":[],"name":"WithdrawTransfer","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxSpawn","type":"uint256"},{"indexed":false,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"address","name":"renderer","type":"address"},{"indexed":false,"internalType":"string","name":"ipfsHash","type":"string"}],"name":"Spawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"editions","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"editions","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"particleExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"particles","outputs":[{"internalType":"uint256","name":"spawned","type":"uint256"},{"internalType":"uint256","name":"maxSpawn","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"renderer","type":"address"},{"internalType":"bytes","name":"metadata","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_contractURI","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"maxSpawn","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"renderer","type":"address"},{"internalType":"bytes","name":"ipfsHash","type":"bytes"}],"name":"spawn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"spawned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"_renderer","type":"address"}],"name":"updateTokenRenderer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"path","type":"bytes"}],"name":"updateTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"payee","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

600160035560c0604052601360809081527f696e74657266616365207061727469636c65730000000000000000000000000060a052600790620000439082620001c9565b50604080518082019091526006815265494e5d5b504160d01b6020820152600890620000709082620001c9565b503480156200007e57600080fd5b506040516200234638038062002346833981016040819052620000a19162000344565b620000ac33620000d2565b6004620000ba8382620001c9565b506005620000c98282620001c9565b505050620003ae565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014f57607f821691505b6020821081036200017057634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001c457600081815260208120601f850160051c810160208610156200019f5750805b601f850160051c820191505b81811015620001c057828155600101620001ab565b5050505b505050565b81516001600160401b03811115620001e557620001e562000124565b620001fd81620001f684546200013a565b8462000176565b602080601f8311600181146200023557600084156200021c5750858301515b600019600386901b1c1916600185901b178555620001c0565b600085815260208120601f198616915b82811015620002665788860151825594840194600190910190840162000245565b5085821015620002855787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082601f830112620002a757600080fd5b81516001600160401b0380821115620002c457620002c462000124565b604051601f8301601f19908116603f01168101908282118183101715620002ef57620002ef62000124565b816040528381526020925086838588010111156200030c57600080fd5b600091505b8382101562000330578582018301518183018401529082019062000311565b600093810190920192909252949350505050565b600080604083850312156200035857600080fd5b82516001600160401b03808211156200037057600080fd5b6200037e8683870162000295565b935060208501519150808211156200039557600080fd5b50620003a48582860162000295565b9150509250929050565b611f8880620003be6000396000f3fe608060405234801561001057600080fd5b50600436106101a85760003560e01c8063869f7594116100f9578063e8a3d48511610097578063f242432a11610071578063f242432a146103bf578063f2fde38b146103d2578063fbcbeded146103e5578063fd763996146103f857600080fd5b8063e8a3d48514610376578063e985e9c51461037e578063f134e137146103ac57600080fd5b806395d89b41116100d357806395d89b4114610335578063a22cb4651461033d578063b390c0ab14610350578063baa5cb481461036357600080fd5b8063869f7594146102e45780638da5cb5b14610307578063938e3d7b1461032257600080fd5b80632eb2c2d61161016657806355f804b31161014057806355f804b3146102ae5780636c0360eb146102c1578063715018a6146102c957806377438d58146102d157600080fd5b80632eb2c2d6146102685780634e1273f41461027b57806351cff8d91461029b57600080fd5b8062fdd58e146101ad57806301ffc9a7146101e857806306fdde031461020b5780630e89341c14610220578063156e29f6146102335780631bb7508214610248575b600080fd5b6101d56101bb36600461150d565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b6101fb6101f636600461154f565b61041c565b60405190151581526020016101df565b61021361046e565b6040516101df91906115bc565b61021361022e3660046115cf565b6104fc565b6102466102413660046115e8565b6105e7565b005b6101d56102563660046115cf565b60009081526006602052604090205490565b6102466102763660046116ab565b61073b565b61028e61028936600461176a565b6109de565b6040516101df91906117d6565b6102466102a936600461181a565b610b13565b6102466102bc366004611837565b610b94565b610213610ba9565b610246610bb6565b6102466102df366004611879565b610bca565b6101d56102f23660046115cf565b60009081526006602052604090206001015490565b6002546040516001600160a01b0390911681526020016101df565b610246610330366004611837565b610c34565b610213610c49565b61024661034b3660046118c5565b610c56565b61024661035e366004611903565b610cc2565b610246610371366004611925565b610d9b565b610213610eda565b6101fb61038c3660046119a1565b600160209081526000928352604080842090915290825290205460ff1681565b6102466103ba3660046119cf565b610ee7565b6102466103cd3660046119f4565b610f20565b6102466103e036600461181a565b61111a565b6101fb6103f33660046115cf565b611193565b61040b6104063660046115cf565b6111ba565b6040516101df959493929190611a52565b60006301ffc9a760e01b6001600160e01b03198316148061044d5750636cdb3d1360e11b6001600160e01b03198316145b8061046857506303a24d0760e21b6001600160e01b03198316145b92915050565b6007805461047b90611a96565b80601f01602080910402602001604051908101604052809291908181526020018280546104a790611a96565b80156104f45780601f106104c9576101008083540402835291602001916104f4565b820191906000526020600020905b8154815290600101906020018083116104d757829003601f168201915b505050505081565b6000818152600660205260409020600301546060906001600160a01b031661055d57600460066000848152602001908152602001600020600401604051602001610547929190611b43565b6040516020818303038152906040529050919050565b600082815260066020526040908190206003015490516303a24d0760e21b8152600481018490526001600160a01b03909116908190630e89341c90602401600060405180830381865afa1580156105b8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105e09190810190611b76565b9392505050565b60035460011461062b5760405162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b60448201526064015b60405180910390fd5b6002600355600082900361065257604051631cbb4ba560e11b815260040160405180910390fd5b61065b82611193565b61067857604051631cbb4ba560e11b815260040160405180910390fd5b6000828152600660205260409020600201546001600160a01b031633146106b25760405163d8d5894f60e01b815260040160405180910390fd5b6000828152600660205260409020600181015490546106d2908390611c2e565b11156106f157604051630dab6fb160e21b815260040160405180910390fd5b6000828152600660205260408120805483929061070f908490611c2e565b9250508190555061073183838360405180602001604052806000815250611280565b5050600160035550565b84831461077c5760405162461bcd60e51b815260206004820152600f60248201526e0988a9c8ea890be9a92a69a82a8869608b1b6044820152606401610622565b336001600160a01b03891614806107b657506001600160a01b038816600090815260016020908152604080832033845290915290205460ff165b6107f35760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610622565b60008060005b878110156108ae5788888281811061081357610813611c41565b90506020020135925086868281811061082e5761082e611c41565b6001600160a01b038e166000908152602081815260408083208984528252822080549390910294909401359550859392509061086b908490611c57565b90915550506001600160a01b038a16600090815260208181526040808320868452909152812080548492906108a1908490611c2e565b90915550506001016107f9565b50886001600160a01b03168a6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b6040516109029493929190611c9c565b60405180910390a46001600160a01b0389163b156109a95760405163bc197c8160e01b808252906001600160a01b038b169063bc197c81906109569033908f908e908e908e908e908e908e90600401611cec565b6020604051808303816000875af1158015610975573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109999190611d50565b6001600160e01b031916146109b6565b6001600160a01b03891615155b6109d25760405162461bcd60e51b815260040161062290611d6d565b50505050505050505050565b6060838214610a215760405162461bcd60e51b815260206004820152600f60248201526e0988a9c8ea890be9a92a69a82a8869608b1b6044820152606401610622565b8367ffffffffffffffff811115610a3a57610a3a611b60565b604051908082528060200260200182016040528015610a63578160200160208202803683370190505b50905060005b84811015610b0a57600080878784818110610a8657610a86611c41565b9050602002016020810190610a9b919061181a565b6001600160a01b03166001600160a01b031681526020019081526020016000206000858584818110610acf57610acf611c41565b90506020020135815260200190815260200160002054828281518110610af757610af7611c41565b6020908102919091010152600101610a69565b50949350505050565b610b1b6113c8565b60405147906000906001600160a01b0384169083908381818185875af1925050503d8060008114610b68576040519150601f19603f3d011682016040523d82523d6000602084013e610b6d565b606091505b5050905080610b8f5760405163d23a9e8960e01b815260040160405180910390fd5b505050565b610b9c6113c8565b6004610b8f828483611ddd565b6004805461047b90611a96565b610bbe6113c8565b610bc86000611422565b565b610bd26113c8565b6000838152600660205260409020600401610bee828483611ddd565b50827f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b610c1a856104fc565b604051610c2791906115bc565b60405180910390a2505050565b610c3c6113c8565b6005610b8f828483611ddd565b6008805461047b90611a96565b3360008181526001602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600354600114610d015760405162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b6044820152606401610622565b60026003556000829003610d2857604051631cbb4ba560e11b815260040160405180910390fd5b610d3182611193565b610d4e57604051631cbb4ba560e11b815260040160405180910390fd5b33600090815260208181526040808320858452909152902054811115610d8757604051633675011b60e11b815260040160405180910390fd5b610d92338383611474565b50506001600355565b610da36113c8565b610dac86611193565b15610dca57604051630f63dbb160e01b815260040160405180910390fd5b84600003610deb5760405163983917b560e01b815260040160405180910390fd5b600086815260066020526040812090815560018101869055600401610e11828483611ddd565b5060008681526006602052604090206002810180546001600160a01b038088166001600160a01b0319928316179092556003909201805491861691909216179055857f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b610e7d826104fc565b604051610e8a91906115bc565b60405180910390a2857ff2a76cedb8a51aa2940f7c973a4b233f863df555abf8d3f1f2ce8043e8ecccea8686868686604051610eca959493929190611e9e565b60405180910390a2505050505050565b6005805461047b90611a96565b610eef6113c8565b60009182526006602052604090912060030180546001600160a01b0319166001600160a01b03909216919091179055565b336001600160a01b0387161480610f5a57506001600160a01b038616600090815260016020908152604080832033845290915290205460ff165b610f975760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610622565b6001600160a01b03861660009081526020818152604080832087845290915281208054859290610fc8908490611c57565b90915550506001600160a01b03851660009081526020818152604080832087845290915281208054859290610ffe908490611c2e565b909155505060408051858152602081018590526001600160a01b03808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0385163b156110e95760405163f23a6e6160e01b808252906001600160a01b0387169063f23a6e61906110969033908b908a908a908a908a90600401611ed1565b6020604051808303816000875af11580156110b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d99190611d50565b6001600160e01b031916146110f6565b6001600160a01b03851615155b6111125760405162461bcd60e51b815260040161062290611d6d565b505050505050565b6111226113c8565b6001600160a01b0381166111875760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610622565b61119081611422565b50565b600081815260066020526040812060010154156111b257506001919050565b506000919050565b60066020526000908152604090208054600182015460028301546003840154600485018054949593946001600160a01b039384169492909316926111fd90611a96565b80601f016020809104026020016040519081016040528092919081815260200182805461122990611a96565b80156112765780601f1061124b57610100808354040283529160200191611276565b820191906000526020600020905b81548152906001019060200180831161125957829003601f168201915b5050505050905085565b6001600160a01b038416600090815260208181526040808320868452909152812080548492906112b1908490611c2e565b909155505060408051848152602081018490526001600160a01b0386169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0384163b156113995760405163f23a6e6160e01b808252906001600160a01b0386169063f23a6e6190611346903390600090899089908990600401611f18565b6020604051808303816000875af1158015611365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113899190611d50565b6001600160e01b031916146113a6565b6001600160a01b03841615155b6113c25760405162461bcd60e51b815260040161062290611d6d565b50505050565b6002546001600160a01b03163314610bc85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610622565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316600090815260208181526040808320858452909152812080548392906114a5908490611c57565b909155505060408051838152602081018390526000916001600160a01b0386169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b6001600160a01b038116811461119057600080fd5b6000806040838503121561152057600080fd5b823561152b816114f8565b946020939093013593505050565b6001600160e01b03198116811461119057600080fd5b60006020828403121561156157600080fd5b81356105e081611539565b60005b8381101561158757818101518382015260200161156f565b50506000910152565b600081518084526115a881602086016020860161156c565b601f01601f19169290920160200192915050565b6020815260006105e06020830184611590565b6000602082840312156115e157600080fd5b5035919050565b6000806000606084860312156115fd57600080fd5b8335611608816114f8565b95602085013595506040909401359392505050565b60008083601f84011261162f57600080fd5b50813567ffffffffffffffff81111561164757600080fd5b6020830191508360208260051b850101111561166257600080fd5b9250929050565b60008083601f84011261167b57600080fd5b50813567ffffffffffffffff81111561169357600080fd5b60208301915083602082850101111561166257600080fd5b60008060008060008060008060a0898b0312156116c757600080fd5b88356116d2816114f8565b975060208901356116e2816114f8565b9650604089013567ffffffffffffffff808211156116ff57600080fd5b61170b8c838d0161161d565b909850965060608b013591508082111561172457600080fd5b6117308c838d0161161d565b909650945060808b013591508082111561174957600080fd5b506117568b828c01611669565b999c989b5096995094979396929594505050565b6000806000806040858703121561178057600080fd5b843567ffffffffffffffff8082111561179857600080fd5b6117a48883890161161d565b909650945060208701359150808211156117bd57600080fd5b506117ca8782880161161d565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b8181101561180e578351835292840192918401916001016117f2565b50909695505050505050565b60006020828403121561182c57600080fd5b81356105e0816114f8565b6000806020838503121561184a57600080fd5b823567ffffffffffffffff81111561186157600080fd5b61186d85828601611669565b90969095509350505050565b60008060006040848603121561188e57600080fd5b83359250602084013567ffffffffffffffff8111156118ac57600080fd5b6118b886828701611669565b9497909650939450505050565b600080604083850312156118d857600080fd5b82356118e3816114f8565b9150602083013580151581146118f857600080fd5b809150509250929050565b6000806040838503121561191657600080fd5b50508035926020909101359150565b60008060008060008060a0878903121561193e57600080fd5b86359550602087013594506040870135611957816114f8565b93506060870135611967816114f8565b9250608087013567ffffffffffffffff81111561198357600080fd5b61198f89828a01611669565b979a9699509497509295939492505050565b600080604083850312156119b457600080fd5b82356119bf816114f8565b915060208301356118f8816114f8565b600080604083850312156119e257600080fd5b8235915060208301356118f8816114f8565b60008060008060008060a08789031215611a0d57600080fd5b8635611a18816114f8565b95506020870135611a28816114f8565b94506040870135935060608701359250608087013567ffffffffffffffff81111561198357600080fd5b858152602081018590526001600160a01b0384811660408301528316606082015260a060808201819052600090611a8b90830184611590565b979650505050505050565b600181811c90821680611aaa57607f821691505b602082108103611aca57634e487b7160e01b600052602260045260246000fd5b50919050565b60008154611add81611a96565b60018281168015611af55760018114611b0a57611b39565b60ff1984168752821515830287019450611b39565b8560005260208060002060005b85811015611b305781548a820152908401908201611b17565b50505082870194505b5050505092915050565b6000611b58611b528386611ad0565b84611ad0565b949350505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215611b8857600080fd5b815167ffffffffffffffff80821115611ba057600080fd5b818401915084601f830112611bb457600080fd5b815181811115611bc657611bc6611b60565b604051601f8201601f19908116603f01168101908382118183101715611bee57611bee611b60565b81604052828152876020848701011115611c0757600080fd5b611a8b83602083016020880161156c565b634e487b7160e01b600052601160045260246000fd5b8082018082111561046857610468611c18565b634e487b7160e01b600052603260045260246000fd5b8181038181111561046857610468611c18565b81835260006001600160fb1b03831115611c8357600080fd5b8260051b80836020870137939093016020019392505050565b604081526000611cb0604083018688611c6a565b8281036020840152611a8b818587611c6a565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0389811682528816602082015260a060408201819052600090611d19908301888a611c6a565b8281036060840152611d2c818789611c6a565b90508281036080840152611d41818587611cc3565b9b9a5050505050505050505050565b600060208284031215611d6257600080fd5b81516105e081611539565b60208082526010908201526f155394d0519157d49150d2541251539560821b604082015260600190565b601f821115610b8f57600081815260208120601f850160051c81016020861015611dbe5750805b601f850160051c820191505b8181101561111257828155600101611dca565b67ffffffffffffffff831115611df557611df5611b60565b611e0983611e038354611a96565b83611d97565b6000601f841160018114611e3d5760008515611e255750838201355b600019600387901b1c1916600186901b178355611e97565b600083815260209020601f19861690835b82811015611e6e5786850135825560209485019460019092019101611e4e565b5086821015611e8b5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8581526001600160a01b03858116602083015284166040820152608060608201819052600090611a8b9083018486611cc3565b6001600160a01b03878116825286166020820152604081018590526060810184905260a060808201819052600090611f0c9083018486611cc3565b98975050505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090611a8b9083018461159056fea2646970667358221220c35f224980ea5f5e34dc5efc07876deafa552ef9a7bec4af17957bfab0bd56aa64736f6c63430008100033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000007697066733a2f2f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5566435234797847793362616a5646754c754e526978364a474e6943735248786a6638776b6b456b6e7138410000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101a85760003560e01c8063869f7594116100f9578063e8a3d48511610097578063f242432a11610071578063f242432a146103bf578063f2fde38b146103d2578063fbcbeded146103e5578063fd763996146103f857600080fd5b8063e8a3d48514610376578063e985e9c51461037e578063f134e137146103ac57600080fd5b806395d89b41116100d357806395d89b4114610335578063a22cb4651461033d578063b390c0ab14610350578063baa5cb481461036357600080fd5b8063869f7594146102e45780638da5cb5b14610307578063938e3d7b1461032257600080fd5b80632eb2c2d61161016657806355f804b31161014057806355f804b3146102ae5780636c0360eb146102c1578063715018a6146102c957806377438d58146102d157600080fd5b80632eb2c2d6146102685780634e1273f41461027b57806351cff8d91461029b57600080fd5b8062fdd58e146101ad57806301ffc9a7146101e857806306fdde031461020b5780630e89341c14610220578063156e29f6146102335780631bb7508214610248575b600080fd5b6101d56101bb36600461150d565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b6101fb6101f636600461154f565b61041c565b60405190151581526020016101df565b61021361046e565b6040516101df91906115bc565b61021361022e3660046115cf565b6104fc565b6102466102413660046115e8565b6105e7565b005b6101d56102563660046115cf565b60009081526006602052604090205490565b6102466102763660046116ab565b61073b565b61028e61028936600461176a565b6109de565b6040516101df91906117d6565b6102466102a936600461181a565b610b13565b6102466102bc366004611837565b610b94565b610213610ba9565b610246610bb6565b6102466102df366004611879565b610bca565b6101d56102f23660046115cf565b60009081526006602052604090206001015490565b6002546040516001600160a01b0390911681526020016101df565b610246610330366004611837565b610c34565b610213610c49565b61024661034b3660046118c5565b610c56565b61024661035e366004611903565b610cc2565b610246610371366004611925565b610d9b565b610213610eda565b6101fb61038c3660046119a1565b600160209081526000928352604080842090915290825290205460ff1681565b6102466103ba3660046119cf565b610ee7565b6102466103cd3660046119f4565b610f20565b6102466103e036600461181a565b61111a565b6101fb6103f33660046115cf565b611193565b61040b6104063660046115cf565b6111ba565b6040516101df959493929190611a52565b60006301ffc9a760e01b6001600160e01b03198316148061044d5750636cdb3d1360e11b6001600160e01b03198316145b8061046857506303a24d0760e21b6001600160e01b03198316145b92915050565b6007805461047b90611a96565b80601f01602080910402602001604051908101604052809291908181526020018280546104a790611a96565b80156104f45780601f106104c9576101008083540402835291602001916104f4565b820191906000526020600020905b8154815290600101906020018083116104d757829003601f168201915b505050505081565b6000818152600660205260409020600301546060906001600160a01b031661055d57600460066000848152602001908152602001600020600401604051602001610547929190611b43565b6040516020818303038152906040529050919050565b600082815260066020526040908190206003015490516303a24d0760e21b8152600481018490526001600160a01b03909116908190630e89341c90602401600060405180830381865afa1580156105b8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105e09190810190611b76565b9392505050565b60035460011461062b5760405162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b60448201526064015b60405180910390fd5b6002600355600082900361065257604051631cbb4ba560e11b815260040160405180910390fd5b61065b82611193565b61067857604051631cbb4ba560e11b815260040160405180910390fd5b6000828152600660205260409020600201546001600160a01b031633146106b25760405163d8d5894f60e01b815260040160405180910390fd5b6000828152600660205260409020600181015490546106d2908390611c2e565b11156106f157604051630dab6fb160e21b815260040160405180910390fd5b6000828152600660205260408120805483929061070f908490611c2e565b9250508190555061073183838360405180602001604052806000815250611280565b5050600160035550565b84831461077c5760405162461bcd60e51b815260206004820152600f60248201526e0988a9c8ea890be9a92a69a82a8869608b1b6044820152606401610622565b336001600160a01b03891614806107b657506001600160a01b038816600090815260016020908152604080832033845290915290205460ff165b6107f35760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610622565b60008060005b878110156108ae5788888281811061081357610813611c41565b90506020020135925086868281811061082e5761082e611c41565b6001600160a01b038e166000908152602081815260408083208984528252822080549390910294909401359550859392509061086b908490611c57565b90915550506001600160a01b038a16600090815260208181526040808320868452909152812080548492906108a1908490611c2e565b90915550506001016107f9565b50886001600160a01b03168a6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b6040516109029493929190611c9c565b60405180910390a46001600160a01b0389163b156109a95760405163bc197c8160e01b808252906001600160a01b038b169063bc197c81906109569033908f908e908e908e908e908e908e90600401611cec565b6020604051808303816000875af1158015610975573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109999190611d50565b6001600160e01b031916146109b6565b6001600160a01b03891615155b6109d25760405162461bcd60e51b815260040161062290611d6d565b50505050505050505050565b6060838214610a215760405162461bcd60e51b815260206004820152600f60248201526e0988a9c8ea890be9a92a69a82a8869608b1b6044820152606401610622565b8367ffffffffffffffff811115610a3a57610a3a611b60565b604051908082528060200260200182016040528015610a63578160200160208202803683370190505b50905060005b84811015610b0a57600080878784818110610a8657610a86611c41565b9050602002016020810190610a9b919061181a565b6001600160a01b03166001600160a01b031681526020019081526020016000206000858584818110610acf57610acf611c41565b90506020020135815260200190815260200160002054828281518110610af757610af7611c41565b6020908102919091010152600101610a69565b50949350505050565b610b1b6113c8565b60405147906000906001600160a01b0384169083908381818185875af1925050503d8060008114610b68576040519150601f19603f3d011682016040523d82523d6000602084013e610b6d565b606091505b5050905080610b8f5760405163d23a9e8960e01b815260040160405180910390fd5b505050565b610b9c6113c8565b6004610b8f828483611ddd565b6004805461047b90611a96565b610bbe6113c8565b610bc86000611422565b565b610bd26113c8565b6000838152600660205260409020600401610bee828483611ddd565b50827f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b610c1a856104fc565b604051610c2791906115bc565b60405180910390a2505050565b610c3c6113c8565b6005610b8f828483611ddd565b6008805461047b90611a96565b3360008181526001602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600354600114610d015760405162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b6044820152606401610622565b60026003556000829003610d2857604051631cbb4ba560e11b815260040160405180910390fd5b610d3182611193565b610d4e57604051631cbb4ba560e11b815260040160405180910390fd5b33600090815260208181526040808320858452909152902054811115610d8757604051633675011b60e11b815260040160405180910390fd5b610d92338383611474565b50506001600355565b610da36113c8565b610dac86611193565b15610dca57604051630f63dbb160e01b815260040160405180910390fd5b84600003610deb5760405163983917b560e01b815260040160405180910390fd5b600086815260066020526040812090815560018101869055600401610e11828483611ddd565b5060008681526006602052604090206002810180546001600160a01b038088166001600160a01b0319928316179092556003909201805491861691909216179055857f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b610e7d826104fc565b604051610e8a91906115bc565b60405180910390a2857ff2a76cedb8a51aa2940f7c973a4b233f863df555abf8d3f1f2ce8043e8ecccea8686868686604051610eca959493929190611e9e565b60405180910390a2505050505050565b6005805461047b90611a96565b610eef6113c8565b60009182526006602052604090912060030180546001600160a01b0319166001600160a01b03909216919091179055565b336001600160a01b0387161480610f5a57506001600160a01b038616600090815260016020908152604080832033845290915290205460ff165b610f975760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610622565b6001600160a01b03861660009081526020818152604080832087845290915281208054859290610fc8908490611c57565b90915550506001600160a01b03851660009081526020818152604080832087845290915281208054859290610ffe908490611c2e565b909155505060408051858152602081018590526001600160a01b03808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0385163b156110e95760405163f23a6e6160e01b808252906001600160a01b0387169063f23a6e61906110969033908b908a908a908a908a90600401611ed1565b6020604051808303816000875af11580156110b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d99190611d50565b6001600160e01b031916146110f6565b6001600160a01b03851615155b6111125760405162461bcd60e51b815260040161062290611d6d565b505050505050565b6111226113c8565b6001600160a01b0381166111875760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610622565b61119081611422565b50565b600081815260066020526040812060010154156111b257506001919050565b506000919050565b60066020526000908152604090208054600182015460028301546003840154600485018054949593946001600160a01b039384169492909316926111fd90611a96565b80601f016020809104026020016040519081016040528092919081815260200182805461122990611a96565b80156112765780601f1061124b57610100808354040283529160200191611276565b820191906000526020600020905b81548152906001019060200180831161125957829003601f168201915b5050505050905085565b6001600160a01b038416600090815260208181526040808320868452909152812080548492906112b1908490611c2e565b909155505060408051848152602081018490526001600160a01b0386169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0384163b156113995760405163f23a6e6160e01b808252906001600160a01b0386169063f23a6e6190611346903390600090899089908990600401611f18565b6020604051808303816000875af1158015611365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113899190611d50565b6001600160e01b031916146113a6565b6001600160a01b03841615155b6113c25760405162461bcd60e51b815260040161062290611d6d565b50505050565b6002546001600160a01b03163314610bc85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610622565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316600090815260208181526040808320858452909152812080548392906114a5908490611c57565b909155505060408051838152602081018390526000916001600160a01b0386169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b6001600160a01b038116811461119057600080fd5b6000806040838503121561152057600080fd5b823561152b816114f8565b946020939093013593505050565b6001600160e01b03198116811461119057600080fd5b60006020828403121561156157600080fd5b81356105e081611539565b60005b8381101561158757818101518382015260200161156f565b50506000910152565b600081518084526115a881602086016020860161156c565b601f01601f19169290920160200192915050565b6020815260006105e06020830184611590565b6000602082840312156115e157600080fd5b5035919050565b6000806000606084860312156115fd57600080fd5b8335611608816114f8565b95602085013595506040909401359392505050565b60008083601f84011261162f57600080fd5b50813567ffffffffffffffff81111561164757600080fd5b6020830191508360208260051b850101111561166257600080fd5b9250929050565b60008083601f84011261167b57600080fd5b50813567ffffffffffffffff81111561169357600080fd5b60208301915083602082850101111561166257600080fd5b60008060008060008060008060a0898b0312156116c757600080fd5b88356116d2816114f8565b975060208901356116e2816114f8565b9650604089013567ffffffffffffffff808211156116ff57600080fd5b61170b8c838d0161161d565b909850965060608b013591508082111561172457600080fd5b6117308c838d0161161d565b909650945060808b013591508082111561174957600080fd5b506117568b828c01611669565b999c989b5096995094979396929594505050565b6000806000806040858703121561178057600080fd5b843567ffffffffffffffff8082111561179857600080fd5b6117a48883890161161d565b909650945060208701359150808211156117bd57600080fd5b506117ca8782880161161d565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b8181101561180e578351835292840192918401916001016117f2565b50909695505050505050565b60006020828403121561182c57600080fd5b81356105e0816114f8565b6000806020838503121561184a57600080fd5b823567ffffffffffffffff81111561186157600080fd5b61186d85828601611669565b90969095509350505050565b60008060006040848603121561188e57600080fd5b83359250602084013567ffffffffffffffff8111156118ac57600080fd5b6118b886828701611669565b9497909650939450505050565b600080604083850312156118d857600080fd5b82356118e3816114f8565b9150602083013580151581146118f857600080fd5b809150509250929050565b6000806040838503121561191657600080fd5b50508035926020909101359150565b60008060008060008060a0878903121561193e57600080fd5b86359550602087013594506040870135611957816114f8565b93506060870135611967816114f8565b9250608087013567ffffffffffffffff81111561198357600080fd5b61198f89828a01611669565b979a9699509497509295939492505050565b600080604083850312156119b457600080fd5b82356119bf816114f8565b915060208301356118f8816114f8565b600080604083850312156119e257600080fd5b8235915060208301356118f8816114f8565b60008060008060008060a08789031215611a0d57600080fd5b8635611a18816114f8565b95506020870135611a28816114f8565b94506040870135935060608701359250608087013567ffffffffffffffff81111561198357600080fd5b858152602081018590526001600160a01b0384811660408301528316606082015260a060808201819052600090611a8b90830184611590565b979650505050505050565b600181811c90821680611aaa57607f821691505b602082108103611aca57634e487b7160e01b600052602260045260246000fd5b50919050565b60008154611add81611a96565b60018281168015611af55760018114611b0a57611b39565b60ff1984168752821515830287019450611b39565b8560005260208060002060005b85811015611b305781548a820152908401908201611b17565b50505082870194505b5050505092915050565b6000611b58611b528386611ad0565b84611ad0565b949350505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215611b8857600080fd5b815167ffffffffffffffff80821115611ba057600080fd5b818401915084601f830112611bb457600080fd5b815181811115611bc657611bc6611b60565b604051601f8201601f19908116603f01168101908382118183101715611bee57611bee611b60565b81604052828152876020848701011115611c0757600080fd5b611a8b83602083016020880161156c565b634e487b7160e01b600052601160045260246000fd5b8082018082111561046857610468611c18565b634e487b7160e01b600052603260045260246000fd5b8181038181111561046857610468611c18565b81835260006001600160fb1b03831115611c8357600080fd5b8260051b80836020870137939093016020019392505050565b604081526000611cb0604083018688611c6a565b8281036020840152611a8b818587611c6a565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0389811682528816602082015260a060408201819052600090611d19908301888a611c6a565b8281036060840152611d2c818789611c6a565b90508281036080840152611d41818587611cc3565b9b9a5050505050505050505050565b600060208284031215611d6257600080fd5b81516105e081611539565b60208082526010908201526f155394d0519157d49150d2541251539560821b604082015260600190565b601f821115610b8f57600081815260208120601f850160051c81016020861015611dbe5750805b601f850160051c820191505b8181101561111257828155600101611dca565b67ffffffffffffffff831115611df557611df5611b60565b611e0983611e038354611a96565b83611d97565b6000601f841160018114611e3d5760008515611e255750838201355b600019600387901b1c1916600186901b178355611e97565b600083815260209020601f19861690835b82811015611e6e5786850135825560209485019460019092019101611e4e565b5086821015611e8b5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8581526001600160a01b03858116602083015284166040820152608060608201819052600090611a8b9083018486611cc3565b6001600160a01b03878116825286166020820152604081018590526060810184905260a060808201819052600090611f0c9083018486611cc3565b98975050505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090611a8b9083018461159056fea2646970667358221220c35f224980ea5f5e34dc5efc07876deafa552ef9a7bec4af17957bfab0bd56aa64736f6c63430008100033

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

000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000007697066733a2f2f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5566435234797847793362616a5646754c754e526978364a474e6943735248786a6638776b6b456b6e7138410000000000000000000000

-----Decoded View---------------
Arg [0] : _baseURI (string): ipfs://
Arg [1] : _contractURI (string): ipfs://QmUfCR4yxGy3bajVFuLuNRix6JGNiCsRHxjf8wkkEknq8A

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [3] : 697066733a2f2f00000000000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000035
Arg [5] : 697066733a2f2f516d5566435234797847793362616a5646754c754e52697836
Arg [6] : 4a474e6943735248786a6638776b6b456b6e7138410000000000000000000000


Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.