NAC_Blockchain/memory/principles/architecture.json

185 lines
6.3 KiB
JSON
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.

{
"category": "architecture",
"title": "NAC架构核心原则",
"last_updated": "2026-02-07",
"principles": [
{
"principle_id": "ARCH_001",
"title": "四层架构体系",
"description": "NAC采用L0-L1-L2-L3四层架构每层职责明确",
"layers": [
{
"layer": "L0",
"name": "Base Layer",
"chinese": "基础层",
"responsibility": "基础数据结构、哈希算法Blake3、密码学原语",
"key_components": [
"Blake3 Hash",
"Constitutional Layer宪法层",
"Basic Data Structures"
]
},
{
"layer": "L1",
"name": "Protocol Layer",
"chinese": "协议层",
"responsibility": "核心协议实现NVM、CBPP、ACC-20、Fragmentation",
"key_components": [
"NVM (NAC Virtual Machine)",
"CBPP Consensus",
"ACC-20 Protocol",
"Fragmentation Protocol",
"Advanced Architecture"
]
},
{
"layer": "L2",
"name": "Constitutional Layer",
"chinese": "宪法层",
"responsibility": "不可变的宪法规则,治理机制,合规验证",
"key_components": [
"Constitutional Rules",
"Jurisdiction Management",
"Asset Categories",
"Governance System"
],
"immutability": "L2是不可变层只能通过严格的治理流程修改"
},
{
"layer": "L3",
"name": "Application Layer",
"chinese": "应用层",
"responsibility": "DApps、Charter合约、用户应用",
"key_components": [
"Charter Contracts",
"DApps",
"User Applications"
]
}
],
"must_do": [
"严格遵守四层架构划分",
"L2宪法层规则必须通过治理流程修改",
"L1协议层实现必须符合L2宪法规则",
"所有代码必须明确标注所属层级"
],
"must_not_do": [
"不要混淆层级职责",
"不要绕过L2宪法层直接修改规则",
"不要在L1实现L3的应用逻辑"
]
},
{
"principle_id": "ARCH_002",
"title": "OpCode命名规范",
"description": "所有NVM OpCode必须使用UPPER_CASE命名",
"rationale": "符合区块链行业标准EVM使用UPPER_CASE提高代码可读性",
"examples": [
"PUSH1不是Push1",
"SSTORE不是SStore",
"JUMP_DEST不是JumpDest",
"CR_CREATE不是CrCreate"
],
"must_do": [
"所有OpCode使用UPPER_CASE",
"多单词OpCode使用下划线分隔",
"保持与EVM兼容的OpCode名称一致如PUSH1, SSTORE"
],
"must_not_do": [
"不要使用PascalCase如Push1",
"不要使用camelCase如push1",
"不要使用snake_case如push_1"
],
"related_decisions": ["D001"]
},
{
"principle_id": "ARCH_003",
"title": "Blake3哈希统一",
"description": "NAC使用Blake3作为唯一哈希算法不使用SHA256或其他哈希",
"rationale": "Blake3性能优异安全性高统一哈希算法简化实现",
"must_do": [
"所有哈希计算使用Blake3",
"区块哈希使用Blake3",
"交易哈希使用Blake3",
"Merkle树使用Blake3"
],
"must_not_do": [
"不要使用SHA256",
"不要使用Keccak256",
"不要混用多种哈希算法"
]
},
{
"principle_id": "ARCH_004",
"title": "代码保留原则",
"description": "永远不要删除代码,所有接口都是为未来功能预留",
"rationale": "NAC是新开发的系统很多接口和功能是为未来扩展预留的",
"must_do": [
"保留所有定义的接口和结构",
"保留所有OpCode定义即使暂未实现",
"保留所有模块和函数(即使暂未使用)"
],
"must_not_do": [
"不要删除'未使用'的代码",
"不要使用#[allow(unused)]隐藏问题",
"不要使用ignore/no_run隐藏测试问题"
],
"correct_approach": [
"遇到'未使用'警告时添加proper imports",
"遇到测试失败时,修复问题而非忽略",
"遇到类型错误时添加proper types"
]
},
{
"principle_id": "ARCH_005",
"title": "NAC原生设计原则",
"description": "NAC不是任何公链的继承、衍生或扩展必须使用NAC原生方法",
"must_do": [
"使用Rust的类型系统enum, struct",
"使用强类型而非字符串表示",
"使用NAC原生术语和概念",
"使用NAC原生协议和算法"
],
"must_not_do": [
"不要使用JSON序列化serde_json表示复杂类型",
"不要模仿以太坊的实现方式",
"不要使用Cosmos的IBC协议",
"不要使用比特币的UTXO模型"
],
"common_mistakes": [
{
"mistake": "使用JSON字符串表示提案内容",
"correction": "使用Rust enum定义强类型的ProposalContent",
"example": "enum ProposalContent { CreateShard {...}, ModifyConfig {...} }"
},
{
"mistake": "使用serde_json序列化",
"correction": "使用Rust的类型系统和二进制序列化"
}
]
},
{
"principle_id": "ARCH_006",
"title": "测试驱动开发",
"description": "所有功能必须有完整的单元测试和集成测试",
"must_do": [
"每个模块必须有tests模块",
"每个公开函数必须有测试用例",
"测试必须覆盖正常流程和错误流程",
"所有测试必须通过cargo test"
],
"must_not_do": [
"不要提交未通过测试的代码",
"不要使用#[ignore]跳过测试",
"不要使用no_run隐藏doctest问题"
],
"test_requirements": [
"单元测试覆盖率 > 80%",
"所有公开API必须有doctest",
"集成测试覆盖核心流程",
"性能测试覆盖关键路径"
]
}
]
}