Skip to main content

OverlayerOG

An allowlisted Overlayer OG collection that is mint-only (non-transferable, non-burnable).

Paid Merkle mints cost {MINT_PRICE} during a 14-day window. A separate free-mint Merkle root allows zero-price claims. After minting ends, the fixed holder set is loaded onto spoke Liquidity farms via the same setMerkleRoot task used for Origin NFTs.

MAX_SUPPLY​

uint256 MAX_SUPPLY

Lifetime maximum number of OG NFTs that may be minted.

MINT_PRICE​

uint256 MINT_PRICE

Fixed ETH price charged to paid-allowlist minters.

freeMintMerkleRoot​

bytes32 freeMintMerkleRoot

Merkle root for the scalable free-mint allowlist; zero disables proof-based free mints.

FreeMintMerkleRootUpdated​

event FreeMintMerkleRootUpdated(bytes32 merkleRoot)

Emitted when the scalable free-mint allowlist root changes.

NonTransferable​

error NonTransferable()

Reverts when attempting to transfer an OG NFT between accounts.

NonBurnable​

error NonBurnable()

Reverts when attempting to burn an OG NFT.

constructor​

constructor(address initialOwner_, string baseURI_, address royaltyReceiver_, uint96 royaltyFeeNumerator_, address payable feeCollector_, uint256 mintStartTime_) public

setFreeMintMerkleRoot​

function setFreeMintMerkleRoot(bytes32 merkleRoot_) external

Replaces the Merkle root used by {mintWithFreeMintProof}.

Replacing the root never resets {hasMinted}; set the root to zero to disable proof-based free mints.

Parameters​

NameTypeDescription
merkleRoot_bytes32Root generated from the eligible addresses.

mintWithFreeMintProof​

function mintWithFreeMintProof(bytes32[] proof_) external payable returns (uint256 tokenId)

Mints the caller's sole primary NFT using a free-mint Merkle allowlist proof.

The leaf encoding matches {mintWithProof}. The caller pays zero regardless of {mintPrice}.

Parameters​

NameTypeDescription
proof_bytes32[]Sorted Merkle sibling hashes proving the caller is in {freeMintMerkleRoot}.

Return Values​

NameTypeDescription
tokenIduint256The newly minted token ID.

isFreeMintMerkleWhitelisted​

function isFreeMintMerkleWhitelisted(address account_, bytes32[] proof_) public view returns (bool)

Returns whether an address is included in the active free-mint Merkle allowlist.

Parameters​

NameTypeDescription
account_addressAddress whose membership is being checked.
proof_bytes32[]Sorted Merkle sibling hashes for the address.

_update​

function _update(address to_, uint256 tokenId_, address auth_) internal virtual returns (address)

Mint-only: allow mint (from == 0); block peer transfers and burns (to == 0).