NAC_Blockchain/protocol/nac-constitution-state
NAC Admin a754adcee8 feat: 宪法层四项完善 - 条款拆分/SHA3-384哈希/L3对接/nac_lens协议
1. 条款文件拆分:amendments.cnnl -> 6个独立章节文件
   - infrastructure.cnnl (A04-A08)
   - asset_compliance.cnnl (A09-A16)
   - governance.cnnl (A17-A24)
   - xtzh_currency.cnnl (A25-A32)
   - jurisdiction.cnnl (A33-A38)
   - ai_compliance.cnnl (A39-A43)

2. constitution_hash 升级:新增 calculate_constitution_merkle_root()
   使用 SHA3-384 计算所有激活条款的 Merkle 根(48字节/96位十六进制)

3. L3 存储层对接:state_database_ext.rs v2
   - 新增 ConstitutionClauseId 枚举(A01-A56 完整56条)
   - constitution_ref 字段类型安全验证
   - ConstitutionRefValidator 验证器

4. nac_lens 协议对接:constitution-service main.rs v2
   - 8个 nac_lens 方法(verify_clause/get_hash/issue_cr等)
   - TCP 监听 22050 端口
   - 完整请求/响应结构体

Issue: #CONSTITUTION-LAYER-002
Closes: 条款拆分/哈希升级/L3对接/nac_lens对接
2026-03-18 23:30:50 +08:00
..
src feat: 宪法层四项完善 - 条款拆分/SHA3-384哈希/L3对接/nac_lens协议 2026-03-18 23:30:50 +08:00
.gitignore Issue #78 #79: protocol/ 和 rwa/ 目录分组重组 2026-03-07 18:12:43 +08:00
Cargo.lock Issue #78 #79: protocol/ 和 rwa/ 目录分组重组 2026-03-07 18:12:43 +08:00
Cargo.toml Issue #78 #79: protocol/ 和 rwa/ 目录分组重组 2026-03-07 18:12:43 +08:00
README.md Issue #78 #79: protocol/ 和 rwa/ 目录分组重组 2026-03-07 18:12:43 +08:00
TICKET_10_COMPLETION_LOG.md Issue #78 #79: protocol/ 和 rwa/ 目录分组重组 2026-03-07 18:12:43 +08:00

README.md

NAC宪法状态管理系统

NAC (New Asset Chain) 宪法状态管理系统是一个完整的宪法版本管理、升级验证、持久化和历史追踪解决方案。该系统为NAC公链提供了强大的宪法治理能力确保宪法升级的安全性、可追溯性和透明度。

核心特性

NAC宪法状态管理系统提供了一套完整的宪法治理工具包括版本管理、升级验证、状态持久化和历史审计等核心功能。系统采用模块化设计各模块职责清晰易于维护和扩展。

版本管理

系统支持完整的宪法版本生命周期管理。每个宪法版本包含版本号、宪法哈希、生效区块高度、条款数量、创建时间戳、创建者地址和版本描述等完整信息。版本管理器提供了版本添加、查询、排序和范围检索等功能,确保版本信息的完整性和可访问性。

版本比较功能支持按版本号进行排序和比较,生效性检查功能可以根据当前区块高度判断版本是否已生效。版本验证功能确保每个版本的条款数量和描述信息完整有效。

升级验证

升级验证器提供了多层次的安全验证机制。权限验证确保只有授权地址才能提议、执行或取消升级。升级条件验证包括版本号递增检查、生效高度验证、升级间隔验证和条款数量增量验证等多个维度。

系统支持配置最小升级间隔和最小条款增量,防止频繁升级或恶意升级。宪法哈希唯一性验证确保新版本确实包含了实质性的修改。所有验证规则都可以根据治理需求进行调整。

状态持久化

存储管理器提供了完整的状态持久化能力。状态快照包含当前版本、历史版本和待处理升级的完整信息。系统支持状态保存、加载、备份和恢复等操作,确保状态数据的安全性和可靠性。

状态序列化采用JSON格式便于人工审查和调试。存储路径可配置支持多环境部署。备份和恢复功能为系统提供了灾难恢复能力。

历史追踪

历史追踪器记录了所有宪法相关操作的完整审计日志。支持的操作类型包括版本创建、升级提议、升级执行、升级取消和版本回滚。每条历史记录包含操作类型、版本号、操作者地址、时间戳、区块高度和操作描述。

审计日志为每条记录分配唯一ID支持按ID范围查询。历史查询功能支持多维度过滤包括操作类型、版本号、操作者、时间范围和区块高度范围等。所有历史记录都持久化存储确保审计追踪的完整性。

系统架构

系统采用模块化设计,主要包含以下核心模块:

lib.rs: 核心状态机实现,提供宪法状态管理的主要接口和逻辑。

version.rs: 版本管理模块,负责宪法版本的创建、查询和管理。

upgrade.rs: 升级验证模块,提供升级提议的多层次验证机制。

storage.rs: 持久化模块,负责状态的序列化、存储和恢复。

history.rs: 历史追踪模块,记录和查询所有宪法相关操作的审计日志。

error.rs: 错误类型定义,提供统一的错误处理机制。

使用示例

创建状态机

use nac_constitution_state::{ConstitutionStateMachine, ConstitutionVersion};
use nac_udm::primitives::{Hash, Address};
use std::path::PathBuf;

// 创建初始版本
let initial_version = ConstitutionVersion::new(
    1,                              // 版本号
    Hash::zero(),                   // 宪法哈希
    1000,                           // 生效区块高度
    10,                             // 条款数量
    1234567890,                     // 创建时间戳
    Address::zero(),                // 创建者地址
    "Initial version".to_string(),  // 版本描述
);

// 创建状态机
let storage_path = PathBuf::from("/path/to/storage");
let mut state_machine = ConstitutionStateMachine::new(
    initial_version,
    storage_path
).unwrap();

提议升级

// 创建新版本
let new_version = ConstitutionVersion::new(
    2,                              // 版本号
    Hash::zero(),                   // 宪法哈希
    3000,                           // 生效区块高度
    15,                             // 条款数量
    1234567900,                     // 创建时间戳
    Address::zero(),                // 创建者地址
    "Version 2 upgrade".to_string(), // 版本描述
);

// 提议升级
let proposer = Address::zero();
state_machine.propose_upgrade(new_version, proposer).unwrap();

执行升级

// 执行升级(当达到生效高度时)
let version = 2;
let current_height = 3000;
state_machine.execute_upgrade(version, current_height).unwrap();

查询历史

use nac_constitution_state::{HistoryFilter, HistoryRecordType};

// 创建查询过滤器
let filter = HistoryFilter {
    record_type: Some(HistoryRecordType::UpgradeExecuted),
    version: Some(2),
    ..Default::default()
};

// 查询历史记录
let records = state_machine.query_history(filter).unwrap();

状态同步

use nac_constitution_state::StateSnapshot;

// 从远程节点获取状态快照
let remote_state = get_remote_state(); // 假设的函数

// 同步状态
state_machine.sync(remote_state).unwrap();

API文档

ConstitutionVersion

宪法版本结构体,包含完整的版本信息。

字段:

  • version: u64 - 版本号
  • constitution_hash: Hash - 宪法哈希48字节
  • effective_from: u64 - 生效区块高度
  • clause_count: u64 - 条款数量
  • created_at: u64 - 创建时间戳
  • created_by: Address - 创建者地址32字节
  • description: String - 版本描述

方法:

  • new() - 创建新版本
  • compare() - 比较版本号
  • is_effective() - 检查是否已生效
  • validate() - 验证版本有效性

ConstitutionStateMachine

宪法状态机,管理宪法版本和升级。

方法:

  • new() - 创建新的状态机
  • load() - 从存储加载状态机
  • save() - 保存状态到存储
  • propose_upgrade() - 提议升级
  • execute_upgrade() - 执行升级
  • cancel_upgrade() - 取消升级
  • rollback() - 回滚到指定版本
  • get_current_version() - 获取当前版本
  • get_history() - 获取历史版本
  • get_version() - 获取指定版本
  • get_pending_upgrades() - 获取待处理的升级
  • query_history() - 查询历史记录
  • get_audit_log() - 获取审计日志
  • sync() - 同步状态

UpgradeValidator

升级验证器,验证升级提议的合法性。

方法:

  • new() - 创建新的验证器
  • add_authorized_address() - 添加授权地址
  • remove_authorized_address() - 移除授权地址
  • is_authorized() - 检查地址是否授权
  • validate_permission() - 验证权限
  • validate_upgrade() - 验证升级
  • set_min_upgrade_interval() - 设置最小升级间隔
  • set_min_clause_increment() - 设置最小条款增量

HistoryTracker

历史追踪器,记录和查询审计日志。

方法:

  • new() - 创建新的追踪器
  • load() - 从存储加载追踪器
  • record_version() - 记录版本创建
  • record_proposal() - 记录升级提议
  • record_upgrade() - 记录升级执行
  • record_cancellation() - 记录升级取消
  • record_rollback() - 记录版本回滚
  • query() - 查询历史记录
  • get_audit_log() - 获取审计日志
  • get_all_records() - 获取所有记录

测试

系统包含22个单元测试覆盖所有核心功能。

运行测试:

cargo test

测试覆盖范围:

  • 版本创建和验证3个测试
  • 版本管理器功能5个测试
  • 升级验证功能5个测试
  • 存储功能2个测试
  • 历史追踪功能4个测试
  • 状态机核心功能3个测试

依赖

  • nac-udm: NAC统一数据模型提供Hash和Address等基础类型
  • serde: 序列化和反序列化支持
  • serde_json: JSON格式支持

版本历史

v0.2.0 (2026-02-18)

  • 完整实现版本管理功能
  • 完整实现升级验证功能
  • 完整实现持久化功能
  • 完整实现历史追踪功能
  • 添加22个单元测试
  • 完善API文档

v0.1.0

  • 基础的ConstitutionVersion结构
  • 简单的ConstitutionStateMachine
  • 基本的upgrade方法

许可证

NAC公链项目专有

作者

NAC开发团队