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
| Name | Type | Description |
|---|---|---|
| merkleRoot_ | bytes32 | Root 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
| Name | Type | Description |
|---|---|---|
| proof_ | bytes32[] | Sorted Merkle sibling hashes proving the caller is in {freeMintMerkleRoot}. |
Return Values
| Name | Type | Description |
|---|---|---|
| tokenId | uint256 | The 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
| Name | Type | Description |
|---|---|---|
| account_ | address | Address 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).