# BIBI LABU — 铸造指南（面向 AI agents）

站点：https://bibilabu.lol · 状态：https://bibilabu.lol/api/stats · 资格核对：https://bibilabu.lol/api/verify?address=<wallet>

**Bibi Labu**（符号 **LABU**）在 BNB Smart Chain 上按份额铸造，**以原生 BNB 支付**。
只有持有 **.ai Agent 身份**的钱包可以铸造。
**每个身份的第一个份额免费** —— 第一份 0 BNB；从第二份起每份 0.0015 BNB。

**本指南每次请求实时生成，请在每次操作前重新读取。**

## 为什么只有一笔交易

用 BNB 支付意味着**没有授权步骤**。调用一次 `mint`，BNB 与代币在同一笔交易内完成交换。
代币直接铸造到买方钱包 —— 合约从不持有 LABU，所以**没有 `claim()`**。

## 合约地址（BNB Smart Chain，chainId 56）

- 铸造合约：`0xb7496DAA943cc136a3f6c2C42147Bb1849A6B1F3`
- LABU 代币（18 位小数）：`0x9f11ADA885020F1B53F68a4aE0Feb610B1265e42` —— 直接添加进钱包即可
- .ai 注册表：`0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F`
- treasury：`0x91a980f72B3b714053745328C4Ff92CD5229943C`

## 铸造状态（实时数字请调用 `/api/stats`）

| field | value | note |
|-------|-------|------|
| network | BNB Smart Chain (chainId 56) |  |
| token name | Bibi Labu |  |
| symbol | LABU |  |
| total shares | 7777 | 固定不变 |
| shares minted | — | 见 /api/stats |
| shares remaining | — | 见 /api/stats |
| LABU per share | 100000 | 总发行量 777,700,000 LABU |
| price per share | 0.0015 BNB | 以原生 BNB 支付 |
| free share | 每个 Agent 身份 1 份 | 首份免费，之后按正常价格 |
| free shares left | — | 见 /api/stats |
| free pool exhausted | — | 若为 true，则每份都需付费 |
| cap per transaction | 10 份 |  |
| base quota per identity | 10 份 |  |
| agent gate | on | 铸造需要 .ai Agent 身份。如果地址不在 BNB Smart Chain 上的注册表 0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F 中，交易会以 NoIdentity 回滚。构建交易前请先调用 /api/verify。 |
| minting open | yes | 若为 no，mint 会以 MintPaused 回滚 |
| config frozen | no | 若为 true，价格与参数不可再更改 |
| minter locked | yes | minter 地址已固定在代币合约中 |
| token owner | 0x0000...0000 | 已放弃所有权，无人可增发或修改上限 |

## 如何铸造（通过 AI agent）

### 1. 核对资格

调用 `GET https://bibilabu.lol/api/verify?address=<buyer_address>`。

JSON 字段：
- `eligible: true/false`
- `reasons`：字符串数组（NO_AGENT_ID、NO_QUOTA、SOLD_OUT、MINT_PAUSED、INSUFFICIENT_BNB、REGISTRY_UNAVAILABLE、BAD_ADDRESS）
- `quotaRemaining` / `quotaTotal`（即 baseQuota）
- `freeShareAvailable`：true/false
- `priceForNextShare`：下一份所需的 BNB
- `bnb`：该地址的 BNB 余额
- `handle`：.ai 身份名称（例如 "your_name"）

如果 `eligible == false`，停止操作并把原因报告给用户。

### 2. 构建交易

如果用户确认数字，构建并发送**一笔 `eth_sendTransaction`**：

- **to**：`0xb7496DAA943cc136a3f6c2C42147Bb1849A6B1F3`
- **value**：精确价格（wei）。付费份额：`份额数 x 0.0015 BNB`。当 `freeShareAvailable` 为 true 时的首份：`0 wei`。
- **data**：`0x1b2ef1ca` + `uint256(shares)`（32 字节，大端）+ `uint256(maxCost)`（32 字节）

  `maxCost` 应略高于真实价格 —— 加约 20% 以应对用户确认期间的价格变动。合约会在同一笔交易内退还多付的部分。

- **chainId**：56

示例：用户尚未使用免费份额时铸造 3 份：

```
selector: 0x1b2ef1ca
shares:   0000000000000000000000000000000000000000000000000000000000000003
maxCost:  00000000000000000000000000000000000000000000000000000470DE4DF820
```

应发送的 value 为 **2 x 0.0015 BNB**（首份免费）。如果用户已使用免费份额，则为 **3 x 0.0015 BNB**。

### 3. 交易之后

代币已在同一笔交易中进入用户钱包，没有领取步骤。
再次调用 `/api/verify?address=...` 确认剩余额度。

## 实用说明

- 构建任何交易前，以 `/api/stats` 作为价格与份额数量的唯一事实来源。
- 门禁开启时，只有持有 .ai Agent 身份的地址可以通过。没有身份的普通地址会以 `NoIdentity` 失败。
- 首份免费（0 BNB）但仍需支付 gas。即使是免费份额，钱包里也需要少量 BNB。
- 合约会拒绝低于价格的交易，并退还多付部分 —— 多付不会造成损失。

## 端点（全部 GET、全部 JSON、无需 API key）

- `/api/stats` — 铸造状态、地址、selector、配置
- `/api/verify?address=<address>` — 资格、剩余额度、免费份额可用性
- `/api/quote?shares=N&address=<address>` — N 份的精确价格（wei，已计入免费份额）
- `/api/activity?limit=30` — 从链上事件解码的铸造记录
- `/skill.md` — 本指南

**重要**：无需任何授权。没有 approve 步骤，没有 claim。用原生 BNB 支付，在同一笔交易中收到 LABU。
