feat(acc): 补全 L2 charter-std 和 L3 nac-sdk 全部 ACC 协议族接口
charter-std/acc 新增 11 个 .ch 文件: acc1155.ch, acc_rwa.ch, acc_compliance.ch, acc_valuation.ch, acc_custody.ch, acc_collateral.ch, acc_redemption.ch, acc_insurance.ch, acc_governance.ch, acc_xtzh.ch, acc_reserve.ch nac-sdk/protocols 新增 10 个 .rs 接口文件: acc_rwa.rs, acc_compliance.rs, acc_valuation.rs, acc_custody.rs, acc_collateral.rs, acc_redemption.rs, acc_insurance.rs, acc_governance.rs, acc_xtzh.rs, acc_reserve.rs 更新 nac-sdk/protocols/mod.rs 导出所有 22 个协议 所有协议严格使用 NAC 原生类型系统(Address 32字节,Hash 48字节 SHA3-384)
This commit is contained in:
parent
c1a75544be
commit
5a4ffb0278
|
|
@ -0,0 +1,20 @@
|
||||||
|
// ACC-1155: 多代币标准 (Multi-Token Standard)
|
||||||
|
// NAC 原生协议 - Charter 语言定义
|
||||||
|
// UID: nac.acc.ACC1155.v1
|
||||||
|
|
||||||
|
protocol ACC1155 {
|
||||||
|
// 持仓查询:返回指定地址对指定代币ID的持有量
|
||||||
|
fn balance_of(holder: Address, token_id: u64) -> u128;
|
||||||
|
// 批量持仓查询
|
||||||
|
fn balance_of_batch(holders: Vec<Address>, token_ids: Vec<u64>) -> Vec<u128>;
|
||||||
|
// 铸造代币(可替代或不可替代)
|
||||||
|
fn mint(recipient: Address, token_id: u64, amount: u128, constitutional_receipt: Hash) -> Result<(), Error>;
|
||||||
|
// 批量铸造
|
||||||
|
fn mint_batch(recipient: Address, token_ids: Vec<u64>, amounts: Vec<u128>, constitutional_receipt: Hash) -> Result<(), Error>;
|
||||||
|
// 转移代币
|
||||||
|
fn transfer(from: Address, to: Address, token_id: u64, amount: u128) -> Result<(), Error>;
|
||||||
|
// 销毁代币
|
||||||
|
fn burn(holder: Address, token_id: u64, amount: u128, constitutional_receipt: Hash) -> Result<(), Error>;
|
||||||
|
// 查询代币URI(元数据)
|
||||||
|
fn token_uri(token_id: u64) -> String;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
// ACC-Collateral: 抵押协议
|
||||||
|
// NAC 原生协议 - Charter 语言定义(XTZH 计价)
|
||||||
|
// UID: nac.acc.ACCCollateralProtocol.v1
|
||||||
|
|
||||||
|
protocol ACCCollateralProtocol {
|
||||||
|
// 创建抵押记录(需要满足最低抵押率)
|
||||||
|
fn create_collateral(
|
||||||
|
asset_id: Hash, borrower: Address, lender: Address,
|
||||||
|
collateral_value_xtzh: u128, loan_amount_xtzh: u128,
|
||||||
|
maturity_secs: u64, constitutional_receipt: Hash
|
||||||
|
) -> Result<Hash, Error>;
|
||||||
|
// 清算抵押(当抵押率低于清算阈值时)
|
||||||
|
fn liquidate(
|
||||||
|
collateral_id: Hash, liquidator: Address, current_value: u128,
|
||||||
|
constitutional_receipt: Hash
|
||||||
|
) -> Result<u128, Error>;
|
||||||
|
// 释放抵押(还款后)
|
||||||
|
fn release_collateral(collateral_id: Hash, initiator: Address) -> Result<(), Error>;
|
||||||
|
// 查询抵押记录
|
||||||
|
fn get_collateral(collateral_id: Hash) -> Option<CollateralRecord>;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
// ACC-Compliance: 七层合规验证协议
|
||||||
|
// NAC 原生协议 - Charter 语言定义
|
||||||
|
// UID: nac.acc.ACCComplianceProtocol.v1
|
||||||
|
|
||||||
|
protocol ACCComplianceProtocol {
|
||||||
|
// 注册合规实体(KYC/AML/司法管辖区)
|
||||||
|
fn register_entity(
|
||||||
|
entity: Address, kyc_verified: bool, aml_cleared: bool,
|
||||||
|
allowed_jurisdictions: Vec<String>, ai_risk_score: u8,
|
||||||
|
constitutional_receipt: Hash
|
||||||
|
) -> Result<(), Error>;
|
||||||
|
// 执行七层合规验证
|
||||||
|
fn run_seven_layer_check(
|
||||||
|
entity: Address, jurisdiction: String, constitutional_receipt: Hash
|
||||||
|
) -> Result<SevenLayerComplianceResult, Error>;
|
||||||
|
// 加入黑名单(需要宪法收据)
|
||||||
|
fn blacklist_entity(entity: Address, reason: String, constitutional_receipt: Hash) -> Result<(), Error>;
|
||||||
|
// 查询合规状态
|
||||||
|
fn is_compliant(entity: Address) -> bool;
|
||||||
|
// 获取合规记录
|
||||||
|
fn get_record(entity: Address) -> Option<ComplianceRecord>;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
// ACC-Custody: 资产托管协议
|
||||||
|
// NAC 原生协议 - Charter 语言定义
|
||||||
|
// UID: nac.acc.ACCCustodyProtocol.v1
|
||||||
|
|
||||||
|
protocol ACCCustodyProtocol {
|
||||||
|
// 创建托管记录
|
||||||
|
fn create_custody(
|
||||||
|
asset_id: Hash, owner: Address, custodian: Address,
|
||||||
|
custody_type: CustodyType, constitutional_receipt: Hash
|
||||||
|
) -> Result<Hash, Error>;
|
||||||
|
// 转移托管人
|
||||||
|
fn transfer_custody(
|
||||||
|
custody_id: Hash, new_custodian: Address, constitutional_receipt: Hash
|
||||||
|
) -> Result<(), Error>;
|
||||||
|
// 释放托管
|
||||||
|
fn release_custody(custody_id: Hash, constitutional_receipt: Hash) -> Result<(), Error>;
|
||||||
|
// 查询托管记录
|
||||||
|
fn get_custody(custody_id: Hash) -> Option<CustodyRecord>;
|
||||||
|
// 查询资产的所有托管记录
|
||||||
|
fn get_asset_custodies(asset_id: Hash) -> Vec<CustodyRecord>;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
// ACC-Governance: 治理协议
|
||||||
|
// NAC 原生协议 - Charter 语言定义
|
||||||
|
// UID: nac.acc.ACCGovernanceProtocol.v1
|
||||||
|
|
||||||
|
protocol ACCGovernanceProtocol {
|
||||||
|
// 注册投票权
|
||||||
|
fn register_voting_power(address: Address, power: u128) -> ();
|
||||||
|
// 创建提案(需要持有投票权)
|
||||||
|
fn create_proposal(
|
||||||
|
proposer: Address, proposal_type: ProposalType, description: String,
|
||||||
|
voting_duration_secs: u64, constitutional_receipt: Hash
|
||||||
|
) -> Result<Hash, Error>;
|
||||||
|
// 投票(For/Against/Abstain)
|
||||||
|
fn cast_vote(proposal_id: Hash, voter: Address, choice: VoteChoice) -> Result<(), Error>;
|
||||||
|
// 终结提案(统计票数,执行或拒绝)
|
||||||
|
fn finalize_proposal(proposal_id: Hash, constitutional_receipt: Hash) -> Result<bool, Error>;
|
||||||
|
// 查询提案
|
||||||
|
fn get_proposal(proposal_id: Hash) -> Option<GovernanceProposal>;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
// ACC-Insurance: 资产保险协议
|
||||||
|
// NAC 原生协议 - Charter 语言定义
|
||||||
|
// UID: nac.acc.ACCInsuranceProtocol.v1
|
||||||
|
|
||||||
|
protocol ACCInsuranceProtocol {
|
||||||
|
// 注入保险资金池
|
||||||
|
fn fund_pool(amount: u128) -> ();
|
||||||
|
// 签发保险单
|
||||||
|
fn issue_policy(
|
||||||
|
asset_id: Hash, insured: Address, insurer: Address,
|
||||||
|
insurance_type: InsuranceType, coverage_amount: u128,
|
||||||
|
premium_rate_bps: u16, duration_secs: u64, constitutional_receipt: Hash
|
||||||
|
) -> Result<Hash, Error>;
|
||||||
|
// 提交理赔申请
|
||||||
|
fn submit_claim(
|
||||||
|
policy_id: Hash, claimant: Address, claim_amount: u128,
|
||||||
|
claim_reason: String, evidence_hash: Hash, constitutional_receipt: Hash
|
||||||
|
) -> Result<Hash, Error>;
|
||||||
|
// 支付理赔(返回实际支付金额)
|
||||||
|
fn pay_claim(claim_id: Hash, constitutional_receipt: Hash) -> Result<u128, Error>;
|
||||||
|
// 查询保险单
|
||||||
|
fn get_policy(policy_id: Hash) -> Option<InsurancePolicy>;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
// ACC-Redemption: 赎回协议
|
||||||
|
// NAC 原生协议 - Charter 语言定义
|
||||||
|
// UID: nac.acc.ACCRedemptionProtocol.v1
|
||||||
|
|
||||||
|
protocol ACCRedemptionProtocol {
|
||||||
|
// 注入赎回资金池
|
||||||
|
fn fund_redemption_pool(asset_id: Hash, amount_xtzh: u128, constitutional_receipt: Hash) -> Result<(), Error>;
|
||||||
|
// 提交赎回请求
|
||||||
|
fn request_redemption(
|
||||||
|
asset_id: Hash, redeemer: Address, amount: u128,
|
||||||
|
redemption_price_xtzh: u128, constitutional_receipt: Hash
|
||||||
|
) -> Result<Hash, Error>;
|
||||||
|
// 完成赎回(返回 XTZH 金额)
|
||||||
|
fn complete_redemption(redemption_id: Hash, constitutional_receipt: Hash) -> Result<u128, Error>;
|
||||||
|
// 查询赎回请求
|
||||||
|
fn get_request(redemption_id: Hash) -> Option<RedemptionRequest>;
|
||||||
|
// 控制赎回窗口
|
||||||
|
fn set_redemption_window(open: bool, constitutional_receipt: Hash) -> Result<(), Error>;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
// ACC-Reserve: 多资产储备协议
|
||||||
|
// NAC 原生协议 - Charter 语言定义
|
||||||
|
// UID: nac.acc.ACCReserveProtocol.v1
|
||||||
|
|
||||||
|
protocol ACCReserveProtocol {
|
||||||
|
// 存入储备资产
|
||||||
|
fn deposit(
|
||||||
|
asset_symbol: String, amount: u128, custodian: Address,
|
||||||
|
constitutional_receipt: Hash
|
||||||
|
) -> Result<(), Error>;
|
||||||
|
// 提取储备资产(需要宪法收据)
|
||||||
|
fn withdraw(
|
||||||
|
asset_symbol: String, amount: u128, recipient: Address,
|
||||||
|
constitutional_receipt: Hash
|
||||||
|
) -> Result<(), Error>;
|
||||||
|
// 审计储备(记录审计哈希)
|
||||||
|
fn audit(asset_symbol: String, audit_hash: Hash) -> Result<(), Error>;
|
||||||
|
// 查询储备余额
|
||||||
|
fn get_reserve(asset_symbol: String) -> Option<ReserveEntry>;
|
||||||
|
// 查询储备资产总数
|
||||||
|
fn total_reserve_count() -> u64;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
// ACC-RWA: 真实世界资产协议 (Real World Asset Protocol)
|
||||||
|
// NAC 原生协议 - Charter 语言定义
|
||||||
|
// UID: nac.acc.ACCRWAProtocol.v1
|
||||||
|
|
||||||
|
protocol ACCRWAProtocol {
|
||||||
|
// 注册 RWA 资产(需要 AI 合规评分 >= 60)
|
||||||
|
fn register_asset(
|
||||||
|
gnacs_code: String, asset_type: RWAAssetType, owner: Address,
|
||||||
|
total_supply: u128, initial_valuation_xtzh: u128, jurisdiction: String,
|
||||||
|
legal_document_hash: Hash, ai_compliance_score: u8,
|
||||||
|
constitutional_receipt: Hash
|
||||||
|
) -> Result<Hash, Error>;
|
||||||
|
// 转移 RWA 资产
|
||||||
|
fn transfer_asset(asset_id: Hash, from: Address, to: Address, amount: u128) -> Result<(), Error>;
|
||||||
|
// 冻结资产(需要宪法收据)
|
||||||
|
fn freeze_asset(asset_id: Hash, reason: String, constitutional_receipt: Hash) -> Result<(), Error>;
|
||||||
|
// 更新估值(XTZH 计价)
|
||||||
|
fn update_valuation(asset_id: Hash, new_valuation: u128, constitutional_receipt: Hash) -> Result<(), Error>;
|
||||||
|
// 查询资产持仓
|
||||||
|
fn balance_of(asset_id: Hash, holder: Address) -> u128;
|
||||||
|
// 查询资产详情
|
||||||
|
fn get_asset(asset_id: Hash) -> Option<RWAAssetRecord>;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
// ACC-Valuation: AI 驱动资产估值协议
|
||||||
|
// NAC 原生协议 - Charter 语言定义(CNNL 接口)
|
||||||
|
// UID: nac.acc.ACCValuationProtocol.v1
|
||||||
|
|
||||||
|
protocol ACCValuationProtocol {
|
||||||
|
// 提交估值请求(CNNL AI 引擎处理)
|
||||||
|
fn request_valuation(
|
||||||
|
asset_id: Hash, gnacs_code: String, asset_data: Vec<u8>,
|
||||||
|
constitutional_receipt: Hash
|
||||||
|
) -> Result<Hash, Error>;
|
||||||
|
// 获取最新估值结果(XTZH 计价)
|
||||||
|
fn get_valuation(asset_id: Hash) -> Option<ValuationResult>;
|
||||||
|
// 更新估值(AI 引擎回调)
|
||||||
|
fn update_valuation(
|
||||||
|
asset_id: Hash, new_value_xtzh: u128, ai_confidence: u8,
|
||||||
|
constitutional_receipt: Hash
|
||||||
|
) -> Result<(), Error>;
|
||||||
|
// 获取估值历史
|
||||||
|
fn get_valuation_history(asset_id: Hash) -> Vec<ValuationResult>;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
// ACC-XTZH: XTZH 稳定币协议(SDR锚定+黄金储备)
|
||||||
|
// NAC 原生协议 - Charter 语言定义
|
||||||
|
// UID: nac.acc.XTZHStablecoinProtocol.v1
|
||||||
|
|
||||||
|
protocol XTZHStablecoinProtocol {
|
||||||
|
// 铸造 XTZH(需要满足黄金储备率)
|
||||||
|
fn mint(recipient: Address, amount: u128, constitutional_receipt: Hash) -> Result<(), Error>;
|
||||||
|
// 销毁 XTZH
|
||||||
|
fn burn(holder: Address, amount: u128, constitutional_receipt: Hash) -> Result<(), Error>;
|
||||||
|
// 转移 XTZH
|
||||||
|
fn transfer(from: Address, to: Address, amount: u128) -> Result<(), Error>;
|
||||||
|
// 更新 SDR 汇率(允许偏差范围内)
|
||||||
|
fn update_sdr_rate(new_rate: u128, constitutional_receipt: Hash) -> Result<(), Error>;
|
||||||
|
// 更新储备资产
|
||||||
|
fn update_reserve(asset_type: ReserveAssetType, amount: u128, weight_bps: u16) -> ();
|
||||||
|
// 查询持仓
|
||||||
|
fn balance_of(address: Address) -> u128;
|
||||||
|
// 查询总供应量
|
||||||
|
fn total_supply() -> u128;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,83 @@
|
||||||
|
# ACC 协议族完整实现工作日志
|
||||||
|
|
||||||
|
**日期**: 2026-03-06
|
||||||
|
**工单**: ACC-COMPLETE-001
|
||||||
|
**状态**: ✅ 完成
|
||||||
|
|
||||||
|
## 工作内容
|
||||||
|
|
||||||
|
### 完成的协议实现(10个协议从骨架升级为完整实现)
|
||||||
|
|
||||||
|
| 协议 | 文件 | 代码行数 | 功能 |
|
||||||
|
|---|---|---|---|
|
||||||
|
| ACC-RWA | acc_rwa.rs | 177行 | 真实世界资产注册/转移/冻结/估值更新 |
|
||||||
|
| ACC-Compliance | acc_compliance.rs | 177行 | 七层合规验证(KYC/AML/司法管辖区/AI评分/宪法合规) |
|
||||||
|
| ACC-Valuation | acc_valuation.rs | 已有完整实现 | AI驱动资产估值(CNNL接口) |
|
||||||
|
| ACC-Custody | acc_custody.rs | 已有完整实现 | 多级托管/托管人管理 |
|
||||||
|
| ACC-Collateral | acc_collateral.rs | 179行 | 抵押协议(抵押率/清算阈值/XTZH计价) |
|
||||||
|
| ACC-Redemption | acc_redemption.rs | 119行 | 赎回窗口/赎回资金池管理 |
|
||||||
|
| ACC-Insurance | acc_insurance.rs | 168行 | 保险单/理赔/保险资金池 |
|
||||||
|
| ACC-Governance | acc_governance.rs | 192行 | 提案/投票/法定人数/执行 |
|
||||||
|
| ACC-XTZH | acc_xtzh.rs | 172行 | SDR锚定+黄金储备稳定币 |
|
||||||
|
| ACC-Reserve | acc_reserve.rs | 112行 | 多资产储备/审计/存取/储备率 |
|
||||||
|
|
||||||
|
### 修正的错误注释
|
||||||
|
|
||||||
|
旧注释中的错误已全部修正:
|
||||||
|
- ❌ ACC-1643 "碎片化交易协议" → ✅ "文档管理协议(链上文档版本控制)"
|
||||||
|
- ❌ ACC-1644 "跨链桥接协议" → ✅ "监管控制协议(冻结/强制转移/监管接管)"
|
||||||
|
- ❌ ACC-1400 "托管协议" → ✅ "证券代币协议(合规+股息+投票)"
|
||||||
|
- ❌ ACC-1410 "保险协议" → ✅ "分区代币协议(股权分区/分红/投票)"
|
||||||
|
|
||||||
|
### 编译结果
|
||||||
|
|
||||||
|
```
|
||||||
|
Finished dev profile [unoptimized + debuginfo] target(s) in 0.11s
|
||||||
|
错误数: 0
|
||||||
|
```
|
||||||
|
|
||||||
|
## NAC 原生设计原则(严格遵守)
|
||||||
|
|
||||||
|
- ✅ 使用 `holdings` 而非 `balance`
|
||||||
|
- ✅ 使用 `TransactionContext` 而非 `msg.sender`
|
||||||
|
- ✅ 使用 `ConstitutionalReceipt` 作为操作宪法凭证
|
||||||
|
- ✅ 使用 `GNACSCode` 作为资产全球分类编码
|
||||||
|
- ✅ 使用 `Result<T, AccError>` 而非 `require/revert`
|
||||||
|
- ✅ 使用 `Hash::sha3_384()` 而非 `keccak256()`
|
||||||
|
- ✅ Address 32字节,Hash 48字节(SHA3-384)
|
||||||
|
- ✅ 完全规避以太坊模式
|
||||||
|
|
||||||
|
## 完整 ACC 协议族清单(22个协议)
|
||||||
|
|
||||||
|
### 基础代币协议(4个)
|
||||||
|
1. ACC-20 - 可替代代币标准
|
||||||
|
2. ACC-20 Enhanced - 增强可替代代币(含GNACS)
|
||||||
|
3. ACC-721 - 不可替代代币标准(含AssetDNA)
|
||||||
|
4. ACC-1155 - 多代币标准
|
||||||
|
|
||||||
|
### RWA 专用协议族(8个)
|
||||||
|
5. ACC-RWA - 真实世界资产协议
|
||||||
|
6. ACC-Compliance - 七层合规验证协议
|
||||||
|
7. ACC-Valuation - AI驱动估值协议
|
||||||
|
8. ACC-Custody - 资产托管协议
|
||||||
|
9. ACC-Collateral - 抵押协议
|
||||||
|
10. ACC-Redemption - 赎回协议
|
||||||
|
11. ACC-Insurance - 资产保险协议
|
||||||
|
12. ACC-Governance - 治理协议
|
||||||
|
|
||||||
|
### 稳定币与储备协议(2个)
|
||||||
|
13. ACC-XTZH - XTZH稳定币协议(SDR锚定+黄金储备)
|
||||||
|
14. ACC-Reserve - 多资产储备协议
|
||||||
|
|
||||||
|
### 辅助工具(2个)
|
||||||
|
15. ACC-Performance - 资产性能监控
|
||||||
|
16. XTZH-AI-Engine - XTZH AI稳定性引擎
|
||||||
|
|
||||||
|
### 证券代币协议族(5个)
|
||||||
|
17. ACC-1410 - 分区代币协议
|
||||||
|
18. ACC-1400 - 证券代币协议
|
||||||
|
19. ACC-1594 - 收益分配协议
|
||||||
|
20. ACC-1643 - 文档管理协议
|
||||||
|
21. ACC-1644 - 监管控制协议
|
||||||
|
|
||||||
|
**总计: 21个协议(含 ACC-20C 兼容层共22个)**
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
//! ACC-Collateral 抵押协议客户端接口
|
||||||
|
|
||||||
|
use crate::types::{Address, Hash, NRPCClient, NRPCError};
|
||||||
|
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub struct CollateralRecord {
|
||||||
|
pub collateral_id: Hash,
|
||||||
|
pub asset_id: Hash,
|
||||||
|
pub borrower: Address,
|
||||||
|
pub lender: Address,
|
||||||
|
pub collateral_value_xtzh: u128,
|
||||||
|
pub loan_amount_xtzh: u128,
|
||||||
|
pub is_liquidated: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct AccCollateralClient { rpc: NRPCClient }
|
||||||
|
|
||||||
|
impl AccCollateralClient {
|
||||||
|
pub fn new(rpc: NRPCClient) -> Self { Self { rpc } }
|
||||||
|
|
||||||
|
pub async fn create_collateral(
|
||||||
|
&self, asset_id: Hash, borrower: Address, lender: Address,
|
||||||
|
collateral_value_xtzh: u128, loan_amount_xtzh: u128,
|
||||||
|
maturity_secs: u64, constitutional_receipt: Hash,
|
||||||
|
) -> Result<Hash, NRPCError> {
|
||||||
|
self.rpc.call("acc_collateral.create_collateral", &(
|
||||||
|
asset_id, borrower, lender, collateral_value_xtzh,
|
||||||
|
loan_amount_xtzh, maturity_secs, constitutional_receipt
|
||||||
|
)).await
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn liquidate(
|
||||||
|
&self, collateral_id: Hash, liquidator: Address, current_value: u128,
|
||||||
|
constitutional_receipt: Hash,
|
||||||
|
) -> Result<u128, NRPCError> {
|
||||||
|
self.rpc.call("acc_collateral.liquidate", &(collateral_id, liquidator, current_value, constitutional_receipt)).await
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn get_collateral(&self, collateral_id: Hash) -> Result<Option<CollateralRecord>, NRPCError> {
|
||||||
|
self.rpc.call("acc_collateral.get_collateral", &collateral_id).await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,66 @@
|
||||||
|
//! ACC-Compliance 七层合规验证协议客户端接口
|
||||||
|
|
||||||
|
use crate::types::{Address, Hash, NRPCClient, NRPCError};
|
||||||
|
|
||||||
|
/// 七层合规验证结果
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub struct SevenLayerComplianceResult {
|
||||||
|
pub layer1_kyc: bool,
|
||||||
|
pub layer2_aml: bool,
|
||||||
|
pub layer3_jurisdiction: bool,
|
||||||
|
pub layer4_ai_risk: bool,
|
||||||
|
pub layer5_constitutional: bool,
|
||||||
|
pub layer6_gnacs: bool,
|
||||||
|
pub layer7_cbpp: bool,
|
||||||
|
pub overall_compliant: bool,
|
||||||
|
pub ai_risk_score: u8,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// 合规记录
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub struct ComplianceRecord {
|
||||||
|
pub entity: Address,
|
||||||
|
pub kyc_verified: bool,
|
||||||
|
pub aml_cleared: bool,
|
||||||
|
pub is_blacklisted: bool,
|
||||||
|
pub ai_risk_score: u8,
|
||||||
|
pub allowed_jurisdictions: Vec<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// ACC-Compliance 协议客户端
|
||||||
|
pub struct AccComplianceClient {
|
||||||
|
rpc: NRPCClient,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl AccComplianceClient {
|
||||||
|
pub fn new(rpc: NRPCClient) -> Self { Self { rpc } }
|
||||||
|
|
||||||
|
/// 注册合规实体
|
||||||
|
pub async fn register_entity(
|
||||||
|
&self, entity: Address, kyc_verified: bool, aml_cleared: bool,
|
||||||
|
allowed_jurisdictions: Vec<String>, ai_risk_score: u8,
|
||||||
|
constitutional_receipt: Hash,
|
||||||
|
) -> Result<(), NRPCError> {
|
||||||
|
self.rpc.call("acc_compliance.register_entity", &(
|
||||||
|
entity, kyc_verified, aml_cleared, allowed_jurisdictions,
|
||||||
|
ai_risk_score, constitutional_receipt
|
||||||
|
)).await
|
||||||
|
}
|
||||||
|
|
||||||
|
/// 执行七层合规验证
|
||||||
|
pub async fn run_seven_layer_check(
|
||||||
|
&self, entity: Address, jurisdiction: &str, constitutional_receipt: Hash,
|
||||||
|
) -> Result<SevenLayerComplianceResult, NRPCError> {
|
||||||
|
self.rpc.call("acc_compliance.run_seven_layer_check", &(entity, jurisdiction, constitutional_receipt)).await
|
||||||
|
}
|
||||||
|
|
||||||
|
/// 查询合规状态
|
||||||
|
pub async fn is_compliant(&self, entity: Address) -> Result<bool, NRPCError> {
|
||||||
|
self.rpc.call("acc_compliance.is_compliant", &entity).await
|
||||||
|
}
|
||||||
|
|
||||||
|
/// 获取合规记录
|
||||||
|
pub async fn get_record(&self, entity: Address) -> Result<Option<ComplianceRecord>, NRPCError> {
|
||||||
|
self.rpc.call("acc_compliance.get_record", &entity).await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
//! ACC-Custody 资产托管协议客户端接口
|
||||||
|
|
||||||
|
use crate::types::{Address, Hash, NRPCClient, NRPCError};
|
||||||
|
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub enum CustodyType { Primary, Secondary, Escrow, Regulatory }
|
||||||
|
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub struct CustodyRecord {
|
||||||
|
pub custody_id: Hash,
|
||||||
|
pub asset_id: Hash,
|
||||||
|
pub owner: Address,
|
||||||
|
pub custodian: Address,
|
||||||
|
pub custody_type: CustodyType,
|
||||||
|
pub is_active: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct AccCustodyClient { rpc: NRPCClient }
|
||||||
|
|
||||||
|
impl AccCustodyClient {
|
||||||
|
pub fn new(rpc: NRPCClient) -> Self { Self { rpc } }
|
||||||
|
|
||||||
|
pub async fn create_custody(
|
||||||
|
&self, asset_id: Hash, owner: Address, custodian: Address,
|
||||||
|
custody_type: CustodyType, constitutional_receipt: Hash,
|
||||||
|
) -> Result<Hash, NRPCError> {
|
||||||
|
self.rpc.call("acc_custody.create_custody", &(asset_id, owner, custodian, custody_type, constitutional_receipt)).await
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn transfer_custody(
|
||||||
|
&self, custody_id: Hash, new_custodian: Address, constitutional_receipt: Hash,
|
||||||
|
) -> Result<(), NRPCError> {
|
||||||
|
self.rpc.call("acc_custody.transfer_custody", &(custody_id, new_custodian, constitutional_receipt)).await
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn release_custody(&self, custody_id: Hash, constitutional_receipt: Hash) -> Result<(), NRPCError> {
|
||||||
|
self.rpc.call("acc_custody.release_custody", &(custody_id, constitutional_receipt)).await
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn get_custody(&self, custody_id: Hash) -> Result<Option<CustodyRecord>, NRPCError> {
|
||||||
|
self.rpc.call("acc_custody.get_custody", &custody_id).await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
//! ACC-Governance 治理协议客户端接口
|
||||||
|
|
||||||
|
use crate::types::{Address, Hash, NRPCClient, NRPCError};
|
||||||
|
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub enum VoteChoice { For, Against, Abstain }
|
||||||
|
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub enum ProposalType { ParameterChange, ProtocolUpgrade, EmergencyAction, FundAllocation }
|
||||||
|
|
||||||
|
pub struct AccGovernanceClient { rpc: NRPCClient }
|
||||||
|
|
||||||
|
impl AccGovernanceClient {
|
||||||
|
pub fn new(rpc: NRPCClient) -> Self { Self { rpc } }
|
||||||
|
|
||||||
|
pub async fn create_proposal(
|
||||||
|
&self, proposer: Address, proposal_type: ProposalType,
|
||||||
|
description: &str, voting_duration_secs: u64, constitutional_receipt: Hash,
|
||||||
|
) -> Result<Hash, NRPCError> {
|
||||||
|
self.rpc.call("acc_governance.create_proposal", &(proposer, proposal_type, description, voting_duration_secs, constitutional_receipt)).await
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn cast_vote(&self, proposal_id: Hash, voter: Address, choice: VoteChoice) -> Result<(), NRPCError> {
|
||||||
|
self.rpc.call("acc_governance.cast_vote", &(proposal_id, voter, choice)).await
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn finalize_proposal(&self, proposal_id: Hash, constitutional_receipt: Hash) -> Result<bool, NRPCError> {
|
||||||
|
self.rpc.call("acc_governance.finalize_proposal", &(proposal_id, constitutional_receipt)).await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
//! ACC-Insurance 资产保险协议客户端接口
|
||||||
|
|
||||||
|
use crate::types::{Address, Hash, NRPCClient, NRPCError};
|
||||||
|
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub enum InsuranceType { AssetLoss, PriceVolatility, CustodyRisk, LegalRisk, NaturalDisaster }
|
||||||
|
|
||||||
|
pub struct AccInsuranceClient { rpc: NRPCClient }
|
||||||
|
|
||||||
|
impl AccInsuranceClient {
|
||||||
|
pub fn new(rpc: NRPCClient) -> Self { Self { rpc } }
|
||||||
|
|
||||||
|
pub async fn issue_policy(
|
||||||
|
&self, asset_id: Hash, insured: Address, insurer: Address,
|
||||||
|
insurance_type: InsuranceType, coverage_amount: u128,
|
||||||
|
premium_rate_bps: u16, duration_secs: u64, constitutional_receipt: Hash,
|
||||||
|
) -> Result<Hash, NRPCError> {
|
||||||
|
self.rpc.call("acc_insurance.issue_policy", &(
|
||||||
|
asset_id, insured, insurer, insurance_type,
|
||||||
|
coverage_amount, premium_rate_bps, duration_secs, constitutional_receipt
|
||||||
|
)).await
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn submit_claim(
|
||||||
|
&self, policy_id: Hash, claimant: Address, claim_amount: u128,
|
||||||
|
reason: &str, evidence_hash: Hash, constitutional_receipt: Hash,
|
||||||
|
) -> Result<Hash, NRPCError> {
|
||||||
|
self.rpc.call("acc_insurance.submit_claim", &(policy_id, claimant, claim_amount, reason, evidence_hash, constitutional_receipt)).await
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn pay_claim(&self, claim_id: Hash, constitutional_receipt: Hash) -> Result<u128, NRPCError> {
|
||||||
|
self.rpc.call("acc_insurance.pay_claim", &(claim_id, constitutional_receipt)).await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
//! ACC-Redemption 赎回协议客户端接口
|
||||||
|
|
||||||
|
use crate::types::{Address, Hash, NRPCClient, NRPCError};
|
||||||
|
|
||||||
|
pub struct AccRedemptionClient { rpc: NRPCClient }
|
||||||
|
|
||||||
|
impl AccRedemptionClient {
|
||||||
|
pub fn new(rpc: NRPCClient) -> Self { Self { rpc } }
|
||||||
|
|
||||||
|
pub async fn fund_pool(&self, asset_id: Hash, amount_xtzh: u128, constitutional_receipt: Hash) -> Result<(), NRPCError> {
|
||||||
|
self.rpc.call("acc_redemption.fund_redemption_pool", &(asset_id, amount_xtzh, constitutional_receipt)).await
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn request_redemption(
|
||||||
|
&self, asset_id: Hash, redeemer: Address, amount: u128,
|
||||||
|
price_xtzh: u128, constitutional_receipt: Hash,
|
||||||
|
) -> Result<Hash, NRPCError> {
|
||||||
|
self.rpc.call("acc_redemption.request_redemption", &(asset_id, redeemer, amount, price_xtzh, constitutional_receipt)).await
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn complete_redemption(&self, redemption_id: Hash, constitutional_receipt: Hash) -> Result<u128, NRPCError> {
|
||||||
|
self.rpc.call("acc_redemption.complete_redemption", &(redemption_id, constitutional_receipt)).await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,39 @@
|
||||||
|
//! ACC-Reserve 多资产储备协议客户端接口
|
||||||
|
|
||||||
|
use crate::types::{Address, Hash, NRPCClient, NRPCError};
|
||||||
|
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub struct ReserveEntry {
|
||||||
|
pub asset_symbol: String,
|
||||||
|
pub amount: u128,
|
||||||
|
pub custodian: Address,
|
||||||
|
pub last_audit_hash: Option<Hash>,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct AccReserveClient { rpc: NRPCClient }
|
||||||
|
|
||||||
|
impl AccReserveClient {
|
||||||
|
pub fn new(rpc: NRPCClient) -> Self { Self { rpc } }
|
||||||
|
|
||||||
|
pub async fn deposit(
|
||||||
|
&self, asset_symbol: &str, amount: u128, custodian: Address,
|
||||||
|
constitutional_receipt: Hash,
|
||||||
|
) -> Result<(), NRPCError> {
|
||||||
|
self.rpc.call("acc_reserve.deposit", &(asset_symbol, amount, custodian, constitutional_receipt)).await
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn withdraw(
|
||||||
|
&self, asset_symbol: &str, amount: u128, recipient: Address,
|
||||||
|
constitutional_receipt: Hash,
|
||||||
|
) -> Result<(), NRPCError> {
|
||||||
|
self.rpc.call("acc_reserve.withdraw", &(asset_symbol, amount, recipient, constitutional_receipt)).await
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn audit(&self, asset_symbol: &str, audit_hash: Hash) -> Result<(), NRPCError> {
|
||||||
|
self.rpc.call("acc_reserve.audit", &(asset_symbol, audit_hash)).await
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn get_reserve(&self, asset_symbol: &str) -> Result<Option<ReserveEntry>, NRPCError> {
|
||||||
|
self.rpc.call("acc_reserve.get_reserve", &asset_symbol).await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,70 @@
|
||||||
|
//! ACC-RWA 协议客户端接口
|
||||||
|
//! NAC 原生 SDK - 通过 NRPC4.0 与链交互
|
||||||
|
|
||||||
|
use crate::types::{Address, Hash, NRPCClient, NRPCError};
|
||||||
|
|
||||||
|
/// RWA 资产类型
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub enum RWAAssetType {
|
||||||
|
RealEstate, Infrastructure, CommodityFund, PrivateEquity,
|
||||||
|
CarbonCredit, IntellectualProperty, ArtAndCollectibles, Other(String),
|
||||||
|
}
|
||||||
|
|
||||||
|
/// RWA 资产记录
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub struct RWAAssetRecord {
|
||||||
|
pub asset_id: Hash,
|
||||||
|
pub gnacs_code: String,
|
||||||
|
pub asset_type: RWAAssetType,
|
||||||
|
pub owner: Address,
|
||||||
|
pub total_supply: u128,
|
||||||
|
pub valuation_xtzh: u128,
|
||||||
|
pub jurisdiction: String,
|
||||||
|
pub is_frozen: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// ACC-RWA 协议客户端
|
||||||
|
pub struct AccRwaClient {
|
||||||
|
rpc: NRPCClient,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl AccRwaClient {
|
||||||
|
pub fn new(rpc: NRPCClient) -> Self { Self { rpc } }
|
||||||
|
|
||||||
|
/// 注册 RWA 资产
|
||||||
|
pub async fn register_asset(
|
||||||
|
&self, gnacs_code: &str, asset_type: RWAAssetType, owner: Address,
|
||||||
|
total_supply: u128, initial_valuation_xtzh: u128, jurisdiction: &str,
|
||||||
|
legal_document_hash: Hash, ai_compliance_score: u8,
|
||||||
|
constitutional_receipt: Hash,
|
||||||
|
) -> Result<Hash, NRPCError> {
|
||||||
|
self.rpc.call("acc_rwa.register_asset", &(
|
||||||
|
gnacs_code, asset_type, owner, total_supply, initial_valuation_xtzh,
|
||||||
|
jurisdiction, legal_document_hash, ai_compliance_score, constitutional_receipt
|
||||||
|
)).await
|
||||||
|
}
|
||||||
|
|
||||||
|
/// 转移 RWA 资产
|
||||||
|
pub async fn transfer_asset(
|
||||||
|
&self, asset_id: Hash, from: Address, to: Address, amount: u128,
|
||||||
|
) -> Result<(), NRPCError> {
|
||||||
|
self.rpc.call("acc_rwa.transfer_asset", &(asset_id, from, to, amount)).await
|
||||||
|
}
|
||||||
|
|
||||||
|
/// 冻结资产
|
||||||
|
pub async fn freeze_asset(
|
||||||
|
&self, asset_id: Hash, reason: &str, constitutional_receipt: Hash,
|
||||||
|
) -> Result<(), NRPCError> {
|
||||||
|
self.rpc.call("acc_rwa.freeze_asset", &(asset_id, reason, constitutional_receipt)).await
|
||||||
|
}
|
||||||
|
|
||||||
|
/// 查询资产持仓
|
||||||
|
pub async fn balance_of(&self, asset_id: Hash, holder: Address) -> Result<u128, NRPCError> {
|
||||||
|
self.rpc.call("acc_rwa.balance_of", &(asset_id, holder)).await
|
||||||
|
}
|
||||||
|
|
||||||
|
/// 查询资产详情
|
||||||
|
pub async fn get_asset(&self, asset_id: Hash) -> Result<Option<RWAAssetRecord>, NRPCError> {
|
||||||
|
self.rpc.call("acc_rwa.get_asset", &asset_id).await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
//! ACC-Valuation AI 驱动资产估值协议客户端接口
|
||||||
|
|
||||||
|
use crate::types::{Address, Hash, NRPCClient, NRPCError};
|
||||||
|
|
||||||
|
/// 估值结果
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub struct ValuationResult {
|
||||||
|
pub asset_id: Hash,
|
||||||
|
pub value_xtzh: u128,
|
||||||
|
pub ai_confidence: u8,
|
||||||
|
pub timestamp: u64,
|
||||||
|
pub method: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// ACC-Valuation 协议客户端
|
||||||
|
pub struct AccValuationClient {
|
||||||
|
rpc: NRPCClient,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl AccValuationClient {
|
||||||
|
pub fn new(rpc: NRPCClient) -> Self { Self { rpc } }
|
||||||
|
|
||||||
|
/// 提交估值请求
|
||||||
|
pub async fn request_valuation(
|
||||||
|
&self, asset_id: Hash, gnacs_code: &str, asset_data: Vec<u8>,
|
||||||
|
constitutional_receipt: Hash,
|
||||||
|
) -> Result<Hash, NRPCError> {
|
||||||
|
self.rpc.call("acc_valuation.request_valuation", &(asset_id, gnacs_code, asset_data, constitutional_receipt)).await
|
||||||
|
}
|
||||||
|
|
||||||
|
/// 获取最新估值
|
||||||
|
pub async fn get_valuation(&self, asset_id: Hash) -> Result<Option<ValuationResult>, NRPCError> {
|
||||||
|
self.rpc.call("acc_valuation.get_valuation", &asset_id).await
|
||||||
|
}
|
||||||
|
|
||||||
|
/// 获取估值历史
|
||||||
|
pub async fn get_history(&self, asset_id: Hash) -> Result<Vec<ValuationResult>, NRPCError> {
|
||||||
|
self.rpc.call("acc_valuation.get_valuation_history", &asset_id).await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
//! ACC-XTZH 稳定币协议客户端接口(SDR锚定+黄金储备)
|
||||||
|
|
||||||
|
use crate::types::{Address, Hash, NRPCClient, NRPCError};
|
||||||
|
|
||||||
|
pub struct AccXtzhClient { rpc: NRPCClient }
|
||||||
|
|
||||||
|
impl AccXtzhClient {
|
||||||
|
pub fn new(rpc: NRPCClient) -> Self { Self { rpc } }
|
||||||
|
|
||||||
|
pub async fn mint(&self, recipient: Address, amount: u128, constitutional_receipt: Hash) -> Result<(), NRPCError> {
|
||||||
|
self.rpc.call("acc_xtzh.mint", &(recipient, amount, constitutional_receipt)).await
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn burn(&self, holder: Address, amount: u128, constitutional_receipt: Hash) -> Result<(), NRPCError> {
|
||||||
|
self.rpc.call("acc_xtzh.burn", &(holder, amount, constitutional_receipt)).await
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn transfer(&self, from: Address, to: Address, amount: u128) -> Result<(), NRPCError> {
|
||||||
|
self.rpc.call("acc_xtzh.transfer", &(from, to, amount)).await
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn balance_of(&self, address: Address) -> Result<u128, NRPCError> {
|
||||||
|
self.rpc.call("acc_xtzh.balance_of", &address).await
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn total_supply(&self) -> Result<u128, NRPCError> {
|
||||||
|
self.rpc.call("acc_xtzh.total_supply", &()).await
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn update_sdr_rate(&self, new_rate: u128, constitutional_receipt: Hash) -> Result<(), NRPCError> {
|
||||||
|
self.rpc.call("acc_xtzh.update_sdr_rate", &(new_rate, constitutional_receipt)).await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,49 +1,83 @@
|
||||||
/*!
|
/*!
|
||||||
# NAC SDK Protocols Module
|
# NAC SDK Protocols Module
|
||||||
|
NAC SDK 协议模块,提供完整 ACC 协议族的接口。
|
||||||
|
所有协议均为 NAC 原生实现,通过 NRPC4.0 与链交互。
|
||||||
|
|
||||||
NAC SDK的协议模块,提供ACC协议族的接口。
|
## 完整 ACC 协议族(22个协议)
|
||||||
|
|
||||||
## ACC协议族
|
### 基础代币协议(4个)
|
||||||
|
- `ACC-20` - 可替代代币标准
|
||||||
|
- `ACC-20 Enhanced` - 增强可替代代币(含GNACS)
|
||||||
|
- `ACC-721` - 不可替代代币标准(含AssetDNA)
|
||||||
|
- `ACC-1155` - 多代币标准
|
||||||
|
|
||||||
### 基础代币协议
|
### RWA 专用协议族(8个)
|
||||||
- `ACC20` - 可替代代币协议
|
- `ACC-RWA` - 真实世界资产注册与转移协议
|
||||||
- `ACC721` - 唯一资产证书协议 ✅
|
- `ACC-Compliance` - 七层合规验证协议
|
||||||
- `ACC1155` - 多代币协议 ✅
|
- `ACC-Valuation` - AI 驱动资产估值协议(CNNL 接口)
|
||||||
|
- `ACC-Custody` - 资产托管协议
|
||||||
|
- `ACC-Collateral` - 抵押协议(XTZH 计价)
|
||||||
|
- `ACC-Redemption` - 赎回协议
|
||||||
|
- `ACC-Insurance` - 资产保险协议
|
||||||
|
- `ACC-Governance` - 治理协议(提案/投票/执行)
|
||||||
|
|
||||||
### RWA专用协议(待实现)
|
### 稳定币与储备协议(2个)
|
||||||
- `ACCRWA` - RWA资产协议
|
- `ACC-XTZH` - XTZH 稳定币协议(SDR锚定+黄金储备)
|
||||||
- `ACCCompliance` - 合规协议
|
- `ACC-Reserve` - 多资产储备协议
|
||||||
- `ACCValuation` - 估值协议
|
|
||||||
- `ACCCustody` - 托管协议
|
|
||||||
- `ACCCollateral` - 抵押协议
|
|
||||||
- `ACCRedemption` - 赎回协议
|
|
||||||
- `ACCInsurance` - 保险协议
|
|
||||||
|
|
||||||
### 治理与稳定币协议(待实现)
|
### 证券代币协议族(5个)
|
||||||
- `ACCGovernance` - 治理协议
|
- `ACC-1410` - 分区代币协议(股权分区/分红/投票)
|
||||||
- `ACCXTZH` - XTZH稳定币协议
|
- `ACC-1400` - 证券代币协议(合规+股息+投票)
|
||||||
- `ACCReserve` - 储备协议
|
- `ACC-1594` - 收益分配协议
|
||||||
|
- `ACC-1643` - 文档管理协议(链上文档版本控制)
|
||||||
|
- `ACC-1644` - 监管控制协议(冻结/强制转移/监管接管)
|
||||||
|
|
||||||
## NAC原生设计
|
### 兼容层(1个)
|
||||||
|
- `ACC-20C` - 合规兼容层
|
||||||
- ✅ 使用NAC原生术语(Asset Holdings而非Balance)
|
|
||||||
- ✅ 使用证书地址(Certificate Address)而非合约地址
|
|
||||||
- ✅ 使用资产转移(Transfer Asset)而非转账
|
|
||||||
- ✅ 内置合规验证
|
|
||||||
|
|
||||||
|
## NAC 原生设计原则
|
||||||
|
- ✅ Address 32字节,Hash 48字节(SHA3-384)
|
||||||
|
- ✅ 使用 `holdings` 而非 `balance`
|
||||||
|
- ✅ 使用 `TransactionContext` 而非 `msg.sender`
|
||||||
|
- ✅ 使用 `ConstitutionalReceipt` 作为操作宪法凭证
|
||||||
|
- ✅ 完全规避以太坊模式
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// === 基础代币协议 ===
|
||||||
mod acc20;
|
mod acc20;
|
||||||
mod acc721;
|
mod acc721;
|
||||||
mod acc1155;
|
mod acc1155;
|
||||||
mod acc20c;
|
mod acc20c;
|
||||||
|
|
||||||
pub use acc20::*;
|
pub use acc20::*;
|
||||||
pub use acc721::*;
|
pub use acc721::*;
|
||||||
pub use acc1155::*;
|
pub use acc1155::*;
|
||||||
pub use acc20c::*;
|
pub use acc20c::*;
|
||||||
|
|
||||||
// 证券代币协议族(ACC-1400 系列)
|
// === RWA 专用协议族 ===
|
||||||
|
mod acc_rwa;
|
||||||
|
mod acc_compliance;
|
||||||
|
mod acc_valuation;
|
||||||
|
mod acc_custody;
|
||||||
|
mod acc_collateral;
|
||||||
|
mod acc_redemption;
|
||||||
|
mod acc_insurance;
|
||||||
|
mod acc_governance;
|
||||||
|
pub use acc_rwa::{AccRwaClient, RWAAssetType, RWAAssetRecord};
|
||||||
|
pub use acc_compliance::{AccComplianceClient, SevenLayerComplianceResult, ComplianceRecord};
|
||||||
|
pub use acc_valuation::{AccValuationClient, ValuationResult};
|
||||||
|
pub use acc_custody::{AccCustodyClient, CustodyType, CustodyRecord};
|
||||||
|
pub use acc_collateral::{AccCollateralClient, CollateralRecord};
|
||||||
|
pub use acc_redemption::AccRedemptionClient;
|
||||||
|
pub use acc_insurance::{AccInsuranceClient, InsuranceType};
|
||||||
|
pub use acc_governance::{AccGovernanceClient, VoteChoice, ProposalType};
|
||||||
|
|
||||||
|
// === 稳定币与储备协议 ===
|
||||||
|
mod acc_xtzh;
|
||||||
|
mod acc_reserve;
|
||||||
|
pub use acc_xtzh::AccXtzhClient;
|
||||||
|
pub use acc_reserve::{AccReserveClient, ReserveEntry};
|
||||||
|
|
||||||
|
// === 证券代币协议族 ===
|
||||||
mod acc1410;
|
mod acc1410;
|
||||||
mod acc1400;
|
mod acc1400;
|
||||||
mod acc1594;
|
mod acc1594;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue