# 环境变量

> NeuroChain 的全部环境变量——节点（网络、共识、经济、AI、IBC v2、安全）、gateway、Web 应用、文档站点和 MCP 服务器——包括默认值以及每个变量的作用。

Source: https://docs.nro.world/zh/operate/env

所有服务都从环境变量读取配置；仓库中的 `.env.example` 列出了它们并附有注释。下文的默认值是变量未设置时代码所使用的值。

若干协议取值（gas 预算、质押、奖励、罚没、AI 阈值）是存储在链上的**治理参数**。如果某个参数有对应的环境变量，它会**在该节点启动时**覆盖链上的值——这是为测试网络准备的；在共享网络中，每个验证者都必须使用相同的值。参见[治理 → 参数](/zh/learn/governance#parameters)。

## 节点

### 网络与身份

| 变量 | 默认值 | 含义 |
|----------|---------|---------|
| `CHAIN_ENV` | `mainnet` | `mainnet`：严格签名校验、关闭水龙头、RPC 监听 localhost。`testnet`：签名问题仅告警、开启水龙头 |
| `NEUROCHAIN_NETWORK` | `neurochain-mainnet-1` | 网络 / 链 ID |
| `NEUROCHAIN_DATA_DIR` | `./data` | 数据目录（状态、WAL、密钥） |
| `NEUROCHAIN_MODELS_DIR` | `./models` | AI 模型权重 |
| `NEUROCHAIN_RPC_PORT` | `9933` | HTTP RPC 端口 |
| `NEUROCHAIN_RPC_HOST` | `localhost`（mainnet）/ `0.0.0.0`（testnet） | RPC 绑定地址 |
| `NEUROCHAIN_P2P_PORT` | `30333` | P2P 端口（同时承载共识） |
| `NEUROCHAIN_P2P_PORT_MIN` / `_MAX` | `1024` / `65534` | 可接受的对等节点端口范围 |
| `NEUROCHAIN_NODE_ADDR` | `localhost:<p2p port>` | 对等节点用来访问本节点的地址；不能是 `0.0.0.0`。用于将节点与其创世验证者条目对应 |
| `NEUROCHAIN_BOOTSTRAP` | — | 启动时要加入的对等节点，逗号分隔 |
| `NEUROCHAIN_PEER_DISCOVERY_SECS` | `30` | 对等节点发现间隔 |
| `NEUROCHAIN_P2P_CONN_RATE_LIMIT` | `20` | 每个 IP 每秒的入站 P2P 连接数 |
| `NEUROCHAIN_TLS_CERT`, `NEUROCHAIN_TLS_KEY` | — | 通过 HTTPS 提供 RPC |

### 创世

| 变量 | 默认值 | 含义 |
|----------|---------|---------|
| `NEUROCHAIN_GENESIS_VALIDATORS` | 仅本节点 | `neuro:name.node|p2p_host:port|stake_nro|trust|ml_dsa_pubkey_hex|owner.human,…`——在每个验证者上都必须相同。参见[运行节点](./node#a-multi-validator-network) |
| `NEUROCHAIN_GENESIS_ACCOUNTS` | — | `neuro:addr.human|nro,…`——初始余额 |
| `NEUROCHAIN_FAUCET_BALANCE` | 1 000 000 000 NRO | 创世时水龙头保险库的余额 |
| `NEUROCHAIN_INITIAL_BALANCE` | `0` | 首次读取从未出现过的账户时为其记入的 uNRO（仅限测试网络） |
| `NEUROCHAIN_GAS_SPONSOR` | `neuro:faucet.vault` | 新用户引导的 gas 赞助方 |
| `NEUROCHAIN_GAS_SPONSOR_FUND` | 1 000 000 NRO | 其创世时的 gas 池 |
| `NEUROCHAIN_CHECKPOINT_URL` | — | 用该节点的状态快照启动一个空节点 |

### 共识与分片

| 变量 | 默认值 | 含义 |
|----------|---------|---------|
| `NEUROCHAIN_MIN_VALIDATORS` | `7` | 低于此值时，节点会警告容错能力下降 |
| `NEUROCHAIN_BLOCK_MS` | `200` | 提议含交易区块前的最短等待时间 |
| `NEUROCHAIN_EMPTY_BLOCK_MS` | `2000` | 提议空区块前的最短等待时间 |
| `NEUROCHAIN_SYNC_HISTORY_BLOCKS` | `10000` | 为追赶中的对等节点保留的已决定区块数 |
| `NEUROCHAIN_JAIL_BLOCKS` | `10000` | 罚没后的监禁时长（治理参数 `jail_blocks`） |
| `NEUROCHAIN_SLASH_FRACTION_DOUBLE_SIGN_BPS` | `500` | 双签罚没，以 `min_stake` 的基点计 |
| `NEUROCHAIN_SLASH_REWARD_FRACTION_BPS` | `100` | 举报者在罚没中所得的份额 |
| `NEUROCHAIN_SLASH_EVIDENCE_WINDOW` | `10000` | 证据可证明的最早违规（以区块计） |
| `NEUROCHAIN_SHARD_ID` | — | 本节点负责的分片；未设置 = 单分片 |
| `NEUROCHAIN_SHARDS` | 设置了分片 ID 时为 `4`，否则为 `1` | 分片数量 |
| `NEUROCHAIN_SHARD_DIR_PREFIX` | `shard` | 每个分片的子目录名 |

### 经济与内存池

| 变量 | 默认值 | 含义 |
|----------|---------|---------|
| `NEUROCHAIN_UNBONDING_BLOCKS` | 治理参数（1 512 000） | 质押锁定期 |
| `NEUROCHAIN_REWARD_INTERVAL_BLOCKS` | 治理参数（216 000） | 两次奖励发放之间的区块数 |
| `NEUROCHAIN_FUEL_PER_GAS_UNIT` | `20000` | 每单位 gas 对应的合约 fuel |
| `NEUROCHAIN_MAX_SPONSORED_FEE` | `100000` uNRO | gas 池为单笔交易支付的最高手续费 |
| `NEUROCHAIN_MAX_MEMPOOL` | `10000` | 保留的待处理交易数 |
| `NEUROCHAIN_MAX_PENDING_PER_ACCOUNT` | `64` | 每个发送方的待处理交易数 |
| `NEUROCHAIN_RBF_MIN_BUMP_PCT` | `10` | 替换一笔待处理交易所需的 gas 价格涨幅 |
| `NEUROCHAIN_MIN_FEE_PER_GAS` | `0` | 额外的内存池价格下限 |
| `NEUROCHAIN_FAUCET_MAX_NRO` | `100` | 单次水龙头请求的上限（测试网络） |
| `NEUROCHAIN_FAUCET_COOLDOWN_SECS` | `86400` | 每个地址的水龙头冷却时间；`0` = 无 |

### AI

| 变量 | 默认值 | 含义 |
|----------|---------|---------|
| `MONITOR_INTERVAL_SECS` | `20` | 已部署合约的重新审计 |
| `MONITOR_SCORE_THRESHOLD` | `10` | 触发证书更新的评分变化量 |
| `NEUROCHAIN_SENTINEL_POLICY_ENABLED` | 治理参数（`0`） | Sentinel 策略层开关 |
| `NEUROCHAIN_SENTINEL_HOLD_THRESHOLD` | 治理参数（`60`） | 评分 × 100 达到此值起转账被暂扣 |
| `NEUROCHAIN_SENTINEL_STEPUP_THRESHOLD` | 治理参数（`70`） | 评分 × 100 达到此值起需所有者确认 |
| `NEUROCHAIN_SENTINEL_HOLD_BLOCKS` | 治理参数（`50`） | 自动放行的延迟 |
| `NEUROCHAIN_SENTINEL_CONFIRM_EXPIRY_BLOCKS` | 治理参数（`1000`） | 退款前等待确认的时长 |
| `NEUROCHAIN_SENTINEL_AGENT_CONFIRM_THRESHOLD` | 治理参数（`60`） | 会话密钥转账的阈值 |
| `NEUROCHAIN_TRUST_ACTIVATION_BLOCKS` | 治理参数（`300`） | 受信任收款方生效前的延迟 |
| `AI_EXPORT_MAX_LIMIT` | `5000` | 每次 AI 数据导出请求的行数 |

### IBC v2

参见 [IBC v2 与分片 → 配置](./ibc#configuration)：`NEUROCHAIN_IBC_OPERATOR_PUBKEYS`、`NEUROCHAIN_IBC_TRUSTED_PUBKEYS`、`NEUROCHAIN_IBC_REQUIRE_HEADER`、`NEUROCHAIN_IBC_REQUIRE_PACKET_COMMITMENT`、`NEUROCHAIN_IBC_TIMEOUT_BLOCKS`、`NEUROCHAIN_IBC_MAX_PACKET_UNRO`、`NEUROCHAIN_IBC_MAX_CHANNEL_ESCROW_UNRO`、`NEUROCHAIN_IBC_NATIVE_DENOM`。

### 原生资产

| 变量 | 默认值 | 含义 |
|----------|---------|---------|
| `NEUROCHAIN_ASSET_ISSUERS` | — | 创世时被授予 `verified` 发行方等级的地址 |
| `NEUROCHAIN_RESERVED_SYMBOLS` | — | 创世时保留的代码 |
| `NEUROCHAIN_RESERVED_NAMES` | — | 创世时为所有付费地址和资产名称保留的名称：`name` 或 `name|owner1;owner2`，逗号分隔；此后只能通过投票更改 |
| `NEUROCHAIN_VALIDATOR_OWNER` | — | 未设置 `NEUROCHAIN_GENESIS_VALIDATORS` 时，单个自验证者的所有者 `.human`（mainnet 上必填） |

两者都只在创世时读取一次；此后注册表只能通过治理变更。

### 访问与限制

| 变量 | 默认值 | 含义 |
|----------|---------|---------|
| `NEUROCHAIN_RPC_RATE_LIMIT` | `100` | 每个 IP 每秒的 RPC 请求数 |
| `CORS_ALLOWED_ORIGINS` | `*` | 允许的浏览器来源 |
| `NEUROCHAIN_INTERNAL_TOKEN` | — | 内部端点要求的 `X-Internal-Token` |
| `NEUROCHAIN_SNAPSHOT_TOKEN` | — | `/api/v1/state/snapshot` 要求的 bearer 令牌 |
| `NEUROCHAIN_ALLOW_SERVER_DERIVE` | `false` | 在测试网络上允许 `POST /api/v1/wallet/derive-address`（会接收恢复助记词）；mainnet 上始终关闭 |
| `RUST_LOG` | `neurochain=info,warn` | 日志级别 |

## Gateway

在 [Gateway](./gateway#configuration) 页面中附有说明：`PORT`、`NODE_RPC_URL`、`NEUROCHAIN_SHARD_NODES`、`SHARD_NODE_URLS`、`NETWORK_ID`、`CORS_ALLOWED_ORIGINS`、`TLS_CERT`、`TLS_KEY`，速率限制（`GLOBAL_RL_MAX_RPS`、`AI_RL_MAX_RPM`、`WS_*`），链监视（`POLL_NODE_INTERVAL_MS`、`SENTINEL_*`、`ALERT_COOLDOWN_MS`），水龙头（`FAUCET_AMOUNT`、`FAUCET_COOLDOWN_SECS`、`REDIS_URL`）以及 AI 工具（`ANTHROPIC_API_KEY`、`SMARTFORGE_*`、`AI_EXPORT_TOKEN`、`ASSISTANT_*`）。

## Web 应用

| 变量 | 默认值 | 含义 |
|----------|---------|---------|
| `WEB_PORT` | `8080` | 开发服务器端口 |
| `WEB_HOST` | `localhost` | 开发服务器绑定地址；设为 `0.0.0.0` 可在网络上暴露 |
| `GATEWAY_URL` | `http://localhost:3000` | 开发服务器将 `/api` 和 `/ws` 代理到的 gateway |
| `VUE_APP_NEUROCHAIN_RPC` | —（同源） | 将固定的 API 基础 URL 写入构建产物 |
| `VUE_APP_SITE_URL`, `VUE_APP_SITE_NAME`, `VUE_APP_SITE_OG_IMAGE` | — | 已部署应用的元数据 |
| `VUE_APP_DOCS_URL` | — | 指向本文档的链接 |

## 文档站点

| 变量 | 默认值 | 含义 |
|----------|---------|---------|
| `DOCS_SITE_URL` | `https://docs.nro.world` | 规范 URL、sitemap、`hreflang`、`llms.txt` |
| `DOCS_OG_IMAGE` | `/og-image.png` | 社交分享预览图 |
| `DOCS_GOOGLE_SITE_VERIFICATION`, `DOCS_BING_SITE_VERIFICATION` | — | 搜索控制台的所有权验证令牌 |
| `DOCS_HOST`, `DOCS_PORT` | `localhost`, `5173` | 开发服务器 |
| `DOCS_BASE` | `/` | 基础路径 |

## MCP 服务器

| 变量 | 默认值 | 含义 |
|----------|---------|---------|
| `NEUROCHAIN_MCP_CONFIG` | — | JSON 配置文件的路径——参见 [AI 智能体（MCP）](/zh/build/mcp) |
