Miner NFTLink to this section
TL;DRLink to this section
- Each Squeek ERC-721 NFT has a
Miningreward position and stays in its owner's wallet. - The collection cannot be upgraded and can issue at most 9,999 IDs; merge burns do not free up IDs.
- Minting registers the reward position before receiver callbacks; only
Miningcan burn a merge donor. - Pausing minting does not stop transfers or metadata reads.
ResponsibilityLink to this section
The collection tracks NFT owners, approvals and mint limits, controls mint phases, and supplies royalties and fixed metadata. Mining tracks unclaimed rewards and decides merge eligibility; the NFT contract does not calculate rewards.
Dependencies and authorityLink to this section
| Immutable binding | Meaning |
|---|---|
mining |
Receives mint registration; only authorized merge-burn caller |
sqkCore |
Core consulted at construction to discover the Guardian |
guardian |
Snapshotted contract authority for mint pause/unpause |
governance |
Launch configuration, guarded reset and metadata announcements |
economicRecipient |
ETH/royalty destination and reserve/remainder mint authority |
renderer, art |
Fixed canonical renderer and page root |
artCodehash, sceneHash, assetSetHash, collectionSeed |
Root code identity, logical page identity, renderer-bound identity and derivation seed |
royaltyBps, contractURI |
Fixed royalty numerator and collection metadata URI |
The renderer, page, Core, Guardian, governance, economic recipient and Mining addresses must contain code at construction. The NFT is not a proxy; verify it against its own pinned compiler and dependencies, not the root contracts' build.
State and viewsLink to this section
| View group | Meaning |
|---|---|
ownerOf, balanceOf, approvals, name, symbol |
Inherited ERC-721 ownership and metadata; name Squeek, symbol SQUEEK |
supportsInterface, royaltyInfo |
ERC-165, ERC-721 metadata, ERC-2981 and ERC-4906 support |
mintPhase() |
Enum order: Unconfigured, Pending, Allowlist, Public, Closed; pause is independent |
paused, mintConfigurationLocked |
Mint gate and permanent ordinary-setter lock |
allowlistRoot, allowlistStart, allowlistEnd |
Current proof root and Unix-second window |
publicMinted, reserveMinted, totalIssued |
Lifetime issuance counters, not reduced by burns |
totalBurned, totalSupply |
Authorized burn count and live supply (totalIssued - totalBurned) |
publicSaleClosed, publicSaleStarted |
Terminal buyer closure and monotonic public-sale activity |
publicRemainderAssigned, publicRemainderMinted |
Unsold public IDs assigned to the economic recipient, and how many it has minted |
walletMinted(account) |
Aggregate buyer mints across allowlist and public phases |
nextPublicTokenId, nextReserveTokenId |
Next sequential ID or exhausted-allocation sentinel |
tokenURI(id), contractURI() |
Embedded base64 JSON/SVG for an existing ID, and fixed collection URI |
| Public constants and immutable getters | Exact source limits and dependency identity |
The collection starts paused, with mintConfigurationLocked = true and a zero allowlist root; unpausing therefore opens public minting. Governance can set an allowlist window through the guarded reset, but ordinary root/start setters cannot bypass the lock.
mintPhase() checks conditions in this order: unconfigured, closed or sold out, zero-root public, waiting for start, active allowlist, then public. A zero root opens public phase without a time gate.
ActionsLink to this section
| Action | Authorized caller / effect |
|---|---|
allowlistMint(uint8 quantity, bytes32[] proof) |
Caller in allowlist phase with valid proof; free buyer mint |
publicMint(uint8 quantity) |
Caller in public phase; exact zero source price; buyer mint |
mintProtocolReserve(uint16 quantity) |
Economic recipient; mints reserve range while minting unpaused |
closePublicSaleAndMintRemainder(uint16 quantity) |
Economic recipient; public-phase terminal closeout, assigns all unsold public IDs and issues first batch |
mintPublicRemainder(uint16 quantity) |
Economic recipient; issues already-assigned remainder |
setAllowlistRoot, setAllowlistStart |
Governance while paused and before ordinary configuration lock |
lockMintConfiguration() |
Governance while paused; locks valid configured root and future window |
resetAllowlistWindow(newStart, newRoot) |
Governance while paused; guarded restart before public activity, closure or sellout; zero new root preserves a configured root |
pauseMint, unpauseMint |
Guardian; unpause requires locked configuration |
sweepProceeds() |
Anyone; sends full ETH balance only to immutable recipient |
announceMetadataUpdate() |
Governance; announces IDs 1–9,999 without changing renderer/token state |
burnForMerge(id) |
Fixed Mining only; permanently destroys donor and increments burn counter |
approve, setApprovalForAll, transfer functions |
Standard ERC-721 owner/operator permissions |
Buyer IDs are 1–8,888 and reserve IDs are 8,889–9,999. The collection excludes administrative issuance from buyer wallet caps but registers every issued ID with Mining.
The _update mint path registers the position with Mining before calling the safe receiver. Transfers and burns do not call Mining; unclaimed rewards stay on the position when its NFT changes owner.
A failed mint registration or safe receiver callback reverts the entire mint, including issuance counters and position creation. Buyer, reserve and public-remainder IDs enter the same Level 1 reward system; the allocation does not create a different reward class. Burned IDs are never reissued.
Events and errorsLink to this section
| Events | Meaning |
|---|---|
AllowlistRootUpdated, AllowlistStartUpdated, MintConfigurationFinalized, AllowlistWindowReset |
Launch configuration and guarded window changes |
AllowlistMinted, PublicMinted |
Buyer, consecutive first ID, quantity and public payment |
PublicSaleClosed, PublicRemainderMinted, ProtocolReserveMinted |
Terminal assignment and administrative issuance counters |
ProceedsSwept |
Trigger caller, immutable recipient and ETH amount |
Transfer, Approval, ApprovalForAll |
Standard ownership/approval transitions, including mint and merge burn |
BatchMetadataUpdate, Paused, Unpaused |
Metadata announcement and mint gate changes |
| Errors | Meaning |
|---|---|
UnauthorizedGovernance, UnauthorizedGuardian, UnauthorizedEconomicRecipient, UnauthorizedMining |
Wrong immutable authority |
InvalidRenderer, InvalidArt, InvalidSqkCore, InvalidGuardian, InvalidGovernance, InvalidEconomicRecipient, InvalidMining, InvalidContractURI, ZeroCollectionSeed |
Construction dependency/configuration |
RendererIdMismatch, RendererCodehashMismatch, ValidatorCodehashMismatch, ArtCodehashMismatch, SceneHashMismatch, AssetSetMismatch |
Visual identity mismatch |
MintConfigurationIsLocked, MintConfigurationIncomplete, InvalidAllowlistRoot, InvalidAllowlistStart, AllowlistWindowResetUnavailable |
Configuration lifecycle |
InvalidMintPhase, InvalidMintQuantity, InvalidAllowlistProof, WalletMintCapExceeded |
Buyer authorization/quantity |
PublicAllocationExceeded, ProtocolReserveExceeded, PublicRemainderUnavailable, PublicRemainderExceeded |
Allocation exhaustion or wrong closeout state |
IncorrectPayment, NoProceeds, ProceedsTransferFailed |
ETH payment or sweep |
Standard ownership, receiver, pause, reentrancy and royalty errors also apply. The pinned ERC-721 and ERC-2981 dependencies are the exhaustive inherited-interface source.
LimitsLink to this section
- Lifetime maximum: 9,999; public allocation 8,888; reserve 1,111. Burns do not restore any allocation.
- Buyer quantity: 1–10 per call, 50 total per wallet across buyer phases.
- Economic-recipient reserve/remainder quantity: 1–100 per call.
- Allowlist duration: 86,400 seconds; a configured start is future and must leave room for the end within
uint64. - Both source buyer prices: zero wei; public mint rejects nonzero payment.
- Royalty denominator: 10,000; constructor numerator cannot exceed it. ERC-2981 reports a royalty, not guaranteed marketplace enforcement.
- Closeout is terminal and disables subsequent buyer minting and allowlist resets.
- Mint pause leaves transfers, metadata and permissionless proceeds sweep available.
tokenURIrequires an existing ID and the exact root codehash; it does not depend on Level orMiningreward state.
SourceLink to this section
Based on Mining5 source e0617449; see source and release scope.