Fair blind boxes, verified on-chain.
CharmBox uses a two-step reveal so the pull is decided by verifiable randomness, not by the website, the wallet, or a hidden server decision.

Buy or use held packs
A pack purchase gives your wallet held packs for that collection. Buying several packs can request randomness for the whole purchase in the same transaction.
Request VRF
The open request is recorded on-chain before the result exists. That creates a pending reveal tied to your wallet and collection.
Randomness lands
Once the VRF result is available, the contract uses that verified randomness to select the pull from the collection odds.
Reveal one at a time
Each pending pack is revealed with its own open transaction, so the user can click through the experience while the result remains chain-backed.
Full Box Sets
Full boxes keep the same odds, but avoid duplicates inside that box.
When someone buys a full box set, CharmBox requests one verified random result for that box purchase. The contract can then work through that box as a grouped set, so the buyer gets the expected no-duplicate full-box experience while the secret remains rare.
The secret chance does not become guaranteed just because the buyer bought more packs.
A full-box set is treated like one complete retail box.
The pending pulls can still be revealed one at a time.
What This Means
No front-end prediction is trusted for the final pull.
Pending packs can be found again after refresh from on-chain state.
The collection odds define the chance of each possible pull.
A failed listing or reveal should fail loudly instead of showing a fake result.