rwadurian/backend/services/mining-blockchain-service
hailin 3635369a8a feat(mining-blockchain): RPC端点自动故障转移,连续失败3分钟后切换备选节点
问题:Kava主网RPC (evm.kava.io) 偶发503,导致mining-blockchain-service
所有链上操作失败(转账、余额查询、区块扫描等)。

方案:新增RpcProviderManager单例服务,统一管理各链的JsonRpcProvider实例,
当某个RPC端点连续失败超过3分钟后自动轮转到下一个备选端点。

新增文件:
- rpc-provider-manager.service.ts: 核心故障转移管理器
  · 每条链维护 provider/urls/currentIndex/failureState
  · reportSuccess() 重置失败状态
  · reportFailure() 记录失败,>=3分钟触发 switchToNextUrl()
  · 轮转创建新 JsonRpcProvider,替换旧实例
  · 每30秒记录一次失败日志,避免日志刷屏

修改文件:
- blockchain.config.ts: 新增 rpcUrls 配置字段(KAVA_RPC_URLS/BSC_RPC_URLS)
- chain-config.service.ts: 解析逗号分隔的URL列表,回退到单个rpcUrl
- domain.module.ts: 注册并导出 RpcProviderManager
- index.ts: 导出 RpcProviderManager
- evm-provider.adapter.ts: 委托RpcProviderManager获取provider,
  所有公开方法通过executeWithFailover包裹,自动上报成功/失败
- erc20-transfer.service.ts: 移除本地providers Map,改用RpcProviderManager,
  新增isRpcConnectionError()区分RPC网络错误与合约执行错误
- docker-compose.2.0.yml: 添加KAVA_RPC_URLS默认4个端点
- .env.example: 添加KAVA_RPC_URLS配置说明

默认端点仍为 evm.kava.io,备选: evm.kava-rpc.com,
kava-evm-rpc.publicnode.com, rpc.ankr.com/kava_evm

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 07:06:31 -08:00
..
contracts feat(c2c): 实现C2C Bot自动交易系统 2026-01-28 07:10:25 -08:00
prisma feat(market-maker): 实现做市商区块链充值监控功能 2026-01-28 17:13:41 -08:00
scripts feat(c2c): 实现C2C Bot自动交易系统 2026-01-28 07:10:25 -08:00
src feat(mining-blockchain): RPC端点自动故障转移,连续失败3分钟后切换备选节点 2026-02-01 07:06:31 -08:00
.dockerignore feat(c2c): 实现C2C Bot自动交易系统 2026-01-28 07:10:25 -08:00
.env.example feat(mining-blockchain): RPC端点自动故障转移,连续失败3分钟后切换备选节点 2026-02-01 07:06:31 -08:00
.eslintrc.js feat(c2c): 实现C2C Bot自动交易系统 2026-01-28 07:10:25 -08:00
.gitignore feat(c2c): 实现C2C Bot自动交易系统 2026-01-28 07:10:25 -08:00
.prettierrc feat(c2c): 实现C2C Bot自动交易系统 2026-01-28 07:10:25 -08:00
DEVELOPMENT_GUIDE.md feat(c2c): 实现C2C Bot自动交易系统 2026-01-28 07:10:25 -08:00
Dockerfile feat(c2c): 实现C2C Bot自动交易系统 2026-01-28 07:10:25 -08:00
deploy.sh feat(c2c): 实现C2C Bot自动交易系统 2026-01-28 07:10:25 -08:00
docker-compose.yml feat(mining-blockchain-service): mining_ 前缀隔离,与 blockchain-service 100% 资源分离 2026-01-30 01:58:45 -08:00
nest-cli.json feat(c2c): 实现C2C Bot自动交易系统 2026-01-28 07:10:25 -08:00
package-lock.json feat(c2c): 实现C2C Bot自动交易系统 2026-01-28 07:10:25 -08:00
package.json feat(c2c): 实现C2C Bot自动交易系统 2026-01-28 07:10:25 -08:00
tsconfig.json feat(c2c): 实现C2C Bot自动交易系统 2026-01-28 07:10:25 -08:00