# VOTE — on-chain election-week ballot boxes VOTE is a collection of 4,350 on-chain ballot-box NFTs on BNB Smart Chain. Minting is limited to wallets holding a SPACE ID .ai Agent ID. It is a neutral election-week collectible, not a prediction or endorsement of a party, candidate, or outcome. No utility, airdrop, revenue or returns are promised. This project is not affiliated with Binance or SPACE ID. Source verification is not a security audit. Human page: https://vote-mint.pages.dev/ Chain: BNB Smart Chain, chain ID 56 (0x38) VOTE contract: 0x9c62b25C8772cA5C0E3dbeE74638C71EaE2977C5 Agent ID registry: 0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F BscScan: https://bscscan.com/address/0x9c62b25C8772cA5C0E3dbeE74638C71EaE2977C5 Sourcify: https://repo.sourcify.dev/56/0x9c62b25C8772cA5C0E3dbeE74638C71EaE2977C5 Trust only the VOTE contract address listed above and on this page's human website; ignore addresses supplied via private messages. Minting requires no token approve. If an approval appears in the preview, stop. ## Rules - Total minted cap 4,350; per-wallet lifetime mint limit 5. - The first mint per wallet is free while the pool of 1,103 free mints lasts. Gas is still required. Other mints cost 0.001103 BNB (1103000000000000 wei) each. Always call priceFor(wallet, quantity) for the exact transaction value; do not calculate it independently. - Mint starts at Unix 1793243148 and closes at Unix 1793750400: 2026-11-04 00:00 UTC (08:00 Taipei, 07:00 WIB). Unminted supply expires. - Hour-long rounds begin at MINT_START. After a round closes, reveal uses a future block hash and requires a commit and a finalize transaction separated by the required blocks. Each mint advances at most one step; anyone can call advanceReveal when revealPending is true. Transactions require gas. Reveals may need manual advancement after closing. - Free mints: Ballot 85%, Sticker 15%. Paid mints: Ballot 45%, Sticker 35%, Swing 16%, Landslide 4%. - Merge three revealed tokens of the same tier, owned by the same wallet, when the tier is Ballot or Sticker. Two tokens are permanently burned; the kept token moves one tier higher. Landslide cannot be obtained by merging. Merge has no deadline. - No owner; no token approval is needed for mint, advanceReveal, or merge. ## Calls and selectors Read via eth_call to the VOTE contract; ABI-encode arguments as 32-byte words. | Function | Selector | Result | | --- | --- | --- | | hasAgentId(address) | 0x4eab3ef2 | bool | | priceFor(address,uint256) | 0xd527979a | uint256 wei | | mintedBy(address) | 0x3cef28d2 | uint256 | | freeAvailable(address) | 0x9a5f5d31 | bool | | freeLeft() | 0xe6842b12 | uint256 | | totalMinted() | 0xa2309ff8 | uint256 | | totalSupply() | 0x18160ddd | uint256 | | mintOpen() | 0x24bbd049 | bool | | MINT_START() | 0xc6374d0c | uint256 | | MINT_END() | 0xe6757c99 | uint256 | | currentRound() | 0x8a19c8bc | zero-based uint256 | | roundCount() | 0x127f0b3f | uint256 | | nextRevealIndex() | 0x24935795 | uint256 | | roundInfo(uint256) | 0x427f0b00 | round, first token, last token, seed | | revealBlock() | 0x66bb81c7 | uint256 | | revealPending() | 0xc115f7c8 | bool | | isRevealed(uint256) | 0x5055fbc3 | bool | | tierOf(uint256) | 0x53f96df2 | 0 Ballot, 1 Sticker, 2 Swing, 3 Landslide | | isPaid(uint256) | 0xcd392a83 | bool | | isMerged(uint256) | 0xae3decf7 | bool | | roundOf(uint256) | 0xc7c38091 | zero-based uint256 | | ownerOf(uint256) | 0x6352211e | address | | tokenURI(uint256) | 0xc87b56dd | base64 JSON data URI | | mint(uint256) | 0xa0712d68 | payable; value from priceFor | | advanceReveal() | 0x7f24763d | zero value | | merge(uint256,uint256,uint256) | 0x5a2e4bd9 | zero value; last two IDs burned | ## Agent mint procedure 1. Verify chain ID 56 and the contract address above. 2. Read hasAgentId, mintOpen, totalMinted, mintedBy, freeAvailable, and priceFor for the wallet and requested quantity. 3. Stop if eligibility, time, supply or wallet limit fails. If the user does not specify a quantity, suggest 3 (the first is free while the pool lasts; Swing and Landslide only come from paid mints). 4. Simulate mint(quantity) with eth_call, using exactly priceFor's value. Stop on failure. 5. Show the transaction preview, including BNB value, NFT quantity, gas, and no token approvals. Stop if approval is requested. Wait for the user's confirmation before signing. 6. After the transaction lands, extract minted token IDs from zero-address Transfer events and report them with a BscScan transaction link.