NAC_Blockchain/_archive/nac-onboarding-system-legacy/API_IMPLEMENTATION_PLAN.md

12 KiB
Raw Blame History

NAC一键上链系统 - API调用实现方案

核心理念

所有9个模块都通过调用已有的API接口实现不重新开发底层功能。


模块1: 编排引擎

职责: 协调各模块API调用管理状态机

实现方式:

  • 状态机管理(本地实现)
  • 调用其他8个模块的API
  • 错误处理和重试(本地实现)

代码位置: src/services/orchestrator.rs


模块2: AI合规审批模块

API调用: nac-sdkL4适配器nac-ai-compliance

调用方式:

use nac_sdk::adapters::NACAdapter;

let adapter = NACAdapter::new(&config).await?;

// 调用AI合规审批
let compliance_result = adapter.l4()
    .compliance_check(asset_type, legal_docs, kyc_level, jurisdiction)
    .await?;

返回数据:

  • 合规性评分
  • 审批结果哈希
  • 证明数据

代码位置: src/services/compliance.rs


模块3: AI估值模块

API调用: nac-sdkL4适配器nac-ai-valuation

调用方式:

// 调用AI估值
let valuation_result = adapter.l4()
    .asset_valuation(asset_type, market_data, historical_data)
    .await?;

返回数据:

  • 估值结果SDR计价
  • 估值结果哈希
  • 估值模型参数

代码位置: src/services/valuation.rs


模块4: DNA生成模块

API调用: nac-sdkL1适配器nac-gnacs

调用方式:

// 生成GNACS编码
let gnacs_code = adapter.l1()
    .gnacs_encode(asset_type, risk_weight, compliance_level)
    .await?;

// 生成资产DNA
let dna = create_asset_dna(gnacs_code, asset_info);
let dna_hash = adapter.l0().hash_sha3_384(&dna)?;

返回数据:

  • 48位GNACS编码
  • 资产DNA结构
  • DNA哈希

代码位置: src/services/dna.rs


模块5: 宪法执行引擎CEE

API调用: nac-sdkL2适配器nac-constitution

调用方式:

// 提交宪法审查
let cr_compliance = adapter.l2()
    .submit_constitutional_review(compliance_result)
    .await?;

// 查询审查结果
let review_result = adapter.l2()
    .query_review_result(review_id)
    .await?;

返回数据:

  • 宪法收据CR
  • 审查结果
  • 合规证明

代码位置: src/services/constitution.rs


模块6: 托管对接模块

API调用:

  1. nac-sdkL2适配器 → 获取托管机构白名单
  2. 直接调用托管机构APIHTTPS + 数字签名)

调用方式:

// 获取托管机构白名单
let custody_list = adapter.l2()
    .get_custody_whitelist(asset_type, jurisdiction)
    .await?;

// 选择托管机构
let custody_provider = select_custody_provider(&custody_list);

// 调用托管机构API
let custody_receipt = call_custody_api(
    custody_provider,
    asset_dna,
    valuation_result,
    legal_docs
).await?;

// 验证托管凭证
let verified = adapter.l2()
    .verify_custody_receipt(custody_receipt)
    .await?;

返回数据:

  • 托管凭证(含数字签名)
  • 托管凭证哈希

代码位置: src/services/custody.rs


模块7: XTZH铸造模块

API调用: nac-sdkL1适配器nac-xtzh

调用方式:

// 计算铸造数量(估值 × 125%
let xtzh_amount = valuation_result.value * 1.25;

// 铸造XTZH
let mint_result = adapter.l1()
    .xtzh_mint(
        issuer_address,
        xtzh_amount,
        asset_dna,
        custody_receipt,
        vec![cr_compliance, cr_valuation, cr_dna, cr_custody]
    )
    .await?;

返回数据:

  • 铸造交易哈希
  • XTZH数量
  • 铸造记录

代码位置: src/services/xtzh.rs


模块8: 权益代币发行模块

API调用: nac-sdkL1适配器nac-nvm

调用方式:

// 选择合约模板
let template = select_token_template(asset_type);

// 部署代币合约
let contract_address = adapter.l1()
    .deploy_contract(
        template,
        gnacs_code,
        total_supply,
        issuer_address,
        vec![cr_compliance, cr_valuation, cr_dna, cr_custody, cr_xtzh]
    )
    .await?;

// 转移代币所有权
let transfer_result = adapter.l1()
    .acc20_transfer(contract_address, from, to, amount)
    .await?;

返回数据:

  • 代币合约地址
  • 部署交易哈希
  • 代币信息

代码位置: src/services/token.rs


模块9: 链上公示模块

API调用: nac-sdkL5适配器 → 浏览器/钱包/交易所API

调用方式:

// 注册到区块链浏览器
let browser_result = adapter.l5()
    .register_asset_to_browser(
        gnacs_code,
        contract_address,
        asset_metadata
    )
    .await?;

// 推送到钱包
let wallet_result = adapter.l5()
    .push_token_to_wallet(
        contract_address,
        token_info
    )
    .await?;

// 提交交易所上币申请
let exchange_result = adapter.l5()
    .submit_listing_application(
        contract_address,
        token_info,
        vec![all_crs]
    )
    .await?;

返回数据:

  • 浏览器注册结果
  • 钱包推送结果
  • 交易所申请结果

代码位置: src/services/listing.rs


完整流程示例

// src/services/orchestrator.rs

pub async fn process_asset_onboarding(
    asset_submission: AssetSubmission,
    adapter: &NACAdapter
) -> Result<OnboardingResult, Error> {
    
    // 1. 初始化状态
    let mut state = OnboardingState::Pending;
    
    // 2. AI合规审批
    state = OnboardingState::ComplianceCheck;
    let compliance_result = compliance::check(
        &asset_submission,
        adapter
    ).await?;
    
    // 3. AI估值
    state = OnboardingState::Valuation;
    let valuation_result = valuation::valuate(
        &asset_submission,
        adapter
    ).await?;
    
    // 4. DNA生成
    state = OnboardingState::DNAGeneration;
    let dna_result = dna::generate(
        &asset_submission,
        &compliance_result,
        &valuation_result,
        adapter
    ).await?;
    
    // 5. 宪法审查获取所有CR
    let crs = constitution::review_all(
        &compliance_result,
        &valuation_result,
        &dna_result,
        adapter
    ).await?;
    
    // 6. 托管对接
    state = OnboardingState::Custody;
    let custody_result = custody::custody(
        &asset_submission,
        &dna_result,
        &valuation_result,
        adapter
    ).await?;
    
    // 7. XTZH铸造
    state = OnboardingState::XTZHMinting;
    let xtzh_result = xtzh::mint(
        &asset_submission,
        &valuation_result,
        &dna_result,
        &custody_result,
        &crs,
        adapter
    ).await?;
    
    // 8. 权益代币发行
    state = OnboardingState::TokenIssuance;
    let token_result = token::issue(
        &asset_submission,
        &dna_result,
        &xtzh_result,
        &crs,
        adapter
    ).await?;
    
    // 9. 链上公示
    state = OnboardingState::Listed;
    let listing_result = listing::list(
        &asset_submission,
        &dna_result,
        &token_result,
        adapter
    ).await?;
    
    // 10. 完成
    Ok(OnboardingResult {
        asset_id: asset_submission.id,
        state: OnboardingState::Listed,
        compliance_result,
        valuation_result,
        dna_result,
        custody_result,
        xtzh_result,
        token_result,
        listing_result,
        crs,
    })
}

数据库设计

表1: assets资产表

CREATE TABLE assets (
    id VARCHAR(36) PRIMARY KEY,
    user_id VARCHAR(36) NOT NULL,
    asset_type VARCHAR(50) NOT NULL,
    asset_info JSON NOT NULL,
    legal_docs JSON NOT NULL,
    kyc_level INT NOT NULL,
    jurisdiction VARCHAR(50) NOT NULL,
    state VARCHAR(50) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    INDEX idx_user_id (user_id),
    INDEX idx_state (state)
);

表2: onboarding_records上链记录表

CREATE TABLE onboarding_records (
    id VARCHAR(36) PRIMARY KEY,
    asset_id VARCHAR(36) NOT NULL,
    state VARCHAR(50) NOT NULL,
    compliance_result JSON,
    valuation_result JSON,
    dna_result JSON,
    custody_result JSON,
    xtzh_result JSON,
    token_result JSON,
    listing_result JSON,
    crs JSON,
    error_message TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (asset_id) REFERENCES assets(id),
    INDEX idx_asset_id (asset_id),
    INDEX idx_state (state)
);

表3: state_transitions状态转换表

CREATE TABLE state_transitions (
    id VARCHAR(36) PRIMARY KEY,
    record_id VARCHAR(36) NOT NULL,
    from_state VARCHAR(50) NOT NULL,
    to_state VARCHAR(50) NOT NULL,
    transition_data JSON,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (record_id) REFERENCES onboarding_records(id),
    INDEX idx_record_id (record_id)
);

API接口设计

1. 提交资产上链申请

POST /api/v1/assets/submit
Content-Type: application/json
Authorization: Bearer <token>

{
  "asset_type": "real-estate",
  "asset_info": {
    "name": "商业地产A",
    "location": "上海市浦东新区",
    "area": 1000,
    ...
  },
  "legal_docs": [
    {
      "type": "legal_opinion",
      "hash": "0x..."
    }
  ],
  "kyc_level": 2,
  "jurisdiction": "CN"
}

Response:
{
  "success": true,
  "data": {
    "asset_id": "uuid",
    "state": "Pending"
  }
}

2. 查询上链进度

GET /api/v1/assets/{asset_id}/status
Authorization: Bearer <token>

Response:
{
  "success": true,
  "data": {
    "asset_id": "uuid",
    "state": "ComplianceCheck",
    "progress": 20,
    "current_step": "AI合规审批中",
    "estimated_time": "3分钟"
  }
}

3. 获取资产详情

GET /api/v1/assets/{asset_id}
Authorization: Bearer <token>

Response:
{
  "success": true,
  "data": {
    "asset_id": "uuid",
    "state": "Listed",
    "compliance_result": {...},
    "valuation_result": {...},
    "dna_result": {
      "gnacs_code": "...",
      "dna_hash": "0x...",
      "code": "..."
    },
    "token_result": {
      "contract_address": "0x...",
      "token_symbol": "...",
      "total_supply": "..."
    }
  }
}

4. 下载链上权证

GET /api/v1/assets/{asset_id}/certificate
Authorization: Bearer <token>

Response: PDF文件

实施步骤

第1步: 创建项目结构(已完成)

第2步: 实现数据库模型

  • src/models/asset.rs
  • src/models/onboarding_record.rs
  • src/models/state_transition.rs

第3步: 实现9个服务模块

  • src/services/orchestrator.rs - 编排引擎
  • src/services/compliance.rs - AI合规审批
  • src/services/valuation.rs - AI估值
  • src/services/dna.rs - DNA生成
  • src/services/constitution.rs - 宪法执行引擎
  • src/services/custody.rs - 托管对接
  • src/services/xtzh.rs - XTZH铸造
  • src/services/token.rs - 权益代币发行
  • src/services/listing.rs - 链上公示

第4步: 实现API处理器

  • src/handlers/asset.rs - 资产相关API
  • src/handlers/auth.rs - 认证相关API
  • src/handlers/admin.rs - 管理员相关API

第5步: 实现主程序

  • src/main.rs - 启动服务器

第6步: 创建前端界面

  • 使用React + TypeScript + Tailwind
  • 用户前台 + 系统后台

第7步: 部署到备份服务器

  • 配置域名和SSL
  • 配置数据库
  • 启动服务

质量保证

100%使用API调用 - 不重新实现底层功能
完整的错误处理 - 每个API调用都有错误处理
完整的日志记录 - 记录所有API调用和结果
完整的测试覆盖 - 单元测试 + 集成测试
完整的文档 - API文档 + 用户手册


制定人: NAC开发团队
制定时间: 2026-02-19
文档状态: 正式版