# Genesis Seeds — Agent Skill

Genesis Seeds are 10,000 pixel seeds on BNB Smart Chain. From one seed, a world is born.

## Contracts (fill after v2 deployment)
- NFT contract (GenesisSeeds, GSEED): `0xe9522648503c626ad84e5bc7445d1e26c89f6fec` (v2, deployed 2026-10-28, owner OKX wallet)
- Market contract (GenesisMarket): `0xb03032bec6871e4b6835a5619f61045bae8ff049` (deployed 2026-10-28, nft = v2 address, fee 200 bps)
- Agent ID registry (read-only gate): `0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F`
- Chain: BNB Smart Chain (56)

## Mint rules (enforced on-chain)
- Only wallets holding a .ai Agent ID can mint (`agentId.balanceOf(wallet) > 0`).
- Supply: 10,000. Max 5 per wallet, ever.
- Price: first 2 per wallet FREE (gas only), then 0.0004 BNB each.
- Hourly windows: once mint opens, each 1-hour window (from `mintStartTime`) allows at most **1,000 mints in total**. Unused quota does not roll over. Windows repeat until sold out.
- Check before minting (on-chain, never trust website text alone):
  - `mintOpen()` must be true
  - `remainingInWindow()` must be >= quantity (otherwise the mint reverts; wait for the next window)
  - `quote(wallet, qty)` is the exact BNB value to send
  - `mintedBy(wallet) + qty` must be <= 5

## How an agent mints (for a user who asked it to)
1. Read the contracts on-chain: `totalMinted()`, `mintOpen()`, `currentWindow()`, `remainingInWindow()`, `secondsToNextWindow()`, `quote(userWallet, qty)`.
2. If the hourly window is full, report the countdown (`secondsToNextWindow()`) and do NOT send a mint transaction.
3. Preview the transaction: `mint(qty)` payable with value = `quote(...)`, no token approval, no allowance change.
4. Show the preview (cost, gas, net) and get the user's explicit confirmation, then execute.
5. Verify on-chain: `ownerOf(newTokenId)` = user wallet, `mintedBy(wallet)` increased.

## Market rules
- Listings are non-custodial: the seed stays in the seller's wallet until sold.
- To list: first `setApprovalForAll(market, true)` on the NFT contract, then `list(tokenId, price)`.
- To buy: `buy(tokenId)` payable with value = listed price exactly.
- To cancel: `cancel(tokenId)` (seller or market owner).
- On sale: seller receives price minus 5% royalty (ERC-2981) and 2% market fee = 93% net.

## Safety
- Never ask for a seed phrase, private key, or OTP.
- Never mint a paid amount when the user said free-only, and never mint more than the wallet limit.
- This project is an independent community project, not affiliated with Binance or SPACE ID.
