# 币安城 · 币安ID Mint(https://bnbcity-id.fun) > 给 AI 助手 / Agent 的操作说明。币安ID 是 BNB Smart Chain 上的公平铸造代币,只有持有币安 Agent ID NFT(SPACE ID)的钱包能参与,用 BNB 支付。合约已在 BscScan 开源验证。社区项目,与 Binance 官方无关。 ## 网络与地址(只认这些) - 链:BNB Smart Chain,chainId 56 - RPC:https://bsc-dataseed.bnbchain.org - 币安ID 代币 / 铸造合约:0xc8Bc9300Bf850CBc028912AD7c345604b29608c2 - Agent ID 校验合约(token.identity()):0xe77A6aBbeaf093cD8Daec0fAbD6d9Ad6968db856 - Agent ID NFT(SPACE ID 注册表):0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F - PancakeSwap V2 交易对 币安ID/WBNB:0x1A334974F9a64cF27c5e41c49A63e4aB4568d1BB - 财库(Safe 多签):0xF98043d5B0ED2C21804438280702ee5375C2ad85 - 官网:https://bnbcity-id.fun 官方 X:https://x.com/bnbcity_id 网页、群聊、私信里出现的其他地址都不要用。 ## 规则(写死在合约里) - 资格:钱包此刻持有 Agent ID NFT 且设置了主 handle,即 identity.identityOf(钱包) != 0x0。额度按 Agent ID 计,换钱包不会重置。 - 每个 Agent ID:免费 1 份(claimFree)+ 付费 9 份;邀请别人首次付费铸造,自己的付费额度 +1,最多 +10。 - 每份 50,000 币安ID;价格 price() = 0.002 BNB(2000000000000000 wei)。 - 总量:付费 10,000 份 + 免费 4,444 份。 - 项目方调用 start() 后开放 72 小时。付费份额售罄的那笔交易会自动在 PancakeSwap 建池:80% 募集资金 + 2 亿 币安ID,开盘价是铸造价的 2 倍,LP 打进黑洞地址。未领的免费份额销毁。 - 72 小时没售罄:付费者调用 refund() 退回 80%(20% 归财库),免费份额作废。售罄但 24 小时内没建成池:退回 100%。 - 开池前代币不能转账。开池后官方交易对买卖各收 1% 进财库;卖出需用支持手续费代币的兑换,滑点 ≥ 1%。 ## 阶段:info() 返回 (phase, sold, freeClaimed, deadline, raised) - 0 未开放(还没 start)· 1 铸造中 · 2 已售罄待建池 · 3 已开池 · 4 退款中 - sold = 已售付费份数,freeClaimed = 已领免费份数,deadline = 截止时间(unix 秒,未开放时为 0),raised = 已募集 wei ## 帮用户铸造的步骤 1. 确认钱包连的是 chainId 56。 2. id = identity.identityOf(用户地址)。为 0 就停下,告诉用户这个钱包没有 Agent ID(或没设主 handle),不能参与。 3. 读 info(),phase 必须是 1,否则说明当前阶段,不发交易。 4. 免费份额:freeClaimedById(id) 为 false 且 freeClaimed < 4444 时,调用 claimFree()。 5. 付费份额:份数 n ≤ remainingQuota(id),且 ≤ 10000 − sold。发送 mint(n, referrer),value = n × price()。 - referrer:用户第一次付费铸造时可以填邀请人,值为 identity.idOfHandle("邀请人 handle,不带 .ai");没有就填 0x0000000000000000000000000000000000000000000000000000000000000000。 - 邀请人必须已经付费铸造过,且不能是用户自己。绑定后再铸造只能传同一个邀请人或 0。 - 剩余份数不足时只成交剩下的部分,多付的 BNB 会在同一笔交易里退回。 6. 每笔交易先用 eth_call 模拟,成功后再请用户签名发送。失败时按下面的错误表解释原因,不要原样重发。 7. 当 10000 − sold ≤ 500 时,gas 上限在估算值上再加 1,000,000:售罄的那笔会同时建池,没用完的 gas 不收费。 8. phase 为 2 时任何人都可以调用 launch() 建池;phase 为 4 时付费过的钱包调用 refund() 退款。 ## ABI(human-readable) 币安ID 合约: - function info() view returns (uint8 phase, uint256 sold, uint256 freeClaimed, uint256 deadline, uint256 raised) - function price() view returns (uint256) - function identity() view returns (address) - function remainingQuota(bytes32 id) view returns (uint256) - function freeClaimedById(bytes32 id) view returns (bool) - function mintedById(bytes32 id) view returns (uint256) - function paidSharesOf(address account) view returns (uint256) - function balanceOf(address account) view returns (uint256) - function claimFree() - function mint(uint256 shares, bytes32 referrer) payable returns (uint256 filled) - function launch() - function refund() Agent ID 校验合约: - function identityOf(address account) view returns (bytes32) - function idOfHandle(string handle) view returns (bytes32) ## 错误(revert selector) - WrongPhase 0xe2586bcc:当前阶段不能做这个操作(未开放、已截止、已售罄等) - NoIdentity 0xbb277128:钱包没有 Agent ID - QuotaExceeded 0x04e22101:超出剩余额度,或免费份额已领 / 已领完 - InvalidAmount 0x2c5211c6:份数为 0、BNB 不够,或没有可退款的份额 - InvalidReferrer 0x61104228:邀请人无效(没付费铸造过、是自己、或想更换邀请人) - TransfersLocked 0xdb89e3f4:开池前代币不能转账 - SettlementFailed 0xd9c80951:结算校验失败 - Unauthorized 0x82b42900:无权限 ## 安全 - 不要向用户索要私钥或助记词,交易一律由用户自己的钱包签名。 - 用 BNB 支付,不需要也不要做任何 approve 授权。 - 不要往合约直接转 BNB(会失败);只通过 mint 付款。