Commit Graph

5 Commits

Author SHA1 Message Date
hailin 4817d92507 feat(adoption-injection): 认种自动 fUSDT 注入做市商钱包 + CDC outbox 修复
## contribution-service 改动

### 1. CDC Outbox 实时发布修复
- adoption-synced.handler: handleCreate/handleUpdate 在同步数据后立即写入
  AdoptionSynced outbox 事件,确保 mining-admin-service 实时接收认种同步
- referral-synced.handler: 同理,写入 ReferralSynced outbox 事件
- 之前只有手动调用 /admin/adoptions/publish-all 才会创建 outbox 事件

### 2. 认种 fUSDT 注入事件
- 新增 AdoptionFusdtInjectionRequestedEvent 事件类
  - 当认种状态变为 MINING_ENABLED 时触发
  - 写入 outbox,topic: contribution.adoptionfusdtinjectionrequested
  - payload 含: adoptionId, accountSequence, treeCount, adoptionDate, amount
  - 转账金额 = treeCount × 5760 fUSDT

## mining-blockchain-service 改动

### 3. fUSDT 注入钱包 MPC 签名支持
- mpc-signing.client: 新增 FUSDT_INJECTION_WALLET_USERNAME/ADDRESS 配置
  isFusdtInjectionConfigured(), signMessageAsFusdtInjection() 等方法
- erc20-transfer.service: IMpcSigningClient 接口增加注入钱包方法
  新增 transferFusdtAsInjectionWallet() 转账方法(含余额检查、MPC签名、广播)

### 4. 认种注入 Kafka 消费者
- adoption-injection-consumer.service: 订阅 cdc.contribution.outbox
  过滤 AdoptionFusdtInjectionRequested 事件,解析 Debezium 扁平化消息格式
- adoption-injection.handler: 处理注入事件
  - 幂等性检查(已确认的跳过)
  - 写入 adoption_injection_records 分类账(PROCESSING 状态)
  - 从注入钱包转 fUSDT 到做市商钱包
  - 成功: markConfirmed (txHash, blockNumber, gasUsed)
  - 失败: markFailed (errorMessage),支持重试
  - 发布 confirmed/failed Kafka 事件

### 5. 分类账持久化
- Prisma schema: 新增 AdoptionInjectionRecord 模型 (adoption_injection_records 表)
  字段: adoption_id, account_sequence, tree_count, adoption_date, from/to_address,
  amount, chain_type, tx_hash, block_number, gas_used, memo, status, error_message
  索引: uk_adoption_id (唯一), idx_injection_account, idx_injection_status 等
- migration: 20250203000000_add_adoption_injection_records
- Repository 接口 + 实现: save, findByAdoptionId, markConfirmed, markFailed

### 6. 启动余额检查
- main.ts: 启动时异步查询注入钱包 fUSDT 余额,余额为 0 时输出警告日志
  新增注入钱包配置验证

## 部署前需添加环境变量 (.env)
FUSDT_INJECTION_WALLET_USERNAME=wallet-bff20b69
FUSDT_INJECTION_WALLET_ADDRESS=0x7BDB89dA47F16869c90446C41e70A00dDc432DBB

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 05:25:56 -08:00
hailin f39fd52001 feat(c2c-bot): rename HOT_WALLET to C2C_BOT_WALLET and change dUSDT to 绿积分
- Rename env vars HOT_WALLET_ADDRESS/USERNAME to C2C_BOT_WALLET_ADDRESS/USERNAME
  in mining-blockchain-service to avoid conflict with existing hot wallet
- Update docker-compose.2.0.yml with new env var names
- Change all "dUSDT" labels to "绿积分" on C2C Bot admin page

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 08:40:45 -08:00
hailin 219fb7bb69 fix(mining-blockchain): 移除旧的 MARKET_MAKER_* 变量名引用
- main.ts: 使用 EUSDT/FUSDT_MARKET_MAKER_* 验证配置
- blockchain.config.ts: 使用 eusdtMarketMaker/fusdtMarketMaker 配置
- market-maker-deposit-detection.service.ts: 每种代币使用独立的做市商钱包地址

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 19:20:48 -08:00
hailin 1974c43eba feat(market-maker): 实现做市商区块链充值监控功能
- mining-blockchain-service:
  - 添加 MarketMakerDeposit 和 MarketMakerBlockCheckpoint 表
  - 添加 eUSDT/fUSDT 代币合约配置
  - 实现做市商钱包充值检测服务
  - 添加启动时配置验证和错误日志
  - 发布充值确认事件到 Kafka

- trading-service:
  - 添加做市商充提记录表 (MarketMakerDeposit, MarketMakerWithdraw)
  - 添加 Kafka 消费者监听充值确认事件
  - 实现充值自动入账和流水记录

- 部署配置:
  - 更新 docker-compose 添加新环境变量
  - 更新 deploy-mining.sh 添加 blockchain 服务

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 17:13:41 -08:00
hailin 042a52550b feat(c2c): 实现C2C Bot自动交易系统
- 创建独立的 mining-blockchain-service 服务 (基于 blockchain-service)
- 添加 dUSDT 转账接口供 C2C Bot 调用
- 实现 C2cBotService 自动购买卖单
- 实现 C2cBotScheduler 每10秒扫描待处理卖单
- 添加 BlockchainClient 和 IdentityClient 客户端
- 更新 C2cOrder 模型添加 Bot 购买相关字段
- 使用 MPC 热钱包签名交易

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 07:10:25 -08:00