Contract 0xa8F498E42884677b4055bEE3cc9970f4A8555ff9 1

 
 
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0x09db4443dc20f136b5900e20a4bea3d47147cbf7622547af4f60b3f098b91206Create Collectio...404805332023-03-18 7:09:0813 days 9 hrs ago0x6a0304fc0a3a3af43beadccd7617ea419d3fdb9e IN  0xa8f498e42884677b4055bee3cc9970f4a8555ff920 MATIC0.08790894852 109.329289582
0xa910bf95152adf00ddbf726f32b040462094abdffd498c05c799992a313e7fffCreate Collectio...403976282023-03-16 4:05:2215 days 12 hrs ago0x4d6823b083a7d03bce47d50e224903016353b6c8 IN  0xa8f498e42884677b4055bee3cc9970f4a8555ff920 MATIC0.057198703322 55.502006969
0x355a10913f14a6551570a4d59e95cc3153e9171c462bfda772e40fa4e02cd732Create Collectio...397670112023-02-27 12:04:3832 days 4 hrs ago0x4d6823b083a7d03bce47d50e224903016353b6c8 IN  0xa8f498e42884677b4055bee3cc9970f4a8555ff920 MATIC0.219385192582 227.869219358
0xeff38fb4b8cb4433b24e26b4a05e08fa213f949f1333da00500ab7a855a21913Create Collectio...397670082023-02-27 12:04:2632 days 4 hrs ago0x4d6823b083a7d03bce47d50e224903016353b6c8 IN  0xa8f498e42884677b4055bee3cc9970f4a8555ff920 MATIC0.215230467433 223.553823386
0x3cd9aa324402b2206edccb852f8e3970f758f6ec73ce1e39ca7ed069df970facCreate Collectio...393008312023-02-15 0:11:5344 days 16 hrs ago0x6bb8aaa1a9cc209744cd1b1b4fd8e0b72cc606aa IN  0xa8f498e42884677b4055bee3cc9970f4a8555ff920 MATIC0.342717693527 415.901865246
0xcf568f70646549f318df1065eb8b51174eb180b4dc5929f6d482de91ca0e7a4eCreate Collectio...392008612023-02-12 7:29:4047 days 8 hrs ago0x4d6823b083a7d03bce47d50e224903016353b6c8 IN  0xa8f498e42884677b4055bee3cc9970f4a8555ff920 MATIC0.199238321617 198.16545385
0xd5dee37bb1338da638bed5b5968a0c03dd0ab83fa6cf8eef33c2e215ee45525aCreate Collectio...390908392023-02-09 9:10:4850 days 7 hrs ago0x4d6823b083a7d03bce47d50e224903016353b6c8 IN  0xa8f498e42884677b4055bee3cc9970f4a8555ff920 MATIC0.563353080502 599.549056118
0x7ab8a13dd5aebd674c6c16e30281a1bce0bff50d459031332c4447ee7be944baCreate Collectio...390422382023-02-08 3:36:1351 days 12 hrs ago0x943061fd67189f0bf1bfcd39f20018fbfaec527e IN  0xa8f498e42884677b4055bee3cc9970f4a8555ff920 MATIC0.172294789078 179.064873828
0xc85447d56b5c2c1006d89aea596f4aab1b38979b1e2bfe22c89577b65837347bCreate Collectio...390046242023-02-07 4:42:3552 days 11 hrs ago0x980cd99311f3b3264f5dfdce33d204a8d6d492e4 IN  0xa8f498e42884677b4055bee3cc9970f4a8555ff920 MATIC0.120797062181 127.726209021
0xaca4e9fb5c4c6bc400980a4e7ca92caae6652ed1a3f544418fc877fd363f1b52Create Collectio...387035502023-01-30 12:03:5660 days 4 hrs ago0x6a0304fc0a3a3af43beadccd7617ea419d3fdb9e IN  0xa8f498e42884677b4055bee3cc9970f4a8555ff920 MATIC0.078727039121 100.409201213
0x466d8fbd1e325b5f333bea27ebfb41e0288b07851155ff6cc3150db7adde1264Create Collectio...383089592023-01-20 12:18:4570 days 4 hrs ago0x6a0304fc0a3a3af43beadccd7617ea419d3fdb9e IN  0xa8f498e42884677b4055bee3cc9970f4a8555ff920 MATIC0.045791472691 56.964558077
0xb888a61ee4ede1b0a7639929d50ee4d5a3e7b70fd147438066acb91c9f9922b8Create Collectio...378560722023-01-09 8:29:3281 days 7 hrs ago0x980cd99311f3b3264f5dfdce33d204a8d6d492e4 IN  0xa8f498e42884677b4055bee3cc9970f4a8555ff920 MATIC0.052881058987 60.6252009
0x556d1fe42b57a901644532b42701b692c4097c576d446d080d63963e341a9e2cCreate Collectio...376168202023-01-03 9:15:0687 days 7 hrs ago0x980cd99311f3b3264f5dfdce33d204a8d6d492e4 IN  0xa8f498e42884677b4055bee3cc9970f4a8555ff920 MATIC0.044310080617 50.796953126
0x14291d983a15714f5bf672ae8ea3cf1a5afbbb0ca33262a3246dc317587d803cCreate Collectio...357550912022-11-18 9:08:21133 days 7 hrs ago0x97734bc44cffdfe0482aa8d0007f63ce64d5e732 IN  0xa8f498e42884677b4055bee3cc9970f4a8555ff920 MATIC0.034467037801 30.192371633
0xa7b03f7d4af2938c865c5cea808fa7a61a0e3df1392dc76eca434101637ad42aCreate Collectio...357542472022-11-18 8:37:12133 days 7 hrs ago0x97734bc44cffdfe0482aa8d0007f63ce64d5e732 IN  0xa8f498e42884677b4055bee3cc9970f4a8555ff920 MATIC0.032215170041 30.000000039
0x3459d5034c97fd28dd5e276301f346dad4428bd7f96d8e92c4630ecff157e9ddCreate Collectio...351925152022-11-04 13:52:51147 days 2 hrs ago0xff2c3da5a278e1f7a575f5e361366928cb57cbd5 IN  0xa8f498e42884677b4055bee3cc9970f4a8555ff920 MATIC0.561354767011 698.07481345
0x3a649a14b34667e1f8d7d4d3af47daef9df3e60a2e7956629fe0889a28bace8eCreate Collectio...351252202022-11-02 22:24:52148 days 18 hrs ago0x4d6823b083a7d03bce47d50e224903016353b6c8 IN  0xa8f498e42884677b4055bee3cc9970f4a8555ff920 MATIC0.040509533627 44.283022854
0xbe907d6a0907a9434277048dc6b1fd0875f835abb61e6c6f3a6eacc6e6d14a76Create Collectio...351020492022-11-02 8:41:50149 days 7 hrs ago0x4d6823b083a7d03bce47d50e224903016353b6c8 IN  0xa8f498e42884677b4055bee3cc9970f4a8555ff920 MATIC0.041785994299 46.707936527
0x1b8dfafeb93ce2560f483d8cb8e185c3ac35ddaf4c0ea751b11afe90cc33d3b0Create Collectio...350692112022-11-01 13:37:27150 days 2 hrs ago0x1721aa047f981e3517034234bf6d02b30cd1413e IN  0xa8f498e42884677b4055bee3cc9970f4a8555ff920 MATIC0.101436216624 129.402405751
0x2d4c67a15af9008cd656b34580f7cf7875ac75d0186d58a0ecf60480e9c6651cCreate Collectio...350526832022-11-01 3:51:59150 days 12 hrs ago0x4d6823b083a7d03bce47d50e224903016353b6c8 IN  0xa8f498e42884677b4055bee3cc9970f4a8555ff920 MATIC0.038218225677 42.827971569
0xc7b2e82f77821c2dde97fc4769a46155758958c0e994da51b578c8611f99e495Create Collectio...349886352022-10-30 13:49:10152 days 2 hrs ago0xbf7daaad338601b80b1e63f207767f7728bd5d2c IN  0xa8f498e42884677b4055bee3cc9970f4a8555ff920 MATIC0.029407753263 37.542307916
0xf0b09d645410976e0f77840740f485bc06c5732a180d823d0093470effd33c61Create Collectio...348957072022-10-28 7:44:20154 days 8 hrs ago0xccc403275f0955d9982bad8b9aea3e8ac3415bf5 IN  0xa8f498e42884677b4055bee3cc9970f4a8555ff920 MATIC0.047980043946 53.636854843
0xfa82a7017b0454f142a91e5813a54270b276666bbe0d1527131277edf2ecfca5Create Collectio...346078972022-10-21 6:37:32161 days 9 hrs ago0x4d6823b083a7d03bce47d50e224903016353b6c8 IN  0xa8f498e42884677b4055bee3cc9970f4a8555ff920 MATIC0.102549946595 114.779084112
0x1e53ab32a2c37e9132c971ebd52e8b8e43785db10d985164259dca51f7ce2921Create Collectio...344892832022-10-18 7:44:15164 days 8 hrs ago0xbf10d8ac3876686ae378dea436c60fb88e4cd2a4 IN  0xa8f498e42884677b4055bee3cc9970f4a8555ff920 MATIC0.091943606194 114.326577953
0xe8def3e6b1d89a31032cd6477f5229c736e36a8c2d4d090781b190962ea20426Create Collectio...343237122022-10-14 6:39:04168 days 9 hrs ago0xcdc4cc4244331125d1a550ac76e8744397c1f458 IN  0xa8f498e42884677b4055bee3cc9970f4a8555ff920 MATIC0.235869165864 293.405372626
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x09db4443dc20f136b5900e20a4bea3d47147cbf7622547af4f60b3f098b91206404805332023-03-18 7:09:0813 days 9 hrs ago 0xa8f498e42884677b4055bee3cc9970f4a8555ff9  Contract Creation0 MATIC
0x09db4443dc20f136b5900e20a4bea3d47147cbf7622547af4f60b3f098b91206404805332023-03-18 7:09:0813 days 9 hrs ago 0xa8f498e42884677b4055bee3cc9970f4a8555ff90x82ca6d313bffe56e9096b16633dfd414148d66b120 MATIC
0xa910bf95152adf00ddbf726f32b040462094abdffd498c05c799992a313e7fff403976282023-03-16 4:05:2215 days 12 hrs ago 0xa8f498e42884677b4055bee3cc9970f4a8555ff9  Contract Creation0 MATIC
0xa910bf95152adf00ddbf726f32b040462094abdffd498c05c799992a313e7fff403976282023-03-16 4:05:2215 days 12 hrs ago 0xa8f498e42884677b4055bee3cc9970f4a8555ff90x82ca6d313bffe56e9096b16633dfd414148d66b120 MATIC
0x355a10913f14a6551570a4d59e95cc3153e9171c462bfda772e40fa4e02cd732397670112023-02-27 12:04:3832 days 4 hrs ago 0xa8f498e42884677b4055bee3cc9970f4a8555ff9  Contract Creation0 MATIC
0x355a10913f14a6551570a4d59e95cc3153e9171c462bfda772e40fa4e02cd732397670112023-02-27 12:04:3832 days 4 hrs ago 0xa8f498e42884677b4055bee3cc9970f4a8555ff90x82ca6d313bffe56e9096b16633dfd414148d66b120 MATIC
0xeff38fb4b8cb4433b24e26b4a05e08fa213f949f1333da00500ab7a855a21913397670082023-02-27 12:04:2632 days 4 hrs ago 0xa8f498e42884677b4055bee3cc9970f4a8555ff9  Contract Creation0 MATIC
0xeff38fb4b8cb4433b24e26b4a05e08fa213f949f1333da00500ab7a855a21913397670082023-02-27 12:04:2632 days 4 hrs ago 0xa8f498e42884677b4055bee3cc9970f4a8555ff90x82ca6d313bffe56e9096b16633dfd414148d66b120 MATIC
0x3cd9aa324402b2206edccb852f8e3970f758f6ec73ce1e39ca7ed069df970fac393008312023-02-15 0:11:5344 days 16 hrs ago 0xa8f498e42884677b4055bee3cc9970f4a8555ff9  Contract Creation0 MATIC
0x3cd9aa324402b2206edccb852f8e3970f758f6ec73ce1e39ca7ed069df970fac393008312023-02-15 0:11:5344 days 16 hrs ago 0xa8f498e42884677b4055bee3cc9970f4a8555ff90x82ca6d313bffe56e9096b16633dfd414148d66b120 MATIC
0xcf568f70646549f318df1065eb8b51174eb180b4dc5929f6d482de91ca0e7a4e392008612023-02-12 7:29:4047 days 8 hrs ago 0xa8f498e42884677b4055bee3cc9970f4a8555ff9  Contract Creation0 MATIC
0xcf568f70646549f318df1065eb8b51174eb180b4dc5929f6d482de91ca0e7a4e392008612023-02-12 7:29:4047 days 8 hrs ago 0xa8f498e42884677b4055bee3cc9970f4a8555ff90x82ca6d313bffe56e9096b16633dfd414148d66b120 MATIC
0xd5dee37bb1338da638bed5b5968a0c03dd0ab83fa6cf8eef33c2e215ee45525a390908392023-02-09 9:10:4850 days 7 hrs ago 0xa8f498e42884677b4055bee3cc9970f4a8555ff9  Contract Creation0 MATIC
0xd5dee37bb1338da638bed5b5968a0c03dd0ab83fa6cf8eef33c2e215ee45525a390908392023-02-09 9:10:4850 days 7 hrs ago 0xa8f498e42884677b4055bee3cc9970f4a8555ff90x82ca6d313bffe56e9096b16633dfd414148d66b120 MATIC
0x7ab8a13dd5aebd674c6c16e30281a1bce0bff50d459031332c4447ee7be944ba390422382023-02-08 3:36:1351 days 12 hrs ago 0xa8f498e42884677b4055bee3cc9970f4a8555ff9  Contract Creation0 MATIC
0x7ab8a13dd5aebd674c6c16e30281a1bce0bff50d459031332c4447ee7be944ba390422382023-02-08 3:36:1351 days 12 hrs ago 0xa8f498e42884677b4055bee3cc9970f4a8555ff90x82ca6d313bffe56e9096b16633dfd414148d66b120 MATIC
0xc85447d56b5c2c1006d89aea596f4aab1b38979b1e2bfe22c89577b65837347b390046242023-02-07 4:42:3552 days 11 hrs ago 0xa8f498e42884677b4055bee3cc9970f4a8555ff9  Contract Creation0 MATIC
0xc85447d56b5c2c1006d89aea596f4aab1b38979b1e2bfe22c89577b65837347b390046242023-02-07 4:42:3552 days 11 hrs ago 0xa8f498e42884677b4055bee3cc9970f4a8555ff90x82ca6d313bffe56e9096b16633dfd414148d66b120 MATIC
0xaca4e9fb5c4c6bc400980a4e7ca92caae6652ed1a3f544418fc877fd363f1b52387035502023-01-30 12:03:5660 days 4 hrs ago 0xa8f498e42884677b4055bee3cc9970f4a8555ff9  Contract Creation0 MATIC
0xaca4e9fb5c4c6bc400980a4e7ca92caae6652ed1a3f544418fc877fd363f1b52387035502023-01-30 12:03:5660 days 4 hrs ago 0xa8f498e42884677b4055bee3cc9970f4a8555ff90x82ca6d313bffe56e9096b16633dfd414148d66b120 MATIC
0x466d8fbd1e325b5f333bea27ebfb41e0288b07851155ff6cc3150db7adde1264383089592023-01-20 12:18:4570 days 4 hrs ago 0xa8f498e42884677b4055bee3cc9970f4a8555ff9  Contract Creation0 MATIC
0x466d8fbd1e325b5f333bea27ebfb41e0288b07851155ff6cc3150db7adde1264383089592023-01-20 12:18:4570 days 4 hrs ago 0xa8f498e42884677b4055bee3cc9970f4a8555ff90x82ca6d313bffe56e9096b16633dfd414148d66b120 MATIC
0xb888a61ee4ede1b0a7639929d50ee4d5a3e7b70fd147438066acb91c9f9922b8378560722023-01-09 8:29:3281 days 7 hrs ago 0xa8f498e42884677b4055bee3cc9970f4a8555ff9  Contract Creation0 MATIC
0xb888a61ee4ede1b0a7639929d50ee4d5a3e7b70fd147438066acb91c9f9922b8378560722023-01-09 8:29:3281 days 7 hrs ago 0xa8f498e42884677b4055bee3cc9970f4a8555ff90x82ca6d313bffe56e9096b16633dfd414148d66b120 MATIC
0x556d1fe42b57a901644532b42701b692c4097c576d446d080d63963e341a9e2c376168202023-01-03 9:15:0687 days 7 hrs ago 0xa8f498e42884677b4055bee3cc9970f4a8555ff9  Contract Creation0 MATIC
[ Download CSV Export 
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.

Contract Source Code Verified (Exact Match)

Contract Name:
DixelClubV2Factory

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 1500 runs

Other Settings:
default evmVersion
File 1 of 8 : DixelClubV2Factory.sol
// SPDX-License-Identifier: BSD-3-Clause

pragma solidity ^0.8.13;

import "@openzeppelin/contracts/access/Ownable.sol";
import "./lib/StringUtils.sol";
import "./Constants.sol";
import "./Shared.sol";
import "./IDixelClubV2NFT.sol";

contract DixelClubV2Factory is Constants, Ownable {
    error DixelClubV2Factory__BlankedName();
    error DixelClubV2Factory__BlankedSymbol();
    error DixelClubV2Factory__DescriptionTooLong();
    error DixelClubV2Factory__InvalidMaxSupply();
    error DixelClubV2Factory__InvalidRoyalty();
    error DixelClubV2Factory__InvalidCreationFee();
    error DixelClubV2Factory__ZeroAddress();
    error DixelClubV2Factory__InvalidFee();

    /**
     *  EIP-1167: Minimal Proxy Contract - ERC721 Token implementation contract
     *  REF: https://github.com/optionality/clone-factory
     */
    address public nftImplementation;

    address public beneficiary = address(0x82CA6d313BffE56E9096b16633dfD414148D66b1);
    uint256 public creationFee = 0.1 ether; // need to be updated for each chain
    uint256 public mintingFee = 500; // 5%;

    // Array of all created nft collections
    address[] public collections;

    event CollectionCreated(address indexed nftAddress, string name, string symbol);

    constructor(address DixelClubV2NFTImpl) {
        nftImplementation = DixelClubV2NFTImpl;
    }

    function _createClone(address target) private returns (address result) {
        bytes20 targetBytes = bytes20(target);
        assembly {
            let clone := mload(0x40)
            mstore(clone, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)
            mstore(add(clone, 0x14), targetBytes)
            mstore(add(clone, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)
            result := create(0, clone, 0x37)
        }
    }

    function createCollection(
        string calldata name,
        string calldata symbol,
        string calldata description,
        Shared.MetaData memory metaData,
        uint24[PALETTE_SIZE] calldata palette,
        uint8[PIXEL_ARRAY_SIZE] calldata pixels
    ) external payable returns (address) {
        if(msg.value != creationFee) revert DixelClubV2Factory__InvalidCreationFee();
        if(bytes(name).length == 0) revert DixelClubV2Factory__BlankedName();
        if(bytes(symbol).length == 0) revert DixelClubV2Factory__BlankedSymbol();
        if(bytes(description).length > 1000) revert DixelClubV2Factory__DescriptionTooLong(); // ~900 gas per character
        if(metaData.maxSupply == 0 || metaData.maxSupply > MAX_SUPPLY) revert DixelClubV2Factory__InvalidMaxSupply();
        if(metaData.royaltyFriction > MAX_ROYALTY_FRACTION) revert DixelClubV2Factory__InvalidRoyalty();

        // Neutralize minting starts date
        if (metaData.mintingBeginsFrom < block.timestamp) {
            metaData.mintingBeginsFrom = uint40(block.timestamp);
        }

        if (creationFee > 0) {
            // Send fee to the beneficiary
            (bool sent, ) = beneficiary.call{ value: creationFee }("");
            require(sent, "CREATION_FEE_TRANSFER_FAILED");
        }

        address nftAddress = _createClone(nftImplementation);
        IDixelClubV2NFT newNFT = IDixelClubV2NFT(nftAddress);
        newNFT.init(msg.sender, name, symbol, description, metaData, palette, pixels);

        collections.push(nftAddress);

        emit CollectionCreated(nftAddress, name, symbol);

        return nftAddress;
    }

    // MARK: Admin functions

    // Admin functions to add a NFT to the collections manually for migration
    function addCollection(address nftAddress) external onlyOwner {
        collections.push(nftAddress);
    }

    // This will update NFT contract implementaion and it won't affect existing collections
    function updateImplementation(address newImplementation) external onlyOwner {
        nftImplementation = newImplementation;
    }

    function updateBeneficiary(address newAddress) external onlyOwner {
      if(newAddress == address(0)) revert DixelClubV2Factory__ZeroAddress();
      beneficiary = newAddress;
    }

    function updateMintingFee(uint256 newMintingFee) external onlyOwner {
      if(newMintingFee > FRICTION_BASE) revert DixelClubV2Factory__InvalidFee();
      mintingFee = newMintingFee;
    }

    function updateCreationFee(uint256 newCreationFee) external onlyOwner {
      creationFee = newCreationFee;
    }

    // MARK: - Utility functions

    function collectionCount() external view returns (uint256) {
        return collections.length;
    }
}

File 2 of 8 : 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 3 of 8 : StringUtils.sol
// SPDX-License-Identifier: BSD-3-Clause

import "@openzeppelin/contracts/utils/Strings.sol";

pragma solidity ^0.8.13;

library StringUtils {
    function address2str(address addr) internal pure returns (string memory) {
        return Strings.toHexString(uint160(addr), 20);
    }
}

File 4 of 8 : Constants.sol
// SPDX-License-Identifier: BSD-3-Clause

pragma solidity ^0.8.13;

abstract contract Constants {
    uint256 public constant MAX_SUPPLY = 1000000; // 1M hardcap max
    uint256 public constant MAX_ROYALTY_FRACTION = 1000; // 10%
    uint256 public constant FRICTION_BASE = 10000;

    uint256 internal constant PALETTE_SIZE = 16; // 16 colors max - equal to the data type max value of CANVAS_SIZE (2^8 = 16)
    uint256 internal constant CANVAS_SIZE = 24; // 24x24 pixels
    uint256 internal constant TOTAL_PIXEL_COUNT = CANVAS_SIZE * CANVAS_SIZE; // 24x24
    uint256 internal constant PIXEL_ARRAY_SIZE = TOTAL_PIXEL_COUNT / 2; // packing 2 pixels in each uint8
}

File 5 of 8 : Shared.sol
// SPDX-License-Identifier: BSD-3-Clause

pragma solidity ^0.8.13;

library Shared {
    struct MetaData {
        bool whitelistOnly;
        bool hidden;
        uint24 maxSupply; // can be minted up to MAX_SUPPLY
        uint24 royaltyFriction; // used for `royaltyInfo` (ERC2981) and `seller_fee_basis_points` (Opeansea's Contract-level metadata)
        uint40 mintingBeginsFrom; // Timestamp that minting event begins
        uint152 mintingCost; // Native token (ETH, BNB, KLAY, etc)
    }
}

File 6 of 8 : IDixelClubV2NFT.sol
// SPDX-License-Identifier: BSD-3-Clause

pragma solidity ^0.8.13;

import "./Shared.sol";

interface IDixelClubV2NFT {
    function init(
        address owner_,
        string calldata name_,
        string calldata symbol_,
        string calldata description_,
        Shared.MetaData calldata metaData_,
        uint24[16] calldata palette_,
        uint8[288] calldata pixels_
    ) external;
}

File 7 of 8 : 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;
    }
}

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

pragma solidity ^0.8.0;

/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 1500
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"DixelClubV2NFTImpl","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"DixelClubV2Factory__BlankedName","type":"error"},{"inputs":[],"name":"DixelClubV2Factory__BlankedSymbol","type":"error"},{"inputs":[],"name":"DixelClubV2Factory__DescriptionTooLong","type":"error"},{"inputs":[],"name":"DixelClubV2Factory__InvalidCreationFee","type":"error"},{"inputs":[],"name":"DixelClubV2Factory__InvalidFee","type":"error"},{"inputs":[],"name":"DixelClubV2Factory__InvalidMaxSupply","type":"error"},{"inputs":[],"name":"DixelClubV2Factory__InvalidRoyalty","type":"error"},{"inputs":[],"name":"DixelClubV2Factory__ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"nftAddress","type":"address"},{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"string","name":"symbol","type":"string"}],"name":"CollectionCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"FRICTION_BASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_ROYALTY_FRACTION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"nftAddress","type":"address"}],"name":"addCollection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"beneficiary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"collectionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"collections","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"description","type":"string"},{"components":[{"internalType":"bool","name":"whitelistOnly","type":"bool"},{"internalType":"bool","name":"hidden","type":"bool"},{"internalType":"uint24","name":"maxSupply","type":"uint24"},{"internalType":"uint24","name":"royaltyFriction","type":"uint24"},{"internalType":"uint40","name":"mintingBeginsFrom","type":"uint40"},{"internalType":"uint152","name":"mintingCost","type":"uint152"}],"internalType":"struct Shared.MetaData","name":"metaData","type":"tuple"},{"internalType":"uint24[16]","name":"palette","type":"uint24[16]"},{"internalType":"uint8[288]","name":"pixels","type":"uint8[288]"}],"name":"createCollection","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"creationFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateBeneficiary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newCreationFee","type":"uint256"}],"name":"updateCreationFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"updateImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMintingFee","type":"uint256"}],"name":"updateMintingFee","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052600280546001600160a01b0319167382ca6d313bffe56e9096b16633dfd414148d66b117905567016345785d8a00006003556101f460045534801561004857600080fd5b506040516111c73803806111c7833981016040819052610067916100e5565b61007033610095565b600180546001600160a01b0319166001600160a01b0392909216919091179055610115565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100f757600080fd5b81516001600160a01b038116811461010e57600080fd5b9392505050565b6110a3806101246000396000f3fe6080604052600436106101295760003560e01c80638da5cb5b116100a5578063d57f966b11610074578063f2fde38b11610059578063f2fde38b146102e5578063f61ac58b14610305578063fdbda0ec1461032557600080fd5b8063d57f966b146102ba578063dce0b4e4146102cf57600080fd5b80638da5cb5b14610249578063a174e77a14610267578063c0275a2514610287578063d0936c43146102a757600080fd5b80633963d7eb116100fc5780636fa23795116100e15780636fa23795146101fe578063715018a61461021e5780638aae790e1461023357600080fd5b80633963d7eb146101d25780635a64ad95146101e857600080fd5b8063025b22bc1461012e5780630aaffd2a1461015057806332cb6b0c1461017057806338af3eed1461019a575b600080fd5b34801561013a57600080fd5b5061014e610149366004610c1c565b610345565b005b34801561015c57600080fd5b5061014e61016b366004610c1c565b6103d3565b34801561017c57600080fd5b50610187620f424081565b6040519081526020015b60405180910390f35b3480156101a657600080fd5b506002546101ba906001600160a01b031681565b6040516001600160a01b039091168152602001610191565b3480156101de57600080fd5b506101876103e881565b3480156101f457600080fd5b5061018760045481565b34801561020a57600080fd5b5061014e610219366004610c4c565b61049c565b34801561022a57600080fd5b5061014e6104fb565b34801561023f57600080fd5b5061018761271081565b34801561025557600080fd5b506000546001600160a01b03166101ba565b34801561027357600080fd5b5061014e610282366004610c1c565b610561565b34801561029357600080fd5b5061014e6102a2366004610c4c565b61061a565b6101ba6102b5366004610d38565b6106b5565b3480156102c657600080fd5b50600554610187565b3480156102db57600080fd5b5061018760035481565b3480156102f157600080fd5b5061014e610300366004610c1c565b610a4a565b34801561031157600080fd5b506001546101ba906001600160a01b031681565b34801561033157600080fd5b506101ba610340366004610c4c565b610b2c565b6000546001600160a01b031633146103a45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461042d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039b565b6001600160a01b03811661046d576040517f35dcc6a400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b031633146104f65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039b565b600355565b6000546001600160a01b031633146105555760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039b565b61055f6000610b56565b565b6000546001600160a01b031633146105bb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039b565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b031633146106745760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039b565b6127108111156106b0576040517ff3da6af800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600455565b600060035434146106f2576040517f1378c9d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600089900361072d576040517f5902e41500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000879003610768576040517f148d340500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103e88511156107a4576040517f5de678da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604084015162ffffff1615806107c55750620f4240846040015162ffffff16115b156107fc576040517f893c8e8e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103e8846060015162ffffff161115610841576040517fb0fe2b0900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b42846080015164ffffffffff1610156108625764ffffffffff421660808501525b60035415610911576002546003546040516000926001600160a01b031691908381818185875af1925050503d80600081146108b9576040519150601f19603f3d011682016040523d82523d6000602084013e6108be565b606091505b505090508061090f5760405162461bcd60e51b815260206004820152601c60248201527f4352454154494f4e5f4645455f5452414e534645525f4641494c454400000000604482015260640161039b565b505b600154600090610929906001600160a01b0316610bb3565b90506000819050806001600160a01b0316630b9001c9338e8e8e8e8e8e8e8e8e6040518b63ffffffff1660e01b815260040161096e9a99989796959493929190610f59565b600060405180830381600087803b15801561098857600080fd5b505af115801561099c573d6000803e3d6000fd5b5050600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0386169081179091556040519092507f3454b57f2dca4f5a54e8358d096ac9d1a0d2dab98991ddb89ff9ea17462606179150610a33908f908f908f908f9061103b565b60405180910390a2509a9950505050505050505050565b6000546001600160a01b03163314610aa45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039b565b6001600160a01b038116610b205760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161039b565b610b2981610b56565b50565b60058181548110610b3c57600080fd5b6000918252602090912001546001600160a01b0316905081565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000808260601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f0949350505050565b600060208284031215610c2e57600080fd5b81356001600160a01b0381168114610c4557600080fd5b9392505050565b600060208284031215610c5e57600080fd5b5035919050565b60008083601f840112610c7757600080fd5b50813567ffffffffffffffff811115610c8f57600080fd5b602083019150836020828501011115610ca757600080fd5b9250929050565b80358015158114610cbe57600080fd5b919050565b803562ffffff81168114610cbe57600080fd5b803564ffffffffff81168114610cbe57600080fd5b803572ffffffffffffffffffffffffffffffffffffff81168114610cbe57600080fd5b806102008101831015610d2057600080fd5b92915050565b806124008101831015610d2057600080fd5b6000806000806000806000806000898b03612720811215610d5857600080fd5b8a3567ffffffffffffffff80821115610d7057600080fd5b610d7c8e838f01610c65565b909c509a5060208d0135915080821115610d9557600080fd5b610da18e838f01610c65565b909a50985060408d0135915080821115610dba57600080fd5b610dc68e838f01610c65565b909850965086915060c0605f1984011215610de057600080fd5b604051925060c0830191508282108183111715610e26577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b50604052610e3660608c01610cae565b8152610e4460808c01610cae565b6020820152610e5560a08c01610cc3565b6040820152610e6660c08c01610cc3565b6060820152610e7760e08c01610cd6565b6080820152610e896101008c01610ceb565b60a08201529250610e9e8b6101208c01610d0e565b9150610eae8b6103208c01610d26565b90509295985092959850929598565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8060005b6010811015610f165762ffffff610f0083610cc3565b1684526020938401939190910190600101610eea565b50505050565b806000805b610120811015610f5257823560ff8116808214610f3c578384fd5b8652506020948501949290920191600101610f21565b5050505050565b60006127406001600160a01b038d168352806020840152610f7d8184018c8e610ebd565b90508281036040840152610f92818a8c610ebd565b90508281036060840152610fa781888a610ebd565b9150508451151560808301526020850151151560a0830152604085015162ffffff80821660c08501528060608801511660e0850152505064ffffffffff60808601511661010083015272ffffffffffffffffffffffffffffffffffffff60a08601511661012083015261101e610140830185610ee6565b61102c610340830184610f1c565b9b9a5050505050505050505050565b60408152600061104f604083018688610ebd565b8281036020840152611062818587610ebd565b97965050505050505056fea26469706673582212209d29bdbbde34923358b36dbd9b0c3642636263f3eae54c32ba98e4112df20b8864736f6c634300080d00330000000000000000000000001bd78fd584e315fb0593d643a3e242bc37c4d615

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

0000000000000000000000001bd78fd584e315fb0593d643a3e242bc37c4d615

-----Decoded View---------------
Arg [0] : DixelClubV2NFTImpl (address): 0x1bd78fd584e315fb0593d643a3e242bc37c4d615

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000001bd78fd584e315fb0593d643a3e242bc37c4d615


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