552 lines
23 KiB
Markdown
552 lines
23 KiB
Markdown
# RWADurian 榴莲认种平台 — 全景架构大纲
|
||
|
||
> 本文档是对 RWADurian 1.0(认种分配系统)与 2.0(算力挖矿系统)的完整业务与技术梳理。
|
||
> 可作为开发、运维、新成员 onboarding 的单一事实来源。
|
||
|
||
---
|
||
|
||
## 目录
|
||
|
||
1. [平台定位与核心概念](#1-平台定位与核心概念)
|
||
2. [系统全局拓扑](#2-系统全局拓扑)
|
||
3. [1.0 认种分配系统](#3-10-认种分配系统)
|
||
- 3.1 基础设施层
|
||
- 3.2 后端服务清单(13 个微服务)
|
||
- 3.3 前端应用
|
||
- 3.4 核心业务流程
|
||
4. [2.0 算力挖矿系统](#4-20-算力挖矿系统)
|
||
- 4.1 部署模式
|
||
- 4.2 后端服务清单(7 个微服务 + 1 前端)
|
||
- 4.3 核心业务流程
|
||
5. [跨系统数据桥梁 — CDC](#5-跨系统数据桥梁--cdc)
|
||
6. [推荐层级体系](#6-推荐层级体系)
|
||
7. [认种与分配流程(1.0 核心)](#7-认种与分配流程10-核心)
|
||
8. [算力与挖矿流程(2.0 核心)](#8-算力与挖矿流程20-核心)
|
||
9. [代币与链上体系](#9-代币与链上体系)
|
||
10. [安全加固与运维要点](#10-安全加固与运维要点)
|
||
11. [关键文件索引](#11-关键文件索引)
|
||
|
||
---
|
||
|
||
## 1. 平台定位与核心概念
|
||
|
||
| 概念 | 说明 |
|
||
|------|------|
|
||
| **RWADurian** | 一个以真实榴莲果树为底层资产的 RWA(Real World Asset)认种参与平台 |
|
||
| **认种(Planting)** | 用户花费 USDT 认种一棵果树,每棵树价格 15,831 USDT |
|
||
| **推荐关系(Referral)** | 用户通过推荐码邀请新用户,形成无限层级的树形结构 |
|
||
| **分配(Reward)** | 每笔认种产生的资金按 10 种权益类型分配给系统账户和上级链路用户 |
|
||
| **授权层级(Authorization)** | 根据团队业绩(认种量、省市占比)授予社区/省公司/市公司等经营资格 |
|
||
| **算力(Contribution)** | 1.0 认种行为通过 CDC 同步到 2.0,转化为用户的算力值 |
|
||
| **挖矿(Mining)** | 2.0 系统按算力占比进行每秒级 Share Token 分配,模拟"挖矿"收益 |
|
||
| **eUSDT / fUSDT** | 链上 ERC-20 代币,分别代表"积分股"和"积分值",可在 2.0 交易市场流通 |
|
||
|
||
---
|
||
|
||
## 2. 系统全局拓扑
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────────────────┐
|
||
│ 用户端 │
|
||
│ mobile-app (Flutter) mining-app (Flutter) │
|
||
│ admin-web (Next.js 14) mining-admin-web (Next.js 14) │
|
||
└──────────────┬─────────────────────────────┬────────────────────────────┘
|
||
│ HTTPS / Kong Gateway │ HTTPS
|
||
▼ ▼
|
||
┌──────────────────────────────┐ ┌──────────────────────────────────────┐
|
||
│ 1.0 认种分配系统 │ │ 2.0 算力挖矿系统 │
|
||
│ docker-compose.yml │ │ docker-compose.2.0.yml │
|
||
│ │ │ │
|
||
│ 13 NestJS 微服务 │ │ 7 NestJS 微服务 + 1 前端 │
|
||
│ ┌─────────────────────────┐ │ │ ┌──────────────────────────────┐ │
|
||
│ │ identity │ referral │ │ │ │ auth │ contribution │ │
|
||
│ │ wallet │ reward │ │ │ │ mining │ trading │ │
|
||
│ │ planting │ authorize │ │ │ │ mining-admin│ mining-wallet │ │
|
||
│ │ blockchain │ admin │ │ │ │ mining-blockchain │ │
|
||
│ │ mpc │ backup │ │ │ └──────────────────────────────┘ │
|
||
│ │ leaderboard│ presence │ │ │ │
|
||
│ │ reporting │ │ │ │ mining-admin-web (Next.js) │
|
||
│ └─────────────────────────┘ │ └──────────────────────────────────────┘
|
||
│ │ ▲
|
||
│ ┌─────────────────────────┐ │ │ CDC (Debezium → Kafka)
|
||
│ │ PostgreSQL 16 (13 DB) │─┼────────┘
|
||
│ │ Redis 7 (DB 0-11) │ │
|
||
│ │ Kafka 7.5 (单 Broker) │ │ ┌──────────────────────────────────────┐
|
||
│ │ Debezium 2.5.4 │ │ │ 独立模式额外基础设施 │
|
||
│ │ Zookeeper 7.5 │ │ │ postgres-2 / redis-2 / debezium-2 │
|
||
│ └─────────────────────────┘ │ └──────────────────────────────────────┘
|
||
│ │
|
||
│ MPC System (Go, 9 服务) │ KAVA 主网 / BSC
|
||
└──────────────────────────────┘ 智能合约 (DurianUSDT, eUSDT, fUSDT)
|
||
```
|
||
|
||
---
|
||
|
||
## 3. 1.0 认种分配系统
|
||
|
||
### 3.1 基础设施层
|
||
|
||
| 组件 | 版本 | 端口 | 说明 |
|
||
|------|------|------|------|
|
||
| PostgreSQL | 16-alpine | 127.0.0.1:5432 | 13 个独立数据库,WAL logical 模式 |
|
||
| Redis | 7-alpine | 6379 | AOF 持久化,20 个 DB(DB 0-11 分配给各服务) |
|
||
| Kafka | 7.5.0 | 9092/9093/29092 | 单 Broker,auto-create topics |
|
||
| Zookeeper | 7.5.0 | 2181 | Kafka 协调 |
|
||
| Debezium | 2.5.4.Final | 127.0.0.1:8084 | CDC 连接器,ExtractNewRecordState SMT |
|
||
|
||
**关键配置:**
|
||
- `max_slot_wal_keep_size=10GB` — 防止 WAL 无限积压(历史事故:305GB)
|
||
- `max_replication_slots=20` / `max_wal_senders=20`
|
||
- Kafka 9093 端口为远程 MPC 访问预留(192.168.1.111)
|
||
|
||
### 3.2 后端服务清单
|
||
|
||
| 服务 | 端口 | Redis DB | 核心职责 |
|
||
|------|------|----------|----------|
|
||
| **identity-service** | 3000 | 0 | 用户注册/登录、KYC、SMS、头像、钱包地址创建 |
|
||
| **wallet-service** | 3001 | 1 | 钱包余额、冻结/解冻、充值/提现、区域账户 |
|
||
| **backup-service** | 3002 | — | 钱包私钥加密备份与恢复(限速 3次/天) |
|
||
| **planting-service** | 3003 | 2 | 认种订单创建 → 选省市 → 确认 → 支付 → 合同签署 |
|
||
| **referral-service** | 3004 | 3 | 推荐关系树、团队统计、龙虎榜分值计算 |
|
||
| **reward-service** | 3005 | 4 | 10 类权益分配、奖励待领/已领/过期状态机 |
|
||
| **mpc-service** | 3006 | 5 | MPC 密钥管理,桥接 Go 版 MPC System |
|
||
| **leaderboard-service** | 3007 | 6 | 用户排行榜 |
|
||
| **reporting-service** | 3008 | 7 | 系统账户报表聚合 |
|
||
| **authorization-service** | 3009 | 8 | 社区/省公司/市公司授权,月度考核评估 |
|
||
| **admin-service** | 3010 | 9 | 后台管理(版本、用户、CDC) |
|
||
| **presence-service** | 3011 | 10 | 用户在线状态(180s 窗口,60s 快照) |
|
||
| **blockchain-service** | 3012 | 11 | KAVA 链交互、充提监控、热钱包管理 |
|
||
|
||
**MPC System(Go 语言,独立网络):**
|
||
- account-service / session-coordinator / message-router / server-party / server-party-api 等 9 个服务
|
||
- gRPC + WebSocket 通信
|
||
- TSS(门限签名)实现多方安全计算
|
||
|
||
### 3.3 前端应用
|
||
|
||
| 应用 | 技术栈 | 说明 |
|
||
|------|--------|------|
|
||
| **mobile-app** | Flutter (Dart) | 用户端 APP,17 个功能模块(认种/充值/提现/KYC/排行/交易等) |
|
||
| **admin-web** | Next.js 14 + React | 管理后台(仪表盘、用户管理、订单管理) |
|
||
| **mobile-upgrade** | Next.js 14 | APP 版本管理 & OTA 更新服务器 |
|
||
|
||
### 3.4 核心业务流程概览
|
||
|
||
```
|
||
用户注册 → 获取推荐码 → 被推荐人注册(建立推荐关系)
|
||
↓
|
||
用户充值 USDT(链上)
|
||
↓
|
||
创建认种订单(选省市 → 支付 → 签合同)
|
||
↓
|
||
触发 10 类权益分配(见第 7 章)
|
||
↓
|
||
CDC 同步到 2.0(算力 → 挖矿)
|
||
```
|
||
|
||
---
|
||
|
||
## 4. 2.0 算力挖矿系统
|
||
|
||
### 4.1 部署模式
|
||
|
||
| 模式 | 网络 | 基础设施 | 适用场景 |
|
||
|------|------|----------|----------|
|
||
| **Shared(默认)** | services_rwa-network | 复用 1.0 的 PG/Redis/Kafka | 同机部署 |
|
||
| **Standalone** | rwa-2-network | 独立 postgres-2/redis-2 + 远程 Kafka 9093 | 分机部署 |
|
||
|
||
### 4.2 后端服务清单
|
||
|
||
| 服务 | 端口 | Redis DB | 核心职责 |
|
||
|------|------|----------|----------|
|
||
| **contribution-service** | 3020 | 10 | CDC 消费 → 算力计算 → 15 级 + 3 阶梯分配 |
|
||
| **mining-service** | 3021 | 16 | 按秒分配 Share Token、挖矿账户管理 |
|
||
| **trading-service** | 3022 | 12 | eUSDT/fUSDT 交易撮合、做市商 |
|
||
| **mining-admin-service** | 3023 | 13 | 挖矿后台管理、池账户(销毁池/挖矿池) |
|
||
| **auth-service** | 3024 | 14 | 2.0 认证,CDC 同步 1.0 用户 |
|
||
| **mining-wallet-service** | 3025 | 15 | KAVA 链钱包管理 |
|
||
| **mining-blockchain-service** | 3026 | 8 | 链上操作(eUSDT/fUSDT/USDT)、区块扫描 |
|
||
| **mining-admin-web** | 3100 | — | 挖矿管理后台(Next.js) |
|
||
|
||
### 4.3 核心业务流程概览
|
||
|
||
```
|
||
1.0 认种订单 (MINING_ENABLED)
|
||
↓ Debezium CDC
|
||
contribution-service 消费 → 算力计算(个人70% + 团队15级7.5% + 奖励3阶7.5%)
|
||
↓ Outbox Event
|
||
mining-service 同步算力 → 每秒按占比分配 Share Token
|
||
↓
|
||
trading-service 提供 eUSDT/fUSDT 交易市场
|
||
↓
|
||
mining-blockchain-service 处理链上充提
|
||
```
|
||
|
||
---
|
||
|
||
## 5. 跨系统数据桥梁 — CDC
|
||
|
||
### 5.1 CDC 数据流
|
||
|
||
| 源(1.0 表) | Kafka Topic | 消费者(2.0) | 用途 |
|
||
|---------------|-------------|---------------|------|
|
||
| identity.user_accounts | `cdc.identity.public.user_accounts` | auth-service, admin-service, contribution-service | 同步用户注册 |
|
||
| identity.wallet_addresses | `cdc.identity.public.wallet_addresses` | auth-service | 同步钱包地址 |
|
||
| planting.planting_orders | `cdc.planting.public.planting_orders` | contribution-service | 同步认种订单 → 算力 |
|
||
| referral.referral_relationships | `cdc.referral.public.referral_relationships` | contribution-service | 同步推荐关系 → 团队算力 |
|
||
|
||
### 5.2 CDC 消息格式(ExtractNewRecordState 展平后)
|
||
|
||
```json
|
||
{
|
||
"order_id": 1,
|
||
"tree_count": 1,
|
||
"account_sequence": "D25122700015",
|
||
"status": "MINING_ENABLED",
|
||
"__op": "c",
|
||
"__table": "planting_orders",
|
||
"__source_ts_ms": 1767892060857,
|
||
"__deleted": "false"
|
||
}
|
||
```
|
||
|
||
### 5.3 消费顺序保证(contribution-service)
|
||
|
||
contribution-service 采用 **Collect-Sort-Process** 模式:
|
||
1. **Phase 1**: 消费 `cdc.identity.public.user_accounts`(全量用户)
|
||
2. **Phase 2**: 消费 `cdc.referral.public.referral_relationships`(全量推荐关系)
|
||
3. **Phase 3**: 消费 `cdc.planting.public.planting_orders`(收集 → 按 order_id 排序 → 顺序处理)
|
||
|
||
**严格顺序的原因**:计算团队算力必须先有推荐关系数据,否则分配错误。
|
||
|
||
### 5.4 幂等性保证
|
||
|
||
```
|
||
每条 CDC 消息 → INSERT ProcessedCdcEvent(topic, offset)
|
||
→ 若 UNIQUE 冲突则跳过
|
||
→ 业务逻辑在同一事务内执行
|
||
→ Serializable 隔离级别
|
||
```
|
||
|
||
---
|
||
|
||
## 6. 推荐层级体系
|
||
|
||
### 6.1 数据模型
|
||
|
||
```
|
||
ReferralRelationship(不可变)
|
||
├── userId / accountSequence(唯一标识)
|
||
├── referrerId(直接推荐人,null = 根节点)
|
||
├── ancestorPath: BigInt[](从直接推荐人到根的链路)
|
||
├── depth(链路深度,0 = 根节点)
|
||
├── myReferralCode / usedReferralCode
|
||
└── directReferralCount / activeDirectCount
|
||
|
||
TeamStatistics(实时更新)
|
||
├── selfPlantingCount / selfPlantingAmount
|
||
├── totalTeamPlantingCount / totalTeamPlantingAmount
|
||
├── maxSingleTeamPlantingCount(最大单腿)
|
||
├── effectivePlantingCountForRanking(龙虎榜分值)
|
||
└── provinceCityDistribution: JSON
|
||
```
|
||
|
||
### 6.2 推荐树结构示例
|
||
|
||
```
|
||
Root (depth=0, ancestorPath=[])
|
||
├── A (depth=1, ancestorPath=[Root])
|
||
│ ├── B (depth=2, ancestorPath=[A, Root])
|
||
│ │ └── D (depth=3, ancestorPath=[B, A, Root])
|
||
│ └── C (depth=2, ancestorPath=[A, Root])
|
||
└── E (depth=1, ancestorPath=[Root])
|
||
```
|
||
|
||
### 6.3 龙虎榜分值公式
|
||
|
||
```
|
||
effectivePlantingCountForRanking = totalTeamPlantingCount - maxSingleTeamPlantingCount
|
||
```
|
||
|
||
**设计目的**:鼓励均衡发展,防止"单腿烧伤"。
|
||
|
||
### 6.4 授权层级与考核
|
||
|
||
| 层级 | 要求 | 权益 |
|
||
|------|------|------|
|
||
| **社区(Community)** | 直推 ≥5,认种 ≥500 棵 | 社区权益分配 576 USDT/棵 |
|
||
| **市公司(City)** | 团队 ≥10,000 棵,本市占比 ≥50% | 市团队 288 + 市区域 252 USDT/棵 |
|
||
| **省公司(Province)** | 团队 ≥20,000 棵,本省占比 ≥60% | 省团队 144 + 省区域 108 USDT/棵 |
|
||
|
||
**月度考核**:authorization-service 每月评估,根据阶梯目标判断是否保留/降级授权。
|
||
|
||
---
|
||
|
||
## 7. 认种与分配流程(1.0 核心)
|
||
|
||
### 7.1 认种订单生命周期
|
||
|
||
```
|
||
CREATED → 选省市 → 确认省市 → PAID(冻结资金)→ 合同签署 → 确认扣款 → 分配触发
|
||
│ │
|
||
│ contract.signed ✓
|
||
│ contract.expired ✗ → 权益归系统
|
||
│
|
||
Outbox 发布事件:
|
||
planting.planting.created → referral-service
|
||
planting-events → authorization-service
|
||
```
|
||
|
||
### 7.2 三阶段支付安全机制
|
||
|
||
| 阶段 | 操作 | 说明 |
|
||
|------|------|------|
|
||
| **冻结** | wallet.freezeForPlanting() | 资金不可用但未扣除 |
|
||
| **合同** | 等待 contract.signed / expired | 24 小时签署窗口 |
|
||
| **确认** | wallet.confirmPlantingDeduction() | 冻结 → 实际扣款,触发分配 |
|
||
|
||
### 7.3 十类权益分配(每棵树 15,831 USDT)
|
||
|
||
#### 系统费用(自动分配,10,863 USDT)
|
||
|
||
| # | 类型 | 金额 | 目标账户 |
|
||
|---|------|------|----------|
|
||
| 1 | 成本费 | 2,800 | S0000000002 |
|
||
| 2 | 运营费 | 2,100 | S0000000003 |
|
||
| 3 | 总部基金 | 203 | S0000000001 |
|
||
| 4 | RWAD 底池 | 5,760 | S0000000004 |
|
||
|
||
#### 用户权益(基于推荐链,4,968 USDT + 算力)
|
||
|
||
| # | 类型 | 金额 | 分配对象 | 附加 |
|
||
|---|------|------|----------|------|
|
||
| 5 | 分享权益 | 3,600 | 直接推荐人 | 无推荐人 → S0000000005 |
|
||
| 6 | 省团队权益 | 144 | 链路中最近的省公司授权者 | — |
|
||
| 7 | 省区域权益 | 108 | 被授权省份 | +1% 算力 |
|
||
| 8 | 市团队权益 | 288 | 链路中最近的市公司授权者 | — |
|
||
| 9 | 市区域权益 | 252 | 被授权城市 | +2% 算力 |
|
||
| 10 | 社区权益 | 576 | 链路中最近的社区管理者 | — |
|
||
|
||
### 7.4 奖励状态机
|
||
|
||
```
|
||
PENDING(24h 倒计时)
|
||
├─ 用户再次认种 → SETTLEABLE(可结算)
|
||
│ └─ 用户主动结算 → SETTLED(已结算,入钱包余额)
|
||
└─ 24h 超时未领取 → EXPIRED(过期,归总部社区)
|
||
```
|
||
|
||
### 7.5 Kafka 事件流
|
||
|
||
```
|
||
planting-service ──planting.planting.created──→ referral-service
|
||
│
|
||
更新团队统计 + 等待合同
|
||
│
|
||
contract.signed / expired
|
||
│
|
||
confirmDeduction → wallet
|
||
│
|
||
┌─ planting.order.paid ──→ reward-service → distributeRewards()
|
||
└─ planting.order.expired → reward-service → 权益归系统账户
|
||
```
|
||
|
||
---
|
||
|
||
## 8. 算力与挖矿流程(2.0 核心)
|
||
|
||
### 8.1 算力(Contribution)计算
|
||
|
||
**触发**:1.0 认种订单状态变为 `MINING_ENABLED` 时,通过 CDC 同步到 contribution-service。
|
||
|
||
#### 算力分配比例
|
||
|
||
| 来源 | 比例 | 说明 |
|
||
|------|------|------|
|
||
| **个人算力(PERSONAL)** | 70% | 认种即生效 |
|
||
| **团队层级(TEAM_LEVEL)** | 7.5% | 15 级,每级 0.5% |
|
||
| **团队奖励(TEAM_BONUS)** | 7.5% | 3 阶梯,每阶 2.5% |
|
||
| **运营费** | 12% | 系统账户 |
|
||
| **省公司** | 1% | 省区域系统账户 |
|
||
| **市公司** | 2% | 市区域系统账户 |
|
||
|
||
#### 团队算力解锁条件
|
||
|
||
| 层级 | 条件 |
|
||
|------|------|
|
||
| Level 1-5(2.5%) | 用户自己有认种即可 |
|
||
| Level 6-10(2.5%) | 直推 ≥3 人且有认种 |
|
||
| Level 11-15(2.5%) | 直推 ≥5 人且有认种 |
|
||
| Bonus Tier 1(2.5%) | 用户自己有认种 |
|
||
| Bonus Tier 2(2.5%) | 直推 ≥2 人且有认种 |
|
||
| Bonus Tier 3(2.5%) | 直推 ≥4 人且有认种 |
|
||
|
||
#### 每棵树算力值
|
||
|
||
```
|
||
contribution_per_tree = 22617 × (1 + currentUnit × 0.003)
|
||
|
||
currentUnit 每 100 棵全网认种递增一次:
|
||
Trees 1-999: unit=0, multiplier=1.000
|
||
Trees 1000-1099: unit=1, multiplier=1.003
|
||
Trees 1100-1199: unit=2, multiplier=1.006
|
||
...
|
||
```
|
||
|
||
### 8.2 挖矿(Mining)分配
|
||
|
||
**全局参数:**
|
||
|
||
| 参数 | 值 |
|
||
|------|------|
|
||
| 总份额 | 100.02 亿 Share |
|
||
| 初始分配池 | 2 亿 Share |
|
||
| 减半周期 | 2 年(63,072,000 秒) |
|
||
|
||
**分配公式:**
|
||
|
||
```
|
||
每秒全网分配量 = secondDistribution(随时代递减)
|
||
|
||
用户每秒挖矿 = secondDistribution × (用户有效算力 / 全网总算力)
|
||
|
||
有效算力 = 个人算力 + 已解锁的团队算力
|
||
```
|
||
|
||
**挖矿价格:**
|
||
|
||
```
|
||
price = sharePool / (TOTAL_SHARES - blackHole - circulationPool)
|
||
```
|
||
|
||
### 8.3 交易市场
|
||
|
||
- **eUSDT(积分股)**:代表挖矿产出的 Share Token 对应价值
|
||
- **fUSDT(积分值)**:代表未来价值
|
||
- trading-service 提供 eUSDT/fUSDT 交易撮合
|
||
- 做市商账户由 mining-admin-service 管理
|
||
- **销毁池(Burn Pool)**:100 亿 Token
|
||
- **挖矿池(Mining Pool)**:200 万 Token
|
||
|
||
---
|
||
|
||
## 9. 代币与链上体系
|
||
|
||
### 9.1 链上合约
|
||
|
||
| 合约 | 链 | 地址 |
|
||
|------|------|------|
|
||
| dUSDT (DurianUSDT) | KAVA | 0xA9F3A35dBa8699c8C681D8db03F0c1A8CEB9D7c3 |
|
||
| eUSDT (Energy USDT) | KAVA | 0x7C3275D808eFbAE90C06C7E3A9AfDdcAa8563931 |
|
||
| fUSDT (Future USDT) | KAVA | 0x14dc4f7d3E4197438d058C3D156dd9826A161134 |
|
||
| USDT (BSC 备用) | BSC | 0x55d398326f99059fF775485246999027B3197955 |
|
||
|
||
### 9.2 MPC 多方计算钱包
|
||
|
||
- Go 语言实现,9 个服务组件
|
||
- TSS(门限签名)保障私钥安全
|
||
- 用户无需直接管理私钥,通过 MPC 协议完成签名
|
||
- 热钱包提现由 blockchain-service 调度
|
||
|
||
### 9.3 区块扫描
|
||
|
||
- 扫描间隔:5 秒
|
||
- 确认块数:12 块
|
||
- RPC 故障自动切换(4 个 KAVA RPC 端点,3 分钟切换)
|
||
|
||
---
|
||
|
||
## 10. 安全加固与运维要点
|
||
|
||
### 10.1 端口安全
|
||
|
||
| 服务 | 绑定 | 说明 |
|
||
|------|------|------|
|
||
| PostgreSQL | 127.0.0.1:5432 | 仅本地访问 |
|
||
| Debezium REST | 127.0.0.1:8084 | 防 SSRF(历史事故:3 个恶意连接器注入) |
|
||
| Redis | 127.0.0.1:6379 | 仅本地访问 |
|
||
|
||
### 10.2 WAL 安全
|
||
|
||
- `max_slot_wal_keep_size=10GB` — 上限防 WAL 爆盘(历史事故:305GB)
|
||
- `OFFSET_FLUSH_INTERVAL_MS=10000` — Debezium 偏移刷新加速
|
||
|
||
### 10.3 密钥管理
|
||
|
||
- JWT_SECRET / SERVICE_JWT_SECRET — 服务间认证
|
||
- MPC_JWT_SECRET — MPC 系统认证
|
||
- WALLET_ENCRYPTION_SALT — 钱包加密
|
||
- SHARE_MASTER_KEY — MPC 主密钥
|
||
- Aliyun API Keys — SMS / KYC 三方服务
|
||
|
||
### 10.4 可靠性模式
|
||
|
||
| 模式 | 说明 |
|
||
|------|------|
|
||
| **Outbox Pattern** | 数据库事务 + 事件发布原子性,指数退避重试(最长 4 小时) |
|
||
| **Idempotency** | ProcessedEvent + ProcessedCdcEvent 表防重复消费 |
|
||
| **Compensation** | payment_compensations 表处理冻结失败/确认失败/分配失败 |
|
||
| **Health Check** | 所有服务 /api/v1/health 或 /api/v2/health,30s 间隔 |
|
||
| **Restart Policy** | unless-stopped 自动重启 |
|
||
|
||
---
|
||
|
||
## 11. 关键文件索引
|
||
|
||
### 11.1 编排文件
|
||
|
||
| 文件 | 用途 |
|
||
|------|------|
|
||
| `backend/services/docker-compose.yml` | 1.0 系统全量编排(13 服务 + 基础设施) |
|
||
| `docker-compose.2.0.yml` | 2.0 系统编排(7 服务 + 前端 + 可选基础设施) |
|
||
| `backend/mpc-system/docker-compose.yml` | MPC 系统编排 |
|
||
|
||
### 11.2 核心业务代码
|
||
|
||
| 路径 | 说明 |
|
||
|------|------|
|
||
| `backend/services/planting-service/src/application/` | 认种订单业务逻辑 |
|
||
| `backend/services/reward-service/src/application/` | 分配计算与奖励状态机 |
|
||
| `backend/services/referral-service/src/application/` | 推荐关系与团队统计 |
|
||
| `backend/services/authorization-service/src/application/` | 授权层级与月度考核 |
|
||
| `backend/services/contribution-service/src/application/` | 算力计算与 CDC 消费 |
|
||
| `backend/services/mining-service/src/domain/services/` | 挖矿分配算法 |
|
||
| `backend/services/wallet-service/src/application/` | 钱包操作(冻结/解冻/分配) |
|
||
| `backend/services/blockchain-service/src/` | 链上交互与区块扫描 |
|
||
|
||
### 11.3 数据库 Schema
|
||
|
||
| 路径 | 说明 |
|
||
|------|------|
|
||
| `backend/services/*/prisma/schema.prisma` | 各服务 Prisma Schema |
|
||
| `backend/services/scripts/init-databases.sh` | 13 个数据库初始化脚本 |
|
||
|
||
### 11.4 前端入口
|
||
|
||
| 路径 | 说明 |
|
||
|------|------|
|
||
| `frontend/mobile-app/lib/main.dart` | Flutter 用户端入口 |
|
||
| `frontend/mobile-app/lib/features/` | 17 个功能模块 |
|
||
| `frontend/admin-web/src/app/` | Next.js 管理后台 |
|
||
| `frontend/mining-admin-web/src/app/` | Next.js 挖矿后台 |
|
||
|
||
### 11.5 智能合约
|
||
|
||
| 路径 | 说明 |
|
||
|------|------|
|
||
| `contracts/DurianUSDT.sol` | ERC-20 代币合约 |
|
||
| `contracts/build/DurianUSDT.abi` | 编译后 ABI |
|
||
|
||
---
|
||
|
||
## 附录:账户编号规则
|
||
|
||
| 格式 | 示例 | 说明 |
|
||
|------|------|------|
|
||
| D + YYMMDD + 5位序号 | D25121400002 | 用户账户 |
|
||
| S + 10位序号 | S0000000001 | 系统账户(总部/成本/运营/底池) |
|
||
| 9 + 省代码 | 9440000 | 省级系统账户 |
|
||
| 8 + 市代码 | 8440100 | 市级系统账户 |
|
||
| 7 + 省代码 | 7440000 | 省团队默认账户 |
|
||
| 6 + 市代码 | 6440100 | 市团队默认账户 |
|