Blockchain & Web3

NFT Marketplaces

Listings, ownership checks, and the purchase flow, with the contract and the interface scoped as one engagement.

Delivery focus

Built to move from idea to production.

Listings, ownership checks, and the purchase flow, with the contract and the interface scoped as one engagement. The work sits inside Blockchain & Web3 and is scoped, built, reviewed, and handed over as one engagement.

Clear product and technical roadmap

Scalable implementation standards

Launch support and measurable outcomes

Scope

ClickMasters builds NFT marketplaces for B2B companies across the USA, Europe, Canada, and Australia. Primary drop platforms scheduled reveals, allow lists, presale and public mint phases. Secondary marketplaces list, bid, buy, and sell NFTs with creator royalties enforced on-chain via ERC-2981. Lazy minting to reduce gas costs for large collections. Metadata storage on IPFS. Real-time floor price and trading volume analytics. Built on Ethereum, Polygon, or Base.

When Blockchain Is NOT the Right Solution

NFT marketplaces are appropriate when: digital ownership and provenance are core to the product value (art, collectibles, gaming assets where ownership history matters); the creator economy benefits from programmable royalties on secondary sales; or the asset being represented genuinely benefits from on-chain ownership. They are NOT appropriate when: the use case is primarily about access control or licensing (token-gated access is simpler); the assets have no secondary market value (no reason to pay gas for minting); or the legal status of NFTs as securities in your jurisdiction is unclear for your specific asset type. ClickMasters advises clients to obtain legal guidance on NFT classification before launch, particularly for projects where NFTs may be classified as investment contracts.

ERC-721A Gas-Optimised Batch Minting

ERC-721A is Azuki's gas-optimised implementation of the ERC-721 standard, specifically designed for batch minting large NFT collections. Standard ERC-721 minting requires a separate SSTORE operation for each token minting 10 NFTs in one transaction costs approximately the same gas as 10 separate transactions. ERC-721A exploits the sequential token ID structure of large collections to pack multiple token ownership records into fewer storage slots, reducing the cost of batch minting: minting 5 ERC-721A tokens in one transaction costs approximately the same as minting 1 standard ERC-721 token. For a 10,000-piece PFP collection where many minters will buy 2-5 NFTs at once, ERC-721A reduces gas costs by 60-80% for typical mint transactions a significant UX improvement. The trade-off: read operations (querying token owner) are slightly more expensive than standard ERC-721, but read operations are free (no gas) when called off-chain.

Merkle Tree Allow List

Merkle tree-based allow lists are the standard for gas-efficient NFT whitelisting. Instead of storing every allowed address in the contract (which costs gas and may hit block gas limits for large lists), the contract stores only the Merkle root of the allow list tree. To mint, the user provides a Merkle proof (a compact set of sibling hashes from the tree) that demonstrates their address is contained in the tree. The contract verifies the proof against the stored root and allows the mint if valid. Benefits: gas-efficient (store only one 32-byte root, not 1000+ addresses), scalable (unlimited list size, no gas limit issue), and privacy-preserving (the list is not publicly stored on-chain only the root). ClickMasters generates Merkle trees from allow list CSVs and implements proof verification in the mint function.

What this engagement delivers

NFT Smart Contracts

Production NFT contracts: ERC-721A (Azuki's gas-optimised ERC-721 extension batch minting at the cost of a single mint, the standard for large PFP collections), ERC-1155 for multi-edition assets (multiple NFTs of the same type editions, gaming items), reveal mechanics (pre-reveal placeholder metadata, reveal triggered by the project after mint prevents sniping of rare traits), allow list implementation (Merkle tree-based allow list gas-efficient verification: store only the Merkle root on-chain, each allowed address verifies membership with a Merkle proof), ERC-2981 royalty standard (on-chain royalty information marketplaces that honour ERC-2981 pay creator royalties automatically on secondary sales), provenance hash (hash of all metadata published before mint proves the team did not modify traits after mint).

Primary Drop Platform

Frontend for NFT drops: mint page (countdown timer to mint start, phase display public/presale/allow list current/max supply, price, wallet-connected minting with transaction feedback), allow list integration (allow list address upload, Merkle proof generation API, off-chain allow list verification before on-chain mint), batch mint UI (allow users to specify mint quantity up to max per wallet, estimate total gas before signing), reveal countdown (display placeholder artwork until reveal, animated reveal transition), mint success UI (display newly minted NFT with metadata, direct links to OpenSea and LooksRare for listing).

Secondary Marketplace

Buy, sell, and auction NFTs: listing contract (ERC-721 approved for the marketplace contract sellers list NFTs at a fixed price or with auction parameters), English auction (ascending bid with automatic extension if a bid is placed near auction close prevents last-second sniping), Dutch auction (declining price over time useful for price discovery on drops and secondary listings), offer system (buyers submit offers on listed and unlisted NFTs sellers accept or counter), marketplace fee (platform fee deducted from sale proceeds, paid to the platform treasury wallet configurable basis points).

IPFS Metadata & Storage

Decentralised NFT metadata storage: NFT metadata format (ERC-721 metadata JSON name, description, image URL, attributes array stored on IPFS for permanence), image upload and IPFS pinning (NFT.Storage, Pinata, or web3.storage upload collection images, pin to IPFS, generate content-addressed URIs), baseURI configuration (smart contract baseURI set to IPFS folder CID tokenURI() returns baseURI + tokenId + '.json'), reveal metadata upload (upload final metadata to IPFS after mint, update smart contract baseURI, trigger reveal), Arweave permanent storage option (Arweave stores data permanently for a one-time fee appropriate for high-value collections where IPFS pinning continuity is a concern).

Analytics Dashboard

NFT marketplace analytics: floor price tracking (lowest listed price for the collection at any given time), volume traded (24h, 7d, 30d trading volume in ETH and USD), holder distribution (unique holders, top holders by token count), trait rarity analysis (rarity score per token based on trait frequency displayed on each NFT's detail page), transaction history (all sales, listings, transfers filterable by time period and event type), price history chart (floor price over time buyers and sellers use this for pricing decisions).

Process

  1. Phase 1 · Week 1-2

    NFT Marketplace Discovery

    Contract selection (ERC-721A vs ERC-1155), marketplace model (primary drop only vs full secondary), chain selection (Ethereum vs Polygon vs Base), legal considerations, analytics requirements. Deliverable: NFT Platform Architecture + Legal Review.

  2. Phase 2 · Week 2-3

    NFT Smart Contract Development

    ERC-721A implementation, allow list (Merkle tree), reveal mechanics, ERC-2981 royalties, provenance hash, test suite (Hardhat/Foundry), deployment to testnet. Deliverable: NFT Contracts + Testnet Deployment.

  3. Phase 3 · Week 3-5

    Primary Drop Platform

    Mint page (countdown, phase display, wallet connect, batch mint UI), allow list integration (address upload, Merkle proof generation), reveal countdown, mint success UI, analytics integration. Deliverable: Primary Drop Frontend.

  4. Phase 4 · Week 4-7

    Secondary Marketplace

    Listing contract (fixed price + auction), English/Dutch auction implementation, offer system, marketplace fee collection, escrow logic, event indexing (The Graph). Deliverable: Secondary Marketplace + Subgraph.

  5. Phase 5 · Week 2-4

    IPFS Pipeline & Analytics

    IPFS metadata generation (image upload, JSON creation, pinning), baseURI configuration, reveal metadata upload, floor price tracking, volume analytics, holder distribution dashboard. Deliverable: IPFS Storage + Analytics Dashboard.

Tech stack

Smart Contracts
ERC-721A (Azuki gas-optimised), ERC-1155 (multi-edition), OpenZeppelin Contracts, Merkle tree (allow list), ERC-2981 (royalties)
Primary Drop
Mint page (React/Next.js), allow list UI (CSV upload), Merkle proof generation, batch mint, reveal countdown
Secondary Marketplace
Listing contract, English/Dutch auction, offer system, marketplace fee, escrow, The Graph subgraph
Storage
IPFS + Pinata/NFT.Storage, Arweave (permanent), web3.storage, baseURI configuration
Analytics
Floor price tracking, volume analytics (24h/7d/30d), holder distribution, rarity scoring, price history charts
Testing
Hardhat (TypeScript tests), Foundry (fuzzing), mainnet fork tests, slash testing (reentrancy, access control)

How we work

"When NOT right" Amber Callout

Legal advice required NFT securities classification warning | Basic: "NFTs for everything" (no caution)

ERC-721A Batch Minting

Batch minting at the cost of a single mint 60-80% gas reduction | Basic: Standard ERC-721 (expensive batch mints)

Merkle Tree Allow List

Gas-efficient verification store only root on-chain, proof verification in mint | Basic: On-chain array (expensive, gas-limit limited)

Provenance Hash

Hash of all metadata before mint proves no trait manipulation after sale | Basic: No provenance (buyer trust required)

Dutch vs English Auction

Both auction types explained Dutch for price discovery, English for bids | Basic: "Auctions" (no implementation detail)

Where this is used

PFP Collection Drop

10,000-piece generative profile picture collection on Ethereum. ERC-721A for gas-optimised batch minting. Merkle tree allow list for community presale. Reveal mechanism (24h after mint). $5M primary sales volume.

Artists Platform

Custom marketplace for artists to mint and sell digital art. Lazy minting (creators pay no gas upfront). ERC-2981 royalties (5% to creator on secondary sales). IPFS + Arweave metadata storage. Secondary marketplace with offers.

Gaming NFT Marketplace

ERC-1155 multi-edition contract for in-game items. Primary drops with allow list. Secondary marketplace with fixed price and auctions. Lazy minting for high-quantity items. The Graph for player inventory queries.

Brand Loyalty Program

Polygon-based NFT loyalty program. Primary drops to loyalty members via allow list. Secondary marketplace for trading. ERC-2981 royalties back to brand. Floor price analytics for value tracking.

Pricing guidance

These ranges are planning anchors. The quote names scope, timeline, and what is excluded. Talk through a quote.

NFT Marketplace Discovery

$3,000 - $7,000

1 - 2 weeks

Contract selection, marketplace model, chain selection, legal considerations

NFT Collection Contract

$5,000 - $14,000

2 - 3 weeks

ERC-721A + allow list + reveal + ERC-2981 royalties + audit

Primary Drop Platform

$8,000 - $20,000

3 - 5 weeks

Mint page, allow list UI, batch mint, countdown, reveal, analytics

Secondary Marketplace

$12,000 - $30,000

4 - 7 weeks

Listing + fixed price + auction + offers + marketplace fee

IPFS Metadata Pipeline

$3,000 - $8,000

1 - 2 weeks

Image upload, metadata generation, IPFS pinning, baseURI management

Analytics Dashboard

$5,000 - $12,000

2 - 3 weeks

Floor price, volume, holders, rarity, transaction history

Full NFT Platform

$20,000 - $65,000

6 - 12 weeks

Contracts + drop + secondary + IPFS + analytics + audit

FAQs

What is an NFT and how does an NFT marketplace work?

An NFT (Non-Fungible Token) is a blockchain token that represents ownership of a unique digital or physical asset each token has a unique ID and cannot be exchanged 1:1 with another token (unlike fungible tokens like ETH or USDC where each unit is identical). NFT ownership is recorded on the blockchain the token's ownership history, transfer history, and associated metadata are publicly verifiable and immutable. An NFT marketplace is a platform where NFTs are minted (created), bought, sold, and traded. A primary marketplace facilitates the original creator selling NFTs to buyers ClickMasters builds primary drop platforms with mint pages, allow lists, and reveal mechanics. A secondary marketplace facilitates peer-to-peer resale sellers list their NFTs, buyers purchase at the listed price or make offers. Creator royalties (ERC-2981) specify a percentage of secondary sales that flows back to the original creator automatically when the marketplace honours the standard.

What is ERC-721A and why is it used for large NFT collections?

ERC-721A is Azuki's gas-optimised implementation of the ERC-721 standard, specifically designed for batch minting large NFT collections. Standard ERC-721 minting requires a separate SSTORE operation for each token minting 10 NFTs in one transaction costs approximately the same gas as 10 separate transactions. ERC-721A exploits the sequential token ID structure of large collections to pack multiple token ownership records into fewer storage slots, reducing the cost of batch minting: minting 5 ERC-721A tokens in one transaction costs approximately the same as minting 1 standard ERC-721 token. For a 10,000-piece PFP collection where many minters will buy 2-5 NFTs at once, ERC-721A reduces gas costs by 60-80% for typical mint transactions a significant UX improvement. The trade-off: read operations (querying token owner) are slightly more expensive than standard ERC-721, but read operations are free (no gas) when called off-chain.

What is lazy minting and when should I use it?

Lazy minting defers the on-chain minting of an NFT until the first sale the NFT's metadata and creator signature are stored off-chain, and the NFT is minted (written to the blockchain) when a buyer purchases it for the first time. The buyer pays the gas for minting rather than the creator. Benefits: creators can list unlimited NFTs without paying gas upfront (no inventory cost), and unsold NFTs never incur gas costs. The limitation: until minted, the NFT does not exist on-chain it cannot be transferred, listed on other platforms, or verified by wallet apps. Lazy minting is appropriate for: individual creators with large portfolios (platforms like Rarible and Foundation use lazy minting for creator uploads), small collections where minting all tokens upfront would be prohibitively expensive, and platforms where many NFTs may never sell. For large collections where all or most tokens are expected to sell, traditional minting (paying gas at mint) is simpler and produces immediately on-chain tokens.

How are creator royalties enforced on NFT secondary sales?

ERC-2981 is an Ethereum standard that specifies a royalty percentage and recipient address on-chain in the NFT contract. When a marketplace queries the NFT contract (`royaltyInfo(tokenId, salePrice)` returns `(royaltyRecipient, royaltyAmount)`), it can automatically deduct the royalty from the sale proceeds and pay the creator. The limitation: ERC-2981 is a voluntary standard marketplaces are not required by the Ethereum protocol to honour it. OpenSea, LooksRare, X2Y2, and most major marketplaces honour ERC-2981. Some newer marketplaces launched 'royalty-optional' models in 2022-2023, allowing buyers to bypass royalties. On-chain royalty enforcement (via operator filter registry or transfer hooks that only allow sales through royalty-honouring marketplaces) partially addresses this but restricts secondary market liquidity. ClickMasters implements ERC-2981 as the standard royalty mechanism and advises on the trade-offs of on-chain enforcement vs. voluntary standards.

Related reading

NFT Marketplaces is one line inside Blockchain & Web3. Teams with an adjacent problem often compare it with Blockchain Development and Smart Contract Development. For a written delivery narrative, read the SaaS booking platform QA case study and the rest of the case studies.