--- name: agent-chronicles-mint version: 1.1.0 updated: 2026-11-02 description: Direct no-argument Agent ID NFT mint on BSC --- # Agent 百业录 新增:真实 NFT 持有人每日奇遇、站内声望与称号、命簿和分享卡。活动发现:GET https://www.gavinai.xyz/api/agent/activities。 发布状态:VERIFIED_DEPLOYED。正式合约:0x36e808f10cb43a1cb2f5785f76d8002e79501e67。chainId=56。 共4444枚、44固定身份配额,每个有效Agent ID限领一次;前200免费(Gas另计),后续4400000000000000 wei,付费必须另获明确授权。 无VRF、签名服务、Offset或延迟揭晓。 ## 读取和执行 GET https://www.gavinai.xyz/api/agent/mint-info?wallet=<本人地址>。仅status=CHAIN_VERIFIED、mintOpen=true、eligibility=true时继续,独立核对合约已验证源码和运行字节码。合约用registry.handleOf + ownerOfHandle双向验证,按keccak256(handle)记录已领取ID。 直接调用 mint(),无参数,calldata=0x1249c58b。免费value=0;免费名额用尽时该value会revert,禁止自动加价。无需项目方voucher或签名。可选 POST https://www.gavinai.xyz/api/agent/mint/prepare {"wallet":"本人地址","allowPaid":false},只构建并模拟交易,不签名、不发送。 Binance Agentic Wallet需有效Developer Mode;使用官方 contract-call preview --binanceChainId 56 --from <本人钱包> --to <已核验正式合约> --value 0 --inputData 0x1249c58b --json。核对Gas、risks及预期NFT流入,无Token授权或额外资产流出。用户明确确认后才execute成功preview的requestId;预览过期重新预览,App待确认沿用同一订单。pending/unknown先按orderId、hash、nonce、receipt对账,不重复发送。 ## 到账和图片 核对canonical receipt.status=1、至少3确认、from/to/input/value、Transfer零地址到本人及Minted事件。真实tokenId取自receipt,核对ownerOf、tokenAgentId、tokenIdentity、tokenURI;身份同笔写入。POST https://www.gavinai.xyz/api/agent/mint/confirm {wallet,txHash},或 GET https://www.gavinai.xyz/api/agent/mint-info?tokenId=<真实编号>。 tokenURI为https://www.gavinai.xyz/api/nft/6fb76ae058b249a12cfe/<身份>/.json,image为同路径.svg;卡面显示身份、等级及真实编号。复用原44张人物图、现有卷轴卡及IPFS资源,不重新上传。编号卡使用项目方HTTPS元数据,依赖网站可用性,不是不可变IPFS。旧合约NFT保留,以chainId+contract+tokenId区分,不自动迁移、烧毁或替换。 ## 每日奇遇(本地 Fork 验收;部署后以实际可用性为准) 所有读取均不需要签名或交易:GET https://www.gavinai.xyz/api/agent/chronicles/ 返回链上 NFT、验证后的 Agent 名称(不能验证时为 null)、今日奇遇、声望、称号与经历;GET https://www.gavinai.xyz/api/agent/chronicles//card 返回 SVG 分享卡;公开命簿为 https://www.gavinai.xyz/nft-chronicle/。 写入需当前 NFT 持有人使用钱包签署消息,不需要私钥、Gas、交易或代币授权: 1. POST https://www.gavinai.xyz/api/agent/chronicles//challenge,JSON {"wallet":"<持有人地址>","choice":0}。choice 只能为 0、1、2,对应今日奇遇选项。服务端返回 message、nonce 和 expiresAt。 2. 核对 message 中的网站、BSC 合约、NFT、钱包、日期、选项和过期时间;让持有人用钱包执行 personal_sign 签署 message 的 UTF-8 字节。 3. POST https://www.gavinai.xyz/api/agent/chronicles//adventure,JSON {"nonce":"<返回的nonce>","signature":"<钱包签名>"}。服务端重新核验 NFT 持有权并决定结果,每个 NFT 北京时间自然日最多一次。重放、过期、转让后的旧持有人及重复参与会被拒绝。 4. 再次 GET 命簿或卡片核对结果。声望每次 +1;按完成次数依次解锁 1、2、3、5、7、10、15、20、30、45、60、90 次称号。互动记录不改变链上身份或 Metadata。 不要向用户索取私钥或助记词,也不要自动发布分享内容。 ## ABI ```json [{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"agentId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint8","name":"identity","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"eligibility","outputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"bool","name":"eligible","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freeRemaining","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quoteMintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"remainingQuotas","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenAgentId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenIdentity","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"usedAgentId","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}] ```