PUNCH IN

Deploy on BNB Chain

Deploy page. You sign in your OKX wallet. Muse never signs or deploys. Never paste a private key anywhere on this page.

Locked specs (do not change)

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).
ChainBNB Smart Chain (56)
Pack mint1 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 mintRegular Mint (open to everyone, no Agent ID) AND Agent Mint (Binance Agent ID required). Same tiered price, same pool.
Life CardERC-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 gateBinance Agent ID registry 0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F. Required for Agent Mint, Life Card mint, and free claims. Never on transfers or trading.
Free claimsBackend 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 rulesPaid 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 phasesPhase 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 order1) 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.
GameJobs: 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.
MarketLife 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.

Step 1 - Wallet library

Press "Load wallet library" first (needs internet for the ethers CDN).

Step 2 - Connect OKX wallet

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.

Step 3 - Deploy PunchInToken ($PUNCHIN)

No constructor arguments. Mints the fixed 20,000,000 $PUNCHIN to the deployer (owner) in one go. No further minting is possible.

Not deployed yet.

PunchInToken: -
Constructor args for verify: none

Step 4 - Deploy PunchInLifeCard

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).

Not deployed yet.

PunchInLifeCard: -
Constructor args for verify: none

Step 5 - Deploy PunchInMint

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

Not deployed yet.

PunchInMint: -
Constructor args for verify (copy to BscScan): -

Step 6 - Deploy PunchInGame

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.

Not deployed yet.

PunchInGame: -
Constructor args for verify (copy to BscScan): -

Step 7 - Deploy PunchInMarket

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.

Not deployed yet.

PunchInMarket: -
Constructor args for verify (copy to BscScan): -

Step 8 - Wire the Life Card (one-time each)

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.

Not wired yet.

Step 9 - Fund the pools

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.

Pools not funded yet.

Step 10 - Phase 1 open (token only)

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.

Phase 1 not open yet.

Owner panel

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: -

Owner panel ready. Deploy the contracts first, or load their addresses above.

Phase 2 - Life Card (LATER, separate announcement)

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.

Phase 2 not started. Card mint, card whitelist, and game are closed.

Verify on BscScan (after deploy)

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.