rwadurian/docs/platform-overview.md

23 KiB
Raw Blame History

RWADurian 榴莲认种平台 — 全景架构大纲

本文档是对 RWADurian 1.0(认种分配系统)与 2.0(算力挖矿系统)的完整业务与技术梳理。 可作为开发、运维、新成员 onboarding 的单一事实来源。


目录

  1. 平台定位与核心概念
  2. 系统全局拓扑
  3. 1.0 认种分配系统
    • 3.1 基础设施层
    • 3.2 后端服务清单13 个微服务)
    • 3.3 前端应用
    • 3.4 核心业务流程
  4. 2.0 算力挖矿系统
    • 4.1 部署模式
    • 4.2 后端服务清单7 个微服务 + 1 前端)
    • 4.3 核心业务流程
  5. 跨系统数据桥梁 — CDC
  6. 推荐层级体系
  7. 认种与分配流程1.0 核心)
  8. 算力与挖矿流程2.0 核心)
  9. 代币与链上体系
  10. 安全加固与运维要点
  11. 关键文件索引

1. 平台定位与核心概念

概念 说明
RWADurian 一个以真实榴莲果树为底层资产的 RWAReal 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 个 DBDB 0-11 分配给各服务)
Kafka 7.5.0 9092/9093/29092 单 Brokerauto-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 SystemGo 语言,独立网络):

  • account-service / session-coordinator / message-router / server-party / server-party-api 等 9 个服务
  • gRPC + WebSocket 通信
  • TSS门限签名实现多方安全计算

3.3 前端应用

应用 技术栈 说明
mobile-app Flutter (Dart) 用户端 APP17 个功能模块(认种/充值/提现/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 展平后)

{
  "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 奖励状态机

PENDING24h 倒计时)
  ├─ 用户再次认种 → 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-52.5% 用户自己有认种即可
Level 6-102.5% 直推 ≥3 人且有认种
Level 11-152.5% 直推 ≥5 人且有认种
Bonus Tier 12.5% 用户自己有认种
Bonus Tier 22.5% 直推 ≥2 人且有认种
Bonus Tier 32.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 Pool100 亿 Token
  • 挖矿池Mining Pool200 万 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/health30s 间隔
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 市团队默认账户