# 榴莲生态2.0 挖矿系统架构总览 ## 1. 系统架构图 ``` ┌─────────────────────────────────────────────────────────────────────────────────┐ │ 用户端应用 │ ├─────────────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────────┐ ┌─────────────────────────┐ │ │ │ Mining App │ │ Mining Admin Web │ │ │ │ (Flutter 用户端) │ │ (Next.js 管理后台) │ │ │ │ │ │ │ │ │ │ - 贡献值展示 │ │ - 系统配置管理 │ │ │ │ - 实时收益显示 │ │ - 用户查询 │ │ │ │ - 买卖兑换 │ │ - 报表统计 │ │ │ │ - K线图 │ │ - 初始化任务 │ │ │ │ - 资产展示 │ │ - 审计日志 │ │ │ └───────────┬─────────────┘ └───────────┬─────────────┘ │ │ │ │ │ └──────────────┼────────────────────────────────────────┼──────────────────────────┘ │ │ ▼ ▼ ┌─────────────────────────────────────────────────────────────────────────────────┐ │ API Gateway (Nginx) │ └─────────────────────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────────────────────┐ │ 微服务层 │ ├─────────────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐ │ │ │ Contribution │ │ Mining │ │ Trading │ │ │ │ Service │ │ Service │ │ Service │ │ │ │ (贡献值/算力) │ │ (挖矿分配) │ │ (交易) │ │ │ │ Port: 3020 │ │ Port: 3021 │ │ Port: 3022 │ │ │ ├─────────────────────┤ ├─────────────────────┤ ├─────────────────────┤ │ │ │ - CDC数据同步 │ │ - 积分股分配 │ │ - 买卖撮合 │ │ │ │ - 算力计算 │ │ - 每分钟销毁 │ │ - K线生成 │ │ │ │ - 明细账管理 │ │ - 价格计算 │ │ - 手续费处理 │ │ │ │ - 过期处理 │ │ - 全局状态 │ │ - 流通池管理 │ │ │ └──────────┬──────────┘ └──────────┬──────────┘ └──────────┬──────────┘ │ │ │ │ │ │ │ └────────────────────────┼────────────────────────┘ │ │ │ │ │ ┌───────────▼───────────┐ │ │ │ Mining Admin │ │ │ │ Service │ │ │ │ (挖矿管理) │ │ │ │ Port: 3023 │ │ │ ├───────────────────────┤ │ │ │ - 配置管理 │ │ │ │ - 系统监控 │ │ │ │ - 数据初始化 │ │ │ │ - 审计日志 │ │ │ └───────────────────────┘ │ │ │ ├─────────────────────────────────────────────────────────────────────────────────┤ │ 现有服务 (集成) │ │ │ │ ┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐ │ │ │ Identity │ │ Wallet │ │ Planting │ │ │ │ Service │ │ Service │ │ Service │ │ │ │ (用户) │ │ (钱包) │ │ (认种) │ │ │ └─────────────────────┘ └─────────────────────┘ └─────────────────────┘ │ │ │ │ ┌─────────────────────┐ │ │ │ Referral │ │ │ │ Service │ │ │ │ (推荐关系) │ │ │ └─────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────────────────────┐ │ 基础设施层 │ ├─────────────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │ │ │ PostgreSQL │ │ Kafka │ │ Redis │ │ Debezium Connect │ │ │ │ (数据库) │ │ (消息队列) │ │ (缓存) │ │ (CDC) │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────────┘ ``` --- ## 2. 服务职责与端口分配 | 服务名称 | 端口 | 数据库 | 核心职责 | |---------|------|--------|---------| | **contribution-service** | 3020 | rwa_contribution | 算力计算、CDC同步、明细账 | | **mining-service** | 3021 | rwa_mining | 积分股分配、销毁、价格计算 | | **trading-service** | 3022 | rwa_trading | 买卖交易、K线、流通池 | | **mining-admin-service** | 3023 | rwa_mining_admin | 配置管理、监控、初始化 | --- ## 3. 数据流向 ### 3.1 算力计算流程 ``` ┌─────────────────────────────────────────────────────────────────────────┐ │ 算力计算数据流 │ ├─────────────────────────────────────────────────────────────────────────┤ │ │ │ Identity Service Planting Service Referral Service │ │ │ │ │ │ │ │ CDC │ CDC │ CDC │ │ ▼ ▼ ▼ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ Debezium Kafka Connect │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ Contribution Service │ │ │ │ │ │ │ │ 1. 同步用户数据 (synced_users) │ │ │ │ 2. 同步认种数据 (synced_adoptions) │ │ │ │ 3. 同步推荐关系 (synced_referrals) │ │ │ │ 4. 计算用户算力: │ │ │ │ - 个人算力 (70%) │ │ │ │ - 团队层级算力 (0.5% × N级) │ │ │ │ - 团队额外奖励 (2.5% × N档) │ │ │ │ 5. 记录算力明细账 │ │ │ │ 6. 生成每日算力快照 │ │ │ │ │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ │ │ │ Event: daily-snapshot-created │ │ ▼ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ Mining Service │ │ │ │ │ │ │ │ 根据算力快照分配每日积分股 │ │ │ │ │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────┘ ``` ### 3.2 挖矿分配流程 ``` ┌─────────────────────────────────────────────────────────────────────────┐ │ 挖矿分配数据流 │ ├─────────────────────────────────────────────────────────────────────────┤ │ │ │ 每日凌晨定时任务: │ │ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ Mining Service │ │ │ │ │ │ │ │ 1. 获取昨日算力快照 │ │ │ │ 2. 计算全网总算力 │ │ │ │ 3. 计算每个用户算力占比 │ │ │ │ 4. 根据占比分配当日积分股: │ │ │ │ - 第1-2年: 每日 1369.86 股 │ │ │ │ - 第3-4年: 每日 684.93 股 │ │ │ │ - 依次减半... │ │ │ │ 5. 更新用户积分股账户 │ │ │ │ 6. 记录挖矿明细账 │ │ │ │ │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ │ 每分钟定时任务: │ │ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ Mining Service │ │ │ │ │ │ │ │ 1. 计算当前销毁量: │ │ │ │ 销毁量 = (100亿 - 黑洞量) ÷ 剩余分钟数 │ │ │ │ 2. 执行销毁(进入黑洞) │ │ │ │ 3. 重新计算价格: │ │ │ │ 价格 = 积分股池 ÷ (100.02亿 - 黑洞 - 流通池) │ │ │ │ 4. 记录销毁明细账 │ │ │ │ 5. 记录价格快照 │ │ │ │ │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────┘ ``` ### 3.3 交易流程 ``` ┌─────────────────────────────────────────────────────────────────────────┐ │ 交易数据流 (卖出) │ ├─────────────────────────────────────────────────────────────────────────┤ │ │ │ 用户发起卖出: │ │ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ Trading Service │ │ │ │ │ │ │ │ 1. 获取当前价格 │ │ │ │ 2. 计算卖出倍数: │ │ │ │ 倍数 = (100亿 - 销毁量) ÷ (200万 - 流通池量) │ │ │ │ 3. 计算卖出销毁量: │ │ │ │ 销毁量 = 卖出量 × 倍数 │ │ │ │ 4. 计算交易额: │ │ │ │ 交易额 = (卖出量 + 销毁量) × 价格 │ │ │ │ 5. 计算手续费 (10%) │ │ │ │ 6. 执行交易: │ │ │ │ - 扣减用户积分股 │ │ │ │ - 积分股进入流通池 │ │ │ │ - 从积分股池扣减绿积分给用户 │ │ │ │ - 手续费注入积分股池 │ │ │ │ 7. 记录交易明细账 │ │ │ │ 8. 更新K线数据 │ │ │ │ │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ │ │ │ Event: trade-completed │ │ ▼ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ Mining Service │ │ │ │ │ │ │ │ 1. 更新流通池状态 │ │ │ │ 2. 触发卖出销毁(提前销毁未来的量) │ │ │ │ 3. 重新计算每分钟销毁量 │ │ │ │ 4. 重新计算价格 │ │ │ │ │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────┘ ``` --- ## 4. 服务间通信 ### 4.1 事件驱动 (Kafka Topics) | Topic | 发布者 | 订阅者 | 说明 | |-------|--------|--------|------| | `dbserver1.rwa_identity.users` | Debezium | contribution-service | 用户CDC | | `dbserver1.rwa_planting.adoptions` | Debezium | contribution-service | 认种CDC | | `dbserver1.rwa_referral.referral_relations` | Debezium | contribution-service | 推荐关系CDC | | `contribution.daily-snapshot-created` | contribution-service | mining-service | 每日算力快照 | | `mining.shares-distributed` | mining-service | trading-service, mining-admin | 积分股分配完成 | | `mining.price-updated` | mining-service | trading-service, mining-admin | 价格更新 | | `trading.trade-completed` | trading-service | mining-service | 交易完成 | | `mining-admin.config-updated` | mining-admin-service | 所有服务 | 配置更新 | ### 4.2 同步调用 (HTTP) ``` mining-admin-service → contribution-service: 获取用户算力详情 mining-admin-service → mining-service: 获取全局状态、用户积分股 mining-admin-service → trading-service: 获取交易统计、K线数据 trading-service → mining-service: 获取当前价格、全局状态 trading-service → wallet-service: 扣减/增加绿积分 ``` --- ## 5. 关键数据表关系 ### 5.1 跨服务数据关联 **所有服务统一使用 `account_sequence` 作为跨服务关联键,不使用 `userId`** ``` ┌─────────────────────────────────────────────────────────────────────────┐ │ account_sequence 关联 │ ├─────────────────────────────────────────────────────────────────────────┤ │ │ │ Identity Service │ │ └── users.account_sequence ────────────────────────────────┐ │ │ │ │ │ Contribution Service │ │ │ ├── synced_users.account_sequence ─────────────────────────┤ │ │ ├── contribution_accounts.account_sequence ────────────────┤ │ │ └── contribution_records.account_sequence ─────────────────┤ │ │ │ │ │ Mining Service │ │ │ ├── share_accounts.account_sequence ───────────────────────┤ │ │ └── daily_mining_records.account_sequence ─────────────────┤ │ │ │ │ │ Trading Service │ │ │ ├── trade_orders.account_sequence ─────────────────────────┤ │ │ └── trade_transactions.account_sequence ───────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────┘ ``` ### 5.2 明细账设计原则 每个服务都维护自己的明细账,确保数据可追溯: | 服务 | 明细账表 | 记录内容 | |------|---------|---------| | contribution-service | contribution_records | 每笔算力来源 | | mining-service | daily_mining_records | 每日挖矿分配 | | mining-service | burn_records | 每次销毁详情 | | trading-service | trade_transactions | 每笔交易流水 | --- ## 6. 关键配置参数 ### 6.1 贡献值配置 | 参数 | 默认值 | 说明 | |------|--------|------| | base_contribution | 22617 | 基础贡献值 | | increment_percentage | 0.3% | 每单位递增比例 | | unit_size | 100 | 单位大小(棵) | | personal_rate | 70% | 个人分配比例 | | level_rate_per | 0.5% | 每级分配比例 | | bonus_rate_per | 2.5% | 每档奖励比例 | ### 6.2 分配配置 | 阶段 | 时长 | 总量 | 每日分配 | |------|------|------|---------| | 第1阶段 | 2年 | 100万 | 1369.86 | | 第2阶段 | 2年 | 50万 | 684.93 | | 第3阶段 | 2年 | 25万 | 342.47 | | ... | ... | ... | ... | ### 6.3 交易配置 | 参数 | 默认值 | 说明 | |------|--------|------| | buy_fee_rate | 10% | 买入手续费 | | sell_fee_rate | 10% | 卖出手续费 | | transfer_enabled | false | 转账开关 | --- ## 7. 部署架构 ``` ┌─────────────────────────────────────────────────────────────────────────┐ │ Docker Compose │ ├─────────────────────────────────────────────────────────────────────────┤ │ │ │ 服务容器: │ │ ├── contribution-service (3020) │ │ ├── mining-service (3021) │ │ ├── trading-service (3022) │ │ └── mining-admin-service (3023) │ │ │ │ 基础设施容器: │ │ ├── postgres (5432) - 已有,新增 schema │ │ ├── kafka (9092) - 已有 │ │ ├── redis (6379) - 已有 │ │ └── debezium-connect (8084) - 已有,新增 connector │ │ │ │ 前端容器: │ │ ├── mining-admin-web (3100) │ │ └── api-gateway (nginx) - 已有,新增路由 │ │ │ └─────────────────────────────────────────────────────────────────────────┘ ``` --- ## 8. 开发顺序建议 1. **Phase 1: 数据同步** - contribution-service: CDC 消费者实现 - 同步用户、认种、推荐关系数据 2. **Phase 2: 算力计算** - contribution-service: 算力计算逻辑 - 老用户算力初始化 3. **Phase 3: 挖矿分配** - mining-service: 全局状态管理 - mining-service: 每日分配、每分钟销毁 4. **Phase 4: 交易功能** - trading-service: 买卖逻辑 - trading-service: K线生成 5. **Phase 5: 管理后台** - mining-admin-service: 配置管理、监控 - mining-admin-web: 前端实现 6. **Phase 6: 用户端** - mining-app: Flutter App 实现 --- ## 9. 文档索引 | 服务/应用 | 开发指导文档路径 | |----------|----------------| | contribution-service | [backend/services/contribution-service/DEVELOPMENT_GUIDE.md](../backend/services/contribution-service/DEVELOPMENT_GUIDE.md) | | mining-service | [backend/services/mining-service/DEVELOPMENT_GUIDE.md](../backend/services/mining-service/DEVELOPMENT_GUIDE.md) | | trading-service | [backend/services/trading-service/DEVELOPMENT_GUIDE.md](../backend/services/trading-service/DEVELOPMENT_GUIDE.md) | | mining-admin-service | [backend/services/mining-admin-service/DEVELOPMENT_GUIDE.md](../backend/services/mining-admin-service/DEVELOPMENT_GUIDE.md) | | mining-admin-web | [frontend/mining-admin-web/DEVELOPMENT_GUIDE.md](../frontend/mining-admin-web/DEVELOPMENT_GUIDE.md) | | mining-app | [frontend/mining-app/DEVELOPMENT_GUIDE.md](../frontend/mining-app/DEVELOPMENT_GUIDE.md) |