# 账户抽象

> NeuroChain 的原生账户抽象——赞助 gas 池、让应用和 AI 代理在作用范围、支出上限和有效期内行事的会话密钥、.agent 账户，以及把 AI 助手接入链的 MCP 服务器。

Source: https://docs.nro.world/zh/ai/account-abstraction

在 NeuroChain 上，账户是一把 ML-DSA-65 密钥，而不是合约，因此账户抽象内置于协议之中，而不是由钱包合约模拟。它涵盖三件事：**由他人支付 gas**、**受限的密钥代你行事**，以及 **AI 代理安全地同时使用这两者**。

## 赞助 gas

**gas 池**是预留出来用于支付交易手续费的 NRO。

| 谁支付手续费 | 何时 |
|--------------|------|
| 发送方自己的池 | 只要池中余额足以支付手续费 |
| 网络的新用户赞助方 | 钱包能覆盖转账金额但付不起手续费时（只持有别人转给他们的那笔金额的新用户） |
| 发送方的余额 | 其他情况 |

规则：

- 每笔交易的赞助手续费最多为 `NEUROCHAIN_MAX_SPONSORED_FEE`（100 000 uNRO）。
- 赞助手续费与其他手续费一样被销毁并支付给提议者。
- 新用户赞助方是 `NEUROCHAIN_GAS_SPONSOR`（默认 `neuro:faucet.vault`）；其池在创世时一次性注入 `NEUROCHAIN_GAS_SPONSOR_FUND`（1 000 000 NRO），之后通过存入补充。

| 操作 | 端点 | 签名目标 |
|------|------|----------|
| 向你的池存入 NRO | `POST /api/v1/sponsor/deposit`（`address`、`amount`） | `neuro:system.sponsor` |
| 取回 | `POST /api/v1/sponsor/withdraw`（`address`、`amount`） | `neuro:system.sponsor` |
| 池余额 | `GET /api/v1/sponsor/:address` | — |

## 会话密钥 {#session-keys}

**会话密钥**是一把独立的 ML-DSA-65 密钥，由你的主密钥授权代表你的账户行事——在你设定的限制之内：

| 限制 | 字段 | 含义 |
|------|------|------|
| 作用范围 | `scope` | 该密钥可以转账的目标地址（逗号分隔），或用 `*` 表示任意地址 |
| 支出上限 | `cap` | 该密钥在整个生命周期内可转移的 uNRO 总额 |
| 有效期 | `expiry_block` | 密钥有效的最后区块高度；必须是未来的高度 |

```json
POST /api/v1/session/grant
{
  "account": "neuro:<15 hex>.human",
  "session_pk": "<会话公钥，hex>",
  "scope": "neuro:<10 hex>.app",
  "cap": 5000000,
  "expiry_block": 120000,
  "signature": "…", "public_key": "<主密钥>", "nonce": 1791200000000
}
```

之后，会话密钥**以该账户的身份**签署普通交易（`from` = 你的地址，`public_key` = 会话密钥）。每个验证者都在共识中检查：

1. 签名对该会话密钥有效；
2. 该账户授予过这把密钥，且未被撤销；
3. 当前高度没有超过 `expiry_block`；
4. 目标在 `scope` 之内；
5. 已花费金额加上本次金额不超过 `cap`。

只有交易成功应用时才记录支出。随时可以用 `POST /api/v1/session/revoke`（`account`、`session_pk`）撤销；用 `GET /api/v1/session/list/:account` 列出授权。

**会话密钥永远不能做的事：** 管理 [Sentinel](./sentinel) 信任列表，或确认、取消被暂扣的转账——这些都需要主密钥。因此代理可以发起一笔有风险的转账，但只有你本人才能批准。

**测试情况：** 一项在多个验证者上进行的网络测试确认：支出上限在并发交易下依然有效，重放的交易会被拒绝，撤销在每个节点上都会生效。

## `.agent` 账户

`.agent` 地址是为 AI 代理账户准备的付费名称——由你的 `.human` 钱包注册、由你的密钥控制，用于持有代理的 gas 池和会话密钥。它不是验证者，也不持有质押。价格按名称长度计算，与自定义名称相同（[地址 → 名称价格](/zh/learn/addresses#name-prices)）。

`POST /api/v1/agents/register`（`name`、`owner`；签名目标 `neuro:system.agent`），`GET /api/v1/agents/:address`。

## 通过 MCP 接入 AI 代理

`neurochain-mcp` 服务器为 AI 助手（Claude Code、Claude Desktop、任何 MCP 客户端）提供链上读取权限，并在持有会话密钥时提供 `nc_transfer`、`nc_call_contract` 和 `nc_deploy`——但永远不提供主密钥。配置、全部工具和限制：[AI 代理（MCP）](/zh/build/mcp)。
