From 8500aee788c10d79753bd107da7c8cdd31c287a0 Mon Sep 17 00:00:00 2001 From: Magic Cat Date: Thu, 15 Jul 2021 15:00:25 +0800 Subject: [PATCH 01/10] Update chainId path --- imports/api/blocks/server/methods.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imports/api/blocks/server/methods.js b/imports/api/blocks/server/methods.js index 716350c0b..5da70c3e7 100644 --- a/imports/api/blocks/server/methods.js +++ b/imports/api/blocks/server/methods.js @@ -447,7 +447,7 @@ Meteor.methods({ let endGetValidatorsTime = new Date(); console.log("Get height validators time: "+((endGetValidatorsTime-startGetValidatorsTime)/1000)+"seconds."); - Chain.update({chainId:block.block.header.chainId}, {$set:{lastSyncedTime:blockData.time, blockTime:blockTime}}); + Chain.update({ chainId: block.block.header.chain_id}, {$set:{lastSyncedTime:blockData.time, blockTime:blockTime}}); analyticsData.averageBlockTime = blockTime; analyticsData.timeDiff = timeDiff; From 65f90b12d6bdda1ce7a0f5d347ab4c15302d020d Mon Sep 17 00:00:00 2001 From: Magic Cat Date: Thu, 15 Jul 2021 16:47:58 +0800 Subject: [PATCH 02/10] Updated average block time calculations --- imports/api/blocks/server/methods.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/imports/api/blocks/server/methods.js b/imports/api/blocks/server/methods.js index 5da70c3e7..dd5abb1b4 100644 --- a/imports/api/blocks/server/methods.js +++ b/imports/api/blocks/server/methods.js @@ -434,14 +434,23 @@ Meteor.methods({ let chainStatus = Chain.findOne({chainId:block.block.header.chain_id}); let lastSyncedTime = chainStatus?chainStatus.lastSyncedTime:0; let timeDiff; - let blockTime = Meteor.settings.params.defaultBlockTime; + let blockTime = 0; + let res; if (lastSyncedTime){ + let blockDiff = Meteor.settings.public.averageBlockTimeWindow; + let pastBlockHeight = height - blockDiff > 0 ? height - blockDiff : height - 1; + let getPastBlock = `${API}/blocks/${pastBlockHeight}`; + try{ + res = HTTP.get(getPastBlock); + } + catch(e){ + console.log(e) + } + let pastBlockTime = new Date(JSON.parse(res?.content)?.block?.header?.time); let dateLatest = new Date(blockData.time); let dateLast = new Date(lastSyncedTime); - let genesisTime = new Date(Meteor.settings.public.genesisTime); timeDiff = Math.abs(dateLatest.getTime() - dateLast.getTime()); - // blockTime = (chainStatus.blockTime * (blockData.height - 1) + timeDiff) / blockData.height; - blockTime = (dateLatest.getTime() - genesisTime.getTime()) / blockData.height; + blockTime = height - blockDiff > 0 ? ((dateLatest.getTime() - pastBlockTime.getTime()) / blockDiff) : (dateLatest.getTime() - pastBlockTime.getTime()) } let endGetValidatorsTime = new Date(); From 82077ba3d267b281e351bbc2260137a43e9f6b71 Mon Sep 17 00:00:00 2001 From: Magic Cat Date: Thu, 15 Jul 2021 16:52:35 +0800 Subject: [PATCH 03/10] Code cleanup --- imports/api/blocks/server/methods.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/imports/api/blocks/server/methods.js b/imports/api/blocks/server/methods.js index dd5abb1b4..6e1a048b5 100644 --- a/imports/api/blocks/server/methods.js +++ b/imports/api/blocks/server/methods.js @@ -438,7 +438,7 @@ Meteor.methods({ let res; if (lastSyncedTime){ let blockDiff = Meteor.settings.public.averageBlockTimeWindow; - let pastBlockHeight = height - blockDiff > 0 ? height - blockDiff : height - 1; + let pastBlockHeight = (height - blockDiff > 0) ? (height - blockDiff) : (height - 1); let getPastBlock = `${API}/blocks/${pastBlockHeight}`; try{ res = HTTP.get(getPastBlock); @@ -450,7 +450,7 @@ Meteor.methods({ let dateLatest = new Date(blockData.time); let dateLast = new Date(lastSyncedTime); timeDiff = Math.abs(dateLatest.getTime() - dateLast.getTime()); - blockTime = height - blockDiff > 0 ? ((dateLatest.getTime() - pastBlockTime.getTime()) / blockDiff) : (dateLatest.getTime() - pastBlockTime.getTime()) + blockTime = (height - blockDiff > 0) ? ((dateLatest.getTime() - pastBlockTime.getTime()) / blockDiff) : (dateLatest.getTime() - pastBlockTime.getTime()); } let endGetValidatorsTime = new Date(); From d02b2b67e0639a641d116904a01ba0250841d5e7 Mon Sep 17 00:00:00 2001 From: Magic Cat Date: Thu, 15 Jul 2021 17:57:34 +0800 Subject: [PATCH 04/10] Update ChainStatus label --- both/i18n/en-us.i18n.yml | 1 + imports/ui/home/ChainStatus.jsx | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/both/i18n/en-us.i18n.yml b/both/i18n/en-us.i18n.yml index ec99fb327..620317a4b 100644 --- a/both/i18n/en-us.i18n.yml +++ b/both/i18n/en-us.i18n.yml @@ -101,6 +101,7 @@ chainStatus: outOfValidators: 'out of {$totalValidators} validators' onlineVotingPower: 'Online Voting Power' fromTotalStakes: '{$percent} from {$totalStakes} {$denomPlural}' + averageBlockTimeWindow: '{$avgBlockTimeWindow} Blocks' analytics: blockTimeHistory: 'Block Time History' averageBlockTime: 'Average Block Time' diff --git a/imports/ui/home/ChainStatus.jsx b/imports/ui/home/ChainStatus.jsx index 15ebc321b..374db2dd6 100644 --- a/imports/ui/home/ChainStatus.jsx +++ b/imports/ui/home/ChainStatus.jsx @@ -20,7 +20,7 @@ export default class ChainStatus extends React.Component { totalNumValidators: 0, avgBlockTimeType: "", avgVotingPowerType: "", - blockTimeText: chainStatus.all, + blockTimeText: chainStatus.averageBlockTimeWindow, votingPowerText: chainStatus.now } } From 2522cea0271906f90a5bce355b63d7508e0758c2 Mon Sep 17 00:00:00 2001 From: Magic Cat Date: Thu, 15 Jul 2021 18:25:24 +0800 Subject: [PATCH 05/10] Add CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 11fa80d81..c80ac31e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## [UNRELEASED] * [#523] Implemented readable messages for IBC messages +* [#542] Removed `startHeight` value from average block time and updated calculations to get the average block time within `averageBlockTimeWindow` instead of calculating it from genesis time. ## [v0.41.x-14.2] * Fixes Ledger WebUSB + Chrome 91.x issue (https://github.com/LedgerHQ/ledgerjs/issues/607) From cb332dd50456168cd6d15eae1f49265c77e43b9b Mon Sep 17 00:00:00 2001 From: Magic Cat Date: Thu, 5 Aug 2021 17:53:20 +0100 Subject: [PATCH 06/10] Add calculate average block time from startHeight height set in params --- both/i18n/en-us.i18n.yml | 1 - imports/api/blocks/server/methods.js | 24 ++++++++++++++---------- imports/ui/home/ChainStatus.jsx | 4 ++-- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/both/i18n/en-us.i18n.yml b/both/i18n/en-us.i18n.yml index 620317a4b..ec99fb327 100644 --- a/both/i18n/en-us.i18n.yml +++ b/both/i18n/en-us.i18n.yml @@ -101,7 +101,6 @@ chainStatus: outOfValidators: 'out of {$totalValidators} validators' onlineVotingPower: 'Online Voting Power' fromTotalStakes: '{$percent} from {$totalStakes} {$denomPlural}' - averageBlockTimeWindow: '{$avgBlockTimeWindow} Blocks' analytics: blockTimeHistory: 'Block Time History' averageBlockTime: 'Average Block Time' diff --git a/imports/api/blocks/server/methods.js b/imports/api/blocks/server/methods.js index 6e1a048b5..c650fd539 100644 --- a/imports/api/blocks/server/methods.js +++ b/imports/api/blocks/server/methods.js @@ -433,24 +433,28 @@ Meteor.methods({ let chainStatus = Chain.findOne({chainId:block.block.header.chain_id}); let lastSyncedTime = chainStatus?chainStatus.lastSyncedTime:0; + let startHeightTime = chainStatus?chainStatus.startHeightTime:0; + let startHeight = Meteor.settings.params.startHeight; let timeDiff; let blockTime = 0; let res; if (lastSyncedTime){ - let blockDiff = Meteor.settings.public.averageBlockTimeWindow; - let pastBlockHeight = (height - blockDiff > 0) ? (height - blockDiff) : (height - 1); - let getPastBlock = `${API}/blocks/${pastBlockHeight}`; - try{ - res = HTTP.get(getPastBlock); - } - catch(e){ - console.log(e) + if (!startHeightTime){ + let getStartHeight = `${API}/blocks/${startHeight}`; + try { + res = HTTP.get(getStartHeight); + } + catch(e){ + console.log(e) + } + startHeightTime = new Date(JSON.parse(res?.content)?.block?.header?.time); + Chain.update({ chainId: block.block.header.chain_id },{$set: {startHeightTime, startHeight}}); } - let pastBlockTime = new Date(JSON.parse(res?.content)?.block?.header?.time); let dateLatest = new Date(blockData.time); let dateLast = new Date(lastSyncedTime); + let dateStart = new Date(startHeightTime); timeDiff = Math.abs(dateLatest.getTime() - dateLast.getTime()); - blockTime = (height - blockDiff > 0) ? ((dateLatest.getTime() - pastBlockTime.getTime()) / blockDiff) : (dateLatest.getTime() - pastBlockTime.getTime()); + blockTime = (dateLatest.getTime() - dateStart.getTime()) / (blockData.height - startHeight); } let endGetValidatorsTime = new Date(); diff --git a/imports/ui/home/ChainStatus.jsx b/imports/ui/home/ChainStatus.jsx index 374db2dd6..629f44fe8 100644 --- a/imports/ui/home/ChainStatus.jsx +++ b/imports/ui/home/ChainStatus.jsx @@ -20,7 +20,7 @@ export default class ChainStatus extends React.Component { totalNumValidators: 0, avgBlockTimeType: "", avgVotingPowerType: "", - blockTimeText: chainStatus.averageBlockTimeWindow, + blockTimeText: chainStatus.all, votingPowerText: chainStatus.now } } @@ -40,7 +40,7 @@ export default class ChainStatus extends React.Component { switch (this.state.avgBlockTimeType){ case "": this.setState({ - averageBlockTime: numbro(this.props.status.blockTime/1000).format('0,0.00') + averageBlockTime: numbro(this.props.status.blockTime > 0 ? this.props.status.blockTime / 1000 : 0).format('0,0.00') }) break; case "m": From f49087125fc82d045ac964fb14fc35f010713cd6 Mon Sep 17 00:00:00 2001 From: Magic Cat Date: Thu, 5 Aug 2021 17:59:07 +0100 Subject: [PATCH 07/10] Updated CHANGELOG.md --- CHANGELOG.md | 2 +- imports/api/blocks/server/methods.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c80ac31e2..c7a23925d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## [UNRELEASED] * [#523] Implemented readable messages for IBC messages -* [#542] Removed `startHeight` value from average block time and updated calculations to get the average block time within `averageBlockTimeWindow` instead of calculating it from genesis time. +* [#542] Updated average block time calculations to start calculations from the startHeight height set in settings.json instead of calculating it from genesis time. ## [v0.41.x-14.2] * Fixes Ledger WebUSB + Chrome 91.x issue (https://github.com/LedgerHQ/ledgerjs/issues/607) diff --git a/imports/api/blocks/server/methods.js b/imports/api/blocks/server/methods.js index c650fd539..c3b817491 100644 --- a/imports/api/blocks/server/methods.js +++ b/imports/api/blocks/server/methods.js @@ -460,7 +460,7 @@ Meteor.methods({ let endGetValidatorsTime = new Date(); console.log("Get height validators time: "+((endGetValidatorsTime-startGetValidatorsTime)/1000)+"seconds."); - Chain.update({ chainId: block.block.header.chain_id}, {$set:{lastSyncedTime:blockData.time, blockTime:blockTime}}); + Chain.update({chainId:block.block.header.chain_id}, {$set:{lastSyncedTime:blockData.time, blockTime:blockTime}}); analyticsData.averageBlockTime = blockTime; analyticsData.timeDiff = timeDiff; From caf20130357ffb7a9d2183323d4a734ac905d590 Mon Sep 17 00:00:00 2001 From: Magic Cat Date: Mon, 9 Aug 2021 13:22:34 +0100 Subject: [PATCH 08/10] Added genesisTime and rm defaultBlockTime in default_settings.json --- default_settings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default_settings.json b/default_settings.json index c9933a8ff..6ed5e823d 100644 --- a/default_settings.json +++ b/default_settings.json @@ -3,6 +3,7 @@ "chainName": "Cosmos", "chainId": "{Chain ID}", "gtm": "{Add your Google Tag Manager ID here}", + "genesisTime": "", "slashingWindow": 10000, "uptimeWindow": 250, "initialPageSize": 30, @@ -53,7 +54,6 @@ }, "params":{ "startHeight": 0, - "defaultBlockTime": 5000, "validatorUpdateWindow": 300, "blockInterval": 15000, "transactionsInterval": 18000, From d5d628ec13b60dff864f3c6cb63d452a59c51ecf Mon Sep 17 00:00:00 2001 From: Magic Cat Date: Mon, 9 Aug 2021 13:58:51 +0100 Subject: [PATCH 09/10] Update averageBlockTime calulations --- imports/api/blocks/server/methods.js | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/imports/api/blocks/server/methods.js b/imports/api/blocks/server/methods.js index c3b817491..550227f51 100644 --- a/imports/api/blocks/server/methods.js +++ b/imports/api/blocks/server/methods.js @@ -433,28 +433,14 @@ Meteor.methods({ let chainStatus = Chain.findOne({chainId:block.block.header.chain_id}); let lastSyncedTime = chainStatus?chainStatus.lastSyncedTime:0; - let startHeightTime = chainStatus?chainStatus.startHeightTime:0; - let startHeight = Meteor.settings.params.startHeight; let timeDiff; let blockTime = 0; - let res; if (lastSyncedTime){ - if (!startHeightTime){ - let getStartHeight = `${API}/blocks/${startHeight}`; - try { - res = HTTP.get(getStartHeight); - } - catch(e){ - console.log(e) - } - startHeightTime = new Date(JSON.parse(res?.content)?.block?.header?.time); - Chain.update({ chainId: block.block.header.chain_id },{$set: {startHeightTime, startHeight}}); - } let dateLatest = new Date(blockData.time); let dateLast = new Date(lastSyncedTime); - let dateStart = new Date(startHeightTime); + let genesisTime = new Date(Meteor.settings.public.genesisTime); timeDiff = Math.abs(dateLatest.getTime() - dateLast.getTime()); - blockTime = (dateLatest.getTime() - dateStart.getTime()) / (blockData.height - startHeight); + blockTime = (dateLatest.getTime() - genesisTime.getTime()) / blockData.height; } let endGetValidatorsTime = new Date(); From e031cbf8289e1c5ff049831b29106efac14d0c25 Mon Sep 17 00:00:00 2001 From: Magic Cat Date: Mon, 9 Aug 2021 13:59:30 +0100 Subject: [PATCH 10/10] Updated CHANGELOG.md --- CHANGELOG.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c7a23925d..86ec50b4d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,8 +2,7 @@ ## [UNRELEASED] * [#523] Implemented readable messages for IBC messages -* [#542] Updated average block time calculations to start calculations from the startHeight height set in settings.json instead of calculating it from genesis time. - +* [#542] Removed `defaultBlockTime` from default_settings.json and updated average block time calculations. ## [v0.41.x-14.2] * Fixes Ledger WebUSB + Chrome 91.x issue (https://github.com/LedgerHQ/ledgerjs/issues/607)