Icon, cover, and public URLs are placeholders. Edit these files by hand before deploy:
public/icon.png— token + TonConnect iconpublic/drill-pass.png— SBT image (recommended 512x512 PNG)public/drill-pass-cover.png— optional coverpublic/drill.json— token metadata (imageURL)public/drill-pass.json— SBT metadata (image/cover_image/external_url)public/tonconnect-manifest.json—url,name,iconUrl.env.example→ Vercel /.env.localdrill-contracts/.env—METADATA_URL,PASS_METADATA_URL, mint price
Replace placeholder images. Keep HTTPS URLs that will not change after deploy. Wallets cache metadata.
cd drill-contracts
npx blueprint build --allConfirm SBT on testnet Tonkeeper Collectibles first.
Use a funded mainnet admin wallet. Do not reuse the testnet collection/minter addresses.
npx blueprint run deployDrillJetton --mainnet --mnemonic
npx blueprint run deployDrillPass --mainnet --mnemonic
npx blueprint run mintDrill --mainnet --mnemonicSave:
- Jetton master →
NEXT_PUBLIC_DRILL_JETTON_MASTER - Pass collection →
NEXT_PUBLIC_NFT_COLLECTION_ADDRESS
NEXT_PUBLIC_TON_NETWORK=mainnet
NEXT_PUBLIC_DRILL_JETTON_MASTER=EQ...
NEXT_PUBLIC_NFT_COLLECTION_ADDRESS=EQ...
NEXT_PUBLIC_TON_CONNECT_MANIFEST_URL=https://drillprotocol.xyz/tonconnect-manifest.json
NEXT_PUBLIC_TWA_RETURN_URL=https://t.me/YOUR_BOT/app
NEXT_PUBLIC_MINT_PRICE_TON=1
NEXT_PUBLIC_MINT_SEND_TON=1.15
RPC/indexers switch automatically when NEXT_PUBLIC_TON_NETWORK=mainnet.
Run in SQL editor:
supabase/tasks.sqlsupabase/referral-pools.sqlsupabase/withdrawals.sql
Prefer a fresh production project. Do not mix testnet users with mainnet.
- Connect mainnet wallet in app
- Mint pass → PASS badge + Collectibles in Tonkeeper
- Mining claim
- Task claim +5
- Referral valid pool + friends 5% claim to engine
- Withdraw history pending/valid + tx hash
- Admin mnemonic stays offline, never in Vercel
- Metadata URLs stay online after launch
- Testnet addresses must not be pasted into mainnet env