From fda6dd7ace2cf872a10651d350ad5d7effa170ff Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Thu, 12 Dec 2024 13:46:51 +0700 Subject: [PATCH 1/2] chore(dashmate): update Core to version 22 --- .../configs/defaults/getBaseConfigFactory.js | 2 +- .../configs/getConfigFileMigrationsFactory.js | 7 + .../setup/local/configureCoreTaskFactory.js | 317 ++++++------------ .../dashmate/src/status/scopes/platform.js | 7 +- .../dashmate/templates/core/dash.conf.dot | 2 +- 5 files changed, 115 insertions(+), 220 deletions(-) diff --git a/packages/dashmate/configs/defaults/getBaseConfigFactory.js b/packages/dashmate/configs/defaults/getBaseConfigFactory.js index e26e67ca504..45ad27f4ae9 100644 --- a/packages/dashmate/configs/defaults/getBaseConfigFactory.js +++ b/packages/dashmate/configs/defaults/getBaseConfigFactory.js @@ -53,7 +53,7 @@ export default function getBaseConfigFactory() { port: 3001, }, docker: { - image: 'dashpay/dashd:21', + image: 'dashpay/dashd:22', commandArgs: [], }, p2p: { diff --git a/packages/dashmate/configs/getConfigFileMigrationsFactory.js b/packages/dashmate/configs/getConfigFileMigrationsFactory.js index 5004bd870b4..4c550fe4819 100644 --- a/packages/dashmate/configs/getConfigFileMigrationsFactory.js +++ b/packages/dashmate/configs/getConfigFileMigrationsFactory.js @@ -1048,6 +1048,13 @@ export default function getConfigFileMigrationsFactory(homeDir, defaultConfigs) }); return configFile; }, + '1.7.0': (configFile) => { + Object.entries(configFile.configs) + .forEach(([, options]) => { + options.core.docker.image = 'dashpay/dashd:22'; + }); + return configFile; + }, }; } diff --git a/packages/dashmate/src/listr/tasks/setup/local/configureCoreTaskFactory.js b/packages/dashmate/src/listr/tasks/setup/local/configureCoreTaskFactory.js index d059e9c8606..48f84c1ae93 100644 --- a/packages/dashmate/src/listr/tasks/setup/local/configureCoreTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/setup/local/configureCoreTaskFactory.js @@ -2,7 +2,6 @@ import { Listr } from 'listr2'; import { Observable } from 'rxjs'; import DashCoreLib from '@dashevo/dashcore-lib'; import waitForNodesToHaveTheSameHeight from '../../../../core/waitForNodesToHaveTheSameHeight.js'; -import waitForNodesToHaveTheSameSporks from '../../../../core/waitForNodesToHaveTheSameSporks.js'; import { NETWORK_LOCAL, HPMN_COLLATERAL_AMOUNT } from '../../../../constants.js'; @@ -23,17 +22,17 @@ const { PrivateKey } = DashCoreLib; * @return {configureCoreTask} */ export default function configureCoreTaskFactory( - writeConfigTemplates, - startCore, - generateBlocks, - waitForCoreSync, - activateCoreSpork, - generateToAddressTask, - registerMasternodeTask, - generateBlsKeys, - enableCoreQuorumsTask, - waitForMasternodesSync, - configFile, + writeConfigTemplates, + startCore, + generateBlocks, + waitForCoreSync, + activateCoreSpork, + generateToAddressTask, + registerMasternodeTask, + generateBlsKeys, + enableCoreQuorumsTask, + waitForMasternodesSync, + configFile, ) { const WAIT_FOR_NODES_TIMEOUT = 60 * 5 * 1000; @@ -51,29 +50,29 @@ export default function configureCoreTaskFactory( const sporkAddress = sporkPrivKey.toAddress(network).toString(); const seedNodes = configGroup.filter((config) => config.getName() === 'local_seed') - .map((config) => ({ - host: config.get('externalIp'), - port: config.get('core.p2p.port'), - })); + .map((config) => ({ + host: config.get('externalIp'), + port: config.get('core.p2p.port'), + })); configGroup.forEach((config) => { // Set seeds if (config.getName() !== 'local_seed') { config.set( - 'core.p2p.seeds', - seedNodes, + 'core.p2p.seeds', + seedNodes, ); } // Set sporks key config.set( - 'core.spork.address', - sporkAddress, + 'core.spork.address', + sporkAddress, ); config.set( - 'core.spork.privateKey', - sporkPrivKey.toWIF(), + 'core.spork.privateKey', + sporkPrivKey.toWIF(), ); // Write configs @@ -87,15 +86,46 @@ export default function configureCoreTaskFactory( const config = configGroup.find((c) => c.getName() === 'local_seed'); ctx.coreService = await startCore( - config, - { wallet: true, addressIndex: true }, + config, + { wallet: true, addressIndex: true }, ); }, }, { - title: 'Activating DIP3', + title: 'Create wallet', + task: async () => { + const disablePrivateKeys = false; + const createBlankWallet = false; + const walletPassphrase = ''; + const avoidReuse = false; + const loadOnStartup = true; + const descriptors = false; + + await ctx.coreService.getRpcClient().createWallet( + 'main', + disablePrivateKeys, + createBlankWallet, + walletPassphrase, + avoidReuse, + descriptors, + loadOnStartup, + ); + }, + }, + { + title: 'Generating funds to use as a collateral for masternodes', + task: () => { + const amount = HPMN_COLLATERAL_AMOUNT * configGroup.length; + return generateToAddressTask( + configGroup.find((c) => c.getName() === 'local_seed'), + amount, + ); + }, + }, + { + title: 'Activating v19 and v20', task: () => new Observable(async (observer) => { - const dip3ActivationHeight = 1000; + const dip3ActivationHeight = 901; const blocksToGenerateInOneStep = 10; let blocksGenerated = 0; @@ -109,15 +139,15 @@ export default function configureCoreTaskFactory( } = await ctx.coreService.getRpcClient().getBlockCount()); await generateBlocks( - ctx.coreService, - blocksToGenerateInOneStep, - NETWORK_LOCAL, - // eslint-disable-next-line no-loop-func - (blocks) => { - blocksGenerated += blocks; - - observer.next(`${blocksGenerated} blocks generated`); - }, + ctx.coreService, + blocksToGenerateInOneStep, + NETWORK_LOCAL, + // eslint-disable-next-line no-loop-func + (blocks) => { + blocksGenerated += blocks; + + observer.next(`${blocksGenerated} blocks generated`); + }, ); } while (dip3ActivationHeight > currentBlockHeight); @@ -126,37 +156,6 @@ export default function configureCoreTaskFactory( return this; }), }, - { - title: 'Create wallet', - task: async () => { - const disablePrivateKeys = false; - const createBlankWallet = false; - const walletPassphrase = ''; - const avoidReuse = false; - const loadOnStartup = true; - const descriptors = false; - - await ctx.coreService.getRpcClient().createWallet( - 'main', - disablePrivateKeys, - createBlankWallet, - walletPassphrase, - avoidReuse, - descriptors, - loadOnStartup, - ); - }, - }, - { - title: 'Generating funds to use as a collateral for masternodes', - task: () => { - const amount = HPMN_COLLATERAL_AMOUNT * configGroup.length; - return generateToAddressTask( - configGroup.find((c) => c.getName() === 'local_seed'), - amount, - ); - }, - }, { title: 'Register masternodes', task: async () => { @@ -203,13 +202,13 @@ export default function configureCoreTaskFactory( title: 'Starting nodes', task: async () => { ctx.coreServices = await Promise.all( - configGroup.map((config) => startCore(config)), + configGroup.map((config) => startCore(config)), ); ctx.rpcClients = ctx.coreServices.map((coreService) => coreService.getRpcClient()); ctx.seedCoreService = ctx.coreServices.find((coreService) => ( - coreService.getConfig().getName() === 'local_seed' + coreService.getConfig().getName() === 'local_seed' )); ctx.seedRpcClient = ctx.seedCoreService.getRpcClient(); @@ -219,7 +218,7 @@ export default function configureCoreTaskFactory( ctx.mockTime += time; await Promise.all( - ctx.rpcClients.map((rpcClient) => rpcClient.setMockTime(ctx.mockTime)), + ctx.rpcClients.map((rpcClient) => rpcClient.setMockTime(ctx.mockTime)), ); }; }, @@ -228,8 +227,8 @@ export default function configureCoreTaskFactory( title: 'Force masternodes to sync', task: async () => { await Promise.all(ctx.coreServices.map((coreService) => ( - // TODO: Rename function "wait -> force" - waitForMasternodesSync(coreService.getRpcClient()) + // TODO: Rename function "wait -> force" + waitForMasternodesSync(coreService.getRpcClient()) ))); }, }, @@ -246,17 +245,17 @@ export default function configureCoreTaskFactory( await ctx.bumpMockTime(); await generateBlocks( - ctx.seedCoreService, - 1, - NETWORK_LOCAL, + ctx.seedCoreService, + 1, + NETWORK_LOCAL, ); }, }, { title: 'Wait for nodes to have the same height', task: () => waitForNodesToHaveTheSameHeight( - ctx.rpcClients, - WAIT_FOR_NODES_TIMEOUT, + ctx.rpcClients, + WAIT_FOR_NODES_TIMEOUT, ), }, { @@ -271,61 +270,16 @@ export default function configureCoreTaskFactory( ]; await Promise.all( - sporks.map(async (spork) => ( - activateCoreSpork(ctx.seedCoreService.getRpcClient(), spork))), + sporks.map(async (spork) => ( + activateCoreSpork(ctx.seedCoreService.getRpcClient(), spork))), ); }, }, - { - title: 'Wait for nodes to have the same sporks', - task: () => waitForNodesToHaveTheSameSporks(ctx.coreServices), - }, - { - title: 'Activating DIP8 to enable ChainLocks', - task: () => new Observable(async (observer) => { - let isDip8Activated = false; - let blockchainInfo; - - let blocksGenerated = 0; - - const blocksToGenerateInOneStep = 10; - - do { - ({ - result: blockchainInfo, - } = await ctx.seedCoreService.getRpcClient().getBlockchainInfo()); - - isDip8Activated = blockchainInfo.softforks.dip0008.active; - - if (isDip8Activated) { - break; - } - - await generateBlocks( - ctx.seedCoreService, - blocksToGenerateInOneStep, - NETWORK_LOCAL, - // eslint-disable-next-line no-loop-func - (blocks) => { - blocksGenerated += blocks; - - observer.next(`${blocksGenerated} blocks generated`); - }, - ); - } while (!isDip8Activated); - - observer.next(`DIP8 has been activated at height ${blockchainInfo.softforks.dip0008.height}`); - - observer.complete(); - - return this; - }), - }, { title: 'Wait for nodes to have the same height', task: () => waitForNodesToHaveTheSameHeight( - ctx.rpcClients, - WAIT_FOR_NODES_TIMEOUT, + ctx.rpcClients, + WAIT_FOR_NODES_TIMEOUT, ), }, { @@ -334,8 +288,8 @@ export default function configureCoreTaskFactory( const { result: masternodesStatus } = await ctx.seedRpcClient.masternodelist('status'); const hasNotEnabled = Boolean( - Object.values(masternodesStatus) - .find((status) => status !== 'ENABLED'), + Object.values(masternodesStatus) + .find((status) => status !== 'ENABLED'), ); if (hasNotEnabled) { @@ -347,102 +301,41 @@ export default function configureCoreTaskFactory( title: 'Wait for quorums to be enabled', task: () => enableCoreQuorumsTask(), }, - { - title: 'Activating V20 fork', - task: () => new Observable(async (observer) => { - let isV20Activated = false; - let blockchainInfo; - - let blocksGenerated = 0; - - const blocksToGenerateInOneStep = 10; - - do { - ({ - result: blockchainInfo, - } = await ctx.seedCoreService.getRpcClient().getBlockchainInfo()); - - isV20Activated = blockchainInfo.softforks && blockchainInfo.softforks.v20 - && blockchainInfo.softforks.v20.active; - if (isV20Activated) { - break; - } - - await generateBlocks( - ctx.seedCoreService, - blocksToGenerateInOneStep, - NETWORK_LOCAL, - // eslint-disable-next-line no-loop-func - (blocks) => { - blocksGenerated += blocks; - - observer.next(`${blocksGenerated} blocks generated`); - }, - ); - } while (!isV20Activated); - - observer.next(`V20 fork has been activated at height ${blockchainInfo.softforks.v20.height}`); - - observer.complete(); - - return this; - }), - }, { title: 'Wait for nodes to have the same height', task: () => waitForNodesToHaveTheSameHeight( - ctx.rpcClients, - WAIT_FOR_NODES_TIMEOUT, + ctx.rpcClients, + WAIT_FOR_NODES_TIMEOUT, ), }, { - title: 'Enable EHF spork', - task: async () => new Observable(async (observer) => { - const seedRpcClient = ctx.seedCoreService.getRpcClient(); - const { - result: initialCoreChainLockedHeight, - } = await seedRpcClient.getBlockCount(); - - await activateCoreSpork( - seedRpcClient, - 'SPORK_24_TEST_EHF', - initialCoreChainLockedHeight, - ); - - let isEhfActivated = false; - let blockchainInfo; + title: 'Activating v21 fork', + task: () => new Observable(async (observer) => { + const dip3ActivationHeight = 1001; + const blocksToGenerateInOneStep = 10; let blocksGenerated = 0; - - const blocksToGenerateInOneStep = 48; + let { + result: currentBlockHeight, + } = await ctx.coreService.getRpcClient().getBlockCount(); do { ({ - result: blockchainInfo, - } = await ctx.seedCoreService.getRpcClient().getBlockchainInfo()); - - isEhfActivated = blockchainInfo.softforks && blockchainInfo.softforks.mn_rr - && blockchainInfo.softforks.mn_rr.active; - if (isEhfActivated) { - break; - } - - await ctx.bumpMockTime(blocksToGenerateInOneStep); + result: currentBlockHeight, + } = await ctx.coreService.getRpcClient().getBlockCount()); await generateBlocks( - ctx.seedCoreService, - blocksToGenerateInOneStep, - NETWORK_LOCAL, - // eslint-disable-next-line no-loop-func - (blocks) => { - blocksGenerated += blocks; - - observer.next(`${blocksGenerated} blocks generated`); - }, + ctx.coreService, + blocksToGenerateInOneStep, + NETWORK_LOCAL, + // eslint-disable-next-line no-loop-func + (blocks) => { + blocksGenerated += blocks; + + observer.next(`${blocksGenerated} blocks generated`); + }, ); - } while (!isEhfActivated); - - observer.next(`EHF has been activated at height ${blockchainInfo.softforks.mn_rr.height}`); + } while (dip3ActivationHeight > currentBlockHeight); observer.complete(); @@ -452,14 +345,14 @@ export default function configureCoreTaskFactory( { title: 'Wait for nodes to have the same height', task: () => waitForNodesToHaveTheSameHeight( - ctx.rpcClients, - WAIT_FOR_NODES_TIMEOUT, + ctx.rpcClients, + WAIT_FOR_NODES_TIMEOUT, ), }, { title: 'Stopping nodes', task: async () => (Promise.all( - ctx.coreServices.map((coreService) => coreService.stop()), + ctx.coreServices.map((coreService) => coreService.stop()), )), }, ]); diff --git a/packages/dashmate/src/status/scopes/platform.js b/packages/dashmate/src/status/scopes/platform.js index dca8783e31c..467e8e4ce0e 100644 --- a/packages/dashmate/src/status/scopes/platform.js +++ b/packages/dashmate/src/status/scopes/platform.js @@ -1,4 +1,3 @@ -import prettyMs from 'pretty-ms'; import { PortStateEnum } from '../enums/portState.js'; import DockerComposeError from '../../docker/errors/DockerComposeError.js'; import providers from '../providers.js'; @@ -314,11 +313,7 @@ export default function getPlatformScopeFactory( if (mnRRSoftFork.active) { scope.platformActivation = `Activated (at height ${mnRRSoftFork.height})`; } else { - const startTime = mnRRSoftFork.bip9.start_time; - - const diff = (new Date().getTime() - startTime) / 1000; - - scope.platformActivation = `Waiting for activation (approximately in ${prettyMs(diff, { compact: true })})`; + scope.platformActivation = `Waiting for activation on height ${mnRRSoftFork.height}`; } const [tenderdash, drive] = await Promise.all([ diff --git a/packages/dashmate/templates/core/dash.conf.dot b/packages/dashmate/templates/core/dash.conf.dot index cbc0b933735..0d2367bb204 100644 --- a/packages/dashmate/templates/core/dash.conf.dot +++ b/packages/dashmate/templates/core/dash.conf.dot @@ -31,7 +31,6 @@ debuglogfile=/var/log/dash/debug.log # JSON RPC server=1 rpcwallet=main -deprecatedrpc=hpmn rpcworkqueue=64 rpcthreads=16 rpcwhitelistdefault=0 @@ -93,6 +92,7 @@ fallbackfee=0.00001 {{?? it.network === 'local'}} regtest=1 [regtest] +testactivationheight=mn_rr@1000 {{? it.core.spork.address}}sporkaddr={{=it.core.spork.address}}{{?}} {{? it.core.spork.privateKey}}sporkkey={{=it.core.spork.privateKey}}{{?}} {{? it.core.miner.mediantime}}mocktime={{=it.core.miner.mediantime}}{{?}} From 84626d5b70cc1fc37536f52859df9e19d13e7753 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Fri, 13 Dec 2024 08:52:40 +0700 Subject: [PATCH 2/2] style: fix formatting --- .../setup/local/configureCoreTaskFactory.js | 142 +++++++++--------- 1 file changed, 71 insertions(+), 71 deletions(-) diff --git a/packages/dashmate/src/listr/tasks/setup/local/configureCoreTaskFactory.js b/packages/dashmate/src/listr/tasks/setup/local/configureCoreTaskFactory.js index 48f84c1ae93..522509b7397 100644 --- a/packages/dashmate/src/listr/tasks/setup/local/configureCoreTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/setup/local/configureCoreTaskFactory.js @@ -22,17 +22,17 @@ const { PrivateKey } = DashCoreLib; * @return {configureCoreTask} */ export default function configureCoreTaskFactory( - writeConfigTemplates, - startCore, - generateBlocks, - waitForCoreSync, - activateCoreSpork, - generateToAddressTask, - registerMasternodeTask, - generateBlsKeys, - enableCoreQuorumsTask, - waitForMasternodesSync, - configFile, + writeConfigTemplates, + startCore, + generateBlocks, + waitForCoreSync, + activateCoreSpork, + generateToAddressTask, + registerMasternodeTask, + generateBlsKeys, + enableCoreQuorumsTask, + waitForMasternodesSync, + configFile, ) { const WAIT_FOR_NODES_TIMEOUT = 60 * 5 * 1000; @@ -50,29 +50,29 @@ export default function configureCoreTaskFactory( const sporkAddress = sporkPrivKey.toAddress(network).toString(); const seedNodes = configGroup.filter((config) => config.getName() === 'local_seed') - .map((config) => ({ - host: config.get('externalIp'), - port: config.get('core.p2p.port'), - })); + .map((config) => ({ + host: config.get('externalIp'), + port: config.get('core.p2p.port'), + })); configGroup.forEach((config) => { // Set seeds if (config.getName() !== 'local_seed') { config.set( - 'core.p2p.seeds', - seedNodes, + 'core.p2p.seeds', + seedNodes, ); } // Set sporks key config.set( - 'core.spork.address', - sporkAddress, + 'core.spork.address', + sporkAddress, ); config.set( - 'core.spork.privateKey', - sporkPrivKey.toWIF(), + 'core.spork.privateKey', + sporkPrivKey.toWIF(), ); // Write configs @@ -86,8 +86,8 @@ export default function configureCoreTaskFactory( const config = configGroup.find((c) => c.getName() === 'local_seed'); ctx.coreService = await startCore( - config, - { wallet: true, addressIndex: true }, + config, + { wallet: true, addressIndex: true }, ); }, }, @@ -102,13 +102,13 @@ export default function configureCoreTaskFactory( const descriptors = false; await ctx.coreService.getRpcClient().createWallet( - 'main', - disablePrivateKeys, - createBlankWallet, - walletPassphrase, - avoidReuse, - descriptors, - loadOnStartup, + 'main', + disablePrivateKeys, + createBlankWallet, + walletPassphrase, + avoidReuse, + descriptors, + loadOnStartup, ); }, }, @@ -117,8 +117,8 @@ export default function configureCoreTaskFactory( task: () => { const amount = HPMN_COLLATERAL_AMOUNT * configGroup.length; return generateToAddressTask( - configGroup.find((c) => c.getName() === 'local_seed'), - amount, + configGroup.find((c) => c.getName() === 'local_seed'), + amount, ); }, }, @@ -139,15 +139,15 @@ export default function configureCoreTaskFactory( } = await ctx.coreService.getRpcClient().getBlockCount()); await generateBlocks( - ctx.coreService, - blocksToGenerateInOneStep, - NETWORK_LOCAL, - // eslint-disable-next-line no-loop-func - (blocks) => { - blocksGenerated += blocks; - - observer.next(`${blocksGenerated} blocks generated`); - }, + ctx.coreService, + blocksToGenerateInOneStep, + NETWORK_LOCAL, + // eslint-disable-next-line no-loop-func + (blocks) => { + blocksGenerated += blocks; + + observer.next(`${blocksGenerated} blocks generated`); + }, ); } while (dip3ActivationHeight > currentBlockHeight); @@ -202,13 +202,13 @@ export default function configureCoreTaskFactory( title: 'Starting nodes', task: async () => { ctx.coreServices = await Promise.all( - configGroup.map((config) => startCore(config)), + configGroup.map((config) => startCore(config)), ); ctx.rpcClients = ctx.coreServices.map((coreService) => coreService.getRpcClient()); ctx.seedCoreService = ctx.coreServices.find((coreService) => ( - coreService.getConfig().getName() === 'local_seed' + coreService.getConfig().getName() === 'local_seed' )); ctx.seedRpcClient = ctx.seedCoreService.getRpcClient(); @@ -218,7 +218,7 @@ export default function configureCoreTaskFactory( ctx.mockTime += time; await Promise.all( - ctx.rpcClients.map((rpcClient) => rpcClient.setMockTime(ctx.mockTime)), + ctx.rpcClients.map((rpcClient) => rpcClient.setMockTime(ctx.mockTime)), ); }; }, @@ -227,8 +227,8 @@ export default function configureCoreTaskFactory( title: 'Force masternodes to sync', task: async () => { await Promise.all(ctx.coreServices.map((coreService) => ( - // TODO: Rename function "wait -> force" - waitForMasternodesSync(coreService.getRpcClient()) + // TODO: Rename function "wait -> force" + waitForMasternodesSync(coreService.getRpcClient()) ))); }, }, @@ -245,17 +245,17 @@ export default function configureCoreTaskFactory( await ctx.bumpMockTime(); await generateBlocks( - ctx.seedCoreService, - 1, - NETWORK_LOCAL, + ctx.seedCoreService, + 1, + NETWORK_LOCAL, ); }, }, { title: 'Wait for nodes to have the same height', task: () => waitForNodesToHaveTheSameHeight( - ctx.rpcClients, - WAIT_FOR_NODES_TIMEOUT, + ctx.rpcClients, + WAIT_FOR_NODES_TIMEOUT, ), }, { @@ -270,16 +270,16 @@ export default function configureCoreTaskFactory( ]; await Promise.all( - sporks.map(async (spork) => ( - activateCoreSpork(ctx.seedCoreService.getRpcClient(), spork))), + sporks.map(async (spork) => ( + activateCoreSpork(ctx.seedCoreService.getRpcClient(), spork))), ); }, }, { title: 'Wait for nodes to have the same height', task: () => waitForNodesToHaveTheSameHeight( - ctx.rpcClients, - WAIT_FOR_NODES_TIMEOUT, + ctx.rpcClients, + WAIT_FOR_NODES_TIMEOUT, ), }, { @@ -288,8 +288,8 @@ export default function configureCoreTaskFactory( const { result: masternodesStatus } = await ctx.seedRpcClient.masternodelist('status'); const hasNotEnabled = Boolean( - Object.values(masternodesStatus) - .find((status) => status !== 'ENABLED'), + Object.values(masternodesStatus) + .find((status) => status !== 'ENABLED'), ); if (hasNotEnabled) { @@ -304,8 +304,8 @@ export default function configureCoreTaskFactory( { title: 'Wait for nodes to have the same height', task: () => waitForNodesToHaveTheSameHeight( - ctx.rpcClients, - WAIT_FOR_NODES_TIMEOUT, + ctx.rpcClients, + WAIT_FOR_NODES_TIMEOUT, ), }, { @@ -325,15 +325,15 @@ export default function configureCoreTaskFactory( } = await ctx.coreService.getRpcClient().getBlockCount()); await generateBlocks( - ctx.coreService, - blocksToGenerateInOneStep, - NETWORK_LOCAL, - // eslint-disable-next-line no-loop-func - (blocks) => { - blocksGenerated += blocks; - - observer.next(`${blocksGenerated} blocks generated`); - }, + ctx.coreService, + blocksToGenerateInOneStep, + NETWORK_LOCAL, + // eslint-disable-next-line no-loop-func + (blocks) => { + blocksGenerated += blocks; + + observer.next(`${blocksGenerated} blocks generated`); + }, ); } while (dip3ActivationHeight > currentBlockHeight); @@ -345,14 +345,14 @@ export default function configureCoreTaskFactory( { title: 'Wait for nodes to have the same height', task: () => waitForNodesToHaveTheSameHeight( - ctx.rpcClients, - WAIT_FOR_NODES_TIMEOUT, + ctx.rpcClients, + WAIT_FOR_NODES_TIMEOUT, ), }, { title: 'Stopping nodes', task: async () => (Promise.all( - ctx.coreServices.map((coreService) => coreService.stop()), + ctx.coreServices.map((coreService) => coreService.stop()), )), }, ]);