Smart contracts powering Encrypted NFT (eNFT) primitive and the Seed Phrase Hunt game mode on Stacks (Bitcoin L2).
NFTs with two layers: public metadata visible to everyone, and a private payload accessible only to the current owner.
This enables incomplete-information games on-chain — negotiation, bluffing, and strategy that transparent ledgers normally make difficult.
| Contract | Purpose |
|---|---|
skullcoin-competitive-seed-base |
Core game logic — minting, burning, payouts, sale control |
skullcoin-competitive-seed-phase1 |
Phase 1 NFT collection (base tier) |
skullcoin-competitive-seed-phase2 |
Phase 2 NFT collection (upgrade tier, created via Phase 1 burns) |
Each NFT carries a hidden BIP-39 seed phrase word as its private payload. Players mint, trade, and negotiate to assemble a complete phrase that unlocks a prize.
Upgrade loop: burning 5× Phase 1 NFTs → mints 1× Phase 2 NFT, creating a deflationary “merge” mechanic that makes rarer payloads harder to obtain.
Replace the links below with the exact Hiro Explorer URLs that open correctly.
-
Base Contract: SP3T54N6G4HN7GPBCYMSDKP4W00C45X19GQ4VT13Y.skullcoin-competitive-seed-base
-
Phase 1 NFT: SP3T54N6G4HN7GPBCYMSDKP4W00C45X19GQ4VT13Y.skullcoin-competitive-seed-phase1
-
Phase 2 NFT: SP3T54N6G4HN7GPBCYMSDKP4W00C45X19GQ4VT13Y.skullcoin-competitive-seed-phase2
| Function | Description |
|---|---|
flip-sale |
Toggle public minting on/off |
flip-burn |
Toggle burning (phase upgrades) on/off |
deposit-ft |
Deposit SIP-010 tokens into the contract (prize pool) |
withdraw-ft |
Withdraw SIP-010 tokens from the contract |
withdraw-stx |
Withdraw STX from the contract |
| Function | Description |
|---|---|
claim-one |
Mint 1 NFT |
claim-five |
Mint 5 NFTs |
claim-ten |
Mint 10 NFTs |
claim-twenty-five |
Mint 25 NFTs |
burn-phase-1 |
Burn 5 Phase 1 NFTs → receive Phase 2 NFT |
burn-phase-2 |
Burn 5 Phase 2 NFTs → receive higher-tier reward (mode-specific) |
| Function | Description |
|---|---|
sale-enabled |
Check if public minting is active |
burn-enabled |
Check if burning is active |
| Function | Description |
|---|---|
claim |
Single-mint helper used by batch functions |
send-ft-to-winner |
Distribute SIP-010 prize tokens under game-defined conditions |
The contracts handle ownership, transfers, minting, burning, and payouts.
The private payload is gated by ownership: only the current owner can access/decrypt it via a signed request.
Current model (v1 — hybrid):
- On-chain: NFT ownership + commitment hash + transfer/burn logic
- Off-chain (app layer): encrypted payload storage + owner-gated decryption
- Commitment hash prevents payload swaps (the app must match the on-chain commitment)
Roadmap (optional):
We aim to reduce trust assumptions over time (e.g., more on-chain storage / stronger verification guarantees).
See SIP + docs for the evolving spec and security considerations.
Requirements: Clarinet (Hiro) — https://github.com/hirosystems/clarinet
# Run tests
clarinet test
# Check contracts
clarinet check
# Console (local devnet)
clarinet consolecontracts/ # Clarity smart contracts settings/ # Clarinet deployment configs Clarinet.toml # Project manifest
GPL-3.0