Add hard fork upgrade design for admission control

- Explain admission control purpose: support hard fork upgrades like EIP
- Add upgrade flow diagram (prepare, transition, upgrade, complete phases)
- Add version compatibility management examples
- Add comparison table between Ethereum EIP and X Chain XIP

Co-Authored-By: mccoy <hbzgzr@gmail.com>
This commit is contained in:
Devin AI 2026-01-30 07:15:27 +00:00
parent 3159129ca2
commit 664efbc372

View file

@ -765,6 +765,74 @@ func (s *SGXConsensus) VerifyNetworkConsistency(peer *Peer) error {
1. **度量值匹配**:对方节点的 MRENCLAVE/MRSIGNER 必须在允许列表中 1. **度量值匹配**:对方节点的 MRENCLAVE/MRSIGNER 必须在允许列表中
2. **Chain ID 匹配**:对方节点的 Chain ID 必须与本节点一致 2. **Chain ID 匹配**:对方节点的 Chain ID 必须与本节点一致
#### 6.1.0 设计目的:支持硬分叉升级
准入控制的核心目的是**支持硬分叉升级**,类似于以太坊的 EIP 实现机制。当需要发布新版代码实现新特性时,通过更新 MRENCLAVE 白名单来控制网络升级。
**硬分叉升级场景:**
1. **新特性发布**:类似 EIP-1559、EIP-4844 等协议升级,需要所有节点运行新版代码
2. **安全修复**:发现安全漏洞后,强制所有节点升级到修复版本
3. **性能优化**:优化后的代码产生不同的 MRENCLAVE需要协调升级
**升级流程:**
```
时间线
|
v
+------------------+
| 阶段 1: 准备 | 发布新版代码,公布新 MRENCLAVE
+------------------+
|
v
+------------------+
| 阶段 2: 过渡 | 节点配置同时允许新旧 MRENCLAVE
| | mrenclave = ["旧版本", "新版本"]
+------------------+
|
v
+------------------+
| 阶段 3: 升级 | 节点逐步升级到新版本
| | 新旧节点可以互相连接和同步
+------------------+
|
v
+------------------+
| 阶段 4: 完成 | 移除旧版 MRENCLAVE
| | mrenclave = ["新版本"]
| | 未升级节点被隔离(硬分叉)
+------------------+
```
**版本兼容性管理示例:**
```toml
# config.toml - 过渡期配置
[sgx]
# 同时允许 v1.0.0 和 v1.1.0 版本
mrenclave = [
"abc123...", # v1.0.0 - 当前稳定版
"def456...", # v1.1.0 - 新版本(包含 XIP-001 特性)
]
# 升级完成后的配置
[sgx]
mrenclave = [
"def456...", # v1.1.0 - 仅允许新版本
]
# 运行 v1.0.0 的节点将无法连接,形成硬分叉
```
**与以太坊 EIP 的对比:**
| 特性 | 以太坊 EIP | X Chain XIP |
|------|-----------|-------------|
| 升级触发 | 区块高度 | MRENCLAVE 白名单 |
| 强制升级 | 需要社区共识 | 通过准入控制强制 |
| 回滚可能 | 困难 | 恢复旧 MRENCLAVE 即可 |
| 验证方式 | 区块验证规则 | SGX 远程证明 |
#### 6.1.1 命令行参数 #### 6.1.1 命令行参数
```bash ```bash