diff --git a/packages/api/src/extrinsic/extensions/known/CheckMortality.ts b/packages/api/src/extrinsic/extensions/known/CheckMortality.ts index e33f5b02..be4500f2 100644 --- a/packages/api/src/extrinsic/extensions/known/CheckMortality.ts +++ b/packages/api/src/extrinsic/extensions/known/CheckMortality.ts @@ -1,13 +1,12 @@ import { BlockHash, EraLike, Hash, Header } from '@dedot/codecs'; import { SignerPayloadJSON } from '@dedot/types'; import { assert, bnMin, hexToNumber, isZeroHex, numberToHex, u8aToHex } from '@dedot/utils'; -import { V2Client } from '../../../client/V2Client.js'; import { SignedExtension } from '../SignedExtension.js'; export const MAX_FINALITY_LAG: number = 5; export const FALLBACK_MAX_HASH_COUNT: number = 250; export const FALLBACK_PERIOD: number = 6 * 1000; -export const MORTAL_PERIOD: number = 5 * 60 * 1000; +export const MORTAL_PERIOD: number = 12 * 60 * 1000; interface SigningHeader { hash: BlockHash; @@ -43,7 +42,6 @@ export class CheckMortality extends SignedExtension { } async #getSigningHeaderRpcV2(): Promise { - // TODO similar to the legacy, we should account for the case finality is lagging behind const finalizedBlock = await this.client.block.finalized(); return { diff --git a/packages/api/src/json-rpc/group/ChainHead/ChainHead.ts b/packages/api/src/json-rpc/group/ChainHead/ChainHead.ts index a290e933..a26fa993 100644 --- a/packages/api/src/json-rpc/group/ChainHead/ChainHead.ts +++ b/packages/api/src/json-rpc/group/ChainHead/ChainHead.ts @@ -335,12 +335,13 @@ export class ChainHead extends JsonRpcGroup { // Build initial pinned blocks this.#finalizedHash = finalizedBlockHashes.at(-1); - if (!this.#bestHash) { + this.#pinnedBlocks = this.#buildInitialPinnedBlocks(finalizedBlockHashes, this.#finalizedRuntime); + + if (!this.#bestHash || (this.#bestHash && !this.findBlock(this.#bestHash))) { this.#bestHash = this.#finalizedHash; + this.#lastBestBlockNumber = undefined; // Reset to avoid stale gap detection after recovery } - this.#pinnedBlocks = this.#buildInitialPinnedBlocks(finalizedBlockHashes, this.#finalizedRuntime); - await this.#updateBlockNumbersAndParents(finalizedBlockHashes, prevPinnedBlocks); // Handle first initialization or reconnection