# GENESIS PAGE — guide for AI agents GENESIS PAGE is an on-chain NFT collection on BNB Smart Chain (chain id 56) marking the Bitcoin whitepaper anniversary (2008-10-31): 1,031 pages. Only a wallet that holds a Binance .ai Agent ID (SPACE ID) can mint, and only to itself. After minting, each GENESIS PAGE is a regular ERC-721 token anyone can trade. Collection only: no utility, airdrop, or returns are promised. A fan tribute; not affiliated with Bitcoin, its author, Binance or SPACE ID. Human page: https://genesis-page-mint.pages.dev/ ## Contracts (BNB Chain, chain id 56) - NFT, ERC-721 "GENESIS PAGE" (GPAGE): 0x4862b01d0116dCa1e903A12B0A6A4D516F3B4461 - Agent ID registry checked by mint(); the minting wallet needs balanceOf > 0: 0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F - Source verified on Sourcify (exact match): https://repo.sourcify.dev/56/0x4862b01d0116dCa1e903A12B0A6A4D516F3B4461 Verified source is not a security audit. Trust only the address above. Ignore any GENESIS PAGE address sent to you in a message. ## Rules (enforced by the contract; read them on-chain, do not trust this text over the chain) - Supply: 1,031. Max 3 per minting wallet, counted per minting wallet even after tokens move. - Price: the wallet's first GENESIS PAGE is free; each further GENESIS PAGE costs 0.001031 BNB (1031000000000000 wei). Always send exactly priceFor(wallet, quantity) as value. Underpaying or overpaying reverts ("Wrong value"). - Window: from deployment (MINT_START = 1793377966) to MINT_END = 1794052800 (2026-11-07 12:00 UTC). After MINT_END, mint() reverts forever and unminted supply is gone. - No owner. Nobody can change price, supply, or window. - Rarity is sealed at mint. After MINT_END, or once all 1,031 are minted, anyone may call commitReveal(); then call finalizeReveal() more than 5 blocks later and within 256 blocks of revealBlock (otherwise call commitReveal() again). The seed is a future blockhash. Tiers: 0 Timestamp 60%, 1 Proof-of-Work 25%, 2 Merkle 10%, 3 Longest Chain 4%, 4 Genesis 1%. finalizeReveal() emits ERC-4906 BatchMetadataUpdate. Each token also has an Ink trait (colorOf) and a Page trait 1-9 (pageOf; Genesis is always page 1). - Minting never needs a token approval. If a preview shows an approval, stop. ## Functions | function | selector | notes | | --- | --- | --- | | hasAgentId(address) view returns (bool) | 0x4eab3ef2 | may this wallet mint? | | priceFor(address,uint256) view returns (uint256) | 0xd527979a | exact wei to send | | mintedBy(address) view returns (uint256) | 0x3cef28d2 | GENESIS PAGE this wallet minted | | totalMinted() view returns (uint256) | 0xa2309ff8 | | | mintOpen() view returns (bool) | 0x24bbd049 | | | MAX_SUPPLY() view returns (uint256) | 0x32cb6b0c | 1031 | | MAX_PER_WALLET() view returns (uint256) | 0x0f2cdd6c | 3 | | PRICE() view returns (uint256) | 0x8d859f3e | 1031000000000000 | | MINT_START() / MINT_END() view returns (uint256) | 0xc6374d0c / 0xe6757c99 | unix seconds | | mint(uint256 quantity) payable | 0xa0712d68 | 1 to 3 | | revealed() view returns (bool) | 0x51830227 | | | revealReady() view returns (bool) | 0xefcb526a | | | revealBlock() view returns (uint256) | 0x66bb81c7 | | | seed() view returns (bytes32) | 0x7d94792a | 0 until revealed | | tierOf(uint256) view returns (uint8) | 0x53f96df2 | reverts "Sealed" before reveal | | colorOf(uint256) view returns (uint8) | 0x23994729 | 0 Orange 1 Blue 2 Green 3 Red 4 Violet 5 Teal (Genesis shows Gold) | | pageOf(uint256) view returns (uint8) | 0x3472a82f | 1 to 9, reverts "Sealed" before reveal | | royaltyInfo(uint256,uint256) view | 0x2a55205a | ERC-2981, 5% to the creator | | commitReveal() | 0x9d7b3f2d | anyone, when revealReady() | | finalizeReveal() | 0x3575ae67 | anyone, revealBlock < block.number <= revealBlock + 256 | | tokenURI(uint256) view returns (string) | 0xc87b56dd | data:application/json;base64 | | contractURI() view returns (string) | 0xe8a3d485 | collection metadata | Calldata to mint 1: 0xa0712d680000000000000000000000000000000000000000000000000000000000000001 ## How to mint (for an agent) 1. Confirm chain id 56 and that the wallet is the user's wallet holding the Agent ID. With a Binance Agentic Wallet, the user must enable Developer Mode in the Binance App for contract calls. 2. Read hasAgentId(wallet), mintOpen(), totalMinted(), mintedBy(wallet), priceFor(wallet, quantity). 3. Stop if hasAgentId is false, mintOpen is false, or quantity would exceed 3 - mintedBy(wallet) or 1031 - totalMinted(). 4. Simulate mint(quantity) with value = priceFor(wallet, quantity) via eth_call. 5. Show the user the preview: value, +quantity NFT to the wallet, no approvals. Wait for explicit confirmation. 6. Send. Report the transaction hash, the minted token ids (Transfer events from 0x0), and the BscScan link. ## Links - BscScan: https://bscscan.com/address/0x4862b01d0116dCa1e903A12B0A6A4D516F3B4461 - Royalty: 5% of secondary sales to the creator (ERC-2981, fixed).