# Whalers (WHALE) · 捕鲸者 > 2,000 fully on-chain agentic NFTs on BNB Chain (chain ID 56). Open to every wallet: humans, bots and AI agents. ## Mint facts - Contract: 0x94F4986cCe62334e49fe56745E3e40c236D5BAA0 (deployed, source verified: https://repo.sourcify.dev/56/0x94F4986cCe62334e49fe56745E3e40c236D5BAA0) - Explorer: https://bscscan.com/address/0x94F4986cCe62334e49fe56745E3e40c236D5BAA0 - Chain: BNB Smart Chain, chainId 56 - Function: mint(uint256 quantity), selector 0xa0712d68, payable - Price: 286000000000000 wei (0.000286 BNB) per NFT - Exact price required: msg.value must equal 286000000000000 × quantity, or it reverts "Wrong price" - qty 1 = 286000000000000 wei, 2 = 572000000000000, 3 = 858000000000000, 4 = 1144000000000000, 5 = 1430000000000000 - Max 5 per transaction, max 5 per wallet (lifetime), max supply 2000 - Start: unix 1793534400 = 1 Nov 2026 20:00 Asia/Shanghai (Beijing time). Earlier calls revert "Mint not started". - Mint closes for good once commitReveal() is called. - Revert reasons: "Mint not started", "Mint closed", "Bad quantity", "Sold out", "Wallet limit", "Wrong price", "Payout failed" - Ready-made transactions (chainId 56, to = 0x94F4986cCe62334e49fe56745E3e40c236D5BAA0): - qty 1: value 286000000000000 wei (0x1041d9067e000), data 0xa0712d680000000000000000000000000000000000000000000000000000000000000001 - qty 2: value 572000000000000 wei (0x2083b20cfc000), data 0xa0712d680000000000000000000000000000000000000000000000000000000000000002 - qty 3: value 858000000000000 wei (0x30c58b137a000), data 0xa0712d680000000000000000000000000000000000000000000000000000000000000003 - qty 4: value 1144000000000000 wei (0x41076419f8000), data 0xa0712d680000000000000000000000000000000000000000000000000000000000000004 - qty 5: value 1430000000000000 wei (0x51493d2076000), data 0xa0712d680000000000000000000000000000000000000000000000000000000000000005 - Smart-contract wallets may mint (tokens are sent with _mint, no onERC721Received callback needed). ## agent_prompt Copy-paste prompt for Binance Agentic Wallet, .ai agents or any wallet agent (no Agent ID needed; any wallet or agent on BNB Chain can mint). Translations in 7 languages: https://whalers.pages.dev/mint.json → "agent_prompt". ```text Mint Whalers NFTs for me on BNB Chain. - Network: BNB Chain mainnet, chain ID 56 - Contract: 0x94F4986cCe62334e49fe56745E3e40c236D5BAA0 (verified on Sourcify) - Function: mint(uint256 quantity), selector 0xa0712d68 - Quantity: [1-5] (max 5 per wallet in total) - Value: exactly 286000000000000 wei × quantity (0.000286 BNB each). Any other amount reverts. No refunds. - Mint opens at Unix 1793534400 = 1 Nov 2026 20:00 Asia/Shanghai. Before that it reverts with "Mint not started". - First check mintedBy(my address) and totalMinted() so you don't exceed 5 or the 2,000 supply. - Show me the total in BNB and the gas, send the transaction from my wallet, then give me the tx hash and my token IDs. Full spec: https://whalers.pages.dev/mint.json and https://whalers.pages.dev/llms.txt ``` ## Useful views - totalMinted() 0xa2309ff8 · mintedBy(address) 0x3cef28d2 · mintPrice() 0x6817c76c · MINT_START() 0xc6374d0c - revealStatus() 0x263e4f5e · revealBlock() 0x66bb81c7 · revealed() 0x51830227 · revealOffset() 0x2097ac3b · revealSeed() 0x32c2f7f8 - traitsOf(uint256) 0x5efab6e4 (reverts "Not revealed" before reveal) · tokenURI(uint256) 0xc87b56dd · contractURI() 0xe8a3d485 ## Fair reveal (anyone can do it, value 0) - No rarity exists at mint. Every token shows a sealed scroll (trait "Status: Unrevealed") until reveal: https://whalers.pages.dev/unrevealed.svg - Step 1: commitReveal(), selector 0x9d7b3f2d. Allowed when totalMinted() == 2000 or block.timestamp >= 1794139200 (8 Nov 2026 20:00 Asia/Shanghai). Sets revealBlock = block.number + 5 and closes the mint. Reverts: "Already revealed", "Not eligible", "Already committed". - Step 2: reveal(), selector 0xa475b5dd. Allowed when block.number > revealBlock and within 256 blocks (about 2 minutes on BNB Chain, which makes a block about every 0.45 s; 256 blocks measured at ~115 s on 31 Oct 2026). IMPORTANT: once anyone commits, reveal() must be called within that window. Seed = blockhash(revealBlock). Reverts: "Already revealed", "Too early", "Reveal expired". If it expires, anyone may call commitReveal() again. - revealStatus() returns (phase, blockNow, revealBlock, canCommit, canReveal); phase 0 minting, 1 committed, 2 expired, 3 revealed. - Events: Revealed(uint256 offset) and ERC-4906 BatchMetadataUpdate(1, totalMinted()) so marketplaces refresh. ## Rarity Fixed 2000-slot deck, shuffled once at reveal by a Feistel permutation: Common 900, Uncommon 600, Rare 300, Epic 150, Legendary 50 (exact if all 2000 mint). Honest risk: only the single validator that produces block revealBlock could try to influence the seed (pick block contents or skip its slot), and a committer could wait out the 256-block window and re-commit. Calling reveal() promptly closes both; one honest caller is enough. ## Control and money No owner, admin, pause, proxy or upgrade. Each mint forwards its full value to 0x5ec628f3339B1fEC2e8572a5b307932cC3bCdd1a in the same transaction. Royalty 5% (ERC-2981) to the same address. ## Names English: Whalers · 简体中文: 捕鲸者 · Tiếng Việt: Thợ Săn Cá Voi · 日本語: ホエーラーズ · 한국어: 웨일러스 · ไทย: นักล่าวาฬ · Bahasa Indonesia: Pemburu Paus ## Summary in 7 languages - English: 2,000 agentic NFTs on BNB Chain. Open to every wallet: humans, bots and AI agents. Vintage whaling-era portraits, drawn and stored 100% on-chain. 1 November 2026 · 20:00 Beijing time (Asia/Shanghai). - 简体中文: BNB Chain 上的 2,000 个智能体 NFT,向所有钱包开放:真人、机器人和 AI 智能体都能铸造。 复古捕鲸时代风格肖像,100% 链上生成并存储。 2026年11月1日 20:00(北京时间,Asia/Shanghai). - Tiếng Việt: 2.000 NFT agentic trên BNB Chain. Mở cho mọi ví: người dùng, bot và AI agent. Chân dung phong cách thời săn cá voi cổ điển, được vẽ và lưu trữ 100% on-chain. 20:00 ngày 1/11/2026 (giờ Bắc Kinh, Asia/Shanghai). - 日本語: BNB Chain上の2,000体のエージェント型NFT。人間、ボット、AIエージェント、すべてのウォレットに開かれています。 古き捕鯨時代のポートレートを、100%オンチェーンで描画・保存。 2026年11月1日 20:00(北京時間・Asia/Shanghai). - 한국어: BNB Chain의 에이전틱 NFT 2,000개. 사람, 봇, AI 에이전트 등 모든 지갑에 열려 있습니다. 옛 포경 시대 감성의 초상화를 100% 온체인으로 그리고 저장합니다. 2026년 11월 1일 20:00 (베이징 시간, Asia/Shanghai). - ไทย: NFT แบบเอเจนต์ 2,000 ชิ้นบน BNB Chain เปิดให้ทุกกระเป๋า ทั้งคน บอท และเอเจนต์ AI ภาพเหมือนสไตล์ยุคล่าวาฬวินเทจ วาดและจัดเก็บบนเชน 100% 1 พฤศจิกายน 2026 เวลา 20:00 น. (เวลาปักกิ่ง, Asia/Shanghai). - Bahasa Indonesia: 2.000 NFT agentik di BNB Chain. Terbuka untuk semua dompet: manusia, bot, dan agen AI. Potret bergaya era perburuan paus klasik, digambar dan disimpan 100% on-chain. 1 November 2026 pukul 20.00 waktu Beijing (Asia/Shanghai). ## Public RPC URLs (BNB Chain, chainId 56) - https://bsc-dataseed.bnbchain.org - https://bsc-dataseed1.defibit.io - https://bsc-dataseed1.ninicoin.io - https://bsc-rpc.publicnode.com - https://bsc.drpc.org ## Machine-readable - Full spec, tx templates and ABI: https://whalers.pages.dev/mint.json - ABI only: https://whalers.pages.dev/abi.json - Live-status eth_call payloads: https://whalers.pages.dev/status.json - Agent card: https://whalers.pages.dev/.well-known/agent.json - Long version of this file: https://whalers.pages.dev/llms-full.txt - This file: https://whalers.pages.dev/llms.txt - Site: https://whalers.pages.dev ## Deployment - Contract: 0x94F4986cCe62334e49fe56745E3e40c236D5BAA0 - Deploy tx: 0xa53eb8a629d07249c7ea4ef29d3e980efc452b12be5e6ac239fd8f2b84fa8f65 (block 130874760), via the CREATE2 factory 0x4e59b44847b379578588920cA78FbF26c0B4956C, salt 0 - Source verified: https://repo.sourcify.dev/56/0x94F4986cCe62334e49fe56745E3e40c236D5BAA0 (Sourcify exact match) · https://bscscan.com/address/0x94F4986cCe62334e49fe56745E3e40c236D5BAA0#code - Compiler: solc 0.8.24, OpenZeppelin 5.0.2, optimizer 200 runs, viaIR, evmVersion cancun ## How to mint (step by step, for agents) 1. Check the time: block.timestamp must be >= 1793534400 (1 Nov 2026 20:00 Asia/Shanghai). 2. Check room: totalMinted() < 2000 and mintedBy(yourAddress) + quantity <= 5. Payloads: https://whalers.pages.dev/status.json 3. Send a transaction on chainId 56: to 0x94F4986cCe62334e49fe56745E3e40c236D5BAA0, value = 286000000000000 × quantity wei (exact), data = 0xa0712d68 + quantity as a 32-byte big-endian uint. 4. Gas (measured in tests): a mint of 1 uses about 74k to 125k gas, a mint of 5 about 207k. A 300000 gas limit covers every quantity. 5. The whole payment is forwarded to the payout address 0x5ec628f3339B1fEC2e8572a5b307932cC3bCdd1a in the same transaction. ## How to reveal (anyone, value 0) 1. When totalMinted() == 2000, or from unix 1794139200 (8 Nov 2026 20:00 Asia/Shanghai), send data 0x9d7b3f2d (commitReveal()) to the contract. revealBlock = block.number + 5. Minting closes for good. 2. Wait until block.number > revealBlock (about 2 to 3 seconds), then send data 0xa475b5dd (reveal()). 3. WARNING: reveal() must be sent within 256 blocks of revealBlock, about 2 minutes on BNB Chain (~0.45 s per block). After that it reverts "Reveal expired" and someone must call commitReveal() again. 4. Poll revealStatus() (0x263e4f5e): canReveal = true means send reveal() now. ## Selectors - MAX_PER_TX() view - MAX_PER_WALLET() view - MAX_SUPPLY() view - MINT_START() view - PAYOUT() view - PRICE() view - REVEAL_DEADLINE() view - REVEAL_DELAY() view - ROYALTY_BPS() view - approve(address,uint256) nonpayable - balanceOf(address) view - commitReveal() nonpayable - contractURI() pure - getApproved(uint256) view - isApprovedForAll(address,address) view - mint(uint256) payable - mintPrice() pure - mintedBy(address) view - name() view - ownerOf(uint256) view - reveal() nonpayable - revealBlock() view - revealOffset() view - revealSeed() view - revealStatus() view - revealed() view - royaltyInfo(uint256,uint256) view - safeTransferFrom(address,address,uint256) nonpayable - safeTransferFrom(address,address,uint256,bytes) nonpayable - setApprovalForAll(address,bool) nonpayable - supportsInterface(bytes4) view - symbol() view - tokenURI(uint256) view - totalMinted() view - totalSupply() view - traitsOf(uint256) view - transferFrom(address,address,uint256) nonpayable (See mint.json "views" for selectors.) ## Full ABI (https://whalers.pages.dev/abi.json) ```json [{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"ERC2981InvalidDefaultRoyalty","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC2981InvalidDefaultRoyaltyReceiver","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"ERC2981InvalidTokenRoyalty","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC2981InvalidTokenRoyaltyReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_toTokenId","type":"uint256"}],"name":"BatchMetadataUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"revealBlock","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"}],"name":"RevealCommitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"offset","type":"uint256"}],"name":"Revealed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_PER_TX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PER_WALLET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINT_START","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAYOUT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REVEAL_DEADLINE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REVEAL_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ROYALTY_BPS","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"commitReveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mintedBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealBlock","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"revealOffset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"revealSeed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"revealStatus","outputs":[{"internalType":"uint256","name":"phase","type":"uint256"},{"internalType":"uint256","name":"blockNow","type":"uint256"},{"internalType":"uint256","name":"commitBlock","type":"uint256"},{"internalType":"bool","name":"canCommit","type":"bool"},{"internalType":"bool","name":"canReveal","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"traitsOf","outputs":[{"internalType":"uint256","name":"rarity","type":"uint256"},{"internalType":"uint256","name":"whale","type":"uint256"},{"internalType":"uint256","name":"body","type":"uint256"},{"internalType":"uint256","name":"bg","type":"uint256"},{"internalType":"uint256","name":"acc","type":"uint256"},{"internalType":"uint256","name":"eyes","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}] ```