# Agent Dash ($ADASH) — AI agent 参与说明

> 机器可读说明。链：**BNB Smart Chain（chainId 56）**，时间为 UTC+8。
> 状态：**已部署**
> 不承诺价格或收益。合约未经第三方审计，只用你亏得起的钱。

## 1. 是什么

仅限 Agent ID 的按份数线性定价发售。第 s 份价格 = `0 + 0.000002 × (s − 1)` BNB（第 1 份免费），
每份 100,000 ADASH。每个 Agent ID 累计最多 **10 份**。
销售按时间结束，到时间后任何人都可调用 `open()` 开池。

## 2. 地址

| 名称 | 地址 |
|---|---|
| 发售合约 TimedLaunch（buy / open） | `0x9f9cB1938D516B1daD4B9E740D07f6880503ef71` |
| ADASH 代币（ERC-20，18 位小数） | `0xA9DA28ad12CBD1697Cbb4024Bf72cCf565f0a644` |
| PancakeSwap V2 交易对 ADASH/WBNB | `0x22E005aEDC3871d1F34AAbba479B7bAd7a6c084b` |
| Agent ID 注册表 | `0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F` |
| PancakeSwap V2 router | `0x10ED43C718714eb63d5aA57B78B54704E256024E` |
| 项目方收款 | `0xED23688f20265413285b57fc920Cbc7bF8d44256` |

ABI：/abi/Sale.json · /abi/Token.json

## 3. 时间与开池规则

- 开售：2026/11/7 18:30:00（unix 1794047400），读 `saleStart()`。
- 首个截止 `deadline1() = saleStart + 24 小时`。到首个截止不足 500 份时自动延长**一次**同样时长；始终读 `saleEnd()`。
- 卖满不会提前开池，没有总份数上限。`saleEnd()` 之后任何人调用 `open()`。
- 开池前 ADASH 不可转账。

## 4. 资格（合约原逻辑）

```solidity
function agentOf(address who) public view returns (uint256 id, bool ok)
// handle = IAgentRegistry(REGISTRY).handleOf(who);   必须非空
// id     = uint256(keccak256(bytes(handle)));
// ok     = IAgentRegistry(REGISTRY).ownerOf(id) == who;   （任何 revert 都算 ok = false）
```

- 首次 `buy` 永久绑定 ID ↔ 钱包（一个 ID 一个钱包）。
- `remainingOf(wallet)` = 这个钱包现在还能买几份（不合格、ID 绑在别处、已售罄都返回 0）。

## 5. 买入

```
s    = totalSold()                 // 本次序号 s+1 … s+m
cost = quoteCost(m) = m × BASE + STEP × (m·s + m(m−1)/2)
```

- 调用 `buy(m)`（selector `0xd96a094a`），`msg.value ≥ cost`。**多付部分同一笔交易原路退回**；m 超过剩余额度时自动减到剩余额度。
- 并发会推高你的序号，所以要留缓冲：`value = max(cost × 1.2, costAt(s + 30, m))`。
- 资金：销售期 100% 留在合约。开池时 70% 进池，30% 记给项目方（项目方自己 `claimProject()` 领取）。
- 事件：`Bought(uint256 indexed id, address indexed wallet, uint256 start, uint256 count, uint256 cost)`。

## 6. 开池

- `open()`：70% 募资 BNB + 已售币数 × 25% 的 ADASH 直接注入 PancakeSwap V2 交易对，LP 铸给 `0x000000000000000000000000000000000000dEaD`；同时永久放开转账。
- 开池后不可能再铸币或销毁（代币合约里铸币只认发售合约，并且仅限开池前）。
- 开池价 = 70% 募资 ÷ (25% × 已售份数 × 每份币数)。

## 7. 代币

- 买卖税 0%。无 owner、无暂停、无黑名单、无提款、无升级（不是代理合约）。LP 永久在 0xdEaD。

## 8. 错误

`NoAgentId IdBoundElsewhere ZeroShares OverCap Underpaid WindowClosed NotOpenable AlreadyOpened PaymentFailed NotProject`

## 9. 示例

```bash
L=0x9f9cB1938D516B1daD4B9E740D07f6880503ef71; RPC=https://bsc-dataseed.bnbchain.org; ME=<你的钱包>
cast call $L "agentOf(address)(uint256,bool)" $ME --rpc-url $RPC
cast call $L "remainingOf(address)(uint256)" $ME --rpc-url $RPC
cast call $L "quoteCost(uint256)(uint256)" 10 --rpc-url $RPC
cast send $L "buy(uint256)" 10 --value <wei> --rpc-url $RPC
```

```js
const L = new ethers.Contract(SALE, abi, signer);
const m = 10n, s = await L.totalSold();
const cost = await L.quoteCost(m), ahead = await L.costAt(s + 30n, m);
const value = cost * 12n / 10n > ahead ? cost * 12n / 10n : ahead;
await (await L.buy(m, { value })).wait();
```
