diff --git a/packages/bitcore-node/src/services/config.ts b/packages/bitcore-node/src/services/config.ts index 8360767bb72..2382a3a2be4 100644 --- a/packages/bitcore-node/src/services/config.ts +++ b/packages/bitcore-node/src/services/config.ts @@ -66,6 +66,11 @@ export class ConfigService { } return { chain: aliasChain, network: aliasNetwork }; } + + public anyEVMChain() { + const evmChains = ['ETH', 'MATIC', 'BASE']; + return evmChains.some(chain => this.chains().includes(chain)); + } } export const Config = new ConfigService(); diff --git a/packages/bitcore-node/src/workers/all.ts b/packages/bitcore-node/src/workers/all.ts index 6beead9cbe3..19099b39d10 100644 --- a/packages/bitcore-node/src/workers/all.ts +++ b/packages/bitcore-node/src/workers/all.ts @@ -3,6 +3,7 @@ import 'source-map-support/register'; import logger from '../logger'; import { loadModules } from '../modules'; import { Api } from '../services/api'; +import { Config } from '../services/config'; import { Event } from '../services/event'; import { P2P } from '../services/p2p'; import { Storage } from '../services/storage'; @@ -59,6 +60,11 @@ const stop = async () => { await service.stop(); } + if (Config.anyEVMChain()) { + const { BaseEVMStateProvider } = await import('../providers/chain-state/evm/api/csp'); + BaseEVMStateProvider.teardownRpcs(); + } + if (!cluster.isPrimary) { process.removeAllListeners(); } diff --git a/packages/bitcore-node/src/workers/api.ts b/packages/bitcore-node/src/workers/api.ts index 5cff50c30e5..9b57beee544 100644 --- a/packages/bitcore-node/src/workers/api.ts +++ b/packages/bitcore-node/src/workers/api.ts @@ -3,6 +3,7 @@ import 'source-map-support/register'; import logger from '../logger'; import { loadModules } from '../modules'; import { Api } from '../services/api'; +import { Config } from '../services/config'; import { Event } from '../services/event'; import { Storage } from '../services/storage'; import { Worker } from '../services/worker'; @@ -57,6 +58,10 @@ const stop = async () => { await service.stop(); } + if (Config.anyEVMChain()) { + const { BaseEVMStateProvider } = await import('../providers/chain-state/evm/api/csp'); + BaseEVMStateProvider.teardownRpcs(); + } if (!cluster.isPrimary) { process.removeAllListeners(); } diff --git a/packages/bitcore-node/src/workers/p2p.ts b/packages/bitcore-node/src/workers/p2p.ts index 2438a943b32..f3514f9dc35 100644 --- a/packages/bitcore-node/src/workers/p2p.ts +++ b/packages/bitcore-node/src/workers/p2p.ts @@ -65,6 +65,11 @@ const stop = async () => { await service.stop(); } + if (Config.anyEVMChain()) { + const { BaseEVMStateProvider } = await import('../providers/chain-state/evm/api/csp'); + BaseEVMStateProvider.teardownRpcs(); + } + if (!cluster.isPrimary) { process.removeAllListeners(); }