66 lines
2.7 KiB
TypeScript
66 lines
2.7 KiB
TypeScript
import { registerAs } from '@nestjs/config';
|
|
|
|
/**
|
|
* 区块链配置
|
|
*
|
|
* 支持主网和测试网切换,通过 NETWORK_MODE 环境变量控制:
|
|
* - NETWORK_MODE=mainnet (默认): 使用主网配置
|
|
* - NETWORK_MODE=testnet: 使用测试网配置
|
|
*
|
|
* 测试网配置:
|
|
* - BSC Testnet: Chain ID 97, 水龙头: https://testnet.bnbchain.org/faucet-smart
|
|
* - KAVA Testnet: Chain ID 2221, 水龙头: https://faucet.kava.io
|
|
*/
|
|
export default registerAs('blockchain', () => {
|
|
const networkMode = process.env.NETWORK_MODE || 'mainnet';
|
|
const isTestnet = networkMode === 'testnet';
|
|
|
|
return {
|
|
// 网络模式
|
|
networkMode,
|
|
isTestnet,
|
|
|
|
// 通用配置
|
|
scanIntervalMs: parseInt(process.env.BLOCK_SCAN_INTERVAL_MS || '5000', 10),
|
|
confirmationsRequired: parseInt(process.env.BLOCK_CONFIRMATIONS_REQUIRED || (isTestnet ? '3' : '12'), 10),
|
|
scanBatchSize: parseInt(process.env.BLOCK_SCAN_BATCH_SIZE || '100', 10),
|
|
|
|
// KAVA 配置
|
|
kava: isTestnet
|
|
? {
|
|
// KAVA Testnet
|
|
rpcUrl: process.env.KAVA_RPC_URL || 'https://evm.testnet.kava.io',
|
|
chainId: parseInt(process.env.KAVA_CHAIN_ID || '2221', 10),
|
|
// 测试网 USDT 合约 (自定义部署的 TestUSDT)
|
|
usdtContract: process.env.KAVA_USDT_CONTRACT || '0xc12f6A4A7Fd0965085B044A67a39CcA2ff7fe0dF',
|
|
confirmations: parseInt(process.env.KAVA_CONFIRMATIONS || '3', 10),
|
|
}
|
|
: {
|
|
// KAVA Mainnet
|
|
rpcUrl: process.env.KAVA_RPC_URL || 'https://evm.kava.io',
|
|
chainId: parseInt(process.env.KAVA_CHAIN_ID || '2222', 10),
|
|
// dUSDT (绿积分) 合约地址 - Durian USDT, 精度6位
|
|
usdtContract: process.env.KAVA_USDT_CONTRACT || '0xA9F3A35dBa8699c8C681D8db03F0c1A8CEB9D7c3',
|
|
confirmations: parseInt(process.env.KAVA_CONFIRMATIONS || '12', 10),
|
|
},
|
|
|
|
// BSC 配置
|
|
bsc: isTestnet
|
|
? {
|
|
// BSC Testnet (BNB Smart Chain Testnet)
|
|
rpcUrl: process.env.BSC_RPC_URL || 'https://data-seed-prebsc-1-s1.binance.org:8545',
|
|
chainId: parseInt(process.env.BSC_CHAIN_ID || '97', 10),
|
|
// BSC Testnet 官方测试 USDT 合约
|
|
usdtContract: process.env.BSC_USDT_CONTRACT || '0x337610d27c682E347C9cD60BD4b3b107C9d34dDd',
|
|
confirmations: parseInt(process.env.BSC_CONFIRMATIONS || '3', 10),
|
|
}
|
|
: {
|
|
// BSC Mainnet
|
|
rpcUrl: process.env.BSC_RPC_URL || 'https://bsc-dataseed.binance.org',
|
|
chainId: parseInt(process.env.BSC_CHAIN_ID || '56', 10),
|
|
usdtContract: process.env.BSC_USDT_CONTRACT || '0x55d398326f99059fF775485246999027B3197955',
|
|
confirmations: parseInt(process.env.BSC_CONFIRMATIONS || '15', 10),
|
|
},
|
|
};
|
|
});
|