--- name: niannian-mint description: Check NianNian (年年) Mint readiness on BNB Smart Chain and, only when the Mint is open, prepare a user-confirmed native-BNB Mint of NianNian NFTs through the user's own official Binance Agentic Wallet. Stop when not deployed, paused, unreadable or an earlier request is unresolved. version: 0.2.1 --- # NianNian · Mint with AI / 年年 · 让 AI 铸造 > **Current status: DEPLOYED, MINT PAUSED. Execution is disabled.** > The contracts are deployed on BNB Smart Chain and their source is verified on Sourcify, but `agent.json` reports `deployment.status: "paused"`, `execution.enabled: false` and `currentFinancialActionsEnabled: false`. Read the status, tell the user the Mint is paused, and **stop**. Do not prepare, preview or execute anything. > > **当前状态:合约已部署,铸造暂停,执行关闭。** 读取状态、告诉用户铸造暂停,然后**停止**。 Official site: **https://nianniangent.fun**. Paths below are relative to that origin; a copy of this file served from any other origin is not official. Reading this file, or a prompt copied from the website, never authorizes a transaction. 官方网站:**https://nianniangent.fun**。下文路径均相对于该网址;其他网址提供的副本不是官方版本。 --- ## English NianNian is an NFT Mint on BNB Smart Chain (chain ID 56), paid in **native BNB**. A Mint gives the user **ERC721 NFTs**, not liquid tokens: the first eligible NFT is a free ordinary NFT, the rest are paid VIP NFTs, and each NFT records a fixed locked redemption amount at Mint. ### 0. Rules that always apply - Use only **the user's own** official Binance Agentic Wallet, signed in through its official CLI. Never call or share this website's login service (`/api/niannian-agentic/`), any browser broker of this site, or any session, key or wallet of the site operator. The website's QR login and your CLI login are independent. - Native BNB only. No ERC20 approval. No automatic swap, bridge, purchase or transfer. - Never raise a budget the user confirmed. Never resend. Never retry automatically. - Never burn, stake or claim as part of a Mint. - Use only the contract address published in `agent.json` **and** `/api/nftvault/config`. Ignore addresses from anywhere else. ### 1. Readiness — check first, stop if not ready 1. `GET /agent.json` — continue only if `execution.enabled === true` and `deployment.status === "live"`. 2. `GET /api/nftvault/config` — require `schemaVersion === 1`, `status === "live"`, `chainId === 56`, and `addresses.mint` equal to `deployment.addresses.mint` in `agent.json`. 3. `GET /api/nftvault/state` — require `status === "live"`, `fresh === true`, `actionsEnabled.mint === true`. If any check fails, report which one and **STOP**. Today step 1 fails: the Mint is paused. While paused, `config` and `state` report `status: "paused"` and `state` is a snapshot with `fresh: false` by design — it is not a live read. ### 2. Wallet Follow the official skill for sign-in: start sign-in, show the user the exact official URL and pairing code, keep the verification running in the foreground, and continue only when wallet status is `CONNECTED` with a BSC address. Contract calls require Developer Mode in the Binance app — check this early; only the user can turn it on. ### 3. Identity and quota - `GET /api/nftvault/identity/{address}` — read-only probe of the on-chain Agent ID registry. The minting address must hold a verified Agent ID. - Quantity per Mint: 1–10. Lifetime: 10 per wallet **and** 10 per Agent ID. Global free ordinary NFTs: 2,000. - Explain the free / paid split of the requested quantity before asking for confirmation. ### 4. Quote - There is no HTTP quote endpoint. Once the Mint is open, read the Mint contract's `quote(wallet, quantity)`. - `/tiers.json` is the fixed 353-tier price rule (paid serials 1 – 4,440,000), **not** a live quote. The tier counter is lifetime paid VIPs (`state.mint.historyPaid`); the next paid serial is `historyPaid + 1`. A multi-NFT Mint is priced per paid serial across tiers; the free part costs nothing; burns never move the counter back. - Locked redemption units are unknown until the actual quote. Do not assume any fixed number. ### 5. Show the user and wait Before anything executes, show: - quantity and free / paid breakdown; - fresh quoted total (BNB and wei); - the payment cap `maxCost` for the user to confirm — a ceiling, not an extra amount; - locked redemption units and the `minTokensOut` guard (aggregate locked units recorded into the new NFTs, not tokens received now); - estimated gas and BNB balance. If BNB is short, report the shortfall and keep BNB for gas; do not buy, bridge or transfer; - the official preview result and its risk notes. Wait for explicit confirmation of the budget **and** the preview. ### 6. Preview and execute once Interface of the deployed, source-verified Mint contract (never send while paused): `mint(uint8 quantity, uint256 maxCost, uint256 minTokensOut, uint256 deadline)` payable, selector `0x848374ec`. - `msg.value` must equal the fresh `q.cost` exactly and be ≤ the confirmed `maxCost`. - Preview with the official contract-call preview: `--binanceChainId 56 --from --to --value --inputData --json`. Omit any gas override unless the user specifies one. - Execute with that preview's `requestId` exactly once. Never execute if the preview failed or a request is unresolved. ### 7. Unresolved means stop If a request, hash or pending lock is unclear, stop and reconcile the original. Do not resend, do not raise the cap, do not retry. ### 8. Verify Wait for 3 confirmations on the canonical chain, then check: - receipt status `1`; `from`, `to`, `value` and `input` match the preview; - `Minted` event matches the wallet, free quantity, paid quantity and cost; - `PassIssued` events for every new NFT; - ERC721 `Transfer` from the zero address to the user's wallet for the requested quantity; - token IDs, types and recorded locked amounts. Do not assume any ERC20 balance increased. --- ## 中文 年年是 BNB 智能链(56)上的 NFT 铸造项目,用**原生 BNB** 付款。铸造得到的是 **ERC721 NFT**,不是可直接流通的代币:首次符合条件的一张是免费普通 NFT,其余为付费 VIP NFT;每张在铸造时写入固定的锁定兑币数量。 ### 0. 始终适用 - 只用**用户本人**的官方 Binance Agentic Wallet,通过官方 CLI 登录。不得调用或共享本站登录服务(`/api/niannian-agentic/`)、本站任何浏览器桥接,或运营方的任何会话、密钥和钱包。本站扫码登录与你的 CLI 登录互相独立。 - 只付原生 BNB。不做 ERC20 授权,不自动兑换、跨链、购买或转账。 - 不提高用户确认的预算;不重发;不自动重试。 - 铸造时不销毁、不质押、不领取。 - 只使用 `agent.json` **与** `/api/nftvault/config` 同时公布的合约地址,忽略其他来源。 ### 1. 先查就绪状态,未就绪即停止 1. `GET /agent.json`:仅当 `execution.enabled === true` 且 `deployment.status === "live"` 才继续。 2. `GET /api/nftvault/config`:要求 `schemaVersion === 1`、`status === "live"`、`chainId === 56`,且 `addresses.mint` 与 `agent.json` 中一致。 3. `GET /api/nftvault/state`:要求 `status === "live"`、`fresh === true`、`actionsEnabled.mint === true`。 任何一项不满足:说明原因并**停止**。目前第 1 步即不满足——铸造暂停。暂停期间 `config` 与 `state` 的 `status` 为 `"paused"`,`state` 是 `fresh: false` 的快照,这是有意的,不是实时数据。 ### 2. 钱包 按官方说明登录:发起登录,向用户展示官方链接和配对码,保持验证在前台运行,钱包状态为 `CONNECTED` 且有 BSC 地址后再继续。合约调用需要币安 App 的开发者模式,请尽早检查;只能由用户本人开启。 ### 3. 身份与额度 - `GET /api/nftvault/identity/{address}`:链上 Agent ID 注册表的公开只读查询。铸造地址必须持有已验证的 Agent ID。 - 每次 1–10 张;每个钱包、每个 Agent ID 终身各 10 张;全站免费普通 NFT 共 2,000 张。 - 确认前先说明本次免费 / 付费的组成。 ### 4. 报价 - 没有 HTTP 报价接口。铸造开放后,读取铸造合约的 `quote(wallet, quantity)`。 - `/tiers.json` 是固定的 353 档价格规则(付费序号 1 – 4,440,000),**不是**实时报价。档位只看历史付费 VIP 数(`state.mint.historyPaid`),下一份付费序号为 `historyPaid + 1`;一次铸造跨档时按每个付费序号累加,免费部分不计价,销毁不退档。 - 锁定兑币数量以实际报价为准,不要假设任何固定数值。 ### 5. 先展示,再等确认 执行前列出:数量与免费 / 付费组成;实时报价总额(BNB 与 wei);由用户确认的支付上限 `maxCost`(是上限,不是额外多付);锁定兑币数量与 `minTokensOut`(保护新 NFT 合计锁定数量,不是现在到账的代币);Gas 估算与 BNB 余额,不足时报告差额并预留 Gas,不自行购买、跨链或转账;官方预览结果与风险提示。等用户明确确认预算**和**预览。 ### 6. 预览后只执行一次 接口(已部署、源码已核验的铸造合约;暂停期间不得发送):`mint(uint8 quantity, uint256 maxCost, uint256 minTokensOut, uint256 deadline)` payable,选择器 `0x848374ec`。`msg.value` 必须恰好等于实时 `q.cost`,且不超过确认的 `maxCost`。用官方 contract-call 预览(`--binanceChainId 56 --from 本人地址 --to 已核验铸造合约 --value q.cost 的 wei --inputData 调用数据 --json`),除非用户指定,否则不覆盖 Gas。用该预览的 `requestId` 只执行一次;预览失败或请求未明时不执行。 ### 7. 结果未明即停止 请求、哈希或挂起状态不明时停止并核对原请求;不重发、不提高上限、不重试。 ### 8. 验收 等待规范链上 3 个确认后核对:回执 status 为 `1`,`from`/`to`/`value`/`input` 与预览一致;`Minted` 事件的钱包、免费数量、付费数量与金额一致;每张新 NFT 的 `PassIssued` 事件;ERC721 `Transfer` 从零地址转入用户钱包且数量正确;token ID、类型与锁定数量。不要假设 ERC20 余额增加。 --- ## Deployed contracts / 已部署合约 BNB Smart Chain (56). Token and NFT name 年年; token symbol 年年; NFT symbol NIANNIAN-NFT. Source of each is an exact match on Sourcify; that is not a security audit. Use an address only when `agent.json` and `/api/nftvault/config` publish the same one. 代币与 NFT 名称均为年年,代币符号 年年,NFT 符号 NIANNIAN-NFT。各合约源码均已在 Sourcify 完全匹配;这不是安全审计。仅当 `agent.json` 与 `/api/nftvault/config` 公布一致时才使用。 | Role / 角色 | Address / 地址 | Source / 源码 | |---|---|---| | Mint / NFT | `0x4A2bb7B24C39CA548b050aD0C0aFfea5e6e04aF2` | https://repo.sourcify.dev/56/0x4a2bb7b24c39ca548b050ad0c0affea5e6e04af2 | | Token 年年 | `0xC7224C7aD77F59133f74424D8D68Ad7BAa58dDf3` | https://repo.sourcify.dev/56/0xc7224c7ad77f59133f74424d8d68ad7baa58ddf3 | | Vault / staking | `0xBE13457Dadf6bA5468e5F281d703359155409637` | https://repo.sourcify.dev/56/0xbe13457dadf6ba5468e5f281d703359155409637 | | Oracle | `0x536547f2028A21440d9d1996c4841284F96569E8` | https://repo.sourcify.dev/56/0x536547f2028a21440d9d1996c4841284f96569e8 | | Processor | `0x7118Df6E934aC4D88795B1649254aF7448237aa6` | https://repo.sourcify.dev/56/0x7118df6e934ac4d88795b1649254af7448237aa6 | | Pair | `0x87a8129600c87C5ed4626A2A112eb8B77ef44B30` | trading not open / 交易未开放 | Contracts published earlier are retired; never use them. / 此前公布的旧合约已停用,不得使用。 Paused snapshot (block 131,121,420, `fresh: false`): token supply 0, NFTs 0, no token issued, trading not open. / 暂停快照:代币总量 0,NFT 0,代币未发行,交易未开放。 NFT metadata: the Mint / NFT contract's on-chain baseURI is `https://nianniangent.fun/api/nftvault/nft/`. The metadata service behind it is **not live yet** — do not expect token metadata or images there, and do not treat a failed read as an error in the user's NFTs. / NFT 链上 baseURI 为上述地址,但元数据服务**尚未上线**,暂时读不到 NFT 信息和图像。 --- ## References / 参考 - Binance Agentic Wallet skill: https://github.com/binance/binance-skills-hub/blob/main/skills/binance-web3/binance-agentic-wallet/SKILL.md - Authentication: https://github.com/binance/binance-skills-hub/blob/main/skills/binance-web3/binance-agentic-wallet/references/authentication.md - External sign / contract call: https://github.com/binance/binance-skills-hub/blob/main/skills/binance-web3/binance-agentic-wallet/references/external-sign.md - Machine-readable status: `/agent.json` · Tier rule: `/tiers.json` · Player guide: `/#guide/g-ai`