One Xcollection is deployed per collection. It handles the full drop lifecycle: three-phase minting, whitelist enforcement, Genesis injection, reveal, royalty routing, and XNS-1 compatible token ownership.Documentation Index
Fetch the complete documentation index at: https://xpectrum.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Minting phases
Phases are time-gated by epoch ranges and resolved byget_current_phase(). Up to three sequential phases per collection.
| Phase | Access | Notes |
|---|---|---|
| GTD (Guaranteed) | Whitelisted wallets + Genesis holders | Required. Minimum 1 hour. |
| FCFS (First Come First Served) | Whitelisted wallets | Optional (set cap to 0 to skip) |
| Public | Anyone | Optional (set cap to 0 to skip) |
set_phase_override(). Return to time-based resolution via clear_phase_override().
Genesis injection
Every Xcollection includes a reserved allocation for Xpectra Genesis NFT holders, computed as a percentage of max supply at deploy time. Genesis holders mint viagenesis_mint(genesis_id) during GTD. Each Genesis token ID is recorded once per collection, permanently, to prevent the same NFT from claiming multiple allocations across wallets.
The injection cap is additive to the creator’s GTD allocation. Unclaimed injection slots after GTD ends can be swept into the public cap via sweep_injection().
Whitelist
Xcollection calls its bound Xlist contract to verify GTD and FCFS access at mint time. See Xlist.Payment splitting
Every mint splits payment at the contract level:| Recipient | Share |
|---|---|
| Platform | 2.5% (250 bps) |
| Creator | 97.5% |
claim_proceeds(). Proceeds are never pushed alongside cross-contract calls. The pull model keeps funds isolated from AML atomicity risk.
Airdrop
The collection owner can airdrop up to 20 tokens per transaction viaairdrop(). Airdrops bypass all phase, price, and whitelist checks. They count toward total_minted and max_supply.
Reveal
Collections deploy in unrevealed state. Alltoken_uri() calls return unrevealed_uri until reveal. After artwork is ready, call reveal(base_uri) to switch. Tokens resolve as base_uri + token_id + .json.
Reveal is irreversible. Make sure metadata is pinned and correctly formatted before triggering it.