From 72eb3aeaf351a0bb426e0c04a98eabeac6e10690 Mon Sep 17 00:00:00 2001 From: Shunji Zhan Date: Mon, 5 Feb 2024 14:26:55 +0800 Subject: [PATCH] fix finalized height when finalized is faster than best height --- packages/eth-providers/src/base-provider.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/eth-providers/src/base-provider.ts b/packages/eth-providers/src/base-provider.ts index c0a35ec60..da8c7eecf 100644 --- a/packages/eth-providers/src/base-provider.ts +++ b/packages/eth-providers/src/base-provider.ts @@ -341,11 +341,18 @@ export abstract class BaseProvider extends AbstractProvider { } get finalizedBlockHash() { - return firstValueFrom(this.finalized$).then(({ hash }) => hash); + return firstValueFrom(this.finalized$).then( + ({ hash: chainFinalizedHash, number: chainFinalizedNumber }) => + chainFinalizedNumber <= this.bestBlockNumber + ? chainFinalizedHash + : this.bestBlockHash + ); } get finalizedBlockNumber() { - return firstValueFrom(this.finalized$).then(({ number }) => number); + return firstValueFrom(this.finalized$).then( + ({ number: chainFinalizedNumber }) => Math.min(this.bestBlockNumber, chainFinalizedNumber) + ); } static isProvider(value: any): value is Provider {