NAC_Blockchain/nac-wallet-core/README.md

268 lines
5.9 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公链钱包核心模块
NAC钱包是NAC生态中用户与区块链交互的核心工具它不仅管理密钥和资产更确保每一笔交易在宪法框架内合规执行。
## 📦 模块概览
### 核心模块
1. **密钥管理模块** (`key_manager.rs`)
- 支持三种签名算法Ed25519、BLS、Dilithium5
- BIP39助记词生成与恢复
- BIP44路径派生 (`m/44'/626'/0'/0/index`)
- 安全的密钥存储和导出
2. **地址模块** (`address.rs`)
- 32字节结构化地址
- 包含:版本 + 账户类型 + KYC等级 + 区域 + 公钥哈希
- 支持4种账户类型个人、企业、合约、系统
- 支持4级KYC无认证、基础、标准、高级
3. **交易模块** (`transaction.rs`)
- 完整的交易构造流程
- 支持多种交易类型XTZH/XIC转账、ACC-20/ACC-1400代币转账
- Builder模式构造交易
- CR宪法收据集成
- 交易签名和验证
4. **宪法收据模块** (`constitutional_receipt.rs`)
- CR生成和验证
- CEE节点交互
- 签名管理
- 有效期检查
5. **GNACS解析器** (`gnacs_parser.rs`)
- 48位GNACS编码解析
- 资产类型识别
- 风险等级评估
- 合规等级判断
6. **网络通信模块** (`network.rs`)
- RPC客户端
- CEE节点通信
- 余额查询
- 交易广播
7. **存储模块** (`storage.rs`)
- 密钥库文件加密存储
- AES-256-GCM加密
- PBKDF2密钥派生
- JSON格式存储
8. **账户管理模块** (`account.rs`)
- 账户信息管理
- 余额追踪
- Nonce管理
## 🚀 快速开始
### 安装依赖
```bash
cd nac-wallet-core
cargo build
```
### 使用示例
#### 1. 创建钱包
```rust
use nac_wallet_core::*;
// 生成密钥对
let keypair = KeyPair::generate(SignatureAlgorithm::Ed25519)?;
// 计算公钥哈希
let pubkey_hash = keypair.public_key_hash();
// 创建结构化地址
let address = StructuredAddress::new(
AccountType::Personal,
WalletKYCLevel::Standard,
156, // 中国
pubkey_hash,
);
```
#### 2. 构造交易
```rust
use nac_wallet_core::transaction::*;
// 使用Builder模式构造交易
let tx = TransactionBuilder::new(TransactionType::XTZHTransfer)
.from(from_address)
.to(to_address)
.amount(1000000) // 1 XTZH
.nonce(1)
.build()?;
```
#### 3. 请求宪法收据
```rust
use nac_wallet_core::constitutional_receipt::*;
// 创建CEE请求
let request = CEERequest::new(tx.payload.hash());
// 发送到CEE节点
let receipt = network_client.request_cr(request).await?;
// 附加到交易
tx.attach_receipt(receipt);
```
#### 4. 签名和广播
```rust
// 计算签名消息
let message = tx.signing_message();
// 签名
let signature = keypair.sign(&message)?;
tx.sign(signature);
// 验证交易
tx.verify()?;
// 广播
let tx_hash = network_client.broadcast_transaction(&tx.to_bytes()?).await?;
```
## 🔧 CLI工具
### 安装
```bash
cd nac-wallet-cli
cargo build --release
```
### 使用
```bash
# 创建钱包
nac-wallet-cli create --account-type personal --kyc-level 2 --region 156
# 查询余额
nac-wallet-cli balance <address>
# 发送交易
nac-wallet-cli send <to_address> <amount> --asset xtzh
# 查看钱包信息
nac-wallet-cli info <address>
```
## 📋 技术规范
### 签名算法
| 算法 | 用途 | 公钥长度 | 私钥长度 | 签名长度 |
|------|------|----------|----------|----------|
| Ed25519 | 默认账户密钥 | 32字节 | 32字节 | 64字节 |
| BLS | 聚合签名 | 48字节 | 32字节 | 96字节 |
| Dilithium5 | 后量子 | 2592字节 | 4864字节 | 4595字节 |
### 地址结构
```
字节 0: 版本 (1)
字节 1: 账户类型 (0=个人, 1=企业, 2=合约, 3=系统)
字节 2: KYC等级 (0-3)
字节 3-4: 区域代码 (ISO 3166-1)
字节 5: 保留
字节 6-31: 公钥哈希 (SHA3-384的前26字节)
```
### 交易类型
- `0x00`: XTZH转账
- `0x01`: XIC转账
- `0x02`: ACC-20代币转账
- `0x03`: ACC-1400证券型代币转账
- `0x04`: 合约部署
- `0x05`: 合约调用
- `0x06`: 资产发行
### Gas费用
| 交易类型 | 默认Gas限制 |
|---------|-------------|
| XTZH/XIC转账 | 21,000 |
| ACC-20转账 | 50,000 |
| ACC-1400转账 | 80,000 |
| 合约调用 | 100,000 |
| 资产发行 | 150,000 |
| 合约部署 | 200,000 |
## 🔒 安全特性
1. **私钥永不离设备** - 所有签名操作在本地完成
2. **AES-256-GCM加密** - 密钥库文件使用军事级加密
3. **PBKDF2密钥派生** - 100,000次迭代防止暴力破解
4. **CR强制验证** - 所有交易必须获得宪法收据
5. **零警告编译** - 主网级代码质量标准
## 📚 相关文档
- [NAC公链钱包核心技术白皮书](./WHITEPAPER_REQUIREMENTS.md)
- [NAC技术架构白皮书](../docs/)
- [宪法收据机制详解](../docs/constitutional-receipt.md)
- [GNACS编码规范](../docs/gnacs-standard.md)
## 🛠️ 开发状态
### 已完成 ✅
- [x] 核心数据结构
- [x] 密钥管理
- [x] 地址生成
- [x] 交易构造
- [x] CR集成
- [x] GNACS解析
- [x] CLI工具原型
### 进行中 🚧
- [ ] 实际密码学库集成Ed25519-dalek, BLS, Dilithium
- [ ] RPC客户端实现
- [ ] CEE节点通信
- [ ] 密钥库加密实现
- [ ] 助记词BIP39实现
### 计划中 📅
- [ ] 图形界面钱包Web/桌面)
- [ ] 移动端钱包iOS/Android
- [ ] 硬件钱包支持Ledger/Trezor
- [ ] 宪法沙箱集成
- [ ] 多签钱包
## 🤝 贡献
NAC钱包代码必须通过宪法法院的第三方审计才能上链。所有贡献必须
1. 遵循零警告编译标准
2. 包含完整的单元测试
3. 更新相关文档
4. 通过安全审计
## 📄 许可证
本项目采用开源许可证,具体条款待定。
## 🔗 链接
- [NAC官网](https://nac.chain)
- [开发者文档](https://docs.nac.chain)
- [GitHub仓库](https://github.com/nac-chain/nac-wallet)
---
**制定人**: NAC钱包工作组
**最后更新**: 2026年2月16日
**版本**: 0.1.0 (开发中)