← BACK · 返回原型集
LIVE DIAGRAM 05 / SYSTEM ARCH v1.0
SYSTEM ARCHITECTURE · 系统架构

9 微服务 + 多链资金 + 双轨开奖架构 9 MICROSERVICES · BSC / ETH / TRON · PLUGGABLE DRAW

边缘 → 网关 → 业务服务 → 链上层 → 数据基础设施。sign-service 独立 VPC subnet, 唯一持有热钱包私钥;chain-service 通过 ChainAdapter 接口屏蔽 BSC / ETH(EVM)与 TRON(TRC20,USDT 充值 / 提现 / 归集)差异(BTC 后续开放); game-serviceDrawEngine 支持 3 种实现(FULL_CHAIN / VRF_ONLY / BACKEND), Nacos 配置 one.draw.mode 切换。environment × executionChain 正交。
Edge → gateway → business services → chain layer → data infra. sign-service isolated in its own subnet holds all hot-wallet private keys. chain-service abstracts BSC / ETH / TRON behind ChainAdapter (BTC deferred). Draw engine pluggable via Nacos; env and chain orthogonal.

1 EDGE · 入口层 USER-FACING ENTRY POINTS
TG Mini App
TG MINI APP · PRIMARY
React + Vite + TS,initData 校验后免输入登录;从 TG 内一键打开。
PRIMARY ENTRY
H5 浏览器端
WEB H5 · SAME CODEBASE
浏览器直访同套代码(v1.0 暂只支持 Telegram 登录;钱包扫码 / OAuth 后续开放)。
SECONDARY
Telegram Bot
TG BOT · WEBHOOK
推送开奖、订单、充值回执;deep link 跳 TG Mini App;客服跳转。
PUSH + NAV
2 CDN · WAF · TLS CLOUDFLARE
Cloudflare CDN + WAF
EDGE PROTECTION
静态资源 CDN 加速 · DDoS 缓解 · TLS 终止 · 地理路由 · Bot 防护 · 国别地理过滤(合规口径)
3 API GATEWAY · 网关 SPRING CLOUD GATEWAY
gateway-service
ROUTE · JWT · RATE-LIMIT · I18N
路由分发 · JWT / TG initData 验签 · 限流 · 请求日志 · 国际化 header 解析 · 服务发现走 Nacos · 全局熔断 · CORS。
PORT 8080
4 BUSINESS SERVICES · 业务服务(7 个 Spring Boot 服务,相同 runtime) PRIVATE SUBNET · INTERNAL ONLY
user-service
ACCOUNT · KYC · WALLET
TG initData 校验 → 账户绑定 · 个人信息 · VIP 等级 · 站内信 / 邮件 · 敏感字段 KMS 加密入库
agent-service
INVITE · AGENT FLAG
邀请关系永久绑定 · refCode生成 / 校验 · 代理 yes/no 标记。 承载佣金 / 阶梯(后续开放)
game-service
ROUND · TICKET · DRAW
活动 / 期次 / 号码池 / 购票 / 开奖编排 / 中奖发放。 DrawEngine 接口 + 3 实现切换。
CORE
wallet-service
DEPOSIT · WITHDRAW · LEDGER
平台余额账本 · 充值入账 · 提现冻结 / 解冻 · 对账 · 异常资金挂账。 所有提现都走 sign-service 签名
chain-service
CHAIN ADAPTER · BROADCAST · LISTEN
和其他业务服务一样的 Java 服务,只是封装了对外部链的 RPC 调用: 广播 tx / 监听事件 / 同步区块。
ChainAdapter 接口 + 多链方言:BSC / ETH(EVM)· TRON(TRC20 USDT 充值 / 提现 / 归集)。BTC 后续开放。
message-service
INBOX · TG BOT PUSH
站内信 · TG Bot 推送 · 推送优先级和模板 · 失败重试 + 死信
admin-service
OPS BFF · AUDIT · RBAC
运营后台 BFF · 审计日志 · RBAC / TOTP · 提现审核 · 实物履约。 业务写操作转发到对应服务
5 SIGN BOUNDARY + EXTERNAL CHAINS · 签名隔离 + 外部链 KEY ISOLATION · OFF-PLATFORM TARGETS
sign-service
HOT WALLET KEYS · ISOLATED SUBNET
唯一持有热钱包私钥,独立 VPC subnet。 仅暴露内部签名 API + IP 白名单,业务服务通过 mTLS 调用。 AWS Secrets Manager / KMS 加密。
Phase 2 计划:多签路径接入。
DO NOT MERGE INTO BUSINESS NET
外部链 · External Chains(不归我们管,chain-service 通过 RPC 接入)
BSC · EVM BSC MAINNET BSC TESTNET + ANVIL DEV FORK WEB3J / VIEM
TRON · TVM TRON MAINNET NILE TESTNET TRONWEB / TRON4J
6 DATA INFRA · 数据基础设施 AWS MANAGED · MULTI-AZ
MySQL 8
RDS · MULTI-AZ
用户 / 订单 / 期次 / 资金 / 账本 / 审计;主从 + 跨 AZ 同步。
Redis
ELASTICACHE · CLUSTER
会话 / 排行榜 / 库存锁 / 分布式锁 / 限流计数 / 缓存。
Kafka
MSK · EVENT BUS
订单事件 / 开奖事件 / 链上事件 / 推送事件 · 消费者解耦。
Nacos
CONFIG · DISCOVERY
配置中心 + 服务发现;one.draw.mode 等开关在这里。
SMART CONTRACTS · 智能合约 · ON-CHAIN SOLIDITY + FOUNDRY
LotteryRound.sol
FULL_CHAIN ROUND LOGIC
活动期次 / 号码池 / 购票 / 抽奖 / 结算全链上实现(FULL_CHAIN 模式,v1.0 保留不默认启用)。 部署到 EVM 链 BSC(主)/ ETH(备);TRON 合约玩法后续开放。 事件由 chain-service 监听并回流业务库。
DrawCoordinator.sol
VRF_ONLY MODE · BSC ONLY
仅向 Chainlink VRF 请求随机数,结果回流后由 game-service 计算中奖号码。 仅 BSC 可用(Chainlink VRF 不支持 TRON); TRON 侧 VRF_ONLY 的替代 RNG 方案 后续开放
BSC ONLY · TRON 后续开放
Treasury.sol
BATCH PAYOUT · 后续开放
批量出款合约,省 gas。v1.0 baseline 不依赖 —— v1.0 提现就是 sign-service 直接签 TRC-20 / BEP-20 transfer,单笔出。 高频出款触达 gas 成本阈值后再上线。
PHASE 2 · OPTIMIZATION
图例 LEGEND
EDGE · 入口

面向用户的入口;TG Mini App / Web / Bot。

GATEWAY · 网关

路由 · 鉴权 · 限流 · i18n · 服务发现。

BUSINESS · 业务服务

无私钥的业务服务,私有 subnet 内通信。

SIGN · 签名隔离

独立 subnet · 持有热钱包私钥 · IP 白名单。

CHAIN / DATA · 链 + 数据

chain-service · MySQL · Redis · Kafka · Nacos。

CONTRACT · 智能合约

Solidity 合约部署到 EVM 链(BSC / ETH / Sepolia / Anvil);TRON v1.0 做 USDT 充值 / 提现 / 归集(TRON 合约玩法后续开放);BTC 后续开放。

▼ 业务调用

cyan 箭头:业务服务调用链。

▼ 签名隔离

red 箭头:只走 sign-service mTLS。

关键决策 KEY DECISIONS

架构 ARCHITECTURE

  • 9 服务拆分锁定:不再合并、不再拆分。gateway / user / agent / wallet / game / chain / sign / sms / admin-service
  • sign-service 私钥边界:业务服务永远不持有私钥,签名只通过 mTLS 内部 API。
  • admin-service 与 SRE 运维面分离:运营 ≠ 运维,SRE 面板独立。
  • Nacos 是唯一开关源one.draw.modeone.chain..* 等。

开奖 DRAW ENGINE

  • 三种实现可热切FULL_CHAIN / VRF_ONLY / BACKEND@ConditionalOnProperty 选取。
  • FULL_CHAIN:抽奖逻辑全部在 Solidity 内,最强信任但 gas 贵。
  • VRF_ONLY:链上 VRF 提供随机,链下计算结果。折中方案。
  • BACKEND:完全链下,留作降级 / 监管不允许链上抽奖的兜底。
  • 共用一个 DrawEngine 接口,决策延后到上线前 Phase 1 选型。

多链 BSC / ETH / TRON(BTC 后续开放)

  • ChainAdapter 接口:广播 / 监听 / 区块高度 / hash 取数。
  • 方言实现:BSC / ETH(EVM) · TRON(TRC20,USDT 充值 / 提现 / 归集)。BTC 后续开放。
  • env × executionChain 正交Env 使用 LOCAL/TESTNET/STAGING/PRODUCTIONExecutionChain 使用 ETH_LOCAL/ETH_SEPOLIA/ETH_MAINNET/BSC_LOCAL/BSC_TESTNET/BSC_MAINNET/TRON_LOCAL/TRON_TESTNET/TRON_MAINNET/BTC_LOCAL/BTC_TESTNET/BTC_MAINNET
  • 本地 Anvil:开发环境跑本地 EVM 链,避免依赖测试网。
  • USDT 多链充值:BSC / ETH / TRON 充值统一记入 wallet-service USDT 账本。

资金 MONEY FLOW

  • 充值:用户转入用户专属地址 → chain-service 监听 → wallet-service 入账。
  • 购票:扣余额(账本),订单事件写入 Kafka,game-service 消费。
  • 开奖:根据 draw.mode 触发对应 DrawEngine。
  • 中奖发放:sign-service 签名提现 tx → chain-service 广播 → 链上到账。
  • 归集:用户地址余额定期归集到热钱包;冷钱包储备由人工触发。