RWADurian 榴莲认种平台 — 全景架构大纲
本文档是对 RWADurian 1.0(认种分配系统)与 2.0(算力挖矿系统)的完整业务与技术梳理。
可作为开发、运维、新成员 onboarding 的单一事实来源。
目录
- 平台定位与核心概念
- 系统全局拓扑
- 1.0 认种分配系统
- 3.1 基础设施层
- 3.2 后端服务清单(13 个微服务)
- 3.3 前端应用
- 3.4 核心业务流程
- 2.0 算力挖矿系统
- 4.1 部署模式
- 4.2 后端服务清单(7 个微服务 + 1 前端)
- 4.3 核心业务流程
- 跨系统数据桥梁 — CDC
- 推荐层级体系
- 认种与分配流程(1.0 核心)
- 算力与挖矿流程(2.0 核心)
- 代币与链上体系
- 安全加固与运维要点
- 关键文件索引
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 |
同步推荐关系 → 团队算力 |
{
"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 模式:
- Phase 1: 消费
cdc.identity.public.user_accounts(全量用户)
- Phase 2: 消费
cdc.referral.public.referral_relationships(全量推荐关系)
- 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 |
市团队默认账户 |