NAC_Blockchain/nac-cee/README.md

224 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# NAC宪法执行引擎 (CEE)
Constitutional Execution Engine for NAC Blockchain
## 概述
宪法执行引擎Constitutional Execution Engine, CEE是NAC公链宪法系统的核心组件负责执行宪法规则、验证交易和区块的合宪性并生成执行收据。
## 核心功能
### 1. 规则引擎
- **规则解析器** (`RuleParser`): 解析宪法条款为可执行规则
- **规则执行器** (`RuleExecutor`): 执行规则并返回结果
- **规则缓存** (`RuleCache`): LRU缓存提高性能
### 2. 验证系统
- **交易验证器** (`TransactionValidator`): 验证交易合宪性
- **区块验证器** (`BlockValidator`): 验证区块合宪性
- **状态验证器** (`StateValidator`): 验证状态变更合宪性
- **升级验证器** (`UpgradeValidator`): 验证升级提案合宪性
### 3. 收据系统
- **收据生成器** (`ReceiptGenerator`): 生成执行收据
- **收据存储** (`ReceiptStorage`): 存储和查询收据
### 4. 集成模块
-`nac-constitution-state` 集成
-`nac-constitution-clauses` 集成
-`nac-constitution-macros` 集成
- 与 CBPP 共识引擎集成
## 使用示例
### 验证交易
```rust
use nac_cee::{ConstitutionalExecutionEngine, Transaction, Rule};
let mut engine = ConstitutionalExecutionEngine::new();
let tx = Transaction {
hash: Hash::zero(),
from: Address::new([1u8; 32]),
to: Address::new([2u8; 32]),
amount: 1000,
nonce: 1,
timestamp: 1000000,
data: vec![],
};
let rules = vec![]; // 加载宪法规则
let receipt = engine.validate_transaction(&tx, &rules)?;
if receipt.validation_result.passed {
println!("交易验证通过");
} else {
println!("交易验证失败: {:?}", receipt.validation_result.violated_clauses);
}
```
### 验证区块
```rust
use nac_cee::{ConstitutionalExecutionEngine, Block};
let mut engine = ConstitutionalExecutionEngine::new();
let block = Block {
hash: Hash::zero(),
parent_hash: Hash::zero(),
number: 1,
timestamp: 1000000,
proposer: Address::zero(),
transactions: vec![],
state_root: Hash::zero(),
};
let rules = vec![]; // 加载宪法规则
let receipt = engine.validate_block(&block, &rules)?;
```
### 创建和执行规则
```rust
use nac_cee::{Rule, RuleType, Condition, Operator, Value, Action, RuleExecutor};
use std::collections::HashMap;
// 创建规则
let mut rule = Rule::new(
1,
100,
RuleType::Transaction,
"金额限制规则".to_string(),
"限制单笔交易金额不超过10000".to_string(),
);
rule.add_condition(Condition::new(
"amount".to_string(),
Operator::LessThanOrEqual,
Value::UnsignedInteger(10000),
));
rule.add_action(Action::Allow);
// 执行规则
let mut executor = RuleExecutor::new();
let mut context = HashMap::new();
context.insert("amount".to_string(), Value::UnsignedInteger(5000));
let result = executor.execute(&rule, &context)?;
println!("规则执行结果: {:?}", result);
```
### 使用规则缓存
```rust
use nac_cee::{RuleCache, Rule};
let mut cache = RuleCache::new(1000, 3600); // 最大1000条TTL 1小时
// 插入规则
cache.insert(rule);
// 获取规则
if let Some(cached_rule) = cache.get(rule_id) {
println!("缓存命中");
}
// 查看缓存统计
let stats = cache.stats();
println!("缓存命中率: {:.2}%", stats.hit_rate * 100.0);
```
## 架构设计
详见 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)
## 性能指标
- 单笔交易验证延迟: < 10ms
- 批量验证TPS: > 1000
- 规则缓存命中率: > 90%
- 并行验证支持: 是
## 配置
```toml
[cee]
rule_cache_size = 1000
rule_cache_ttl = 3600
max_parallel_validations = 8
batch_size = 100
execution_timeout = 1000
max_recursion_depth = 100
max_memory_usage = 104857600
```
## 测试
运行所有测试:
```bash
cargo test
```
运行特定模块测试:
```bash
cargo test engine::
cargo test validator::
cargo test receipt::
```
## 测试覆盖率
- **规则引擎**: 38个测试
- **验证系统**: 20个测试
- **收据系统**: 8个测试
- **主引擎**: 3个测试
- **总计**: 64个测试100%通过
## 依赖
- `nac-udm`: NAC统一数据模型
- `serde`: 序列化/反序列化
- `serde_json`: JSON支持
- `thiserror`: 错误处理
## 错误处理
```rust
pub enum CeeError {
ClauseNotFound(u64),
ValidationFailed(String),
RuleParseError(String),
ExecutionError(String),
StorageError(String),
IntegrationError(String),
}
```
## 安全考虑
- 规则执行超时保护1秒
- 递归深度限制100层
- 内存使用限制100MB
- 权限控制和签名验证
- 收据不可篡改
## 未来扩展
- 智能合约集成
- 跨链验证支持
- AI辅助验证
- 性能优化
## 许可证
Copyright © 2024 NAC Foundation