Skip to content
Showcase projectBlockchain & Web3
  • 223 tests
  • 100% coverage
  • Slither-analysed

SigmaNFT Collection

ERC-721 drop with Merkle allowlist, public phase, royalties and delayed reveal

ERC-721ERC-2981Merkle proofsFoundry

What it is

SigmaNFT stores only a Merkle root for the allowlist — users submit a proof, compatible with @openzeppelin/merkle-tree — so thousands of supporters can be allowlisted without writing addresses on-chain. Phases switch from Closed to Allowlist to Public, each with its own price and per-wallet cap, under a global, immutable maximum supply.

Until the owner reveals the collection, every token returns the placeholder metadata; after reveal it points to the final metadata. ERC-2981 royalties signal creator fees to marketplaces, and proceeds are withdrawn to the owner.

The business problem

An NFT drop must reward early supporters without storing thousands of addresses on-chain, stop bots and whales from sweeping the mint, earn royalties on secondary sales and prevent rarity sniping before the reveal. Naive implementations fail on exactly these points.

How it works

  1. 1

    Off-chain: build a Merkle tree from the allowlist, publish the proofs and set the Merkle root.

  2. 2

    The owner opens the allowlist phase; allowlisted wallets mint with their proof at the allowlist price.

  3. 3

    The owner opens the public phase; anyone can mint up to the per-wallet cap.

  4. 4

    After the mint, the metadata is uploaded to IPFS and the owner calls reveal(baseURI).

  5. 5

    The owner withdraws the proceeds.

Security measures

  • nonReentrant mint paths; counters updated before _safeMint callbacks
  • Exact-payment rule — no refund logic, no lost ETH
  • Double-hashed Merkle leaves verified with OpenZeppelin MerkleProof
  • Immutable max supply; Ownable2Step
  • Withdraw reverts instead of silently losing funds
  • Fuzzed: supply ≤ MAX_SUPPLY, balance == minted × price

Features

  • Merkle allowlist (proof-based)
  • Closed → Allowlist → Public phases with separate prices
  • Per-wallet limits per phase
  • Immutable MAX_SUPPLY
  • ERC-2981 royalties
  • Delayed reveal

Typical use cases

  • PFP and art drops, membership passes, event tickets
  • Brand loyalty collections for existing customers
  • Game item pre-sales with delayed rarity reveal

Known limitations

Metadata hosting (e.g. IPFS pinning) is operated off-chain.

Other showcase contracts

Showcase

Milestone Escrow

The client locks the full budget up front, split into milestones. Funds move only on release, arbiter decision or cancellation.

Solidity 0.8.28OpenZeppelin v5ETH / ERC-20

223 tests · 100% coverage · Slither‑analysed

Showcase

Token + Vesting + Staking

A capped ERC-20 with gasless approvals, vesting schedules with cliff for team and investors, and Synthetix-style staking rewards.

ERC-20EIP-2612OpenZeppelin v5

223 tests · 100% coverage · Slither‑analysed

Showcase

Gold-Backed Token (RWA)

Backing becomes a precondition of minting: tokens can only be minted if the reported gold reserve covers the new total supply.

ERC-20AccessControlProof of reserve

223 tests · 100% coverage · Slither‑analysed

Standards: Solidity 0.8.x, OpenZeppelin, Foundry tests with fuzzing, Slither static analysis, verified source. 223 tests · 100% coverage · Slither-analysed.

Have a project in mind?

Tell us what you're building. You get an honest assessment, a clear scope and a fixed-price or milestone proposal, usually within a few working days.

Prefer to write first? Write to us