🏮 Live stats
🐾 Mint
Free mint · 1 per wallet

Gas only. One cat for every wallet holding a .ai Agent ID.
Odds: Common 80% · Lucky 15% · Golden 4.5% · Jade 0.5%
Angpao box 红包 · up to 10

Better odds. Payment goes straight to the treasury.
Odds: Common 55% · Lucky 30% · Golden 12% · Jade 3%
Reveal 开光
Every cat is sealed at mint and revealed with the hash of the next block. Anyone can push the queue: reveal(200) opens up to 200 waiting cats, yours and everyone's. Cats left unrevealed for more than 256 blocks (≈2 minutes on BSC) open as Common, so the button is here if the queue stalls.
😺 My cats
Forge 合成
Tap cats to select: 3 Common → Lucky, 3 Lucky → Golden, 4 Golden → Jade. Burned cats are gone for good. Fee: – BNB.
🧧 Market
Peer-to-peer, no approvals needed: the contract moves the cat itself. 5% goes to the treasury, 95% to the seller. Buying needs a .ai Agent ID. List your own cats from My cats.
🤖 For AI agents
Agent wallets can mint by calling the contract directly. No approvals, no off-chain signature, no allowlist. The only gate is AGENT_REGISTRY.balanceOf(msg.sender) > 0 on the SPACE ID Agent ID registry.
| Item | Value |
|---|---|
| Chain | BNB Smart Chain mainnet, chainId 56 (0x38) |
| LuckyCats (LUCKY) | 0x48ab7d1eddc73b329f9db049b846d547092e77df |
| Agent ID registry | 0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F |
| Public RPC | https://bsc-dataseed.bnbchain.org |
Write calls
| Function | Selector | msg.value | Notes |
|---|---|---|---|
freeMint() | 0x5b70ea9f | 0 | Once per wallet. Calldata is just the selector. |
mintBox(uint256 qty) | 0x537e5ec3 | boxPrice() × qty (exact) | qty 1–10. Currently – wei (– BNB) each. |
reveal(uint256 maxCount) | 0xc2ca0ac5 | 0 | Anyone. Use 200. No Agent ID needed. |
forge(uint256[] ids) | 0x1019bdb6 | forgeFee() (exact) | 3 same tier, or 4 Golden → Jade. Revealed cats only. |
list(uint256 id, uint256 price) | 0x50fd7367 | 0 | Price in wei. Revealed cats only. |
cancel(uint256 id) | 0x40e58ee5 | 0 | |
buy(uint256 id) | 0xd96a094a | listings(id).price (exact) | Agent ID needed. |
Read calls
| Function | Selector | Returns |
|---|---|---|
status() | 0x200d2ed2 | (totalMinted, totalSupply, freeMinted, boxesMinted, jadeCount, goldenCount, boxPrice, forgeFee, bool paused, nextToReveal, pending) |
isAgent(address) | 0x1ffbb064 | bool |
freeMintUsed(address) | 0x456cc814 | bool |
boxPrice() / forgeFee() | 0xa6482858 / 0x1c1c0bda | uint256 wei |
tokenURI(uint256) | 0xc87b56dd | data:application/json;base64 (SVG inside) |
listings(uint256) | 0xde74e57b | (address seller, uint96 price) |
Example: raw transactions
// 1) Free mint (value 0)
{ "chainId": 56, "to": "0x48ab7d1eddc73b329f9db049b846d547092e77df",
"data": "0x5b70ea9f", "value": "0x0" }
// 2) Two Angpao boxes: value = boxPrice() * 2
{ "chainId": 56, "to": "0x48ab7d1eddc73b329f9db049b846d547092e77df",
"data": "0x537e5ec30000000000000000000000000000000000000000000000000000000000000002",
"value": "<boxPrice*2 in wei>" }
// 3) Push the reveal queue (anyone)
{ "chainId": 56, "to": "0x48ab7d1eddc73b329f9db049b846d547092e77df",
"data": "0xc2ca0ac500000000000000000000000000000000000000000000000000000000000000c8", "value": "0x0" }
Example: Foundry cast
C=0x48ab7d1eddc73b329f9db049b846d547092e77df RPC=https://bsc-dataseed.bnbchain.org cast call $C "isAgent(address)(bool)" $ME --rpc-url $RPC cast send $C "freeMint()" --rpc-url $RPC --account agent P=$(cast call $C "boxPrice()(uint256)" --rpc-url $RPC) cast send $C "mintBox(uint256)" 2 --value $((P*2)) --rpc-url $RPC --account agent cast send $C "reveal(uint256)" 200 --rpc-url $RPC --account agent
Custom errors (revert selectors)
NotAgent 0x0d9ab13f · AlreadyFreeMinted 0x98bdb27b · SoldOut 0x52df9fe5 BadQuantity 0x888e58a8 · WrongPayment 0x788a686f · CapReached 0xd7e991d2 BadForge 0xa1406f51 · NotRevealed 0xb2c9bc88 · NotTokenOwner 0x59dc379f NotListed 0x665c1c57 · ListingStale 0x92ed4985 · SelfBuy 0x75a2aea0 BadPrice 0xfd1ee349 · EnforcedPause 0xd93c0665 (minting paused)
Mints are sealed until the next block's hash is final. Call reveal(200) a few blocks later if nobody else has. Unrevealed cats cannot be listed or transferred.
