From 9e8b1fb60b231590ea64a0392470a48c561294fd Mon Sep 17 00:00:00 2001 From: Tate Date: Fri, 21 Feb 2025 06:30:08 +0000 Subject: [PATCH 1/5] Fix `Header` not found `timestamp` field --- packages/node/CHANGELOG.md | 4 ++++ packages/node/src/ethereum/utils.ethereum.ts | 1 + 2 files changed, 5 insertions(+) diff --git a/packages/node/CHANGELOG.md b/packages/node/CHANGELOG.md index 8c5572f2af..0b466d44ae 100644 --- a/packages/node/CHANGELOG.md +++ b/packages/node/CHANGELOG.md @@ -5,6 +5,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] + +### Fixed +- Fix `Header` not found `timestamp` field + ### Changed - Update header year to 2025 (#362) diff --git a/packages/node/src/ethereum/utils.ethereum.ts b/packages/node/src/ethereum/utils.ethereum.ts index a60e35a07d..cdd25e8af1 100644 --- a/packages/node/src/ethereum/utils.ethereum.ts +++ b/packages/node/src/ethereum/utils.ethereum.ts @@ -158,5 +158,6 @@ export function ethereumBlockToHeader(block: BlockContent | Block): Header { blockHeight: block.number, blockHash: block.hash, parentHash: block.parentHash, + timestamp: new Date(Number(block.timestamp) * 1000), }; } From 7a8c71c3efc9982fdd982c329c63f428001d0eb2 Mon Sep 17 00:00:00 2001 From: Tate Date: Fri, 21 Feb 2025 08:18:43 +0000 Subject: [PATCH 2/5] fix test --- packages/node/src/indexer/unfinalizedBlocks.service.spec.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/node/src/indexer/unfinalizedBlocks.service.spec.ts b/packages/node/src/indexer/unfinalizedBlocks.service.spec.ts index 5514c92503..d6bc99c415 100644 --- a/packages/node/src/indexer/unfinalizedBlocks.service.spec.ts +++ b/packages/node/src/indexer/unfinalizedBlocks.service.spec.ts @@ -22,6 +22,7 @@ const makeHeader = (height: number, finalized?: boolean): Header => ({ blockHeight: height, blockHash: hexify(`0xABC${height}${finalized ? 'f' : ''}`), parentHash: hexify(`0xABC${height - 1}${finalized ? 'f' : ''}`), + timestamp: new Date((1740100000 + height) * 1000), }); const getMockApi = (): ApiService => { @@ -42,12 +43,14 @@ const getMockApi = (): ApiService => { number: num, hash: typeof hash === 'number' ? hexify(`0xABC${hash}f`) : hash, parentHash: hexify(`0xABC${num - 1}f`), + timestamp: 1740100000 + num, }); }, getFinalizedBlock: jest.fn(() => ({ number: 110, hash: '0xABC110f', parentHash: '0xABC109f', + timestamp: 1740100000 + 110, })), }, } as any; @@ -164,6 +167,7 @@ describe('UnfinalizedBlockService', () => { blockHash: '0x00ABC99f', blockHeight: 99, parentHash: '0x00ABC98f', + timestamp: new Date((1740100000 + 99) * 1000), }); }); @@ -188,6 +192,7 @@ describe('UnfinalizedBlockService', () => { blockHash: '0x00ABC99f', blockHeight: 99, parentHash: '0x00ABC98f', + timestamp: new Date((1740100000 + 99) * 1000), }); }); From e219afc70dc501e5857ae9008b4d0c785ca81fe8 Mon Sep 17 00:00:00 2001 From: Tate Date: Mon, 24 Feb 2025 01:56:01 +0000 Subject: [PATCH 3/5] mockBlockTimestamp --- .../src/indexer/unfinalizedBlocks.service.spec.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/node/src/indexer/unfinalizedBlocks.service.spec.ts b/packages/node/src/indexer/unfinalizedBlocks.service.spec.ts index d6bc99c415..9d9896e9dd 100644 --- a/packages/node/src/indexer/unfinalizedBlocks.service.spec.ts +++ b/packages/node/src/indexer/unfinalizedBlocks.service.spec.ts @@ -18,11 +18,15 @@ import { UnfinalizedBlocksService } from './unfinalizedBlocks.service'; // Adds 0 padding so we can convert to POI block const hexify = (input: string) => hexZeroPad(input, 4); +// Mock 1740100000 is the timestamp of the genesis block +const genBlockTimestamp = (height: number) => (1740100000 + height) * 1000; +const genBlockDate = (height: number) => new Date((1740100000 + height) * 1000); + const makeHeader = (height: number, finalized?: boolean): Header => ({ blockHeight: height, blockHash: hexify(`0xABC${height}${finalized ? 'f' : ''}`), parentHash: hexify(`0xABC${height - 1}${finalized ? 'f' : ''}`), - timestamp: new Date((1740100000 + height) * 1000), + timestamp: genBlockDate(height), }); const getMockApi = (): ApiService => { @@ -43,14 +47,14 @@ const getMockApi = (): ApiService => { number: num, hash: typeof hash === 'number' ? hexify(`0xABC${hash}f`) : hash, parentHash: hexify(`0xABC${num - 1}f`), - timestamp: 1740100000 + num, + timestamp: genBlockTimestamp(num), }); }, getFinalizedBlock: jest.fn(() => ({ number: 110, hash: '0xABC110f', parentHash: '0xABC109f', - timestamp: 1740100000 + 110, + timestamp: genBlockTimestamp(110), })), }, } as any; @@ -167,7 +171,7 @@ describe('UnfinalizedBlockService', () => { blockHash: '0x00ABC99f', blockHeight: 99, parentHash: '0x00ABC98f', - timestamp: new Date((1740100000 + 99) * 1000), + timestamp: genBlockDate(99), }); }); @@ -192,7 +196,7 @@ describe('UnfinalizedBlockService', () => { blockHash: '0x00ABC99f', blockHeight: 99, parentHash: '0x00ABC98f', - timestamp: new Date((1740100000 + 99) * 1000), + timestamp: genBlockTimestamp(99), }); }); From b531060068ee79aad2898b491c8982a370e33e70 Mon Sep 17 00:00:00 2001 From: Tate Date: Mon, 24 Feb 2025 02:04:56 +0000 Subject: [PATCH 4/5] change log --- packages/node/CHANGELOG.md | 2 +- packages/node/src/indexer/unfinalizedBlocks.service.spec.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/node/CHANGELOG.md b/packages/node/CHANGELOG.md index 0b466d44ae..9c00ee1b18 100644 --- a/packages/node/CHANGELOG.md +++ b/packages/node/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Fixed -- Fix `Header` not found `timestamp` field +- `timestamp` field missing on `Header` ### Changed - Update header year to 2025 (#362) diff --git a/packages/node/src/indexer/unfinalizedBlocks.service.spec.ts b/packages/node/src/indexer/unfinalizedBlocks.service.spec.ts index 9d9896e9dd..1b45a38f39 100644 --- a/packages/node/src/indexer/unfinalizedBlocks.service.spec.ts +++ b/packages/node/src/indexer/unfinalizedBlocks.service.spec.ts @@ -20,7 +20,7 @@ const hexify = (input: string) => hexZeroPad(input, 4); // Mock 1740100000 is the timestamp of the genesis block const genBlockTimestamp = (height: number) => (1740100000 + height) * 1000; -const genBlockDate = (height: number) => new Date((1740100000 + height) * 1000); +const genBlockDate = (height: number) => new Date(genBlockTimestamp(height)); const makeHeader = (height: number, finalized?: boolean): Header => ({ blockHeight: height, From d0dfd06e69ca5a04e810877c082aefadb0cb35ec Mon Sep 17 00:00:00 2001 From: Tate Date: Mon, 24 Feb 2025 02:30:17 +0000 Subject: [PATCH 5/5] test fix --- packages/node/src/indexer/unfinalizedBlocks.service.spec.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/node/src/indexer/unfinalizedBlocks.service.spec.ts b/packages/node/src/indexer/unfinalizedBlocks.service.spec.ts index 1b45a38f39..1a16f730ba 100644 --- a/packages/node/src/indexer/unfinalizedBlocks.service.spec.ts +++ b/packages/node/src/indexer/unfinalizedBlocks.service.spec.ts @@ -47,14 +47,14 @@ const getMockApi = (): ApiService => { number: num, hash: typeof hash === 'number' ? hexify(`0xABC${hash}f`) : hash, parentHash: hexify(`0xABC${num - 1}f`), - timestamp: genBlockTimestamp(num), + timestamp: genBlockTimestamp(num) / 1000, }); }, getFinalizedBlock: jest.fn(() => ({ number: 110, hash: '0xABC110f', parentHash: '0xABC109f', - timestamp: genBlockTimestamp(110), + timestamp: genBlockTimestamp(110) / 1000, })), }, } as any; @@ -196,7 +196,7 @@ describe('UnfinalizedBlockService', () => { blockHash: '0x00ABC99f', blockHeight: 99, parentHash: '0x00ABC98f', - timestamp: genBlockTimestamp(99), + timestamp: genBlockDate(99), }); });