Contract 0x3616d477302587c64bb8aa7abfc8258c05f75c0e

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x17887f8efad287065625fe2b6fb316870b23126834443a509f9f2834091faf8fTransfer Tld Own...121475682022-05-15 16:02:55198 days 7 hrs ago0xb29050965a5ac70ab487aa47546cdcbc97dae45d IN  0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH0.000116519256 ETH
0xc498c54dcebab7457044bdf4feb03505cb6f27ffc40495abad438600b5727870Toggle Paused121474042022-05-15 16:00:04198 days 7 hrs ago0xb29050965a5ac70ab487aa47546cdcbc97dae45d IN  0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH0.000118699622 ETH
0x8b4e4a7c12e91ed71be573f2f4f0db4754d301eaa3ed4d3d373862b8d6530f18Mint121339722022-05-15 12:36:56198 days 11 hrs ago0x5fdd97c6b27050b30390113927f8119649e09d57 IN  0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH0.000231086465 ETH
0x85fa9595d737a6c79583b9aea5ac81669515e1723ddcfefd662b834282687faeMint121233062022-05-15 10:01:10198 days 13 hrs ago0x8dcdb62c6fd8a666d2b8d831bcd923a124361052 IN  0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH0.000201487498 ETH
0x54b89e91573969a84f473c17885a540c376ed2ba1050f84df1484748405c9e4aMint121220772022-05-15 9:44:47198 days 14 hrs ago0x65671d9432d75f70c6878cbcbed95503538d9da6 IN  0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH0.000216015126 ETH
0x189fcbd9c79673cfa99005577c363e9f8fd7607e4833e5e40eb682041d3099b2Mint121215712022-05-15 9:38:09198 days 14 hrs ago0x65671d9432d75f70c6878cbcbed95503538d9da6 IN  0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH0.000239934899 ETH
0xaa989d54f65714c4a3fb3de17f68d6f7b5fb03e3f4296d3d6975cc75a99dcfa3Mint120821752022-05-14 21:31:49199 days 2 hrs ago0x25217b4a6138350350a2ce1f97a6b0111bbfdb56 IN  0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH0.000308500745 ETH
0xf05bb258116e45f453ff73939774e30db4264d08c9fcc1939811eaed5e261c4cMint120763242022-05-14 19:01:48199 days 4 hrs ago0x8dcdb62c6fd8a666d2b8d831bcd923a124361052 IN  0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH0.000374041598 ETH
0x8f750d38e38b50a65138a5d8937c4f4b48303533861928188e6062ecff53f31bMint120756142022-05-14 18:45:47199 days 5 hrs ago0xdcb4d67d6400df01733a1aaeb4d7d5bf54fffb32 IN  0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH0.00037345617 ETH
0x56cce5953ae051de0771090ae429d9fcf19e751102342267e3d23f5b543ebf28Mint120104602022-05-14 0:08:47199 days 23 hrs ago0xff9528c2ecb1e121deb892034be165c2551bab4b IN  0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH0.000625453299 ETH
0x5b022b36bdc2fac843d30d0bc45eed780fbdb306b45039e2505245d31cfb102cMint119951222022-05-13 17:47:44200 days 6 hrs ago0xd870b3fcd2ca9d1d374a6f95a31d6612f58d6251 IN  0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH0.000802466542 ETH
0xbebdf755dc2342feec0980be19de251bb9e0eccc2dc58158d33191141cd47312Mint119941692022-05-13 17:29:23200 days 6 hrs ago0x0c8f20da3247c28ee283bb334a6a356858f9d125 IN  0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH0.000799200987 ETH
0x580a89c289c2e871198c52806128d64d28994b131473e8c559993a1fa0a7247cMint119652162022-05-13 8:17:22200 days 15 hrs ago0xfdfe0847cd314d7c3855a6f19d83e92355cd4e8a IN  0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH0.001099809506 ETH
0x6b295cfd3973b3dff639098412557f18f827754112fbcac1060fd7ee71d1820bMint119651952022-05-13 8:17:22200 days 15 hrs ago0xfdfe0847cd314d7c3855a6f19d83e92355cd4e8a IN  0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH0.001118744264 ETH
0x15215783270629ef421be3205e719358df136f25f8107c1f7176ec50e8392d17Mint119651792022-05-13 8:17:22200 days 15 hrs ago0xfdfe0847cd314d7c3855a6f19d83e92355cd4e8a IN  0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH0.001106659192 ETH
0x97b5ca9804d9bffdc01282deda8a4e116795781cd284c8c969cfbc6b917941d9Mint119424272022-05-12 23:52:47200 days 23 hrs ago0x6af51cd063b852761041192b38f40a9cccab4fc9 IN  0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH0.001665845239 ETH
0xff43c008dbbcb8d23a79c23497441fb6561be9ebe11e544bf43985d7e49264e0Mint119163522022-05-12 14:57:32201 days 8 hrs ago0x898688eba25755568eada6e3f30ef937322bd67d IN  0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH0.002633465095 ETH
0x5df00b120083041923db3cd5d5e8ad91826a5814f2cb0c34abbcf03cb8114a84Mint118863342022-05-12 7:57:30201 days 15 hrs ago0xd035dfe329f35946edd486ce51b383133f6b2f5a IN  0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH0.003740827146 ETH
0x2f7eef66ead5e66318b8299e04117a93e034a16fed1247a69364a02435611b46Mint118489252022-05-12 0:37:53201 days 23 hrs ago0x147235e22489f52fc285ac39f9da18ca4db72696 IN  0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH0.00120302884 ETH
0x214289a32fbdc7e38379f8948ef4754343930211e21c688e0b32d14670aa6016Mint118448952022-05-11 23:43:01202 days 5 mins ago0x86bfc23c142a9774d6a7bb83d07dc6380a1ab16c IN  0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH0.00109173634 ETH
0x2cd909ab9b8c2ecb73829d61ac605db89ae3d6b475482c396d1ead619fad32f6Mint118441712022-05-11 23:32:19202 days 15 mins ago0x86bfc23c142a9774d6a7bb83d07dc6380a1ab16c IN  0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH0.001085276768 ETH
0x335783814149280b490126d3f80221893dcd18d92957367b2f7a06eabd23fd82Mint118416192022-05-11 22:49:46202 days 58 mins ago0x10e19ba32927b28eb5424f7b6a3e2eaa5a607f47 IN  0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH0.00107239399 ETH
0x009c4f6a116d5e51a50d2778f6aacdd587cf7df9a8d64fecdbd4946dbf864de8Mint118415722022-05-11 22:49:46202 days 58 mins ago0x10e19ba32927b28eb5424f7b6a3e2eaa5a607f47 IN  0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH0.001212524677 ETH
0x77a5021445acafa79c017e5438639d32d0d87b45a04daac1deab2359c3df804dMint118395272022-05-11 22:16:57202 days 1 hr ago0x86bfc23c142a9774d6a7bb83d07dc6380a1ab16c IN  0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH0.001162967752 ETH
0x81e63da6689c6724f96ceb14fc4823f12dc903a12c3ab443eb6a6d52d32c5853Mint117497022022-05-11 2:24:40202 days 21 hrs ago0x6841398685e4a7ab313c6c6f3c72822c461aa8c7 IN  0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH0.000355358149 ETH
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x17887f8efad287065625fe2b6fb316870b23126834443a509f9f2834091faf8f121475682022-05-15 16:02:55198 days 7 hrs ago 0x3616d477302587c64bb8aa7abfc8258c05f75c0e 0xe0d972817e94c5ff9bdc49a63d8927a0ba833e4f0 ETH
0x38b721a5efe818c4af0a61ab5f8c85677d11ea32ebc75e47ed141273b47203df121472722022-05-15 15:58:45198 days 7 hrs ago 0xa929891a6e69e301e113536a552be8af21601252 0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH
0x8b4e4a7c12e91ed71be573f2f4f0db4754d301eaa3ed4d3d373862b8d6530f18121339722022-05-15 12:36:56198 days 11 hrs ago 0xe0d972817e94c5ff9bdc49a63d8927a0ba833e4f 0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH
0x8b4e4a7c12e91ed71be573f2f4f0db4754d301eaa3ed4d3d373862b8d6530f18121339722022-05-15 12:36:56198 days 11 hrs ago 0x3616d477302587c64bb8aa7abfc8258c05f75c0e 0x3f770ac673856f105b586bb393d122721265ad460 ETH
0x8b4e4a7c12e91ed71be573f2f4f0db4754d301eaa3ed4d3d373862b8d6530f18121339722022-05-15 12:36:56198 days 11 hrs ago 0x3616d477302587c64bb8aa7abfc8258c05f75c0e 0x3f770ac673856f105b586bb393d122721265ad460 ETH
0x8b4e4a7c12e91ed71be573f2f4f0db4754d301eaa3ed4d3d373862b8d6530f18121339722022-05-15 12:36:56198 days 11 hrs ago 0x3616d477302587c64bb8aa7abfc8258c05f75c0e 0xe0d972817e94c5ff9bdc49a63d8927a0ba833e4f0 ETH
0x8b4e4a7c12e91ed71be573f2f4f0db4754d301eaa3ed4d3d373862b8d6530f18121339722022-05-15 12:36:56198 days 11 hrs ago 0x3616d477302587c64bb8aa7abfc8258c05f75c0eTreasure DAO: Magic Token0 ETH
0x8b4e4a7c12e91ed71be573f2f4f0db4754d301eaa3ed4d3d373862b8d6530f18121339722022-05-15 12:36:56198 days 11 hrs ago 0x3616d477302587c64bb8aa7abfc8258c05f75c0eTreasure DAO: Magic Token0 ETH
0x8b4e4a7c12e91ed71be573f2f4f0db4754d301eaa3ed4d3d373862b8d6530f18121339722022-05-15 12:36:56198 days 11 hrs ago 0x3616d477302587c64bb8aa7abfc8258c05f75c0e 0xe0d972817e94c5ff9bdc49a63d8927a0ba833e4f0 ETH
0x8b4e4a7c12e91ed71be573f2f4f0db4754d301eaa3ed4d3d373862b8d6530f18121339722022-05-15 12:36:56198 days 11 hrs ago 0x3616d477302587c64bb8aa7abfc8258c05f75c0e Smolverse: Smol Brains0 ETH
0x85fa9595d737a6c79583b9aea5ac81669515e1723ddcfefd662b834282687fae121233062022-05-15 10:01:10198 days 13 hrs ago 0xe0d972817e94c5ff9bdc49a63d8927a0ba833e4f 0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH
0x85fa9595d737a6c79583b9aea5ac81669515e1723ddcfefd662b834282687fae121233062022-05-15 10:01:10198 days 13 hrs ago 0x3616d477302587c64bb8aa7abfc8258c05f75c0e 0x3f770ac673856f105b586bb393d122721265ad460 ETH
0x85fa9595d737a6c79583b9aea5ac81669515e1723ddcfefd662b834282687fae121233062022-05-15 10:01:10198 days 13 hrs ago 0x3616d477302587c64bb8aa7abfc8258c05f75c0e 0x3f770ac673856f105b586bb393d122721265ad460 ETH
0x85fa9595d737a6c79583b9aea5ac81669515e1723ddcfefd662b834282687fae121233062022-05-15 10:01:10198 days 13 hrs ago 0x3616d477302587c64bb8aa7abfc8258c05f75c0e 0xe0d972817e94c5ff9bdc49a63d8927a0ba833e4f0 ETH
0x85fa9595d737a6c79583b9aea5ac81669515e1723ddcfefd662b834282687fae121233062022-05-15 10:01:10198 days 13 hrs ago 0x3616d477302587c64bb8aa7abfc8258c05f75c0eTreasure DAO: Magic Token0 ETH
0x85fa9595d737a6c79583b9aea5ac81669515e1723ddcfefd662b834282687fae121233062022-05-15 10:01:10198 days 13 hrs ago 0x3616d477302587c64bb8aa7abfc8258c05f75c0eTreasure DAO: Magic Token0 ETH
0x85fa9595d737a6c79583b9aea5ac81669515e1723ddcfefd662b834282687fae121233062022-05-15 10:01:10198 days 13 hrs ago 0x3616d477302587c64bb8aa7abfc8258c05f75c0e 0xe0d972817e94c5ff9bdc49a63d8927a0ba833e4f0 ETH
0x85fa9595d737a6c79583b9aea5ac81669515e1723ddcfefd662b834282687fae121233062022-05-15 10:01:10198 days 13 hrs ago 0x3616d477302587c64bb8aa7abfc8258c05f75c0e Smolverse: Smol Brains0 ETH
0x54b89e91573969a84f473c17885a540c376ed2ba1050f84df1484748405c9e4a121220772022-05-15 9:44:47198 days 14 hrs ago 0xe0d972817e94c5ff9bdc49a63d8927a0ba833e4f 0x3616d477302587c64bb8aa7abfc8258c05f75c0e0 ETH
0x54b89e91573969a84f473c17885a540c376ed2ba1050f84df1484748405c9e4a121220772022-05-15 9:44:47198 days 14 hrs ago 0x3616d477302587c64bb8aa7abfc8258c05f75c0e 0x3f770ac673856f105b586bb393d122721265ad460 ETH
0x54b89e91573969a84f473c17885a540c376ed2ba1050f84df1484748405c9e4a121220772022-05-15 9:44:47198 days 14 hrs ago 0x3616d477302587c64bb8aa7abfc8258c05f75c0e 0x3f770ac673856f105b586bb393d122721265ad460 ETH
0x54b89e91573969a84f473c17885a540c376ed2ba1050f84df1484748405c9e4a121220772022-05-15 9:44:47198 days 14 hrs ago 0x3616d477302587c64bb8aa7abfc8258c05f75c0e 0xe0d972817e94c5ff9bdc49a63d8927a0ba833e4f0 ETH
0x54b89e91573969a84f473c17885a540c376ed2ba1050f84df1484748405c9e4a121220772022-05-15 9:44:47198 days 14 hrs ago 0x3616d477302587c64bb8aa7abfc8258c05f75c0eTreasure DAO: Magic Token0 ETH
0x54b89e91573969a84f473c17885a540c376ed2ba1050f84df1484748405c9e4a121220772022-05-15 9:44:47198 days 14 hrs ago 0x3616d477302587c64bb8aa7abfc8258c05f75c0eTreasure DAO: Magic Token0 ETH
0x54b89e91573969a84f473c17885a540c376ed2ba1050f84df1484748405c9e4a121220772022-05-15 9:44:47198 days 14 hrs ago 0x3616d477302587c64bb8aa7abfc8258c05f75c0e 0xe0d972817e94c5ff9bdc49a63d8927a0ba833e4f0 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SmolPunkDomains

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 9 : SmolPunkDomains.sol
// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity ^0.8.4;

import "../../interfaces/IPunkTLD.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";

contract SmolPunkDomains is Ownable, ReentrancyGuard {
  address[] public supportedNfts; // whitelisted Smolverse NFT addresses
  bool public paused = true;

  uint256 public price; // domain price in $MAGIC
  uint256 public royaltyFee = 2_000; // share of each domain purchase (in bips) that goes to Punk Domains
  uint256 public referralFee = 1_000; // share of each domain purchase (in bips) that goes to the referrer
  uint256 public constant MAX_BPS = 10_000;

  // $MAGIC contract
  IERC20 public immutable magic;

  // TLD contract (.smol)
  IPunkTLD public immutable tldContract;

  // EVENTS
  event PriceChanged(address indexed user, uint256 price_);
  event ReferralChanged(address indexed user, uint256 referral_);
  event RoyaltyChanged(address indexed user, uint256 royalty_);

  // CONSTRUCTOR
  constructor(
    address _nftAddress, // the first whitelisted NFT address
    address _tldAddress,
    address _magicAddress,
    uint256 _price
  ) {
    supportedNfts.push(_nftAddress);
    tldContract = IPunkTLD(_tldAddress);
    magic = IERC20(_magicAddress);
    price = _price;
  }

  // READ

  /// @notice Returns true or false if address is eligible to mint a .smol domain
  function canUserMint(address _user) public view returns(bool canMint) {
    IERC721Enumerable nftContract;
    for (uint256 i = 0; i < supportedNfts.length && !canMint; i++) {
      nftContract = IERC721Enumerable(supportedNfts[i]);

      if (nftContract.balanceOf(_user) > 0) {
        canMint = true;
      }
    }

    return canMint;
  }

  function getSupportedNftsArrayLength() public view returns(uint) {
    return supportedNfts.length;
  }

  function getSupportedNftsArray() public view returns(address[] memory) {
    return supportedNfts;
  }

  // WRITE

  /// @notice A $MAGIC approval transaction is needed to be made before minting
  function mint(
    string memory _domainName,
    address _domainHolder,
    address _referrer
  ) external nonReentrant returns(uint256) {
    require(!paused, "Minting paused");
    require(canUserMint(msg.sender), "User cannot mint a domain");

    // send royalty fee
    uint256 royaltyPayment = (price * royaltyFee) / MAX_BPS;
    uint256 ownerPayment = price - royaltyPayment;
    magic.transferFrom(msg.sender, tldContract.getFactoryOwner(), royaltyPayment);

    // send referral fee
    if (referralFee > 0 && _referrer != address(0)) {
      uint256 referralPayment = (price * referralFee) / MAX_BPS;
      ownerPayment -= referralPayment;
      magic.transferFrom(msg.sender, _referrer, referralPayment);
    }

    // send the rest to the owner
    magic.transferFrom(msg.sender, owner(), ownerPayment);

    return tldContract.mint{value: 0}(_domainName, _domainHolder, address(0));
  }

  // OWNER

  /// @notice Owner can whitelist an NFT address
  function addWhitelistedNftContract(address _nftAddress) external onlyOwner {
    supportedNfts.push(_nftAddress);
  }

  /// @notice Change max domain name length in the TLD contract
  function changeMaxDomainNameLength(uint256 _maxLength) external onlyOwner {
    tldContract.changeNameMaxLength(_maxLength);
  }

  /// @notice Change NFT metadata description in the TLD contract
  function changeTldDescription(string calldata _description) external onlyOwner {
    tldContract.changeDescription(_description);
  }

  /// @notice This changes price in the wrapper contract
  function changePrice(uint256 _price) external onlyOwner {
    require(_price > 0, "Cannot be zero");
    price = _price;
    emit PriceChanged(msg.sender, _price);
  }

  /// @notice This changes referral fee in the wrapper contract
  function changeReferralFee(uint256 _referral) external onlyOwner {
    require(_referral <= 2000, "Cannot exceed 20%");
    referralFee = _referral;
    emit ReferralChanged(msg.sender, _referral);
  }

  /// @notice Owner can mint a domain without holding/using an NFT
  function ownerMintDomain(
    string memory _domainName,
    address _domainHolder
  ) external nonReentrant onlyOwner returns(uint256) {
    return tldContract.mint{value: 0}(_domainName, _domainHolder, address(0));
  }

  /// @notice Recover any ERC-20 token mistakenly sent to this contract address
  function recoverERC20(address tokenAddress_, uint256 tokenAmount_, address recipient_) external onlyOwner {
    IERC20(tokenAddress_).transfer(recipient_, tokenAmount_);
  }

  /// @notice Recover any ERC-721 token mistakenly sent to this contract address
  function recoverERC721(address tokenAddress_, uint256 tokenId_, address recipient_) external onlyOwner {
    IERC721Enumerable(tokenAddress_).transferFrom(address(this), recipient_, tokenId_);
  }

  /// @notice Owner can remove whitelisted NFT address
  function removeWhitelistedNftContract(uint _nftIndex) external onlyOwner {
    supportedNfts[_nftIndex] = supportedNfts[supportedNfts.length - 1];
    supportedNfts.pop();
  }

  /// @notice Transfer .smol TLD ownership to another address
  function transferTldOwnership(address _newTldOwner) external onlyOwner {
    tldContract.transferOwnership(_newTldOwner);
  }

  function togglePaused() external onlyOwner {
    paused = !paused;
  }

  // withdraw ETH from contract
  function withdraw() external onlyOwner {
    (bool success, ) = owner().call{value: address(this).balance}("");
    require(success, "Failed to withdraw ETH from contract");
  }

  // FACTORY OWNER

  /// @notice This changes royalty fee in the wrapper contract (cannot exceed 2000 bps or 20%)
  function changeRoyaltyFee(uint256 _royalty) external {
    require(_royalty <= 2000, "Cannot exceed 20%");
    require(msg.sender == tldContract.getFactoryOwner(), "Wrapper: Caller is not Factory owner");
    royaltyFee = _royalty;
    emit RoyaltyChanged(msg.sender, _royalty);
  }

  // RECEIVE & FALLBACK
  receive() external payable {}
  fallback() external payable {}
}

File 2 of 9 : IPunkTLD.sol
// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity ^0.8.4;

import "@openzeppelin/contracts/token/ERC721/IERC721.sol";

interface IPunkTLD is IERC721 {
  event DomainCreated(address indexed user, address indexed owner, string fullDomainName);
  event DefaultDomainChanged(address indexed user, string defaultDomain);

  function getDomainHolder(string calldata _domainName) external view returns(address);

  function getFactoryOwner() external view returns(address);

  function price() external view returns (uint256);
  function referral() external view returns (uint256);

  function changeDescription(string calldata _description) external;

  function changeNameMaxLength(uint256 _maxLength) external;

  function changePrice(uint256 _price) external;

  function changeReferralFee(uint256 _referral) external;

  function mint(
    string memory _domainName,
    address _domainHolder,
    address _referrer
  ) external payable returns(uint256);

  function transferOwnership(address newOwner) external;

}

File 3 of 9 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (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 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 {
        _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 4 of 9 : ReentrancyGuard.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and making it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}

File 5 of 9 : IERC721Enumerable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Enumerable.sol)

pragma solidity ^0.8.0;

import "../IERC721.sol";

/**
 * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Enumerable is IERC721 {
    /**
     * @dev Returns the total amount of tokens stored by the contract.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns a token ID owned by `owner` at a given `index` of its token list.
     * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.
     */
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);

    /**
     * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.
     * Use along with {totalSupply} to enumerate all tokens.
     */
    function tokenByIndex(uint256 index) external view returns (uint256);
}

File 6 of 9 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 7 of 9 : IERC721.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)

pragma solidity ^0.8.0;

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

/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool _approved) external;

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}

File 8 of 9 : IERC165.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

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

File 9 of 9 : 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
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_nftAddress","type":"address"},{"internalType":"address","name":"_tldAddress","type":"address"},{"internalType":"address","name":"_magicAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"price_","type":"uint256"}],"name":"PriceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"referral_","type":"uint256"}],"name":"ReferralChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"royalty_","type":"uint256"}],"name":"RoyaltyChanged","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"MAX_BPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_nftAddress","type":"address"}],"name":"addWhitelistedNftContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"canUserMint","outputs":[{"internalType":"bool","name":"canMint","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxLength","type":"uint256"}],"name":"changeMaxDomainNameLength","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"changePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_referral","type":"uint256"}],"name":"changeReferralFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_royalty","type":"uint256"}],"name":"changeRoyaltyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_description","type":"string"}],"name":"changeTldDescription","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getSupportedNftsArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSupportedNftsArrayLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"magic","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_domainName","type":"string"},{"internalType":"address","name":"_domainHolder","type":"address"},{"internalType":"address","name":"_referrer","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_domainName","type":"string"},{"internalType":"address","name":"_domainHolder","type":"address"}],"name":"ownerMintDomain","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress_","type":"address"},{"internalType":"uint256","name":"tokenAmount_","type":"uint256"},{"internalType":"address","name":"recipient_","type":"address"}],"name":"recoverERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"},{"internalType":"address","name":"recipient_","type":"address"}],"name":"recoverERC721","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"referralFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nftIndex","type":"uint256"}],"name":"removeWhitelistedNftContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"royaltyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"supportedNfts","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tldContract","outputs":[{"internalType":"contract IPunkTLD","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"togglePaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newTldOwner","type":"address"}],"name":"transferTldOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526003805460ff191660011790556107d06005556103e86006553480156200002a57600080fd5b5060405162001cc038038062001cc08339810160408190526200004d916200013a565b6200005833620000cd565b60018080556002805491820181556000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b039095166001600160a01b0319909516949094179093556001600160601b0319606092831b811660a052911b166080526004556200018b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200013557600080fd5b919050565b6000806000806080858703121562000150578384fd5b6200015b856200011d565b93506200016b602086016200011d565b92506200017b604086016200011d565b6060959095015193969295505050565b60805160601c60a05160601c611ac3620001fd6000396000818161033e015281816105820152818161087001528181610ba001528181610e5e01528181610f43015281816112e101526113590152600081816101be01528181610b7001528181610d050152610d950152611ac36000f3fe6080604052600436106101a35760003560e01c80639895791b116100e0578063b994362111610084578063e904633e11610061578063e904633e146104bf578063f0e9fcd1146104df578063f2fde38b146104ff578063fd967f471461051f57005b8063b99436211461046a578063c73cb3bf1461048a578063c83692a4146104aa57005b8063a2b40d19116100bd578063a2b40d19146103f4578063abc6876b14610414578063b51609b414610434578063b8997a971461045457005b80639895791b1461039e578063a035b1fe146103be578063a09091df146103d457005b8063715018a61161014757806384ae2bc61161012457806384ae2bc61461031657806385eb407e1461032c5780638915f1e8146103605780638da5cb5b1461038057005b8063715018a6146102c157806378a6743b146102d65780637e6d945e146102f657005b80633ccfd60b116101805780633ccfd60b146102325780633e901a1f146102475780635247aedb146102755780635c975abb1461029757005b80630d854646146101ac5780631172a704146101fd57806336566f061461021d57005b366101aa57005b005b3480156101b857600080fd5b506101e07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561020957600080fd5b506101aa61021836600461185d565b610535565b34801561022957600080fd5b506101aa6106bb565b34801561023e57600080fd5b506101aa6106f9565b34801561025357600080fd5b506102676102623660046117b6565b6107d5565b6040519081526020016101f4565b34801561028157600080fd5b5061028a610909565b6040516101f491906118b1565b3480156102a357600080fd5b506003546102b19060ff1681565b60405190151581526020016101f4565b3480156102cd57600080fd5b506101aa61096b565b3480156102e257600080fd5b506101aa6102f136600461185d565b6109a1565b34801561030257600080fd5b50610267610311366004611806565b610a48565b34801561032257600080fd5b5061026760065481565b34801561033857600080fd5b506101e07f000000000000000000000000000000000000000000000000000000000000000081565b34801561036c57600080fd5b506101aa61037b3660046116a9565b610efa565b34801561038c57600080fd5b506000546001600160a01b03166101e0565b3480156103aa57600080fd5b506101aa6103b93660046116a9565b610fa3565b3480156103ca57600080fd5b5061026760045481565b3480156103e057600080fd5b506101e06103ef36600461185d565b61101f565b34801561040057600080fd5b506101aa61040f36600461185d565b611049565b34801561042057600080fd5b506101aa61042f36600461185d565b6110eb565b34801561044057600080fd5b506101aa61044f3660046116e8565b6111ef565b34801561046057600080fd5b5061026760055481565b34801561047657600080fd5b506101aa61048536600461185d565b6112a1565b34801561049657600080fd5b506101aa6104a5366004611749565b611318565b3480156104b657600080fd5b50600254610267565b3480156104cb57600080fd5b506102b16104da3660046116a9565b6113c6565b3480156104eb57600080fd5b506101aa6104fa3660046116e8565b6114ad565b34801561050b57600080fd5b506101aa61051a3660046116a9565b61153e565b34801561052b57600080fd5b5061026761271081565b6107d08111156105805760405162461bcd60e51b815260206004820152601160248201527043616e6e6f74206578636565642032302560781b60448201526064015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e09bda6b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105d957600080fd5b505afa1580156105ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061191906116cc565b6001600160a01b0316336001600160a01b03161461067d5760405162461bcd60e51b8152602060048201526024808201527f577261707065723a2043616c6c6572206973206e6f7420466163746f7279206f6044820152633bb732b960e11b6064820152608401610577565b600581905560405181815233907f02365318429bf1d603e8383b62068288a077545c5c9e709201d563b3f56ce2b3906020015b60405180910390a250565b6000546001600160a01b031633146106e55760405162461bcd60e51b8152600401610577906119a6565b6003805460ff19811660ff90911615179055565b6000546001600160a01b031633146107235760405162461bcd60e51b8152600401610577906119a6565b600080546040516001600160a01b039091169047908381818185875af1925050503d8060008114610770576040519150601f19603f3d011682016040523d82523d6000602084013e610775565b606091505b50509050806107d25760405162461bcd60e51b8152602060048201526024808201527f4661696c656420746f207769746864726177204554482066726f6d20636f6e746044820152631c9858dd60e21b6064820152608401610577565b50565b60006002600154141561082a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610577565b60026001556000546001600160a01b031633146108595760405162461bcd60e51b8152600401610577906119a6565b604051633f36ca2f60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637e6d945e906000906108ac9087908790849060040161192d565b6020604051808303818588803b1580156108c557600080fd5b505af11580156108d9573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906108fe9190611875565b600180559392505050565b6060600280548060200260200160405190810160405280929190818152602001828054801561096157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610943575b5050505050905090565b6000546001600160a01b031633146109955760405162461bcd60e51b8152600401610577906119a6565b61099f60006115d2565b565b6000546001600160a01b031633146109cb5760405162461bcd60e51b8152600401610577906119a6565b6107d0811115610a115760405162461bcd60e51b815260206004820152601160248201527043616e6e6f74206578636565642032302560781b6044820152606401610577565b600681905560405181815233907f1fcad2f4f800cfe435c73ae0f8a73143dc357f945aa00af5f1cb5fb2421dcbe5906020016106b0565b600060026001541415610a9d5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610577565b600260015560035460ff1615610ae65760405162461bcd60e51b815260206004820152600e60248201526d135a5b9d1a5b99c81c185d5cd95960921b6044820152606401610577565b610aef336113c6565b610b3b5760405162461bcd60e51b815260206004820152601960248201527f557365722063616e6e6f74206d696e74206120646f6d61696e000000000000006044820152606401610577565b6000612710600554600454610b5091906119fb565b610b5a91906119db565b9050600081600454610b6c9190611a1a565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166323b872dd337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e09bda6b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610bf757600080fd5b505afa158015610c0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2f91906116cc565b856040518463ffffffff1660e01b8152600401610c4e9392919061188d565b602060405180830381600087803b158015610c6857600080fd5b505af1158015610c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca09190611729565b506000600654118015610cbb57506001600160a01b03841615155b15610d93576000612710600654600454610cd591906119fb565b610cdf91906119db565b9050610ceb8183611a1a565b6040516323b872dd60e01b81529092506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd90610d3e9033908990869060040161188d565b602060405180830381600087803b158015610d5857600080fd5b505af1158015610d6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d909190611729565b50505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166323b872dd33610dd56000546001600160a01b031690565b846040518463ffffffff1660e01b8152600401610df49392919061188d565b602060405180830381600087803b158015610e0e57600080fd5b505af1158015610e22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e469190611729565b50604051633f36ca2f60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637e6d945e90600090610e9a908a908a90849060040161192d565b6020604051808303818588803b158015610eb357600080fd5b505af1158015610ec7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610eec9190611875565b600180559695505050505050565b6000546001600160a01b03163314610f245760405162461bcd60e51b8152600401610577906119a6565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b906024015b600060405180830381600087803b158015610f8857600080fd5b505af1158015610f9c573d6000803e3d6000fd5b5050505050565b6000546001600160a01b03163314610fcd5760405162461bcd60e51b8152600401610577906119a6565b600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b0392909216919091179055565b6002818154811061102f57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031633146110735760405162461bcd60e51b8152600401610577906119a6565b600081116110b45760405162461bcd60e51b815260206004820152600e60248201526d43616e6e6f74206265207a65726f60901b6044820152606401610577565b600481905560405181815233907f8f012475d3b98d9007b927bfddd4f78c3e0465e69ec5d9795a19dbc3a04e0a68906020016106b0565b6000546001600160a01b031633146111155760405162461bcd60e51b8152600401610577906119a6565b6002805461112590600190611a1a565b8154811061114357634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600280546001600160a01b03909216918390811061117d57634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060028054806111ca57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000546001600160a01b031633146112195760405162461bcd60e51b8152600401610577906119a6565b60405163a9059cbb60e01b81526001600160a01b0382811660048301526024820184905284169063a9059cbb90604401602060405180830381600087803b15801561126357600080fd5b505af1158015611277573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129b9190611729565b50505050565b6000546001600160a01b031633146112cb5760405162461bcd60e51b8152600401610577906119a6565b604051635dedf3b560e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dedf3b590602401610f6e565b6000546001600160a01b031633146113425760405162461bcd60e51b8152600401610577906119a6565b60405163e612041360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e61204139061139090859085906004016118fe565b600060405180830381600087803b1580156113aa57600080fd5b505af11580156113be573d6000803e3d6000fd5b505050505050565b60008060005b600254811080156113db575082155b156114a6576002818154811061140157634e487b7160e01b600052603260045260246000fd5b60009182526020822001546040516370a0823160e01b81526001600160a01b038781166004830152909116935083906370a082319060240160206040518083038186803b15801561145157600080fd5b505afa158015611465573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114899190611875565b111561149457600192505b8061149e81611a31565b9150506113cc565b5050919050565b6000546001600160a01b031633146114d75760405162461bcd60e51b8152600401610577906119a6565b6040516323b872dd60e01b81526001600160a01b038416906323b872dd906115079030908590879060040161188d565b600060405180830381600087803b15801561152157600080fd5b505af1158015611535573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031633146115685760405162461bcd60e51b8152600401610577906119a6565b6001600160a01b0381166115cd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610577565b6107d2815b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600082601f830112611632578081fd5b813567ffffffffffffffff8082111561164d5761164d611a62565b604051601f8301601f19908116603f0116810190828211818310171561167557611675611a62565b8160405283815286602085880101111561168d578485fd5b8360208701602083013792830160200193909352509392505050565b6000602082840312156116ba578081fd5b81356116c581611a78565b9392505050565b6000602082840312156116dd578081fd5b81516116c581611a78565b6000806000606084860312156116fc578182fd5b833561170781611a78565b925060208401359150604084013561171e81611a78565b809150509250925092565b60006020828403121561173a578081fd5b815180151581146116c5578182fd5b6000806020838503121561175b578182fd5b823567ffffffffffffffff80821115611772578384fd5b818501915085601f830112611785578384fd5b813581811115611793578485fd5b8660208285010111156117a4578485fd5b60209290920196919550909350505050565b600080604083850312156117c8578182fd5b823567ffffffffffffffff8111156117de578283fd5b6117ea85828601611622565b92505060208301356117fb81611a78565b809150509250929050565b60008060006060848603121561181a578283fd5b833567ffffffffffffffff811115611830578384fd5b61183c86828701611622565b935050602084013561184d81611a78565b9150604084013561171e81611a78565b60006020828403121561186e578081fd5b5035919050565b600060208284031215611886578081fd5b5051919050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6020808252825182820181905260009190848201906040850190845b818110156118f25783516001600160a01b0316835292840192918401916001016118cd565b50909695505050505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6060815260008451806060840152815b8181101561195a576020818801810151608086840101520161193d565b8181111561196b5782608083860101525b506001600160a01b0385166020840152601f01601f19168201608001905061199e60408301846001600160a01b03169052565b949350505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000826119f657634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611a1557611a15611a4c565b500290565b600082821015611a2c57611a2c611a4c565b500390565b6000600019821415611a4557611a45611a4c565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146107d257600080fdfea2646970667358221220ae9b33b4213d5b2439ed0a801fc4d1c8141dd71d516350fc5d84373f1dcbcd0e64736f6c634300080400330000000000000000000000006325439389e0797ab35752b4f43a14c004f22a9c000000000000000000000000e0d972817e94c5ff9bdc49a63d8927a0ba833e4f000000000000000000000000539bde0d7dbd336b79148aa742883198bbf60342000000000000000000000000000000000000000000000001156abf16a40f0000

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

0000000000000000000000006325439389e0797ab35752b4f43a14c004f22a9c000000000000000000000000e0d972817e94c5ff9bdc49a63d8927a0ba833e4f000000000000000000000000539bde0d7dbd336b79148aa742883198bbf60342000000000000000000000000000000000000000000000001156abf16a40f0000

-----Decoded View---------------
Arg [0] : _nftAddress (address): 0x6325439389e0797ab35752b4f43a14c004f22a9c
Arg [1] : _tldAddress (address): 0xe0d972817e94c5ff9bdc49a63d8927a0ba833e4f
Arg [2] : _magicAddress (address): 0x539bde0d7dbd336b79148aa742883198bbf60342
Arg [3] : _price (uint256): 19990000000000000000

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000006325439389e0797ab35752b4f43a14c004f22a9c
Arg [1] : 000000000000000000000000e0d972817e94c5ff9bdc49a63d8927a0ba833e4f
Arg [2] : 000000000000000000000000539bde0d7dbd336b79148aa742883198bbf60342
Arg [3] : 000000000000000000000000000000000000000000000001156abf16a40f0000


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.