Some NFTs sell better face-down
Mystery sales just landed in the Magi Market! You pick a price and a pack shape, the contract handles what actually comes out, and the odds are clear for anyone to check before they pay.
How it works
The buyer doesn't choose the NFT, the contract does. You load it with whatever you want from one collection, set a price per draw, open it up, and that's the sale. Someone pays, the chain rolls, an NFT shows up in their wallet.
Mechanically it doesn't matter what you call it: pack, raffle, gacha, blind box. The randomness source is the same in every case. Once the sale is open, neither the seller nor the buyer has a way to influence which item gets picked. That's the part that makes the posted odds trustworthy rather than decorative.
Singles and packs
Single draws give out one NFT per purchase. Put ten copies of a card into the pool and it comes out roughly ten times as often as the 1-of-1 sitting next to it. Frequency follows copy count, that's really all there is to it.
Packs are a fixed bundle. Each slot pulls from whichever stack you assigned to it, so a "guaranteed rare" isn't a marketing line, it's structural.
Both modes can run off the same stock at once, if you want. Some sellers only ever do singles. Some skip straight to packs. Doesn't matter which, the underlying pool is identical either way.
Tokens vs. copies
People mix these up a lot. A sale caps out at 512 tokens, meaning 512 distinct token IDs. Each of those can be a 1-of-1, or an editioned token carrying however many copies you own of it. The 512 figure counts distinct token IDs only; how deep a single edition goes is bound by what you hold, not by the contract.
| Stocking plan | Verdict | |
|---|---|---|
1 editioned token × 1,000 copies | Fits easily | Uses 1 of your 512 slots. That card comes out 1,000× as often as a 1-of-1 beside it. |
1,000 one-of-ones × 1 copy | Too big | That's 1,000 of the 512 slots gone. Split it across sales instead. |
Transaction limit works the same way: 24 tokens per batch, but any of those 24 that happens to be editioned can carry thousands of copies on its own.
Copy counts need to be decided before you list. Once a token is in the sale, its copy count is fixed, there's no adding more to it afterward.
Stacks
A stack is just a group of your NFTs competing against each other for the same slot. Commons here, rares there, then you tell the sale how many slots each stack fills per pack.
2 × Commons+1 × Rares=pack of 3
The rare slot can only pull from the rares stack. That's enforced structurally, not promised in copy somewhere. The builder also checks two things before you can open the sale: every stack needs at least one slot assigned to it (otherwise it's unreachable), and any stack owing three slots per pack needs a minimum of three units stocked.
Singles-only sales skip stacks entirely. The builder won't prompt for them.
Your NFTs stay yours until they're drawn
No escrow step happens when you open the sale. NFTs stay in your wallet the entire time and only transfer once someone pulls them. If you close the sale early, whatever's unsold stays exactly where it was.
Approval is scoped per NFT, not to your whole collection, so the marketplace contract can't touch anything beyond what you stocked. That means one signature per NFT you stock, restocks included, unless you've already approved the collection outright, in which case it collapses to one signature total.
An optional closing block ends the sale automatically at a set point. There's no unwind step, nothing to claim back afterward.
Setting one up
- Sale type. Singles, packs, or both. Give it a proper name too - "Base Set Booster" beats "#0."
- Stacks. Pull NFTs from one collection. Editioned tokens fold into a single tile, so twenty copies of a common is one number, not twenty separate clicks.
- Price. Draw cost, pack cost, how long the sale runs.
- Review. Check how many draws and packs your stock actually covers before you sign anything.
Checking the odds
Every sale publishes what's inside: contents of each stack, how much is left, live odds that update as things sell.
| Card | Stack | Left | Chance per draw |
|---|---|---|---|
| booster-common | Commons | 40 | 57.1% |
| booster-uncommon | Commons | 18 | 25.7% |
| alt-art-run | Commons | 12 | 17.2% |
| holo-charizard | Rares | 3 | 60.0% |
| first-edition | Rares | 2 | 40.0% |
Notice holo-charizard sits at 60%. Still counts as rare, since it's the Rares stack doing the drawing and only one slot per pack even touches it.
What a listing looks like
A mystery sale shows up on the Buy now tab, right alongside regular listings, bundles, mint spots. Your name for it, cover art pulled from the first thing you stocked that actually has an image, and the two things people actually look at: what's left, what it costs.
Base Set Booster
412 left · packs of 3
1.000 HIVE/draw
DrawOdds
Hit Draw and you're buying. Hit Odds and you get the full breakdown, every NFT, its stack, what's left, its chance. You can click into any individual NFT from there and come right back without losing your place in the sale.
When stock runs low
Stacks rarely drain at the same rate. Each one tracks its own remaining count, odds recalculate as it goes, and a sold-out card greys out and drops its percentage instead of sitting there at 0%. It stays on the list, so you can still see what the sale used to hold.
If a stack that owes a pack slot hits zero, the pack button disables itself with a reason attached: a guaranteed stack ran out. Singles can keep running as long as the first stack still has stock, so it's possible for a sale to outlive its own pack option. Withdrawing units shows up in the contents log too, so the history stays visible.
Opening a pack
Cards land face-down, then flip one at a time. Guaranteed pulls get their own little shine to them. Whatever you see is exactly what the chain drew, nothing dressed up after the fact.
It waits on the network and tells you where things stand: waiting, in a block, now reading your cards. If a draw fails on chain, it says so plainly, nothing's drawn, nothing's charged.
Tap a card to open it up properly, step back, draw again. Same logic runs through the rest of the widget really, listing, restocking, withdrawing all follow the transaction through instead of just refreshing early and showing you numbers from a minute ago.
Restocking
Sales get built up in batches, 24 tokens per transaction, 512 total. That's just normal. Open with a first batch, then hit Add on your own sale whenever you've got more ready.
When you restock you pick which stack the new NFTs join, since that's what decides which pack slot they can fill. Dump rares into the commons stack by mistake and they'll never land in the slot buyers actually paid for.
One thing worth repeating: a restock only ever brings in tokens that weren't already in the sale. Once something's stocked, its copy count is locked for good, even if you go mint 200 more of it later. Odds don't move. The sale keeps drawing against whatever supply it started with, not whatever you currently hold.
Stocking the same token twice gets rejected on chain (Token ID already stocked in this bucket). Allowing it would double-count that token against its real supply and distort the odds.
The practical result is that published odds can't shift silently under a buyer mid-draw. They move down as packs sell, sideways when new tokens get added, and down again if the seller withdraws units. Those are the only ways they move.
A few things people build with this
Booster pack -> commons by the dozen, one guaranteed rare. 2 stacks · packs of 5
Raffle -> one prize, a pile of tickets, everything competing for it. 1 stack · singles
Gacha banner -> a featured tier that only packs can reach, plus a common tier to pad volume. 3 stacks · both modes
Artist sampler -> one of everything, sold as a single pull, so no two collectors end up with an identical set. 1 stack · singles
The numbers
| 8 | stacks per sale |
| 512 | tokens in one sale |
| 24 | tokens per transaction |
| ∞ | copies of one editioned token |
Three of these four limits count distinct tokens. Copy depth is the exception, bound only by what you own. Nothing stops you from listing a first batch and adding more tokens in later transactions.
Mystery sales live in the Magi Market widget, on the Buy now tab next to listings, bundles and mint spots. Sellers open one from Mystery sale; buyers draw directly from the sale's page.
Magi Market · NFT sales on Magi