diff --git a/src/payment/models/payout/services/payout-defichain.service.ts b/src/payment/models/payout/services/payout-defichain.service.ts index d9c38f1980..da63652b2e 100644 --- a/src/payment/models/payout/services/payout-defichain.service.ts +++ b/src/payment/models/payout/services/payout-defichain.service.ts @@ -48,6 +48,10 @@ export class PayoutDeFiChainService { if (context === PayoutOrderContext.STAKING_REWARD) return Config.blockchain.default.intWalletAddress; } + isLightWalletAddress(address: string): boolean { + return ['df1', 'tf1'].includes(address.slice(0, 3)); + } + private getClient(context: PayoutOrderContext): DeFiClient { if (context === PayoutOrderContext.BUY_CRYPTO) return this.#outClient; if (context === PayoutOrderContext.STAKING_REWARD) return this.#intClient; diff --git a/src/payment/models/payout/strategies/payout/payout-defichain-token.strategy.ts b/src/payment/models/payout/strategies/payout/payout-defichain-token.strategy.ts index 081684f23b..926dd7c58c 100644 --- a/src/payment/models/payout/strategies/payout/payout-defichain-token.strategy.ts +++ b/src/payment/models/payout/strategies/payout/payout-defichain-token.strategy.ts @@ -65,10 +65,16 @@ export class PayoutDeFiChainTokenStrategy extends PayoutDeFiChainStrategy { private async checkUtxoForGroup(orders: PayoutOrder[]): Promise { for (const order of orders) { - await this.checkUtxo(order.destinationAddress); + if (this.isEligibleForMinimalUtxo(order.destinationAddress)) { + await this.checkUtxo(order.destinationAddress); + } } } + private isEligibleForMinimalUtxo(address: string): boolean { + return this.defichainService.isLightWalletAddress(address); + } + private async checkUtxo(address: string): Promise { const utxo = await this.defichainService.getUtxoForAddress(address);