From ef9f351ec5e469e831cd28b55bf8e32380ccf8da Mon Sep 17 00:00:00 2001 From: igor <igor.markin@vereign.com> Date: Tue, 24 Aug 2021 17:47:16 +0300 Subject: [PATCH] Fetch microblock for Verification and use it's time as the TX time --- dist/types.d.ts | 2 ++ src/services/AeternityService/AeternityService.ts | 15 +++++++++++++++ src/services/AeternityService/types.ts | 1 + .../VerificationService/VerificationService.ts | 9 ++++++++- src/types.ts | 2 ++ 5 files changed, 28 insertions(+), 1 deletion(-) diff --git a/dist/types.d.ts b/dist/types.d.ts index 96f91f5..77bc266 100644 --- a/dist/types.d.ts +++ b/dist/types.d.ts @@ -56,9 +56,11 @@ export interface BlockData { export interface TxData { hash: string; blockHeight: number; + blockHash: string; tx: { callData: string; }; + time?: number; } export interface DecodedCallData { key: string; diff --git a/src/services/AeternityService/AeternityService.ts b/src/services/AeternityService/AeternityService.ts index 6c2e69e..d9fae92 100644 --- a/src/services/AeternityService/AeternityService.ts +++ b/src/services/AeternityService/AeternityService.ts @@ -95,6 +95,7 @@ class AeternityService { tx: { callData: data.tx.call_data, }, + blockHash: data.block_hash, }; } @@ -117,6 +118,20 @@ class AeternityService { }; } + async getMicroBlock( + hash: string + ): Promise<{ height: number; time: number; hash: string }> { + const { time, height } = await this.requestNode({ + url: `/v2/micro-blocks/hash/${hash}/header`, + }).then(({ data }: Response<AeternityAPIBlockData>) => data); + + return { + height, + time, + hash, + }; + } + async getBlock( height: number ): Promise<{ height: number; time: number; hash: string }> { diff --git a/src/services/AeternityService/types.ts b/src/services/AeternityService/types.ts index 8efdbb4..c95b4ed 100644 --- a/src/services/AeternityService/types.ts +++ b/src/services/AeternityService/types.ts @@ -1,6 +1,7 @@ export interface AeternityAPITxData { hash: string; block_height: number; + block_hash: string; tx: { call_data: string; }; diff --git a/src/services/VerificationService/VerificationService.ts b/src/services/VerificationService/VerificationService.ts index d629eaf..5bc1a3c 100644 --- a/src/services/VerificationService/VerificationService.ts +++ b/src/services/VerificationService/VerificationService.ts @@ -144,7 +144,14 @@ class VerificationService extends EventEmitter { this.emit(STATUS_BATCH_VERIFIED, batchVerificationDetails); - blockData = await this.getBlockData(txData.blockHeight); + const blockRequests = await Promise.all([ + this.getBlockData(txData.blockHeight), + this._aeternityService.getMicroBlock(txData.blockHash), + ]); + + blockData = blockRequests[0]; + const microBlockData = blockRequests[1]; + txData.time = microBlockData.time; this.emit(BLOCK_DATA_RETRIEVED, blockData); } catch (e) { diff --git a/src/types.ts b/src/types.ts index 52ae9d3..312f3fc 100644 --- a/src/types.ts +++ b/src/types.ts @@ -65,9 +65,11 @@ export interface BlockData { export interface TxData { hash: string; blockHeight: number; + blockHash: string; tx: { callData: string; }; + time?: number; } export interface DecodedCallData { -- GitLab