# 地址

> NeuroChain 地址格式与类型——免费的、由密钥派生的 .human 钱包，以及付费的 .node、.app、.vault 和 .agent 名称——包括命名规则、价格以及所有权如何证明。

Source: https://docs.nro.world/zh/learn/addresses

每个 NeuroChain 地址的形式都是 `neuro:<name>.<type>`。后缀表明该地址是什么。

| 后缀 | 是什么 | 如何获得 | 费用 |
|--------|-----------|----------------|------|
| `.human` | 你的钱包 | 由你的助记词派生 | 免费 |
| `.node` | 验证者 | 由 `.human` 所有者注册 | `min_stake`（默认 10 000 NRO），锁定为验证者的质押 |
| `.app` | 智能合约地址 | 部署时分配，或由 `.human` 所有者注册的可读名称 | 部署：仅收部署费。可读名称：`min_stake`（默认 10 000 NRO），销毁 |
| `.vault` | 多签金库 | 由 `.human` 所有者注册 | `min_stake`（默认 10 000 NRO），销毁 |
| `.agent` | 面向 AI 代理的智能账户（会话密钥、代付 gas） | 由 `.human` 所有者注册 | 按名称长度计价，见[价格](#name-prices) |

`min_stake` 是一个治理参数；请从治理参数 API 读取其当前值，而不要假定为默认值。

## 你的钱包地址：`.human` {#your-wallet-address-human}

`.human` 地址由你的公钥计算得出，因此任何人都无法注册它，也没有其他人能拥有它。

![地址派生：助记词经规范化后，在 NC_KDF_v3 标签下用 SHA3-256 哈希成 32 字节的 seed，由它生成 ML-DSA-65 密钥对；地址是公钥 SHA3-256 结果的前 15 个 hex 字符](/diagrams/zh/address-derivation.svg)

1. 助记词转为小写，并以单个空格连接。
2. `seed = SHA3-256("NC_KDF_v3|" + words)`——32 字节。
3. 该 seed 生成一个 **ML-DSA-65** 密钥对（Dilithium3，FIPS 204）。
4. `address = "neuro:" + SHA3-256(公钥) 的前 15 个 hex 字符 + ".human"`。

同一个密钥对既定义地址，又为每笔交易签名。你的密码只用于在浏览器密钥库中加密 seed；它与地址或密钥毫无关系。

**所有权证明。** 节点在接受某个 `.human` 地址的已签名操作时，会根据随操作一起发送的公钥重新计算地址。如果两者不一致，操作即被拒绝——没有注册表，也没有“先到的密钥获胜”。

### 自定义 `.human` 名称

钱包还可以购买一个可读名称，例如 `neuro:alice.human`。该名称是拥有它的那个由密钥派生的地址的 **NFT 和别名**：

- 发送到该名称的一切——NRO、资产、IBC 凭证、合约支付——都会落到所有者由密钥派生的地址上。交易仍显示它被发送到的名称，并出现在所有者的历史记录中。
- 名称本身不持有余额，也从不签名。向自己的名称付款会被拒绝，与任何转给自己的转账一样。
- 该名称会列在你的地址中，可以像任何 NFT 一样转让；从下一个区块起，付款随之转移。
- 在名称被购买之前误发到该名称的任何资产，都归买家所有。

有些名称无法购买：由 15 个或更多十六进制字符组成的名称（它具有由密钥派生地址的形态，会截走别人的付款）、[保留名称](#reserved-names)，以及某人有意设立的账户名称（在 genesis 中注资、绑定到密钥或在身份注册表中）。价格取决于长度——见[下文](#name-prices)。

## 付费名称：`.node`、`.app`、`.vault`、`.agent` {#paid-names-node-app-vault-agent}

付费名称没有自己的密钥。它由拥有它的 `.human` 钱包的密钥控制。当所有者通过[身份](/zh/ai/identity)轮换密钥时，控制权随之转移。没有所有者的付费地址不接受任何密钥——genesis 验证者同样由 genesis 配置中指定的所有者钱包操作，它们的共识密钥只用于签署区块。

| 类型 | 注册时做什么 |
|------|------------------------|
| `.node` | 从所有者处扣除 `min_stake`，并将其记录为验证者的**质押**（适用解绑期）。默认佣金 10%。只有 `.node` 地址是共识验证者。 |
| `.app` | 扣除 `min_stake` 并将其**销毁**，以保留一个可读的合约名称。（已部署的合约总会获得自己的地址——见下文。） |
| `.vault` | 扣除 `min_stake` 并销毁，创建一个金库，所有者为其第一个成员，阈值为 2 个签名。 |
| `.agent` | 扣除按长度计算的费用，并记录一个代理智能账户。不是验证者，不持有质押。 |

### 部署产生的合约地址

每次部署都会在 `neuro:<10 hex>.app` 处创建合约，其中 hex 是 `SHA3-256(owner ‖ nonce)` 的前 5 个字节（nonce 为 8 字节大端序）。该地址在每个验证者上以相同方式计算，因此在部署最终确定之前就已可知。见[部署合约](/zh/build/deploy)。

将付费名称转让给另一个所有者，收取固定的 **100 uNRO**（`NFT_TRANSFER_FEE`）。当前值也会由 `GET /api/v1/gas/estimate` 以 `nft_transfer_fee` 返回。

### 名称价格 {#name-prices}

自定义 `.human` 名称和 `.agent` 地址按长度计价——越短越稀有，因此越贵。价格以及在售的最短名称都是[治理参数](./governance)：`name_price_len_1` … `name_price_len_5`、`name_price_len_6plus` 和 `name_min_len`。上线时开售的是 **5 个或更多字符**的名称；更短的名称需经投票开放。默认值：

| 名称长度 | 价格 |
|-------------|-------|
| 1 个字符 | 100 000 NRO |
| 2 个字符 | 50 000 NRO |
| 3 个字符 | 10 000 NRO |
| 4 个字符 | 5 000 NRO |
| 5 个字符 | 2 000 NRO |
| 6 个或更多 | 500 NRO |

## 命名规则

以下规则适用于每个注册名称：

- 只允许 ASCII 字母、数字和连字符。
- 长度 1 到 32 个字符。
- 开头和结尾不能是连字符。
- 完整地址必须以 `neuro:` 开头。
- 唯一性按**完整地址**判定：`neuro:foo.node`、`neuro:foo.app` 和 `neuro:foo.agent` 可以同时存在并属于不同所有者。自定义 `.human` 名称不能占用已被 `.node` 使用的名称。
- 名称不能是保留名称（见下文）。

### 保留名称 {#reserved-names}

同一个注册表守护所有付费地址类型（`.human` 名称、`.node`、`.agent`、`.vault`、`.app`）以及资产名称中的单词。匹配为精确匹配且不区分大小写。

- 协议自身的名称——`system`、`nro`、`neurochain`——始终保留。
- 其他名称在 genesis 配置中设定（`NEUROCHAIN_RESERVED_NAMES`），此后只能通过 `REGISTRY_CHANGE` [投票](./governance)更改。条目可以指定仍被允许占用该名称的所有者，例如某品牌自己的钱包。

资产代码有一个配套的受保护代码注册表；资产名称也不得包含受保护的代码或保留名称。

## 系统地址

`neuro:system.*` 下的地址由协议保留。它们是已签名操作的目标（`neuro:system.stake`、`neuro:system.node`、`neuro:system.name`、`neuro:system.deploy`……），而不是任何人拥有的账户。

## 另请参阅

- [身份](/zh/ai/identity)——轮换和恢复地址背后的密钥。
- [Gas 与手续费](./gas)——每项操作的费用。
