Skip to content
Contract reference Mining5 source only Source e0617449

Miner NFTLink to this section

TL;DRLink to this section

  • Each Squeek ERC-721 NFT has a Mining reward 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 Mining can 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.
  • tokenURI requires an existing ID and the exact root codehash; it does not depend on Level or Mining reward state.

SourceLink to this section

Based on Mining5 source e0617449; see source and release scope.