163 lines
4.3 KiB
Markdown
163 lines
4.3 KiB
Markdown
# NAC共识机制核心知识
|
||
|
||
## ⚠️ 重要声明
|
||
|
||
**NAC使用CBPP共识机制,不是DAG共识!**
|
||
|
||
这是NAC与其他区块链的核心区别之一,必须牢记。
|
||
|
||
---
|
||
|
||
## CBPP - 宪政区块生产协议
|
||
|
||
**CBPP** = **Constitutional Block Production Protocol**(宪政区块生产协议)
|
||
|
||
### 核心理念
|
||
|
||
**"宪法即共识"** - Constitution as Consensus
|
||
|
||
NAC的共识不是基于算力(PoW)、权益(PoS)或有向无环图(DAG),而是基于**宪法**。
|
||
|
||
### CBPP核心组件
|
||
|
||
#### 1. 宪法收据系统(CR - Constitutional Receipt)
|
||
- 交易进入区块链的唯一凭证
|
||
- 每个交易都必须获得宪法收据才能上链
|
||
- 收据包含:
|
||
- 交易哈希(48字节)
|
||
- 宪法版本哈希(48字节)
|
||
- 触发的宪法条款索引
|
||
- AI引擎执行结果哈希
|
||
- 收据ID(48字节)
|
||
|
||
#### 2. 开放生产网络(OPN - Open Production Network)
|
||
- 任何满足宪法要求的节点都可以参与区块生产
|
||
- 不是"挖矿",而是"生产"
|
||
- 生产者需要通过宪法验证
|
||
|
||
#### 3. 流体区块模型(FBM - Fluid Block Model)
|
||
- 区块不是固定大小
|
||
- 根据网络状态和宪法规则动态调整
|
||
- 支持并行区块生产
|
||
|
||
#### 4. 三维区块坐标系统
|
||
- **Epoch(纪元)**:宪法版本,每次宪法升级递增
|
||
- **Round(轮次)**:共识轮次,单调递增
|
||
- **Branch(分支)**:支持并行区块,32字节哈希
|
||
|
||
---
|
||
|
||
## NAC不使用的共识机制
|
||
|
||
### ❌ 不是DAG共识
|
||
- NAC **不使用** Directed Acyclic Graph(有向无环图)共识
|
||
- 不是IOTA、Nano、Fantom等DAG链
|
||
- 虽然可能使用DAG作为**数据结构**,但不是**共识机制**
|
||
|
||
### ❌ 不是PoW(工作量证明)
|
||
- 不需要挖矿
|
||
- 不需要算力竞争
|
||
|
||
### ❌ 不是PoS(权益证明)
|
||
- 不是基于代币质押
|
||
- 不是基于财富分配
|
||
|
||
### ❌ 不是传统BFT
|
||
- 不是PBFT、Tendermint等传统拜占庭容错
|
||
- 虽然有容错机制,但基于宪法而非投票
|
||
|
||
---
|
||
|
||
## 代码中的体现
|
||
|
||
### 正确的模块
|
||
- ✅ `constitutional_receipt.rs` - 宪法收据系统
|
||
- ✅ `cbpp_integration.rs` - CBPP集成
|
||
- ✅ `block_coordinate.rs` - 三维区块坐标
|
||
- ✅ `open_production_network.rs` - 开放生产网络
|
||
- ✅ `fluid_block.rs` - 流体区块模型
|
||
|
||
### 错误的理解
|
||
- ❌ `dag.rs` 如果包含"DAG共识算法" - 这是错误的
|
||
- ❌ 任何试图实现DAG共识的代码 - 应该删除或修正
|
||
|
||
---
|
||
|
||
## 开发指导原则
|
||
|
||
### 1. 永远记住
|
||
**NAC = CBPP共识 ≠ DAG共识**
|
||
|
||
### 2. 遇到"DAG"时
|
||
- 如果是**数据结构** → 可能正确
|
||
- 如果是**共识机制** → 肯定错误
|
||
|
||
### 3. 核心文件
|
||
所有共识相关的代码都应该围绕CBPP的四大组件:
|
||
1. 宪法收据(CR)
|
||
2. 开放生产网络(OPN)
|
||
3. 流体区块模型(FBM)
|
||
4. 三维区块坐标
|
||
|
||
### 4. 类型系统
|
||
- Address: 32字节
|
||
- Hash: 48字节(SHA3-384)
|
||
- Branch Hash: 32字节(从48字节截取)
|
||
|
||
---
|
||
|
||
## 常见错误
|
||
|
||
### 错误1:实现DAG共识
|
||
```rust
|
||
// ❌ 错误
|
||
// NVM-L0 DAG图结构和共识算法
|
||
pub struct DagGraph {
|
||
// DAG共识相关代码
|
||
}
|
||
```
|
||
|
||
### 错误2:混淆数据结构和共识
|
||
```rust
|
||
// ⚠️ 需要澄清
|
||
// 如果DAG只是数据结构,应该明确说明
|
||
/// DAG数据结构(用于存储交易关系,不是共识机制)
|
||
pub struct DagGraph {
|
||
// 仅作为数据结构使用
|
||
}
|
||
```
|
||
|
||
### 正确做法:基于CBPP
|
||
```rust
|
||
// ✅ 正确
|
||
/// CBPP共识集成
|
||
pub struct CBPPConsensus {
|
||
constitutional_receipt_manager: ConstitutionalReceiptManager,
|
||
open_production_network: OpenProductionNetwork,
|
||
fluid_block_manager: FluidBlockManager,
|
||
coordinate_manager: BlockCoordinateManager,
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 总结
|
||
|
||
1. **NAC使用CBPP共识** - 宪政区块生产协议
|
||
2. **不是DAG共识** - 不要实现DAG共识算法
|
||
3. **宪法即共识** - 所有共识逻辑都基于宪法
|
||
4. **四大组件** - CR、OPN、FBM、三维坐标
|
||
|
||
---
|
||
|
||
## 参考文档
|
||
|
||
- `/home/ubuntu/NAC_Clean_Dev/docs/CBPP_WHITEPAPER.md` - CBPP白皮书
|
||
- `/home/ubuntu/NAC_Clean_Dev/nvm_v2/NVM-l0/src/constitutional_receipt.rs` - 宪法收据实现
|
||
- `/home/ubuntu/NAC_Clean_Dev/nvm_v2/NVM-l0/src/cbpp_integration.rs` - CBPP集成
|
||
- `/home/ubuntu/NAC_Clean_Dev/nvm_v2/NVM-l0/src/block_coordinate.rs` - 三维区块坐标
|
||
|
||
---
|
||
|
||
**最后提醒:NAC是原生公链,不是以太坊的衍生或扩展。CBPP是NAC独创的共识机制。**
|