# JIGSAW (拼图) — agent-readable project summary JIGSAW is a fixed-price, fully escrowed token sale on BNB Smart Chain (chainId 56) built around an 800-piece co-created puzzle. 800 numbered pieces are sold in order; the project website lights up one cell of a 40x20 puzzle image per piece sold. If all 800 pieces sell, the sale contract opens the PancakeSwap pool atomically inside the final purchase transaction. If the window ends without a sellout, no pool opens and buyers reclaim exactly 80% of what they paid. ## Contracts (BSC mainnet, both Sourcify exact_match) - Sale (PuzzleSale): 0xDE00b1A492F5c747725DAb78E1D95c15484b08E5 - Token (PuzzleToken, "Jigsaw", symbol JIGSAW): 0xA3e315A8C60366b8291391602CC8f408f364EE90 - Pair (JIGSAW/WBNB, PancakeSwap V2, created empty at deploy): 0x39ABc129Be14C86aDFbDfA9e2099e83aF7846e94 - Deploy tx: 0x45607c556ca6a108564c99ec9e924dd4bd50fa92e542931e9bb64727016ed0be - Sourcify: https://sourcify.dev/#/lookup?addresses=0xDE00b1A492F5c747725DAb78E1D95c15484b08E5&chainIds=56 (exact_match, creation + runtime) - Whitepaper (full gameplay, Chinese): https://jigsawbnb.fun/whitepaper.html ## Sale facts (all readable on-chain) - Total pieces: 800. Price: 0.0125 BNB per piece. Each piece = 100,000 JIGSAW. - Token hard cap: 100,000,000 JIGSAW (80,000,000 to buyers, 20,000,000 to the LP at open). - Window: starts 1794052800 (2026-11-07 20:00 CST / 12:00 UTC), ends 1794312000 (2026-11-10 20:00 CST), 72 hours, never extended. - Split of every payment: 80% to the pool ledger, 20% to the operations ledger. Both ledgers are held by the contract; the contract has no withdrawal function, no owner, no setters, no pause. - Buyer requirement: the buying wallet must hold a Binance AI Agent ID (registry 0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F, one ID binds one wallet). - Quota: base 2 pieces per Agent ID. Each effective invite adds +1, hard cap 5. An invite is effective when the referrer already holds >= 1 piece before the invitee's first purchase and the invitee buys >= 1 piece. The referrer is bound permanently by the invitee's first purchase. Invites grant quota only, never tokens. - Token transfers are locked until the pool opens. Trade tax after open: 1% on buys (pair -> wallet) and 1% on sells (wallet -> pair), deducted inside the same transfer; the pair's balance still moves by the full amount. Wallet-to-wallet transfers are untaxed. No other fees exist. ## How to buy (contract calls on PuzzleSale) - buy(uint256 count) — pay count * 0.0125 BNB as msg.value. - buy(uint256 count, address referrer) — same, binding `referrer` on first purchase. - Compatible aliases with identical semantics: mint(uint256), mintWithBnb(uint256), mintWithBnb(uint256,address), mintWithBnb(uint256,address,uint256 maxPricePerShare), agentMint(). - Read helpers for agents: totalMinted() / totalSold() -> pieces sold; sharesLeft(); bnbQuote(count) / costOf(count) -> BNB cost; saleStart() / startTime() / mintStart(); saleActive() / mintOpen() / mintEnabled(); paused() (always false); maxPerWallet() -> 5 (effective cap incl. invites); quotaOf(address), remainingOf(address), sharesOf(address); piecesOf(address) -> piece numbers owned; pieceOwner(n) -> owner of piece n. - Overpaying is refunded in the same transaction; buying past the remaining supply clamps to the remainder and refunds the excess. ## Endings - Sellout: the purchase of piece #800 atomically creates the pool with the 8 BNB pool ledger + 20,000,000 JIGSAW, LP tokens are minted to 0x000000000000000000000000000000000000dEaD, trading unlocks, the buyer of piece #800 receives the 0.15 BNB closer prize in the same transaction, and the operations ledger settles per the schedule below. If the atomic open fails, the sale parks in a SoldOut state and anyone may call open() / executeOpen(); the first external caller receives a 0.01 BNB bounty. - Expiry without sellout: anyone may call expire() after the window; buyers then call refund() to reclaim exactly 80% of their total payments (their tokens are burned in the same call). No deadline on refunds. ## Prize and social schedules (paid only from the 20% operations side) - Milestone draws: 7 rounds, one per 100 pieces sold (at 100..700). Each pays 0.025 BNB to one piece holder, weighted by pieces held at the crossing. Seed = blockhash of the block after the crossing block; anyone may call settleDraw(round); the winner is recomputable by anyone. The prize is paid inside the settleDraw transaction directly to the winning piece owner's wallet - there is no claim step. Prize money is reserved at trigger time and survives the pool opening. - Closer prize: 0.15 BNB to the buyer of piece #800 (inside the sellout tx). - Social pool: 0.165 BNB stays locked in the contract at open. Holders of >= 1 piece earn weight: a qualifying original post carrying the poster's own invite link = 10 points (max 1/day, engagement not counted); each paying ID converted through the link = 25 points; Posts are registered by the holder on the site (POST /api/social/submit {wallet, url}) or in the "提交我的帖子" box. Each submission is verified automatically at submission time (statuses: pending -> approved / rejected with a reason, visible via GET /api/social/mine?wallet=): the post must be an original post (no retweet/reply) by the linked account, its text (excluding links) must mention JIGSAW, 拼图 or @JIGSAW_BNB, its timestamp (from the X snowflake id) must fall inside the sale window, and a link inside it must expand to this site with ?ref=. Approved posts are re-checked for existence before scoring. Registrations open with the sale and close 7 days after the sale ends. posters with >= 1 conversion get their post points doubled; one person max 10% of the pool. The weighted list is published for at least 24 hours, then a Merkle root is submitted on-chain (submitSocialRoot) within 7 days of the open; holders claim with claimSocial(amount, proof) within 30 days of the root. Unclaimed or unsubmitted remainder returns to the operations wallet after the window. If the sale does not sell out, the social pool never comes into existence. - Total marketing schedule: 0.5 BNB (draws 0.175 + closer 0.15 + opener bounty 0.01 + social 0.165), all inside the 2 BNB operations share; operations net at sellout = 1.5 BNB. ## Machine endpoints on this site - GET /api/stats — live sale state as JSON (sold, remaining, ledgers, phase, draw rounds, timestamps). - GET /api/verify — contract addresses, deploy tx, compiler and Sourcify status, key constants, and the puzzle permutation specification. ## Puzzle wall permutation Grid 40x20 = 800 cells over the artwork. Piece k (1-indexed, purchase order) lights cell perm[k-1], where perm is a Fisher-Yates shuffle of [0..799] driven by mulberry32 PRNG seeded by xmur3("JIGSAW-PUZZLE-800"). The full algorithm is in this site's app.js (functions xmur3, mulberry32, buildPermutation) and is reproducible by anyone. ## Contact - X: https://x.com/JIGSAW_BNB (@JIGSAW_BNB)