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>
This commit is contained in:
parent
3b95a8a332
commit
219fb7bb69
|
|
@ -23,6 +23,7 @@ import { MarketMakerDepositConfirmedEvent } from '@/domain/events';
|
|||
interface TokenConfig {
|
||||
assetType: MarketMakerAssetType;
|
||||
contract: string;
|
||||
walletAddress: string;
|
||||
name: string;
|
||||
}
|
||||
|
||||
|
|
@ -36,7 +37,6 @@ interface TokenConfig {
|
|||
export class MarketMakerDepositDetectionService implements OnModuleInit {
|
||||
private readonly logger = new Logger(MarketMakerDepositDetectionService.name);
|
||||
private readonly scanBatchSize: number;
|
||||
private readonly marketMakerWallet: string;
|
||||
private readonly tokenConfigs: TokenConfig[];
|
||||
private isEnabled: boolean = false;
|
||||
|
||||
|
|
@ -54,49 +54,57 @@ export class MarketMakerDepositDetectionService implements OnModuleInit {
|
|||
private readonly outboxRepo: IOutboxEventRepository,
|
||||
) {
|
||||
this.scanBatchSize = this.configService.get<number>('blockchain.scanBatchSize', 100);
|
||||
this.marketMakerWallet = this.configService.get<string>('blockchain.marketMaker.walletAddress', '');
|
||||
|
||||
// 配置代币信息
|
||||
// 配置代币信息和对应的做市商钱包
|
||||
const eUsdtContract = this.configService.get<string>('blockchain.kava.eUsdtContract', '');
|
||||
const fUsdtContract = this.configService.get<string>('blockchain.kava.fUsdtContract', '');
|
||||
const eusdtMarketMakerAddress = this.configService.get<string>('blockchain.eusdtMarketMaker.walletAddress', '');
|
||||
const fusdtMarketMakerAddress = this.configService.get<string>('blockchain.fusdtMarketMaker.walletAddress', '');
|
||||
|
||||
this.tokenConfigs = [
|
||||
{
|
||||
assetType: MarketMakerAssetType.EUSDT,
|
||||
contract: eUsdtContract,
|
||||
walletAddress: eusdtMarketMakerAddress,
|
||||
name: '积分股 (eUSDT)',
|
||||
},
|
||||
{
|
||||
assetType: MarketMakerAssetType.FUSDT,
|
||||
contract: fUsdtContract,
|
||||
walletAddress: fusdtMarketMakerAddress,
|
||||
name: '积分值 (fUSDT)',
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
async onModuleInit() {
|
||||
// 验证配置
|
||||
if (!this.marketMakerWallet) {
|
||||
// 验证配置:检查每种代币的做市商钱包地址
|
||||
const validConfigs = this.tokenConfigs.filter((t) => t.contract && t.walletAddress);
|
||||
|
||||
if (validConfigs.length === 0) {
|
||||
this.logger.warn(
|
||||
'[INIT] 做市商钱包地址未配置 (MARKET_MAKER_WALLET_ADDRESS),做市商充值监控功能已禁用',
|
||||
'[INIT] 没有有效的做市商钱包配置,做市商充值监控功能已禁用',
|
||||
);
|
||||
this.isEnabled = false;
|
||||
return;
|
||||
}
|
||||
|
||||
// 验证代币合约配置
|
||||
const missingContracts = this.tokenConfigs.filter((t) => !t.contract);
|
||||
if (missingContracts.length > 0) {
|
||||
this.logger.warn(
|
||||
`[INIT] 以下代币合约未配置: ${missingContracts.map((t) => t.name).join(', ')}`,
|
||||
);
|
||||
}
|
||||
// 验证代币合约和钱包配置
|
||||
this.tokenConfigs.forEach((t) => {
|
||||
if (!t.walletAddress) {
|
||||
this.logger.warn(`[INIT] ${t.name} 做市商钱包地址未配置,该代币充值监控已禁用`);
|
||||
}
|
||||
if (!t.contract) {
|
||||
this.logger.warn(`[INIT] ${t.name} 代币合约未配置`);
|
||||
}
|
||||
});
|
||||
|
||||
this.isEnabled = true;
|
||||
this.logger.log(`[INIT] MarketMakerDepositDetectionService initialized`);
|
||||
this.logger.log(`[INIT] 做市商钱包地址: ${this.marketMakerWallet}`);
|
||||
this.tokenConfigs.forEach((t) => {
|
||||
this.logger.log(`[INIT] ${t.name}: ${t.contract || '未配置'}`);
|
||||
if (t.contract && t.walletAddress) {
|
||||
this.logger.log(`[INIT] ${t.name}: 合约=${t.contract}, 钱包=${t.walletAddress}`);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -111,7 +119,8 @@ export class MarketMakerDepositDetectionService implements OnModuleInit {
|
|||
|
||||
// 扫描每种代币
|
||||
for (const tokenConfig of this.tokenConfigs) {
|
||||
if (!tokenConfig.contract) continue;
|
||||
// 跳过没有合约或钱包地址的代币
|
||||
if (!tokenConfig.contract || !tokenConfig.walletAddress) continue;
|
||||
|
||||
try {
|
||||
await this.scanTokenDeposits(chainType, tokenConfig);
|
||||
|
|
@ -169,9 +178,9 @@ export class MarketMakerDepositDetectionService implements OnModuleInit {
|
|||
tokenConfig.contract,
|
||||
);
|
||||
|
||||
// 过滤出充值到做市商钱包的交易
|
||||
// 过滤出充值到对应做市商钱包的交易
|
||||
const deposits = events.filter(
|
||||
(e) => e.to.toLowerCase() === this.marketMakerWallet.toLowerCase(),
|
||||
(e) => e.to.toLowerCase() === tokenConfig.walletAddress.toLowerCase(),
|
||||
);
|
||||
|
||||
// 处理充值
|
||||
|
|
@ -233,7 +242,7 @@ export class MarketMakerDepositDetectionService implements OnModuleInit {
|
|||
await this.depositRepo.save(deposit);
|
||||
|
||||
this.logger.log(
|
||||
`[DEPOSIT] ${tokenConfig.name} deposit detected: ${event.txHash.slice(0, 10)}... -> ${this.marketMakerWallet.slice(0, 10)}... (${amountFormatted})`,
|
||||
`[DEPOSIT] ${tokenConfig.name} deposit detected: ${event.txHash.slice(0, 10)}... -> ${tokenConfig.walletAddress.slice(0, 10)}... (${amountFormatted})`,
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -75,12 +75,16 @@ export default registerAs('blockchain', () => {
|
|||
confirmations: parseInt(process.env.BSC_CONFIRMATIONS || '15', 10),
|
||||
},
|
||||
|
||||
// 做市商 MPC 钱包配置
|
||||
marketMaker: {
|
||||
// 做市商 MPC 钱包地址(用于充值监控和提现)
|
||||
walletAddress: process.env.MARKET_MAKER_WALLET_ADDRESS || '',
|
||||
// MPC 用户名(用于签名)
|
||||
mpcUsername: process.env.MARKET_MAKER_MPC_USERNAME || '',
|
||||
// eUSDT (积分股) 做市商 MPC 钱包配置
|
||||
eusdtMarketMaker: {
|
||||
walletAddress: process.env.EUSDT_MARKET_MAKER_ADDRESS || '',
|
||||
mpcUsername: process.env.EUSDT_MARKET_MAKER_USERNAME || '',
|
||||
},
|
||||
|
||||
// fUSDT (积分值) 做市商 MPC 钱包配置
|
||||
fusdtMarketMaker: {
|
||||
walletAddress: process.env.FUSDT_MARKET_MAKER_ADDRESS || '',
|
||||
mpcUsername: process.env.FUSDT_MARKET_MAKER_USERNAME || '',
|
||||
},
|
||||
};
|
||||
});
|
||||
|
|
|
|||
|
|
@ -77,43 +77,48 @@ async function bootstrap() {
|
|||
* 如果缺少必要配置,输出明确的错误日志
|
||||
*/
|
||||
function validateBlockchainConfig(configService: ConfigService, logger: Logger) {
|
||||
const errors: string[] = [];
|
||||
const warnings: string[] = [];
|
||||
|
||||
// 做市商钱包配置验证
|
||||
const marketMakerWallet = configService.get<string>('blockchain.marketMaker.walletAddress');
|
||||
const marketMakerMpcUsername = configService.get<string>('blockchain.marketMaker.mpcUsername');
|
||||
// eUSDT (积分股) 做市商钱包配置验证
|
||||
const eusdtMarketMakerAddress = configService.get<string>('blockchain.eusdtMarketMaker.walletAddress');
|
||||
const eusdtMarketMakerUsername = configService.get<string>('blockchain.eusdtMarketMaker.mpcUsername');
|
||||
|
||||
if (!marketMakerWallet) {
|
||||
errors.push(
|
||||
'[CONFIG ERROR] MARKET_MAKER_WALLET_ADDRESS 未配置!做市商充值监控功能将不可用。' +
|
||||
'请在 .env 中配置: MARKET_MAKER_WALLET_ADDRESS=0x...'
|
||||
);
|
||||
logger.log(`[CONFIG] eUSDT (积分股) 做市商钱包配置:`);
|
||||
if (eusdtMarketMakerAddress) {
|
||||
logger.log(` - 地址: ${eusdtMarketMakerAddress}`);
|
||||
} else {
|
||||
logger.log(`[CONFIG] 做市商钱包地址: ${marketMakerWallet}`);
|
||||
warnings.push('[CONFIG WARNING] EUSDT_MARKET_MAKER_ADDRESS 未配置!eUSDT 充值监控功能将不可用。');
|
||||
}
|
||||
if (!eusdtMarketMakerUsername) {
|
||||
warnings.push('[CONFIG WARNING] EUSDT_MARKET_MAKER_USERNAME 未配置!eUSDT 转账功能将不可用。');
|
||||
}
|
||||
|
||||
if (!marketMakerMpcUsername) {
|
||||
warnings.push(
|
||||
'[CONFIG WARNING] MARKET_MAKER_MPC_USERNAME 未配置!做市商提现功能将不可用。' +
|
||||
'请在 .env 中配置: MARKET_MAKER_MPC_USERNAME=your_mpc_username'
|
||||
);
|
||||
// fUSDT (积分值) 做市商钱包配置验证
|
||||
const fusdtMarketMakerAddress = configService.get<string>('blockchain.fusdtMarketMaker.walletAddress');
|
||||
const fusdtMarketMakerUsername = configService.get<string>('blockchain.fusdtMarketMaker.mpcUsername');
|
||||
|
||||
logger.log(`[CONFIG] fUSDT (积分值) 做市商钱包配置:`);
|
||||
if (fusdtMarketMakerAddress) {
|
||||
logger.log(` - 地址: ${fusdtMarketMakerAddress}`);
|
||||
} else {
|
||||
warnings.push('[CONFIG WARNING] FUSDT_MARKET_MAKER_ADDRESS 未配置!fUSDT 充值监控功能将不可用。');
|
||||
}
|
||||
if (!fusdtMarketMakerUsername) {
|
||||
warnings.push('[CONFIG WARNING] FUSDT_MARKET_MAKER_USERNAME 未配置!fUSDT 转账功能将不可用。');
|
||||
}
|
||||
|
||||
// 热钱包配置验证
|
||||
// C2C Bot 热钱包配置验证
|
||||
const hotWalletAddress = configService.get<string>('HOT_WALLET_ADDRESS');
|
||||
const hotWalletUsername = configService.get<string>('HOT_WALLET_USERNAME');
|
||||
|
||||
if (!hotWalletAddress) {
|
||||
warnings.push(
|
||||
'[CONFIG WARNING] HOT_WALLET_ADDRESS 未配置!普通用户的转账功能将不可用。'
|
||||
);
|
||||
logger.log(`[CONFIG] C2C Bot 热钱包配置:`);
|
||||
if (hotWalletAddress) {
|
||||
logger.log(` - 地址: ${hotWalletAddress}`);
|
||||
} else {
|
||||
warnings.push('[CONFIG WARNING] HOT_WALLET_ADDRESS 未配置!C2C Bot 转账功能将不可用。');
|
||||
}
|
||||
|
||||
if (!hotWalletUsername) {
|
||||
warnings.push(
|
||||
'[CONFIG WARNING] HOT_WALLET_USERNAME 未配置!MPC 签名功能将不可用。'
|
||||
);
|
||||
warnings.push('[CONFIG WARNING] HOT_WALLET_USERNAME 未配置!C2C Bot MPC 签名功能将不可用。');
|
||||
}
|
||||
|
||||
// KAVA 代币合约配置日志
|
||||
|
|
@ -129,11 +134,8 @@ function validateBlockchainConfig(configService: ConfigService, logger: Logger)
|
|||
// 输出所有警告
|
||||
warnings.forEach(warning => logger.warn(warning));
|
||||
|
||||
// 输出所有错误
|
||||
errors.forEach(error => logger.error(error));
|
||||
|
||||
if (errors.length > 0) {
|
||||
logger.error(`[CONFIG] 发现 ${errors.length} 个配置错误,部分功能将不可用!`);
|
||||
if (warnings.length > 0) {
|
||||
logger.warn(`[CONFIG] 发现 ${warnings.length} 个配置警告,部分功能将不可用!`);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue