497 lines
15 KiB
Markdown
497 lines
15 KiB
Markdown
# NAC公链层级架构完整分析
|
||
|
||
> 工单 #36:从底层开始逐层分析,每一层实现的功能
|
||
>
|
||
> 创建时间:2026-02-19
|
||
>
|
||
> 目标:为每个功能模块建立适配器,并在SDK中统一调用方式
|
||
|
||
---
|
||
|
||
## 一、NAC公链层级架构概览
|
||
|
||
NAC公链采用**六层架构**设计,从底层到应用层依次为:
|
||
|
||
```
|
||
L5: 应用层 (Application Layer)
|
||
↓
|
||
L4: AI层 (AI Layer)
|
||
↓
|
||
L3: 存储层 (Storage Layer)
|
||
↓
|
||
L2: 宪政/治理/网络层 (Constitutional/Governance/Network Layer)
|
||
↓
|
||
L1: 协议层 (Protocol Layer)
|
||
↓
|
||
L0: 原生层 (Native Layer)
|
||
```
|
||
|
||
---
|
||
|
||
## 二、L0 原生层 (Native Layer)
|
||
|
||
### 2.1 核心功能
|
||
|
||
L0层是NAC公链的**最底层基础设施**,提供区块链运行的基础原语和核心机制。
|
||
|
||
### 2.2 主要模块
|
||
|
||
#### 2.2.1 地址系统
|
||
- **NAC地址**:32字节地址格式(区别于以太坊20字节)
|
||
- **地址生成**:基于公钥的地址派生算法
|
||
- **地址验证**:地址格式校验和校验和验证
|
||
|
||
#### 2.2.2 哈希系统
|
||
- **SHA3-384**:48字节哈希(NAC标准哈希算法)
|
||
- **区块哈希**:区块头的哈希计算
|
||
- **交易哈希**:交易数据的哈希计算
|
||
- **状态根哈希**:Merkle树根哈希
|
||
|
||
#### 2.2.3 密码学原语
|
||
- **签名算法**:ECDSA/EdDSA签名
|
||
- **密钥管理**:私钥/公钥对生成和管理
|
||
- **加密算法**:数据加密和解密
|
||
|
||
#### 2.2.4 数据结构
|
||
- **区块结构**:区块头、区块体定义
|
||
- **交易结构**:交易字段和编码格式
|
||
- **收据结构**:交易执行收据
|
||
|
||
### 2.3 适配器需求
|
||
|
||
```rust
|
||
// L0原生层适配器
|
||
pub trait L0NativeAdapter {
|
||
// 地址操作
|
||
fn generate_address(public_key: &[u8]) -> Address32;
|
||
fn validate_address(address: &Address32) -> bool;
|
||
|
||
// 哈希操作
|
||
fn hash_sha3_384(data: &[u8]) -> Hash48;
|
||
fn compute_block_hash(block_header: &BlockHeader) -> Hash48;
|
||
|
||
// 密码学操作
|
||
fn sign_transaction(tx: &Transaction, private_key: &PrivateKey) -> Signature;
|
||
fn verify_signature(tx: &Transaction, signature: &Signature, public_key: &PublicKey) -> bool;
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 三、L1 协议层 (Protocol Layer)
|
||
|
||
### 3.1 核心功能
|
||
|
||
L1层实现NAC公链的**核心协议和共识机制**,是区块链功能的主要实现层。
|
||
|
||
### 3.2 主要模块
|
||
|
||
#### 3.2.1 NVM (NAC Virtual Machine)
|
||
- **智能合约执行**:Charter语言合约的执行环境
|
||
- **状态管理**:账户状态、合约状态的读写
|
||
- **Gas计量**:交易执行的Gas消耗计算
|
||
- **操作码**:NVM指令集(不同于EVM)
|
||
|
||
#### 3.2.2 CBPP共识 (Constitutional Block Production Protocol)
|
||
- **区块生产**:基于宪政的区块生产机制
|
||
- **验证节点选举**:验证者的选举和轮换
|
||
- **区块确认**:区块的最终性确认
|
||
- **分叉处理**:链分叉的检测和解决
|
||
|
||
#### 3.2.3 GNACS编码系统 (Global NAC Asset Classification System)
|
||
- **资产分类**:48位GNACS编码
|
||
- **资产识别**:全球唯一资产标识
|
||
- **资产DNA**:资产数字DNA生成
|
||
|
||
#### 3.2.4 ACC协议族 (Asset Custody & Compliance)
|
||
- **ACC-20**:基础资产代币协议
|
||
- **ACC-1400**:证券型代币协议
|
||
- **ACC-1594**:债券型代币协议
|
||
- **ACC-1643**:衍生品代币协议
|
||
- **ACC-1644**:混合型代币协议
|
||
|
||
#### 3.2.5 XTZH稳定币协议
|
||
- **XTZH铸造**:基于SDR锚定的稳定币铸造
|
||
- **储备管理**:黄金和外汇储备管理
|
||
- **汇率机制**:SDR汇率的动态调整
|
||
|
||
#### 3.2.6 跨分片交易
|
||
- **分片路由**:交易在分片间的路由
|
||
- **跨分片通信**:分片间的消息传递
|
||
- **状态同步**:跨分片状态的一致性
|
||
|
||
### 3.3 适配器需求
|
||
|
||
```rust
|
||
// L1协议层适配器
|
||
pub trait L1ProtocolAdapter {
|
||
// NVM操作
|
||
async fn deploy_contract(bytecode: &[u8], constructor_args: &[u8]) -> Result<Address32>;
|
||
async fn call_contract(contract_addr: &Address32, method: &str, args: &[u8]) -> Result<Vec<u8>>;
|
||
|
||
// CBPP共识
|
||
async fn submit_transaction(tx: &Transaction) -> Result<Hash48>;
|
||
async fn get_block(block_number: u64) -> Result<Block>;
|
||
|
||
// GNACS编码
|
||
fn generate_gnacs_code(asset_type: &str, jurisdiction: &str) -> GNACSCode;
|
||
fn parse_gnacs_code(code: &GNACSCode) -> AssetMetadata;
|
||
|
||
// ACC协议
|
||
async fn deploy_acc20_token(metadata: &TokenMetadata) -> Result<Address32>;
|
||
async fn mint_xtzh(amount: Decimal, collateral: &CollateralProof) -> Result<Hash48>;
|
||
|
||
// 跨分片
|
||
async fn route_cross_shard_tx(tx: &Transaction, target_shard: u32) -> Result<Hash48>;
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 四、L2 宪政/治理/网络层
|
||
|
||
### 4.1 L2-Constitutional (宪政层)
|
||
|
||
#### 4.1.1 核心功能
|
||
- **宪法条款管理**:NAC公链宪法的存储和执行
|
||
- **宪政审查**:交易和提案的宪政合规性审查
|
||
- **修正案机制**:宪法修正案的提出和表决
|
||
|
||
#### 4.1.2 主要模块
|
||
- **条款引擎**:宪法条款的解析和执行
|
||
- **审查系统**:自动化宪政审查
|
||
- **投票机制**:宪政修正案的链上投票
|
||
|
||
### 4.2 L2-Governance (治理层)
|
||
|
||
#### 4.2.1 核心功能
|
||
- **链上治理**:参数调整、升级提案的治理
|
||
- **投票权重**:基于持币量和锁定期的投票权
|
||
- **提案执行**:通过提案的自动执行
|
||
|
||
#### 4.2.2 主要模块
|
||
- **提案系统**:提案的创建、投票、执行
|
||
- **参数治理**:Gas价格、区块大小等参数的治理
|
||
- **升级治理**:协议升级的治理流程
|
||
|
||
### 4.3 L2-Network (网络层)
|
||
|
||
#### 4.3.1 核心功能
|
||
- **CSNP协议**:Constitutional Secure Network Protocol
|
||
- **节点发现**:网络中节点的发现和连接
|
||
- **消息传播**:交易和区块的P2P传播
|
||
|
||
#### 4.3.2 主要模块
|
||
- **对等网络**:P2P网络的维护
|
||
- **消息路由**:网络消息的路由和转发
|
||
- **网络安全**:DDoS防护、恶意节点隔离
|
||
|
||
### 4.4 适配器需求
|
||
|
||
```rust
|
||
// L2层适配器
|
||
pub trait L2Adapter {
|
||
// 宪政层
|
||
async fn check_constitutional_compliance(tx: &Transaction) -> Result<ComplianceResult>;
|
||
async fn propose_amendment(amendment: &Amendment) -> Result<ProposalId>;
|
||
|
||
// 治理层
|
||
async fn create_proposal(proposal: &Proposal) -> Result<ProposalId>;
|
||
async fn vote_on_proposal(proposal_id: ProposalId, vote: Vote) -> Result<Hash48>;
|
||
async fn execute_proposal(proposal_id: ProposalId) -> Result<Hash48>;
|
||
|
||
// 网络层
|
||
async fn broadcast_transaction(tx: &Transaction) -> Result<()>;
|
||
async fn sync_blocks(from_height: u64, to_height: u64) -> Result<Vec<Block>>;
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 五、L3 存储层 (Storage Layer)
|
||
|
||
### 5.1 核心功能
|
||
|
||
L3层提供**分布式存储和状态管理**,支持区块链数据的持久化和查询。
|
||
|
||
### 5.2 主要模块
|
||
|
||
#### 5.2.1 状态数据库
|
||
- **账户状态**:账户余额、Nonce的存储
|
||
- **合约状态**:智能合约存储变量的持久化
|
||
- **Merkle树**:状态的Merkle树索引
|
||
|
||
#### 5.2.2 区块存储
|
||
- **区块链数据**:区块和交易的持久化存储
|
||
- **索引系统**:区块高度、交易哈希的索引
|
||
- **归档节点**:历史数据的长期存储
|
||
|
||
#### 5.2.3 IPFS集成
|
||
- **文件存储**:大文件的IPFS存储
|
||
- **CID管理**:IPFS内容标识符的管理
|
||
- **数据检索**:基于CID的数据检索
|
||
|
||
### 5.3 适配器需求
|
||
|
||
```rust
|
||
// L3存储层适配器
|
||
pub trait L3StorageAdapter {
|
||
// 状态操作
|
||
async fn get_account_state(address: &Address32) -> Result<AccountState>;
|
||
async fn set_account_state(address: &Address32, state: &AccountState) -> Result<()>;
|
||
|
||
// 区块存储
|
||
async fn store_block(block: &Block) -> Result<()>;
|
||
async fn get_block_by_height(height: u64) -> Result<Block>;
|
||
async fn get_block_by_hash(hash: &Hash48) -> Result<Block>;
|
||
|
||
// IPFS操作
|
||
async fn store_file_to_ipfs(data: &[u8]) -> Result<String>; // 返回CID
|
||
async fn retrieve_file_from_ipfs(cid: &str) -> Result<Vec<u8>>;
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 六、L4 AI层 (AI Layer)
|
||
|
||
### 6.1 核心功能
|
||
|
||
L4层提供**AI驱动的智能服务**,包括合规审批、估值、风险评估等。
|
||
|
||
### 6.2 主要模块
|
||
|
||
#### 6.2.1 AI合规审批
|
||
- **七层合规验证**:KYC/AML、资产真实性、法律合规等
|
||
- **ZK证明生成**:零知识证明的合规证明
|
||
- **合规报告**:详细的合规审查报告
|
||
|
||
#### 6.2.2 AI估值引擎
|
||
- **多模型估值**:ChatGPT、DeepSeek、豆包协同估值
|
||
- **置信度计算**:估值结果的置信度评估
|
||
- **市场数据集成**:实时市场数据的获取和分析
|
||
|
||
#### 6.2.3 AI风险评估
|
||
- **风险评分**:资产和交易的风险评分
|
||
- **异常检测**:异常交易和行为的检测
|
||
- **预警系统**:风险预警和告警
|
||
|
||
#### 6.2.4 XTZH AI引擎
|
||
- **储备优化**:黄金和外汇储备的AI优化
|
||
- **汇率预测**:SDR汇率的AI预测
|
||
- **流动性管理**:XTZH流动性的智能管理
|
||
|
||
### 6.3 适配器需求
|
||
|
||
```rust
|
||
// L4 AI层适配器
|
||
pub trait L4AIAdapter {
|
||
// AI合规
|
||
async fn verify_compliance(data: &ComplianceData) -> Result<ComplianceResult>;
|
||
async fn generate_zk_proof(result: &ComplianceResult) -> Result<ZKProof>;
|
||
|
||
// AI估值
|
||
async fn appraise_asset(asset: &Asset, jurisdiction: Jurisdiction) -> Result<ValuationResult>;
|
||
async fn get_market_data(asset_type: &str) -> Result<MarketData>;
|
||
|
||
// AI风险评估
|
||
async fn assess_risk(transaction: &Transaction) -> Result<RiskScore>;
|
||
async fn detect_anomaly(behavior: &UserBehavior) -> Result<AnomalyReport>;
|
||
|
||
// XTZH AI
|
||
async fn optimize_reserves(current_reserves: &Reserves) -> Result<ReserveStrategy>;
|
||
async fn predict_sdr_rate(horizon: Duration) -> Result<SDRForecast>;
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 七、L5 应用层 (Application Layer)
|
||
|
||
### 7.1 核心功能
|
||
|
||
L5层提供**面向用户的应用接口和服务**,是开发者和用户与NAC公链交互的主要入口。
|
||
|
||
### 7.2 主要模块
|
||
|
||
#### 7.2.1 钱包接口
|
||
- **账户管理**:创建、导入、导出钱包
|
||
- **交易构建**:交易的构建和签名
|
||
- **余额查询**:账户余额和资产查询
|
||
|
||
#### 7.2.2 DApp接口
|
||
- **Web3 Provider**:类似以太坊的Web3接口
|
||
- **合约交互**:智能合约的调用接口
|
||
- **事件监听**:合约事件的订阅和监听
|
||
|
||
#### 7.2.3 浏览器接口
|
||
- **区块查询**:区块链浏览器的数据接口
|
||
- **交易查询**:交易详情和状态查询
|
||
- **统计数据**:链上统计数据的查询
|
||
|
||
#### 7.2.4 交易所接口
|
||
- **资产上架**:代币在交易所的上架流程
|
||
- **交易对管理**:交易对的创建和管理
|
||
- **订单簿**:买卖订单的管理
|
||
|
||
### 7.3 适配器需求
|
||
|
||
```rust
|
||
// L5应用层适配器
|
||
pub trait L5ApplicationAdapter {
|
||
// 钱包操作
|
||
async fn create_wallet(password: &str) -> Result<Wallet>;
|
||
async fn send_transaction(from: &Address32, to: &Address32, amount: Decimal) -> Result<Hash48>;
|
||
async fn get_balance(address: &Address32) -> Result<Decimal>;
|
||
|
||
// DApp操作
|
||
async fn call_contract_method(contract: &Address32, method: &str, params: &[Value]) -> Result<Value>;
|
||
async fn subscribe_event(contract: &Address32, event_name: &str) -> Result<EventStream>;
|
||
|
||
// 浏览器操作
|
||
async fn get_transaction_receipt(tx_hash: &Hash48) -> Result<TransactionReceipt>;
|
||
async fn get_chain_stats() -> Result<ChainStatistics>;
|
||
|
||
// 交易所操作
|
||
async fn list_token_on_exchange(token: &Address32, metadata: &TokenMetadata) -> Result<ListingId>;
|
||
async fn create_trading_pair(base: &Address32, quote: &Address32) -> Result<PairId>;
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 八、SDK统一适配器架构
|
||
|
||
### 8.1 适配器层次结构
|
||
|
||
```rust
|
||
// NAC SDK 统一适配器
|
||
pub struct NACAdapter {
|
||
l0: L0NativeAdapter,
|
||
l1: L1ProtocolAdapter,
|
||
l2: L2Adapter,
|
||
l3: L3StorageAdapter,
|
||
l4: L4AIAdapter,
|
||
l5: L5ApplicationAdapter,
|
||
}
|
||
|
||
impl NACAdapter {
|
||
/// 创建新的NAC适配器
|
||
pub fn new(config: NACConfig) -> Result<Self> {
|
||
Ok(Self {
|
||
l0: L0NativeAdapter::new(&config)?,
|
||
l1: L1ProtocolAdapter::new(&config)?,
|
||
l2: L2Adapter::new(&config)?,
|
||
l3: L3StorageAdapter::new(&config)?,
|
||
l4: L4AIAdapter::new(&config)?,
|
||
l5: L5ApplicationAdapter::new(&config)?,
|
||
})
|
||
}
|
||
|
||
/// 获取L0层适配器
|
||
pub fn l0(&self) -> &L0NativeAdapter {
|
||
&self.l0
|
||
}
|
||
|
||
/// 获取L1层适配器
|
||
pub fn l1(&self) -> &L1ProtocolAdapter {
|
||
&self.l1
|
||
}
|
||
|
||
// ... 其他层的访问方法
|
||
}
|
||
```
|
||
|
||
### 8.2 统一调用示例
|
||
|
||
```rust
|
||
// 使用示例:资产上链完整流程
|
||
async fn onboard_asset(adapter: &NACAdapter, asset_info: AssetInfo) -> Result<OnboardingResult> {
|
||
// L4: AI合规审批
|
||
let compliance = adapter.l4().verify_compliance(&asset_info.into()).await?;
|
||
|
||
// L4: AI估值
|
||
let valuation = adapter.l4().appraise_asset(&asset_info.into(), Jurisdiction::US).await?;
|
||
|
||
// L1: 生成GNACS编码
|
||
let gnacs = adapter.l1().generate_gnacs_code(&asset_info.asset_type, &asset_info.jurisdiction);
|
||
|
||
// L1: 铸造XTZH
|
||
let xtzh_tx = adapter.l1().mint_xtzh(valuation.amount, &compliance.proof).await?;
|
||
|
||
// L1: 部署ACC-20代币
|
||
let token_addr = adapter.l1().deploy_acc20_token(&TokenMetadata {
|
||
name: asset_info.name,
|
||
symbol: asset_info.symbol,
|
||
total_supply: valuation.amount,
|
||
gnacs_code: gnacs,
|
||
}).await?;
|
||
|
||
// L5: 在交易所上架
|
||
let listing_id = adapter.l5().list_token_on_exchange(&token_addr, &token_metadata).await?;
|
||
|
||
Ok(OnboardingResult {
|
||
token_address: token_addr,
|
||
xtzh_tx_hash: xtzh_tx,
|
||
listing_id,
|
||
})
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 九、实施计划
|
||
|
||
### 9.1 第一阶段:基础适配器(1-2周)
|
||
- [ ] 实现L0原生层适配器
|
||
- [ ] 实现L1协议层基础适配器(NVM、CBPP)
|
||
- [ ] 编写单元测试
|
||
|
||
### 9.2 第二阶段:协议适配器(2-3周)
|
||
- [ ] 实现L1协议层高级适配器(GNACS、ACC、XTZH)
|
||
- [ ] 实现L2层适配器(宪政、治理、网络)
|
||
- [ ] 实现L3存储层适配器
|
||
- [ ] 编写集成测试
|
||
|
||
### 9.3 第三阶段:AI和应用适配器(2-3周)
|
||
- [ ] 实现L4 AI层适配器
|
||
- [ ] 实现L5应用层适配器
|
||
- [ ] 编写端到端测试
|
||
|
||
### 9.4 第四阶段:SDK集成(1-2周)
|
||
- [ ] 创建统一的NACAdapter
|
||
- [ ] 编写SDK文档和示例
|
||
- [ ] 性能优化和压力测试
|
||
|
||
---
|
||
|
||
## 十、交付物清单
|
||
|
||
### 10.1 代码交付
|
||
- [ ] `nac-sdk/src/adapters/l0_native.rs` - L0层适配器
|
||
- [ ] `nac-sdk/src/adapters/l1_protocol.rs` - L1层适配器
|
||
- [ ] `nac-sdk/src/adapters/l2_layer.rs` - L2层适配器
|
||
- [ ] `nac-sdk/src/adapters/l3_storage.rs` - L3层适配器
|
||
- [ ] `nac-sdk/src/adapters/l4_ai.rs` - L4层适配器
|
||
- [ ] `nac-sdk/src/adapters/l5_application.rs` - L5层适配器
|
||
- [ ] `nac-sdk/src/lib.rs` - 统一SDK入口
|
||
|
||
### 10.2 文档交付
|
||
- [ ] API文档(Rust Doc)
|
||
- [ ] 使用指南(Markdown)
|
||
- [ ] 示例代码(examples/)
|
||
- [ ] 架构设计文档(本文档)
|
||
|
||
### 10.3 测试交付
|
||
- [ ] 单元测试覆盖率 > 80%
|
||
- [ ] 集成测试用例 > 50个
|
||
- [ ] 端到端测试场景 > 10个
|
||
|
||
---
|
||
|
||
## 十一、总结
|
||
|
||
本文档完整分析了NAC公链的六层架构,明确了每一层的核心功能和主要模块,并为每个功能模块设计了适配器接口。通过统一的SDK适配器架构,开发者可以方便地调用NAC公链各层的功能,实现复杂的区块链应用。
|
||
|
||
下一步将按照实施计划,逐层实现各个适配器,并在SDK中集成统一的调用方式。
|