# 治理

> NeuroChain 的链上治理——谁可以提案和投票、按质押加权的投票、法定人数与阈值、带允许范围的参数变更，以及完整的治理参数列表。

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

协议参数——最低质押、奖励、gas 预算、slashing、AI 阈值——通过**按质押加权的链上投票**更改，而不是由节点运营者修改配置。

![提案生命周期：质押者发起提案，提案在投票窗口内处于 active 状态，质押者按自有质押加权投票；窗口结束时，若票数达到总质押的 20% 且 yes 超过票数的 50% 则通过，否则被拒绝；通过的 PARAM_CHANGE 若取值在允许范围内则更新该参数](/diagrams/zh/governance-lifecycle.svg)

## 发起提案

| 规则 | 值 |
|------|-------|
| 谁 | 来自任何地址的已签名请求；`.human` 提案人的自有质押必须至少为 `min_stake` |
| 类型 | `text`（仅表态）、`PARAM_CHANGE`（更改一个参数）或 `REGISTRY_CHANGE`（保留或释放一个名称或代码） |
| 投票窗口 | 100 到 `max_voting_duration_blocks`（默认 1 000 000）个区块；未指定时为 1 000 |
| 限制 | 标题 200 个字符，描述 5 000 个，负载 10 KB |

`PARAM_CHANGE` 以负载形式携带其变更：

```json
{ "param_key": "max_block_gas", "param_value": 20000 }
```

取值可以是数字，也可以是数字字符串。

`REGISTRY_CHANGE` 保留或释放[保留名称](./addresses#reserved-names)注册表（`"registry": "names"`）或受保护代码注册表（`"symbols"`）中的条目；保留时可以指定仍被允许占用它的所有者：

```json
{ "registry": "names", "action": "reserve", "value": "binance", "allowed": ["neuro:<owner>.human"] }
```

提案是发往 `neuro:system.governance` 的[已签名操作](./wallet#signed-operations)；它在共识中记录，因此每个验证者从同一高度起持有完全相同的提案。

## 投票

- 只有拥有**自有质押**的地址才能投票。投票权重是投票者的自有质押，在执行该投票时从链上状态读取。委托不带投票权。
- 在提案创建**之后**追加的质押不能对该提案投票——这阻止了为左右投票而临时购入质押。
- 每个地址对每个提案只能投一票：yes 或 no，不可更改。
- 投票是在共识中记录的已签名操作。

## 结果

投票窗口结束时：

| 检查 | 默认值 | 提案字段 |
|-------|---------|----------------|
| **法定人数**——yes + no 权重 ≥ 总自有质押的这一比例 | 20% | `quorum_bps` = 2 000 |
| **阈值**——yes 权重 > 已投票数的这一比例 | 50% | `threshold_bps` = 5 000 |

两者均满足 → `passed`；否则 → `rejected`。通过的 `PARAM_CHANGE` 会更新参数——除非新值超出该参数的允许范围，此时变更被拒绝，旧值保留。

::: warning 最终确定状态
<Badge type="warning" text="实验性" /> 创建提案和投票在共识中运行。关闭提案以及应用已通过的参数变更，目前是在每个节点提供提案列表（`GET /api/v1/governance/proposals`）时执行的，而不是在区块提交时。将最终确定移入提交路径已在计划中；在此之前，变更通过后请在每个验证者上检查该参数。

**测试方式：** 节点中的 `test_apply_tx_governance_propose_and_vote_in_consensus` 覆盖提案和投票的执行；范围检查由参数测试覆盖（`test_deploy_risk_threshold_governance`、`test_deploy_security_governance_override`）。
:::

## 参数 {#parameters}

当前值：`GET /api/v1/governance/params`。部分参数也可以在节点启动时通过环境变量按节点设置——这是为测试网络准备的。

### 质押与共识

| 参数 | 默认值 | 允许范围 | 环境变量覆盖 |
|-----------|---------|---------------|--------------|
| `min_stake` | 10 000 NRO（以 uNRO 计） | 1 到 10¹⁵ uNRO | — |
| `unbonding_blocks` | 1 512 000 | 1 到 10⁹ | `NEUROCHAIN_UNBONDING_BLOCKS` |
| `base_apy_bps` | 1 200（12%） | 0 到 100 000 | — |
| `genesis_apy_bps` | 2 400（24%） | 0 到 100 000 | — |
| `reward_interval_blocks` | 216 000 | 1 到 10⁹ | `NEUROCHAIN_REWARD_INTERVAL_BLOCKS` |
| `blocks_per_year` | 78 840 000 | 1 到 10⁹ | — |
| `max_commission_bps` | 2 000（20%） | — | — |
| `max_block_gas` | 10 000 | 1 到 10⁹ | — |
| `slash_fraction_double_sign_bps` | 500（`min_stake` 的 5%） | 0 到 10 000 | `NEUROCHAIN_SLASH_FRACTION_DOUBLE_SIGN_BPS` |
| `slash_reward_fraction_bps` | 100（1% 给举报者） | 0 到 10 000 | `NEUROCHAIN_SLASH_REWARD_FRACTION_BPS` |
| `slash_double_vote_bps` | 500 | 0 到 10 000 | — |
| `jail_blocks` | 10 000 | 1 到 10⁹ | `NEUROCHAIN_JAIL_BLOCKS` |
| `slash_evidence_window` | 10 000 | 1 到 10⁹ | `NEUROCHAIN_SLASH_EVIDENCE_WINDOW` |
| `quorum_bps` | 2 000 | 1 到 10 000 | — |
| `threshold_bps` | 5 000 | 1 到 10 000 | — |

### AI 安全

| 参数 | 默认值 | 允许范围 | 含义 |
|-----------|---------|---------------|---------|
| `deploy_security_enabled` | 1 | 0 或 1 | VMGuardian 部署前关卡开/关（紧急开关） |
| `deploy_risk_threshold` | 80 | 0 到 100 | 风险评分 ≥ 0.80 时拒绝部署 |
| `sentinel_enabled` | 1 | 0 或 1 | Sentinel 交易评分开/关 |
| `sentinel_reject_threshold` | 85 | — | 评分 ≥ 0.85 时拒绝交易 |
| `sentinel_policy_enabled` | 0 | — | 分级策略层（暂扣 / 确认）——默认关闭 |
| `sentinel_hold_threshold` | 60 | — | 转账被暂扣的起始评分 |
| `sentinel_stepup_threshold` | 70 | — | 所有者必须确认的起始评分 |
| `sentinel_hold_blocks` | 50 | — | 暂扣转账被放行前的延迟 |
| `sentinel_confirm_expiry_blocks` | 1 000 | — | 退款前等待所有者确认的时长 |
| `sentinel_agent_confirm_threshold` | 60 | — | 会话密钥转账需要所有者确认的起始评分 |
| `trust_activation_blocks` | 300 | — | 新的受信任接收方生效前的延迟 |

Sentinel 策略参数还有 `NEUROCHAIN_SENTINEL_*` 和 `NEUROCHAIN_TRUST_ACTIVATION_BLOCKS` 环境变量覆盖；见 [Sentinel](/zh/ai/sentinel)。

### 名称

| 参数 | 默认值 | 允许范围 | 含义 |
|-----------|---------|---------------|---------|
| `name_min_len` | 5 | 1 – 32 | 可购买的最短 `.human` 名称或 `.agent` |
| `name_price_len_1` … `name_price_len_5` | 100 000 · 50 000 · 10 000 · 5 000 · 2 000 NRO | 1 uNRO – 10⁹ NRO | 该长度名称的价格 |
| `name_price_len_6plus` | 500 NRO | 1 uNRO – 10⁹ NRO | 6 个或更多字符的名称的价格 |

价格以 uNRO 存储。开放一个更短的长度会在同一个区块中开放该长度的所有名称——请在提案中公布开放高度。

### 原生资产与兑换

| 参数 | 默认值 | 含义 |
|-----------|---------|---------|
| `asset_issue_fee` | 1 000 NRO | 发行原生资产的费用 |
| `asset_max_decimals` | 18 | 资产可拥有的最大小数位数 |
| `dex_shard` | 0 | 存放资产与兑换记录的分片 |

兑换（AMM）还有流动性提供者手续费、协议手续费、最低流动性、每个池每区块的兑换次数，以及紧急开关等参数；[REST 参考](/zh/reference/rest)列出了它们及其当前值。

*允许范围*一栏中的短横线表示，变更通过时节点尚不检查该参数的范围——提议取值时请谨慎。

## API

| 操作 | 端点 |
|--------|----------|
| 发起提案 | `POST /api/v1/governance/propose` |
| 投票 | `POST /api/v1/governance/:id/vote` |
| 列出提案 | `GET /api/v1/governance/proposals?status=&limit=&offset=` |
| 单个提案 | `GET /api/v1/governance/:id` |
| 参数 | `GET /api/v1/governance/params` |
