From db3e0ba1bd5606855560353ce044a08b23b261f3 Mon Sep 17 00:00:00 2001 From: hailin Date: Wed, 10 Dec 2025 12:19:29 -0800 Subject: [PATCH] fix(blockchain): fix deposit stuck in CONFIRMING status MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The updateConfirmations logic only checked for DETECTED status when confirming, so deposits that transitioned to CONFIRMING would never be confirmed even with enough confirmations. Changed condition to accept both DETECTED and CONFIRMING status. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../deposit-transaction/deposit-transaction.aggregate.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/backend/services/blockchain-service/src/domain/aggregates/deposit-transaction/deposit-transaction.aggregate.ts b/backend/services/blockchain-service/src/domain/aggregates/deposit-transaction/deposit-transaction.aggregate.ts index 6c7f6cc3..5a8a9881 100644 --- a/backend/services/blockchain-service/src/domain/aggregates/deposit-transaction/deposit-transaction.aggregate.ts +++ b/backend/services/blockchain-service/src/domain/aggregates/deposit-transaction/deposit-transaction.aggregate.ts @@ -161,12 +161,14 @@ export class DepositTransaction extends AggregateRoot { const confirmations = Number(currentBlockNumber.diff(this.props.blockNumber)); this.props.confirmations = Math.max(0, confirmations); + // 检查是否达到确认要求(状态为 DETECTED 或 CONFIRMING 都可以确认) if ( this.props.confirmations >= requiredConfirmations && - this.props.status === DepositStatus.DETECTED + (this.props.status === DepositStatus.DETECTED || this.props.status === DepositStatus.CONFIRMING) ) { this.confirm(); } else if (this.props.status === DepositStatus.DETECTED) { + // 首次检测但确认数不够,标记为确认中 this.props.status = DepositStatus.CONFIRMING; } }