Deploy page. You sign in your OKX wallet. Muse never signs or deploys. Never paste a private key anywhere on this page.
| Token | $PUNCHIN, symbol PUNCHIN, supply 20,000,000 fixed. Allocation: Mint 25% (5,000,000) / Game 55% (11,000,000) / Liquidity 20% (4,000,000, stays in the owner wallet). |
| Chain | BNB Smart Chain (56) |
| Pack mint | 1 pack = 100 $PUNCHIN. Price starts 0.0015 BNB, tiered +0.0001 per 5,000 packs, cap 0.0023 BNB (9 tiers). Max 10 packs per wallet (+1 per invite). Total 50,000 packs. |
| Dual mint | Regular Mint (open to everyone, no Agent ID) AND Agent Mint (Binance Agent ID required). Same tiered price, same pool. |
| Life Card | ERC-721, 20,000 total, 0.005 BNB each, max 20 per wallet. Agent ID required. Carries serial, job, reputation, career record. 1% fixed royalty. |
| Agent ID gate | Binance Agent ID registry 0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F. Required for Agent Mint, Life Card mint, and free claims. Never on transfers or trading. |
| Free claims | Backend signature + Agent ID + once per wallet. Signer (locked, immutable): 0xA1BB4d555685b7B3Cd10091A407748ED97bbcC29. The Worker at https://punchin-claim-signer.punchin.workers.dev holds the key and only signs wallets in the Google Form whitelist entries. Token: 1,000 places x 100 $PUNCHIN. Card: 500 places x 1 Life Card. Gas only. No list, no finalization: once the whitelist or the mint is open, a signed wallet claims right away. |
| Fund rules | Paid mint BNB ACCUMULATES in the Mint contract. Owner has FULL withdraw rights at any time. NO refunds in the contract, NO automatic liquidity pool, NO LP burn, NO timelock, NO transfer lock, NO 72 hour refund-or-burn threshold, NO pool-opening threshold. The 4,000,000 liquidity $PUNCHIN stays in the owner wallet; the owner adds LP MANUALLY on PancakeSwap when ready and holds the LP tokens. Public copy must NOT promise a liquidity pool or refunds the contract does not perform. |
| Two phases | Phase 1 (now): $PUNCHIN token. Token whitelist (1,000 places) + pack mint open first. Phase 2 (later, separate announcement): Life Card. Its own card whitelist (500 spots) + card mint + game open later. The card mint stays CLOSED at launch (cardMintActive false). The free card claim is NOT bundled with the token claim. |
| Deploy order | 1) PunchInToken, 2) PunchInLifeCard, 3) PunchInMint (token, card, signer), 4) PunchInGame (token, card), 5) PunchInMarket (card), 6) wire the card (setMinter, setGame), 7) fund the pools (5M mint + 11M game), 8) Phase 1 open (openWhitelist + openMint). Do NOT open the card mint, the card whitelist, or the game in Phase 1. |
| Game | Jobs: Plate Polisher, Counter Runner, Delivery Driver, Market Stall Owner, Shop Captain. Shifts 4h, cooldown 2h. Courses ~12h per session (Health 4, Driving 8, Stall 6, Captain 8). Shops: Shop Captains only, bond 2,500 (500 burned, 2,000 deed), max 3, 7 day bond claim wait. |
| Market | Life Card trading. BNB only, list/cancel/buy, 0% market fee, 1% royalty via royaltyInfo. No owner, no withdraw, no rescue. A directly transferred token is unrecoverable. |
Wallet: not connected
Chain: unknown
On connect this page AUTOMATICALLY switches your wallet to BNB Smart Chain (56). If the switch fails, switch manually in OKX before deploying.
No constructor arguments. Mints the fixed 20,000,000 $PUNCHIN to the deployer (owner) in one go. No further minting is possible.
PunchInToken: -
Constructor args for verify: none
No constructor arguments. ERC-721 Life Card, 20,000 max, 1% fixed royalty to the owner. The minter and game are set in Step 8 (one-time each).
PunchInLifeCard: -
Constructor args for verify: none
Three constructor arguments: the token address (Step 3), the card address (Step 4), and the backend signer (locked, filled in automatically). Confirm the signer matches before you deploy.
Token: -
Card: -
Signer (locked): 0xA1BB4d555685b7B3Cd10091A407748ED97bbcC29
PunchInMint: -
Constructor args for verify (copy to BscScan): -
Two constructor arguments: the token address and the card address (filled in automatically). The game stays CLOSED at launch (gameOpen false); it opens in Phase 2.
PunchInGame: -
Constructor args for verify (copy to BscScan): -
One constructor argument: the card address (filled in automatically). No owner, no fee, no withdraw, no rescue. Live as soon as it is deployed; listings need Life Cards, which come in Phase 2.
PunchInMarket: -
Constructor args for verify (copy to BscScan): -
Owner only. Tells the Life Card contract that the Mint may mint cards and the Game may update career records. Each can only be set ONCE, so check the addresses before you send. Both must be done before any card can be minted or played.
Owner only. Approves the Mint and Game to pull $PUNCHIN from your wallet, then funds the mint pool with 5,000,000 and the game pool with 11,000,000. The remaining 4,000,000 stays in your wallet as the liquidity allocation; it is never sent to a contract. You add LP manually on PancakeSwap later.
Owner only. Opens the token whitelist (1,000 places, 100 $PUNCHIN free each, backend signature + Agent ID) and the pack mint. Do NOT open the card mint, the card whitelist, or the game here. Those are Phase 2, later, with a separate announcement. Once the mint is open, a signed wallet can claim its free 100 $PUNCHIN right away.
If you closed this page after deploying, paste the Mint address here and press Load contract. The panel then works without redeploying. Paste the other addresses too if you have them.
Mint:
Token:
Card:
Game:
Market:
Owner: -
Mint open: -
Token whitelist open: -
Card mint active: -
Card whitelist open: -
Game open: -
Signer: -
Packs sold: -
Token places claimed: -
Card places claimed: -
Mint pool: -
Game pool: -
Mint BNB balance: -
Do NOT do this at launch. Phase 2 is a separate phase with its own announcement. When it starts: open the card whitelist (500 spots, 1 Life Card free each, backend signature + Agent ID), then open the card mint (0.005 BNB each, max 20 per wallet), then open the game. The market is already live from Step 7.
Compiler: solc 0.8.28, Optimizer: enabled, runs 200, viaIR: true, EVM version: cancun, License: MIT.
Verification method: Standard JSON Input - upload the matching file from verify/ for each contract.
PunchInToken: file PunchInToken.sol, verify JSON verify/verify-input-punchin-token.json, flattened source flattened/PunchInToken.flattened.sol, constructor args: none.
PunchInLifeCard: file PunchInLifeCard.sol, verify JSON verify/verify-input-punchin-lifecard.json, flattened source flattened/PunchInLifeCard.flattened.sol, constructor args: none.
PunchInMint: file PunchInMint.sol, verify JSON verify/verify-input-punchin-mint.json, flattened source flattened/PunchInMint.flattened.sol, constructor args: token address, card address, signer address (0xA1BB4d555685b7B3Cd10091A407748ED97bbcC29), ABI-encoded (shown as "Constructor args" after Step 5; copy that hex into BscScan's constructor-arguments field).
PunchInGame: file PunchInGame.sol, verify JSON verify/verify-input-punchin-game.json, flattened source flattened/PunchInGame.flattened.sol, constructor args: token address, card address, ABI-encoded (shown after Step 6).
PunchInMarket: file PunchInMarket.sol, verify JSON verify/verify-input-punchin-market.json, flattened source flattened/PunchInMarket.flattened.sol, constructor args: card address, ABI-encoded (shown after Step 7).
After verify, paste the five contract addresses into the website config (punchin.fun) so Mint, Status, Market, and the game go live.