diff --git a/common/src/hedera-modules/environment.ts b/common/src/hedera-modules/environment.ts index f4c3df49c4..4edafcc891 100644 --- a/common/src/hedera-modules/environment.ts +++ b/common/src/hedera-modules/environment.ts @@ -8,35 +8,35 @@ export class Environment { /** * Mainnet API */ - public static readonly HEDERA_MAINNET_API: string = 'https://mainnet.mirrornode.hedera.com/api/v1'; + public static HEDERA_MAINNET_API: string = 'https://mainnet.mirrornode.hedera.com/api/v1'; /** * Mainnet message API */ - public static readonly HEDERA_MAINNET_MESSAGE_API: string = Environment.HEDERA_MAINNET_API + '/topics/messages'; + public static HEDERA_MAINNET_MESSAGE_API: string = Environment.HEDERA_MAINNET_API + '/topics/messages'; /** * Mainnet topic API */ - public static readonly HEDERA_MAINNET_TOPIC_API: string = Environment.HEDERA_MAINNET_API + '/topics/'; + public static HEDERA_MAINNET_TOPIC_API: string = Environment.HEDERA_MAINNET_API + '/topics'; /** * Mainnet account API */ - public static readonly HEDERA_MAINNET_ACCOUNT_API: string = Environment.HEDERA_MAINNET_API + '/accounts/'; + public static HEDERA_MAINNET_ACCOUNT_API: string = Environment.HEDERA_MAINNET_API + '/accounts'; /** * Mainnet balances API */ - public static readonly HEDERA_MAINNET_BALANCES_API: string = Environment.HEDERA_MAINNET_API + '/balances'; + public static HEDERA_MAINNET_BALANCES_API: string = Environment.HEDERA_MAINNET_API + '/balances'; /** * Mainnet contract API */ - public static readonly HEDERA_MAINNET_CONTRACT_API: string = Environment.HEDERA_MAINNET_API + '/contracts/'; + public static HEDERA_MAINNET_CONTRACT_API: string = Environment.HEDERA_MAINNET_API + '/contracts'; /** * Mainnet tokens API */ - public static readonly HEDERA_MAINNET_TOKENS_API: string = Environment.HEDERA_MAINNET_API + '/tokens'; + public static HEDERA_MAINNET_TOKENS_API: string = Environment.HEDERA_MAINNET_API + '/tokens'; /** * Mainnet tokens API */ - public static readonly HEDERA_MAINNET_TRANSACTIONS_API: string = Environment.HEDERA_MAINNET_API + '/transactions'; + public static HEDERA_MAINNET_TRANSACTIONS_API: string = Environment.HEDERA_MAINNET_API + '/transactions'; /** * Testnet API @@ -49,11 +49,11 @@ export class Environment { /** * Testnet topic API */ - public static readonly HEDERA_TESTNET_TOPIC_API: string = Environment.HEDERA_TESTNET_API + '/topics/'; + public static readonly HEDERA_TESTNET_TOPIC_API: string = Environment.HEDERA_TESTNET_API + '/topics'; /** * Testnet account API */ - public static readonly HEDERA_TESTNET_ACCOUNT_API: string = Environment.HEDERA_TESTNET_API + '/accounts/'; + public static readonly HEDERA_TESTNET_ACCOUNT_API: string = Environment.HEDERA_TESTNET_API + '/accounts'; /** * Testnet balances API */ @@ -61,7 +61,7 @@ export class Environment { /** * Testnet contract API */ - public static readonly HEDERA_TESTNET_CONTRACT_API: string = Environment.HEDERA_TESTNET_API + '/contracts/'; + public static readonly HEDERA_TESTNET_CONTRACT_API: string = Environment.HEDERA_TESTNET_API + '/contracts'; /** * Testnet tokens API */ @@ -82,11 +82,11 @@ export class Environment { /** * Preview topic API */ - public static readonly HEDERA_PREVIEW_TOPIC_API: string = Environment.HEDERA_PREVIEW_API + '/topics/'; + public static readonly HEDERA_PREVIEW_TOPIC_API: string = Environment.HEDERA_PREVIEW_API + '/topics'; /** * Preview account API */ - public static readonly HEDERA_PREVIEW_ACCOUNT_API: string = Environment.HEDERA_PREVIEW_API + '/accounts/'; + public static readonly HEDERA_PREVIEW_ACCOUNT_API: string = Environment.HEDERA_PREVIEW_API + '/accounts'; /** * Preview balances API */ @@ -94,7 +94,7 @@ export class Environment { /** * Preview contract API */ - public static readonly HEDERA_PREVIEW_CONTRACT_API: string = Environment.HEDERA_PREVIEW_API + '/contracts/'; + public static readonly HEDERA_PREVIEW_CONTRACT_API: string = Environment.HEDERA_PREVIEW_API + '/contracts'; /** * Preview tokens API */ @@ -115,11 +115,11 @@ export class Environment { /** * Localnode topic API */ - public static HEDERA_LOCALNODE_TOPIC_API: string = Environment.HEDERA_LOCALNODE_API + `/topics/`; + public static HEDERA_LOCALNODE_TOPIC_API: string = Environment.HEDERA_LOCALNODE_API + `/topics`; /** * Localnode account API */ - public static HEDERA_LOCALNODE_ACCOUNT_API: string = Environment.HEDERA_LOCALNODE_API + `/accounts/`; + public static HEDERA_LOCALNODE_ACCOUNT_API: string = Environment.HEDERA_LOCALNODE_API + `/accounts`; /** * Localnode balances API */ @@ -127,11 +127,11 @@ export class Environment { /** * Localnode contract API */ - public static HEDERA_LOCALNODE_CONTRACT_API: string = Environment.HEDERA_LOCALNODE_API + `/contracts/`; + public static HEDERA_LOCALNODE_CONTRACT_API: string = Environment.HEDERA_LOCALNODE_API + `/contracts`; /** * Localnode tokens API */ - public static HEDERA_LOCALNODE_TOKENS_API: string = Environment.HEDERA_LOCALNODE_API + `/tokens/`; + public static HEDERA_LOCALNODE_TOKENS_API: string = Environment.HEDERA_LOCALNODE_API + `/tokens`; /** * Localnode tokens API */ @@ -198,6 +198,11 @@ export class Environment { * @private */ private static _mirrorNodes: string[] = []; + /** + * Hedera mirror nodes + * @private + */ + private static _mirrorNodesBaseApi: string = '/api/v1'; /** * Set network @@ -255,15 +260,29 @@ export class Environment { if (Environment._mirrorNodes && Environment._mirrorNodes.length > 0) { const mirrornodeUrl = ensurePrefix(Environment._mirrorNodes[0], ['http://', 'https://'], 'https://'); - Environment._messagesApi = `${mirrornodeUrl}/api/v1/topics/messages`; - Environment._topicsApi = `${mirrornodeUrl}/api/v1/topics/`; - Environment._accountsApi = `${mirrornodeUrl}/api/v1/accounts/`; - Environment._balancesApi = `${mirrornodeUrl}/api/v1/balances/`; - Environment._contractsApi = `${mirrornodeUrl}/api/v1/contracts/`; - Environment._tokensApi = `${mirrornodeUrl}/api/v1/tokens/`; + Environment._messagesApi = `${mirrornodeUrl}${Environment._mirrorNodesBaseApi}/topics/messages`; + Environment._topicsApi = `${mirrornodeUrl}${Environment._mirrorNodesBaseApi}/topics`; + Environment._accountsApi = `${mirrornodeUrl}${Environment._mirrorNodesBaseApi}/accounts`; + Environment._balancesApi = `${mirrornodeUrl}${Environment._mirrorNodesBaseApi}/balances`; + Environment._contractsApi = `${mirrornodeUrl}${Environment._mirrorNodesBaseApi}/contracts`; + Environment._tokensApi = `${mirrornodeUrl}${Environment._mirrorNodesBaseApi}/tokens`; } } + /** + * Set mainnet address + */ + public static setMainnetApiUrl(apiUrl) { + Environment.HEDERA_MAINNET_API = apiUrl; + Environment.HEDERA_MAINNET_MESSAGE_API = Environment.HEDERA_MAINNET_API + '/topics/messages'; + Environment.HEDERA_MAINNET_TOPIC_API = Environment.HEDERA_MAINNET_API + '/topics'; + Environment.HEDERA_MAINNET_ACCOUNT_API = Environment.HEDERA_MAINNET_API + '/accounts'; + Environment.HEDERA_MAINNET_BALANCES_API = Environment.HEDERA_MAINNET_API + '/balances'; + Environment.HEDERA_MAINNET_CONTRACT_API = Environment.HEDERA_MAINNET_API + '/contracts'; + Environment.HEDERA_MAINNET_TOKENS_API = Environment.HEDERA_MAINNET_API + '/tokens'; + Environment.HEDERA_MAINNET_TRANSACTIONS_API = Environment.HEDERA_MAINNET_API + '/transactions'; + } + /** * Set localnode address */ @@ -271,11 +290,11 @@ export class Environment { Environment._localnodeaddress = address || 'localhost'; Environment.HEDERA_LOCALNODE_API = `${Environment._localnodeprotocol}://${Environment._localnodeaddress}:5551/api/v1`; Environment.HEDERA_LOCALNODE_MESSAGE_API = Environment.HEDERA_LOCALNODE_API + `/topics/messages`; - Environment.HEDERA_LOCALNODE_TOPIC_API = Environment.HEDERA_LOCALNODE_API + `/topics/`; - Environment.HEDERA_LOCALNODE_ACCOUNT_API = Environment.HEDERA_LOCALNODE_API + `/accounts/`; + Environment.HEDERA_LOCALNODE_TOPIC_API = Environment.HEDERA_LOCALNODE_API + `/topics`; + Environment.HEDERA_LOCALNODE_ACCOUNT_API = Environment.HEDERA_LOCALNODE_API + `/accounts`; Environment.HEDERA_LOCALNODE_BALANCES_API = Environment.HEDERA_LOCALNODE_API + `/balances`; - Environment.HEDERA_LOCALNODE_CONTRACT_API = Environment.HEDERA_LOCALNODE_API + `/contracts/`; - Environment.HEDERA_LOCALNODE_TOKENS_API = Environment.HEDERA_LOCALNODE_API + `/tokens/`; + Environment.HEDERA_LOCALNODE_CONTRACT_API = Environment.HEDERA_LOCALNODE_API + `/contracts`; + Environment.HEDERA_LOCALNODE_TOKENS_API = Environment.HEDERA_LOCALNODE_API + `/tokens`; } /** @@ -301,6 +320,24 @@ export class Environment { Environment._mirrorNodes = mirrorNodes; } + /** + * Set hedera mirror nodes base api + * @param baseApi Base api + */ + public static setMirrorNodesBaseApi(baseApi: string = '') { + let api = baseApi; + + if (api.length > 0 && !api.startsWith('/')) { + api = '/' + api; + } + + if (api.endsWith('/') && api.length > 1) { + api = api.slice(0, -1); + } + + Environment._mirrorNodesBaseApi = api; + } + /** * Create client */ @@ -427,4 +464,11 @@ export class Environment { public static get mirrorNodes(): string[] { return Environment._mirrorNodes; } -} + + /** + * Mirror nodes + */ + public static get mirrorNodesBaseApi(): string { + return Environment._mirrorNodesBaseApi; + } +} \ No newline at end of file diff --git a/common/src/helpers/workers.ts b/common/src/helpers/workers.ts index dc1187ccad..480889c503 100644 --- a/common/src/helpers/workers.ts +++ b/common/src/helpers/workers.ts @@ -158,6 +158,9 @@ export class Workers extends NatsService { if (!task.data.mirrorNodes) { task.data.mirrorNodes = Environment.mirrorNodes; } + if (!task.data.mirrorNodesBaseApi) { + task.data.mirrorNodesBaseApi = Environment.mirrorNodesBaseApi; + } if (!task.data.localNodeAddress) { task.data.localNodeAddress = Environment.localNodeAddress; } @@ -194,6 +197,9 @@ export class Workers extends NatsService { if (!task.data.mirrorNodes) { task.data.mirrorNodes = Environment.mirrorNodes; } + if (!task.data.mirrorNodesBaseApi) { + task.data.mirrorNodesBaseApi = Environment.mirrorNodesBaseApi; + } if (!task.data.localNodeAddress) { task.data.localNodeAddress = Environment.localNodeAddress; } @@ -476,6 +482,9 @@ export class Workers extends NatsService { if (!task.data.mirrorNodes) { task.data.mirrorNodes = Environment.mirrorNodes; } + if (!task.data.mirrorNodesBaseApi) { + task.data.mirrorNodesBaseApi = Environment.mirrorNodesBaseApi; + } if (!task.data.localNodeAddress) { task.data.localNodeAddress = Environment.localNodeAddress; } diff --git a/configs/.env..guardian.system b/configs/.env..guardian.system index 4e532b04c2..d57d7abb66 100644 --- a/configs/.env..guardian.system +++ b/configs/.env..guardian.system @@ -36,15 +36,18 @@ RETIRE_SINGLE_FILE_ID="0.0.6371651" RETIRE_DOUBLE_FILE_ID="0.0.6371652" MAX_HEDERA_TIMEOUT="600" +# OVERRIDE_NETWORK_CONFIGURATION="true" # if true, the OVERRIDE configurations will be applied on top of the base configuration defined by the HEDERA_NET value # Mainnet -# HEDERA_CUSTOM_NODES={"35.237.200.180:50211":"0.0.3"} -# HEDERA_CUSTOM_NODES={"35.237.200.180:50211":"0.0.3","35.186.191.247:50211":"0.0.4","35.192.2.25:50211":"0.0.5","35.199.161.108:50211":"0.0.6","35.203.82.240:50211":"0.0.7","35.236.5.219:50211":"0.0.8","35.197.192.225:50211":"0.0.9","35.242.233.154:50211":"0.0.10","35.240.118.96:50211":"0.0.11","35.204.86.32:50211":"0.0.12","35.234.132.107:50211":"0.0.13","35.236.2.27:50211":"0.0.14","35.228.11.53:50211":"0.0.15","34.91.181.183:50211":"0.0.16","34.86.212.247:50211":"0.0.17","172.105.247.67:50211":"0.0.18","34.89.87.138:50211":"0.0.19","34.82.78.255:50211":"0.0.20","34.76.140.109:50211":"0.0.21","34.64.141.166:50211":"0.0.22","35.232.244.145:50211":"0.0.23","34.89.103.38:50211":"0.0.24","34.93.112.7:50211":"0.0.25","34.87.150.174:50211":"0.0.26","34.125.200.96:50211":"0.0.27","35.198.220.75:50211":"0.0.28","34.142.71.129:50211":"0.0.29","35.234.249.150:50211":"0.0.30","34.107.78.179:50211":"0.0.31"} -# HEDERA_CUSTOM_MIRROR_NODES=["mainnet-public.mirrornode.hedera.com:443"] +# OVERRIDE_HEDERA_CONSENSUS_NODES={"35.237.200.180:50211":"0.0.3"} +# OVERRIDE_HEDERA_CONSENSUS_NODES={"35.237.200.180:50211":"0.0.3","35.186.191.247:50211":"0.0.4","35.192.2.25:50211":"0.0.5","35.199.161.108:50211":"0.0.6","35.203.82.240:50211":"0.0.7","35.236.5.219:50211":"0.0.8","35.197.192.225:50211":"0.0.9","35.242.233.154:50211":"0.0.10","35.240.118.96:50211":"0.0.11","35.204.86.32:50211":"0.0.12","35.234.132.107:50211":"0.0.13","35.236.2.27:50211":"0.0.14","35.228.11.53:50211":"0.0.15","34.91.181.183:50211":"0.0.16","34.86.212.247:50211":"0.0.17","172.105.247.67:50211":"0.0.18","34.89.87.138:50211":"0.0.19","34.82.78.255:50211":"0.0.20","34.76.140.109:50211":"0.0.21","34.64.141.166:50211":"0.0.22","35.232.244.145:50211":"0.0.23","34.89.103.38:50211":"0.0.24","34.93.112.7:50211":"0.0.25","34.87.150.174:50211":"0.0.26","34.125.200.96:50211":"0.0.27","35.198.220.75:50211":"0.0.28","34.142.71.129:50211":"0.0.29","35.234.249.150:50211":"0.0.30","34.107.78.179:50211":"0.0.31"} +# OVERRIDE_HEDERA_MIRROR_NODES=["mainnet-public.mirrornode.hedera.com:443"] +# OVERRIDE_HEDERA_MIRROR_NODES_BASE_API="/api/v1" # Testnet -# HEDERA_CUSTOM_NODES={"0.testnet.hedera.com:50211":"0.0.3"} -# HEDERA_CUSTOM_NODES={"0.testnet.hedera.com:50211":"0.0.3", "1.testnet.hedera.com:50211":"0.0.4", "2.testnet.hedera.com:50211":"0.0.5", "3.testnet.hedera.com:50211":"0.0.6", "4.testnet.hedera.com:50211":"0.0.7", "5.testnet.hedera.com:50211":"0.0.8", "6.testnet.hedera.com:50211":"0.0.9"} -# HEDERA_CUSTOM_MIRROR_NODES=["testnet.mirrornode.hedera.com:443"] +# OVERRIDE_HEDERA_CONSENSUS_NODES={"0.testnet.hedera.com:50211":"0.0.3"} +# OVERRIDE_HEDERA_CONSENSUS_NODES={"0.testnet.hedera.com:50211":"0.0.3", "1.testnet.hedera.com:50211":"0.0.4", "2.testnet.hedera.com:50211":"0.0.5", "3.testnet.hedera.com:50211":"0.0.6", "4.testnet.hedera.com:50211":"0.0.7", "5.testnet.hedera.com:50211":"0.0.8", "6.testnet.hedera.com:50211":"0.0.9"} +# OVERRIDE_HEDERA_MIRROR_NODES=["testnet.mirrornode.hedera.com:443"] +# OVERRIDE_HEDERA_MIRROR_NODES_BASE_API="/api/v1" # MAX_TRANSACTION_FEE="10" diff --git a/configs/.env.develop.guardian.system b/configs/.env.develop.guardian.system index 6d2dd6c073..003b40df50 100644 --- a/configs/.env.develop.guardian.system +++ b/configs/.env.develop.guardian.system @@ -36,15 +36,19 @@ RETIRE_SINGLE_FILE_ID="0.0.6371651" RETIRE_DOUBLE_FILE_ID="0.0.6371652" MAX_HEDERA_TIMEOUT="600" +# OVERRIDE_NETWORK_CONFIGURATION="true" # if true, the OVERRIDE configurations will be applied on top of the base configuration defined by the HEDERA_NET value # Mainnet -# HEDERA_CUSTOM_NODES={"35.237.200.180:50211":"0.0.3"} -# HEDERA_CUSTOM_NODES={"35.237.200.180:50211":"0.0.3","35.186.191.247:50211":"0.0.4","35.192.2.25:50211":"0.0.5","35.199.161.108:50211":"0.0.6","35.203.82.240:50211":"0.0.7","35.236.5.219:50211":"0.0.8","35.197.192.225:50211":"0.0.9","35.242.233.154:50211":"0.0.10","35.240.118.96:50211":"0.0.11","35.204.86.32:50211":"0.0.12","35.234.132.107:50211":"0.0.13","35.236.2.27:50211":"0.0.14","35.228.11.53:50211":"0.0.15","34.91.181.183:50211":"0.0.16","34.86.212.247:50211":"0.0.17","172.105.247.67:50211":"0.0.18","34.89.87.138:50211":"0.0.19","34.82.78.255:50211":"0.0.20","34.76.140.109:50211":"0.0.21","34.64.141.166:50211":"0.0.22","35.232.244.145:50211":"0.0.23","34.89.103.38:50211":"0.0.24","34.93.112.7:50211":"0.0.25","34.87.150.174:50211":"0.0.26","34.125.200.96:50211":"0.0.27","35.198.220.75:50211":"0.0.28","34.142.71.129:50211":"0.0.29","35.234.249.150:50211":"0.0.30","34.107.78.179:50211":"0.0.31"} -# HEDERA_CUSTOM_MIRROR_NODES=["mainnet-public.mirrornode.hedera.com:443"] +# OVERRIDE_HEDERA_CONSENSUS_NODES={"35.237.200.180:50211":"0.0.3"} +# OVERRIDE_HEDERA_CONSENSUS_NODES={"35.237.200.180:50211":"0.0.3","35.186.191.247:50211":"0.0.4","35.192.2.25:50211":"0.0.5","35.199.161.108:50211":"0.0.6","35.203.82.240:50211":"0.0.7","35.236.5.219:50211":"0.0.8","35.197.192.225:50211":"0.0.9","35.242.233.154:50211":"0.0.10","35.240.118.96:50211":"0.0.11","35.204.86.32:50211":"0.0.12","35.234.132.107:50211":"0.0.13","35.236.2.27:50211":"0.0.14","35.228.11.53:50211":"0.0.15","34.91.181.183:50211":"0.0.16","34.86.212.247:50211":"0.0.17","172.105.247.67:50211":"0.0.18","34.89.87.138:50211":"0.0.19","34.82.78.255:50211":"0.0.20","34.76.140.109:50211":"0.0.21","34.64.141.166:50211":"0.0.22","35.232.244.145:50211":"0.0.23","34.89.103.38:50211":"0.0.24","34.93.112.7:50211":"0.0.25","34.87.150.174:50211":"0.0.26","34.125.200.96:50211":"0.0.27","35.198.220.75:50211":"0.0.28","34.142.71.129:50211":"0.0.29","35.234.249.150:50211":"0.0.30","34.107.78.179:50211":"0.0.31"} +# OVERRIDE_HEDERA_MIRROR_NODES=["mainnet-public.mirrornode.hedera.com:443"] +# OVERRIDE_HEDERA_MIRROR_NODES_BASE_API="/api/v1" # Testnet -# HEDERA_CUSTOM_NODES={"0.testnet.hedera.com:50211":"0.0.3"} -# HEDERA_CUSTOM_NODES={"0.testnet.hedera.com:50211":"0.0.3", "1.testnet.hedera.com:50211":"0.0.4", "2.testnet.hedera.com:50211":"0.0.5", "3.testnet.hedera.com:50211":"0.0.6", "4.testnet.hedera.com:50211":"0.0.7", "5.testnet.hedera.com:50211":"0.0.8", "6.testnet.hedera.com:50211":"0.0.9"} -# HEDERA_CUSTOM_MIRROR_NODES=["testnet.mirrornode.hedera.com:443"] +# OVERRIDE_HEDERA_CONSENSUS_NODES={"0.testnet.hedera.com:50211":"0.0.3"} +# OVERRIDE_HEDERA_CONSENSUS_NODES={"0.testnet.hedera.com:50211":"0.0.3", "1.testnet.hedera.com:50211":"0.0.4", "2.testnet.hedera.com:50211":"0.0.5", "3.testnet.hedera.com:50211":"0.0.6", "4.testnet.hedera.com:50211":"0.0.7", "5.testnet.hedera.com:50211":"0.0.8", "6.testnet.hedera.com:50211":"0.0.9"} +# OVERRIDE_HEDERA_MIRROR_NODES=["testnet.mirrornode.hedera.com:443"] +# OVERRIDE_HEDERA_MIRROR_NODES_BASE_API="/api/v1" + # MAX_TRANSACTION_FEE="10" diff --git a/configs/.env.quickstart.guardian.system b/configs/.env.quickstart.guardian.system index 046ddc68b7..da910c1294 100644 --- a/configs/.env.quickstart.guardian.system +++ b/configs/.env.quickstart.guardian.system @@ -36,15 +36,18 @@ RETIRE_SINGLE_FILE_ID="0.0.6371651" RETIRE_DOUBLE_FILE_ID="0.0.6371652" MAX_HEDERA_TIMEOUT="600" +# OVERRIDE_NETWORK_CONFIGURATION="true" # if true, the OVERRIDE configurations will be applied on top of the base configuration defined by the HEDERA_NET value # Mainnet -# HEDERA_CUSTOM_NODES={"35.237.200.180:50211":"0.0.3"} -# HEDERA_CUSTOM_NODES={"35.237.200.180:50211":"0.0.3","35.186.191.247:50211":"0.0.4","35.192.2.25:50211":"0.0.5","35.199.161.108:50211":"0.0.6","35.203.82.240:50211":"0.0.7","35.236.5.219:50211":"0.0.8","35.197.192.225:50211":"0.0.9","35.242.233.154:50211":"0.0.10","35.240.118.96:50211":"0.0.11","35.204.86.32:50211":"0.0.12","35.234.132.107:50211":"0.0.13","35.236.2.27:50211":"0.0.14","35.228.11.53:50211":"0.0.15","34.91.181.183:50211":"0.0.16","34.86.212.247:50211":"0.0.17","172.105.247.67:50211":"0.0.18","34.89.87.138:50211":"0.0.19","34.82.78.255:50211":"0.0.20","34.76.140.109:50211":"0.0.21","34.64.141.166:50211":"0.0.22","35.232.244.145:50211":"0.0.23","34.89.103.38:50211":"0.0.24","34.93.112.7:50211":"0.0.25","34.87.150.174:50211":"0.0.26","34.125.200.96:50211":"0.0.27","35.198.220.75:50211":"0.0.28","34.142.71.129:50211":"0.0.29","35.234.249.150:50211":"0.0.30","34.107.78.179:50211":"0.0.31"} -# HEDERA_CUSTOM_MIRROR_NODES=["mainnet-public.mirrornode.hedera.com:443"] +# OVERRIDE_HEDERA_CONSENSUS_NODES={"35.237.200.180:50211":"0.0.3"} +# OVERRIDE_HEDERA_CONSENSUS_NODES={"35.237.200.180:50211":"0.0.3","35.186.191.247:50211":"0.0.4","35.192.2.25:50211":"0.0.5","35.199.161.108:50211":"0.0.6","35.203.82.240:50211":"0.0.7","35.236.5.219:50211":"0.0.8","35.197.192.225:50211":"0.0.9","35.242.233.154:50211":"0.0.10","35.240.118.96:50211":"0.0.11","35.204.86.32:50211":"0.0.12","35.234.132.107:50211":"0.0.13","35.236.2.27:50211":"0.0.14","35.228.11.53:50211":"0.0.15","34.91.181.183:50211":"0.0.16","34.86.212.247:50211":"0.0.17","172.105.247.67:50211":"0.0.18","34.89.87.138:50211":"0.0.19","34.82.78.255:50211":"0.0.20","34.76.140.109:50211":"0.0.21","34.64.141.166:50211":"0.0.22","35.232.244.145:50211":"0.0.23","34.89.103.38:50211":"0.0.24","34.93.112.7:50211":"0.0.25","34.87.150.174:50211":"0.0.26","34.125.200.96:50211":"0.0.27","35.198.220.75:50211":"0.0.28","34.142.71.129:50211":"0.0.29","35.234.249.150:50211":"0.0.30","34.107.78.179:50211":"0.0.31"} +# OVERRIDE_HEDERA_MIRROR_NODES=["mainnet-public.mirrornode.hedera.com:443"] +# OVERRIDE_HEDERA_MIRROR_NODES_BASE_API="/api/v1" # Testnet -# HEDERA_CUSTOM_NODES={"0.testnet.hedera.com:50211":"0.0.3"} -# HEDERA_CUSTOM_NODES={"0.testnet.hedera.com:50211":"0.0.3", "1.testnet.hedera.com:50211":"0.0.4", "2.testnet.hedera.com:50211":"0.0.5", "3.testnet.hedera.com:50211":"0.0.6", "4.testnet.hedera.com:50211":"0.0.7", "5.testnet.hedera.com:50211":"0.0.8", "6.testnet.hedera.com:50211":"0.0.9"} -# HEDERA_CUSTOM_MIRROR_NODES=["testnet.mirrornode.hedera.com:443"] +# OVERRIDE_HEDERA_CONSENSUS_NODES={"0.testnet.hedera.com:50211":"0.0.3"} +# OVERRIDE_HEDERA_CONSENSUS_NODES={"0.testnet.hedera.com:50211":"0.0.3", "1.testnet.hedera.com:50211":"0.0.4", "2.testnet.hedera.com:50211":"0.0.5", "3.testnet.hedera.com:50211":"0.0.6", "4.testnet.hedera.com:50211":"0.0.7", "5.testnet.hedera.com:50211":"0.0.8", "6.testnet.hedera.com:50211":"0.0.9"} +# OVERRIDE_HEDERA_MIRROR_NODES=["testnet.mirrornode.hedera.com:443"] +# OVERRIDE_HEDERA_MIRROR_NODES_BASE_API="/api/v1" # MAX_TRANSACTION_FEE="10" diff --git a/configs/.env.template.guardian.system b/configs/.env.template.guardian.system index 374b08d281..6d74b7157b 100644 --- a/configs/.env.template.guardian.system +++ b/configs/.env.template.guardian.system @@ -49,15 +49,18 @@ SR_INITIAL_PASSWORD="..." MAX_HEDERA_TIMEOUT="600" +# OVERRIDE_NETWORK_CONFIGURATION="true" # if true, the OVERRIDE configurations will be applied on top of the base configuration defined by the HEDERA_NET value # Mainnet -# HEDERA_CUSTOM_NODES={"35.237.200.180:50211":"0.0.3"} -# HEDERA_CUSTOM_NODES={"35.237.200.180:50211":"0.0.3","35.186.191.247:50211":"0.0.4","35.192.2.25:50211":"0.0.5","35.199.161.108:50211":"0.0.6","35.203.82.240:50211":"0.0.7","35.236.5.219:50211":"0.0.8","35.197.192.225:50211":"0.0.9","35.242.233.154:50211":"0.0.10","35.240.118.96:50211":"0.0.11","35.204.86.32:50211":"0.0.12","35.234.132.107:50211":"0.0.13","35.236.2.27:50211":"0.0.14","35.228.11.53:50211":"0.0.15","34.91.181.183:50211":"0.0.16","34.86.212.247:50211":"0.0.17","172.105.247.67:50211":"0.0.18","34.89.87.138:50211":"0.0.19","34.82.78.255:50211":"0.0.20","34.76.140.109:50211":"0.0.21","34.64.141.166:50211":"0.0.22","35.232.244.145:50211":"0.0.23","34.89.103.38:50211":"0.0.24","34.93.112.7:50211":"0.0.25","34.87.150.174:50211":"0.0.26","34.125.200.96:50211":"0.0.27","35.198.220.75:50211":"0.0.28","34.142.71.129:50211":"0.0.29","35.234.249.150:50211":"0.0.30","34.107.78.179:50211":"0.0.31"} -# HEDERA_CUSTOM_MIRROR_NODES=["mainnet-public.mirrornode.hedera.com:443"] +# OVERRIDE_HEDERA_CONSENSUS_NODES={"35.237.200.180:50211":"0.0.3"} +# OVERRIDE_HEDERA_CONSENSUS_NODES={"35.237.200.180:50211":"0.0.3","35.186.191.247:50211":"0.0.4","35.192.2.25:50211":"0.0.5","35.199.161.108:50211":"0.0.6","35.203.82.240:50211":"0.0.7","35.236.5.219:50211":"0.0.8","35.197.192.225:50211":"0.0.9","35.242.233.154:50211":"0.0.10","35.240.118.96:50211":"0.0.11","35.204.86.32:50211":"0.0.12","35.234.132.107:50211":"0.0.13","35.236.2.27:50211":"0.0.14","35.228.11.53:50211":"0.0.15","34.91.181.183:50211":"0.0.16","34.86.212.247:50211":"0.0.17","172.105.247.67:50211":"0.0.18","34.89.87.138:50211":"0.0.19","34.82.78.255:50211":"0.0.20","34.76.140.109:50211":"0.0.21","34.64.141.166:50211":"0.0.22","35.232.244.145:50211":"0.0.23","34.89.103.38:50211":"0.0.24","34.93.112.7:50211":"0.0.25","34.87.150.174:50211":"0.0.26","34.125.200.96:50211":"0.0.27","35.198.220.75:50211":"0.0.28","34.142.71.129:50211":"0.0.29","35.234.249.150:50211":"0.0.30","34.107.78.179:50211":"0.0.31"} +# OVERRIDE_HEDERA_MIRROR_NODES=["mainnet-public.mirrornode.hedera.com:443"] +# OVERRIDE_HEDERA_MIRROR_NODES_BASE_API="/api/v1" # Testnet -# HEDERA_CUSTOM_NODES={"0.testnet.hedera.com:50211":"0.0.3"} -# HEDERA_CUSTOM_NODES={"0.testnet.hedera.com:50211":"0.0.3", "1.testnet.hedera.com:50211":"0.0.4", "2.testnet.hedera.com:50211":"0.0.5", "3.testnet.hedera.com:50211":"0.0.6", "4.testnet.hedera.com:50211":"0.0.7", "5.testnet.hedera.com:50211":"0.0.8", "6.testnet.hedera.com:50211":"0.0.9"} -# HEDERA_CUSTOM_MIRROR_NODES=["testnet.mirrornode.hedera.com:443"] +# OVERRIDE_HEDERA_CONSENSUS_NODES={"0.testnet.hedera.com:50211":"0.0.3"} +# OVERRIDE_HEDERA_CONSENSUS_NODES={"0.testnet.hedera.com:50211":"0.0.3", "1.testnet.hedera.com:50211":"0.0.4", "2.testnet.hedera.com:50211":"0.0.5", "3.testnet.hedera.com:50211":"0.0.6", "4.testnet.hedera.com:50211":"0.0.7", "5.testnet.hedera.com:50211":"0.0.8", "6.testnet.hedera.com:50211":"0.0.9"} +# OVERRIDE_HEDERA_MIRROR_NODES=["testnet.mirrornode.hedera.com:443"] +# OVERRIDE_HEDERA_MIRROR_NODES_BASE_API="/api/v1" RETIRE_CONTRACT_FILE_ID="0.0.6371646" WIPE_CONTRACT_FILE_ID="0.0.6371642" diff --git a/docs/guardian/readme/getting-started/installation/setting-up-environment-parameters.md b/docs/guardian/readme/getting-started/installation/setting-up-environment-parameters.md index 2e695ea8b0..3048daf679 100644 --- a/docs/guardian/readme/getting-started/installation/setting-up-environment-parameters.md +++ b/docs/guardian/readme/getting-started/installation/setting-up-environment-parameters.md @@ -2,7 +2,7 @@ ### `.env / .env.docker` Parameters in `guardian-service` -
ParameterPurposeExample
MQ_ADDRESSWeb Socket Addresslocalhost
SERVICE_CHANNELVersion of the Guardianguardian.1
DB_HOSTHostname of the Databaselocalhost
DB_DATABASEDatabase Nameguardian_db
INITIAL_BALANCEInitial Balance Value500
INITIAL_STANDARD_REGISTRY_BALANCESetting Initial Standard Registry Balance500
OPERATOR_IDThe ID of the operation-
OPERATOR_KEYPrivate key of the operator-
LOCALNODE_ADDRESSThe address of the localnode server. This can be its IP address or a domain name1.1.1.1
LOCALNODE_PROTOCOLCommunication protocol for interactions with the local node, can be http or https.http/https
HEDERA_NETType of the Hedera node to transact withtestnet, localnode, mainnet
INITIALIZATION_TOPIC_IDThe ID of the initialization topic.0.0.1960
MESSAGE_LANGLanguage of the message text of all messagesen-US
LOG_LEVELLevel of the Logs2
SEND_KEYS_TO_VAULTChecked if keys to be sent to vaultTrue/False
MULTI_POLICY_SCHEDULERto set custom cron mask (timer mask) for sync job0 0 * * *
MQ_MESSAGE_CHUNKTo set up the message chunk size500000
HEDERA_CUSTOM_NODESDefine hedera nodes to execute and pay transaction fee0.testnet.hedera.com:50211":"0.0.3
HEDERA_CUSTOM_MIRROR_NODESDefine hedera mirror nodestestnet.mirrornode.hedera.com:443"
MAP_API_KEYDefines api to integrate Map schema typeALZ_X.....
DOCUMENT_CACHE_FIELD_LIMITDefines document field symbols limit for caching.500
BATCH_NFT_MINT_SIZEDefines size of batch of mint NFT transaction10
DIRECT_MESSAGE_PORTPort for direct messages (if not set generate random port)300
DIRECT_MESSAGE_HOSTHost for direct messages (if not set get hostname)localhost
DIRECT_MESSAGE_PROTOCOLProtocol https or http (http by default, https need additional server like nginx)http
MQ_MAX_PAYLOADMax message size for send via message-broker (otherwise create direct message) if not set always send messages using message broker35
RETIRE_CONTRACT_FILE_IDContract file ID for Retirement0.0.4860665
WIPE_CONTRACT_FILE_IDContract file ID for wiping0.0.4726865
DOCUMENTS_HANDLING_CHUNK_SIZETo set chunk size for delete or create a lot of data (value will affect speed performance communication with DB), default is 500.500
ALLOWED_PROTOCOLS="https"This variable defines the list of allowed protocols that can be used in outbound HTTP requests made by the httpRequestBlock.https
BLOCK_PRIVATE_IPThis variable controls whether the httpRequestBlock should reject outbound requests to private or sensitive IP address ranges.True/False
+
ParameterPurposeExample
MQ_ADDRESSWeb Socket Addresslocalhost
SERVICE_CHANNELVersion of the Guardianguardian.1
DB_HOSTHostname of the Databaselocalhost
DB_DATABASEDatabase Nameguardian_db
INITIAL_BALANCEInitial Balance Value500
INITIAL_STANDARD_REGISTRY_BALANCESetting Initial Standard Registry Balance500
OPERATOR_IDThe ID of the operation-
OPERATOR_KEYPrivate key of the operator-
LOCALNODE_ADDRESSThe address of the localnode server. This can be its IP address or a domain name1.1.1.1
LOCALNODE_PROTOCOLCommunication protocol for interactions with the local node, can be http or https.http/https
HEDERA_NETType of the Hedera node to transact withtestnet, localnode, mainnet
INITIALIZATION_TOPIC_IDThe ID of the initialization topic.0.0.1960
MESSAGE_LANGLanguage of the message text of all messagesen-US
LOG_LEVELLevel of the Logs2
SEND_KEYS_TO_VAULTChecked if keys to be sent to vaultTrue/False
MULTI_POLICY_SCHEDULERto set custom cron mask (timer mask) for sync job0 0 * * *
MQ_MESSAGE_CHUNKTo set up the message chunk size500000
OVERRIDE_HEDERA_CONSENSUS_NODESDefine hedera nodes to execute and pay transaction fee0.testnet.hedera.com:50211":"0.0.3
OVERRIDE_HEDERA_MIRROR_NODESDefine hedera mirror nodestestnet.mirrornode.hedera.com:443"
MAP_API_KEYDefines api to integrate Map schema typeALZ_X.....
DOCUMENT_CACHE_FIELD_LIMITDefines document field symbols limit for caching.500
BATCH_NFT_MINT_SIZEDefines size of batch of mint NFT transaction10
DIRECT_MESSAGE_PORTPort for direct messages (if not set generate random port)300
DIRECT_MESSAGE_HOSTHost for direct messages (if not set get hostname)localhost
DIRECT_MESSAGE_PROTOCOLProtocol https or http (http by default, https need additional server like nginx)http
MQ_MAX_PAYLOADMax message size for send via message-broker (otherwise create direct message) if not set always send messages using message broker35
RETIRE_CONTRACT_FILE_IDContract file ID for Retirement0.0.4860665
WIPE_CONTRACT_FILE_IDContract file ID for wiping0.0.4726865
DOCUMENTS_HANDLING_CHUNK_SIZETo set chunk size for delete or create a lot of data (value will affect speed performance communication with DB), default is 500.500
ALLOWED_PROTOCOLS="https"This variable defines the list of allowed protocols that can be used in outbound HTTP requests made by the httpRequestBlock.https
BLOCK_PRIVATE_IPThis variable controls whether the httpRequestBlock should reject outbound requests to private or sensitive IP address ranges.True/False
{% hint style="info" %} **Important Note:** diff --git a/guardian-service/configs/.env.guardian b/guardian-service/configs/.env.guardian index 528e82f040..ccb95e5edb 100644 --- a/guardian-service/configs/.env.guardian +++ b/guardian-service/configs/.env.guardian @@ -32,8 +32,11 @@ BBS_SIGNATURES_MODE="WASM" MQ_MAX_PAYLOAD="1048576" #LOG_LEVEL="2" #MQ_MESSAGE_CHUNK=5000000 -#HEDERA_CUSTOM_NODES={"0.testnet.hedera.com:50211":"0.0.3"} -#HEDERA_CUSTOM_MIRROR_NODES=["testnet.mirrornode.hedera.com:443"] + +#OVERRIDE_NETWORK_CONFIGURATION="true" # if true, the OVERRIDE configurations will be applied on top of the base configuration defined by the HEDERA_NET value +#OVERRIDE_HEDERA_CONSENSUS_NODES={"0.testnet.hedera.com:50211":"0.0.3"} +#OVERRIDE_HEDERA_MIRROR_NODES=["testnet.mirrornode.hedera.com:443"] +#OVERRIDE_HEDERA_MIRROR_NODES_BASE_API="/api/v1" #DOCUMENT_CACHE_FIELD_LIMIT=100 #BATCH_NFT_MINT_SIZE=10 diff --git a/guardian-service/configs/.env.guardian.develop b/guardian-service/configs/.env.guardian.develop index c6a6b61354..0fb08d108c 100644 --- a/guardian-service/configs/.env.guardian.develop +++ b/guardian-service/configs/.env.guardian.develop @@ -29,8 +29,11 @@ BBS_SIGNATURES_MODE="WASM" MQ_MAX_PAYLOAD="1048576" #LOG_LEVEL="2" #MQ_MESSAGE_CHUNK=5000000 -#HEDERA_CUSTOM_NODES={"0.testnet.hedera.com:50211":"0.0.3"} -#HEDERA_CUSTOM_MIRROR_NODES=["testnet.mirrornode.hedera.com:443"] + +#OVERRIDE_NETWORK_CONFIGURATION="true" # if true, the OVERRIDE configurations will be applied on top of the base configuration defined by the HEDERA_NET value +#OVERRIDE_HEDERA_CONSENSUS_NODES={"0.testnet.hedera.com:50211":"0.0.3"} +#OVERRIDE_HEDERA_MIRROR_NODES=["testnet.mirrornode.hedera.com:443"] +#OVERRIDE_HEDERA_MIRROR_NODES_BASE_API="/api/v1" #DOCUMENT_CACHE_FIELD_LIMIT=100 #BATCH_NFT_MINT_SIZE=10 diff --git a/guardian-service/configs/.env.guardian.template b/guardian-service/configs/.env.guardian.template index ee9260659d..26bfe843c3 100644 --- a/guardian-service/configs/.env.guardian.template +++ b/guardian-service/configs/.env.guardian.template @@ -36,8 +36,11 @@ BBS_SIGNATURES_MODE="WASM" MQ_MAX_PAYLOAD="" #LOG_LEVEL="2" #MQ_MESSAGE_CHUNK=5000000 -#HEDERA_CUSTOM_NODES={"0.testnet.hedera.com:50211":"0.0.3"} -#HEDERA_CUSTOM_MIRROR_NODES=["testnet.mirrornode.hedera.com:443"] + +#OVERRIDE_NETWORK_CONFIGURATION="true" # if true, the OVERRIDE configurations will be applied on top of the base configuration defined by the HEDERA_NET value +#OVERRIDE_HEDERA_CONSENSUS_NODES={"0.testnet.hedera.com:50211":"0.0.3"} +#OVERRIDE_HEDERA_MIRROR_NODES=["testnet.mirrornode.hedera.com:443"] +#OVERRIDE_HEDERA_MIRROR_NODES_BASE_API="/api/v1" #DOCUMENT_CACHE_FIELD_LIMIT=100 #BATCH_NFT_MINT_SIZE=10 diff --git a/guardian-service/src/app.ts b/guardian-service/src/app.ts index 734f1489b3..ecf74ae451 100644 --- a/guardian-service/src/app.ts +++ b/guardian-service/src/app.ts @@ -196,34 +196,42 @@ Promise.all([ Environment.setLocalNodeProtocol(process.env.LOCALNODE_PROTOCOL); Environment.setLocalNodeAddress(process.env.LOCALNODE_ADDRESS); - if (process.env.HEDERA_CUSTOM_NODES) { - try { - const nodes = JSON.parse(process.env.HEDERA_CUSTOM_NODES); - Environment.setNodes(nodes); - } catch (error) { - await logger.warn( - 'HEDERA_CUSTOM_NODES field in settings: ' + error.message, - ['GUARDIAN_SERVICE'], - null - ); - console.warn(error); + + if (process.env.OVERRIDE_NETWORK_CONFIGURATION === 'true') { + if (process.env.OVERRIDE_HEDERA_CONSENSUS_NODES) { + try { + const nodes = JSON.parse(process.env.OVERRIDE_HEDERA_CONSENSUS_NODES); + Environment.setNodes(nodes); + } catch (error) { + await logger.warn( + 'OVERRIDE_HEDERA_CONSENSUS_NODES field in settings: ' + error.message, + ['GUARDIAN_SERVICE'], + null + ); + console.warn(error); + } } - } - if (process.env.HEDERA_CUSTOM_MIRROR_NODES) { - try { - const mirrorNodes = JSON.parse( - process.env.HEDERA_CUSTOM_MIRROR_NODES - ); - Environment.setMirrorNodes(mirrorNodes); - } catch (error) { - await logger.warn( - 'HEDERA_CUSTOM_MIRROR_NODES field in settings: ' + error.message, - ['GUARDIAN_SERVICE'], - null - ); - console.warn(error); + if (process.env.OVERRIDE_HEDERA_MIRROR_NODES) { + try { + const mirrorNodes = JSON.parse( + process.env.OVERRIDE_HEDERA_MIRROR_NODES + ); + Environment.setMirrorNodes(mirrorNodes); + } catch (error) { + await logger.warn( + 'OVERRIDE_HEDERA_MIRROR_NODES field in settings: ' + error.message, + ['GUARDIAN_SERVICE'], + null + ); + console.warn(error); + } + } + + if (process.env.OVERRIDE_HEDERA_MIRROR_NODES_BASE_API) { + Environment.setMirrorNodesBaseApi(process.env.OVERRIDE_HEDERA_MIRROR_NODES_BASE_API); } } + Environment.setNetwork(process.env.HEDERA_NET); MessageServer.setLang(process.env.MESSAGE_LANG); // TransactionLogger.init(channel, process.env.LOG_LEVEL as TransactionLogLvl); diff --git a/k8s-manifests/1-config/guardian-service-configmap.yaml b/k8s-manifests/1-config/guardian-service-configmap.yaml index 517cb88848..b8a9f9318b 100644 --- a/k8s-manifests/1-config/guardian-service-configmap.yaml +++ b/k8s-manifests/1-config/guardian-service-configmap.yaml @@ -38,8 +38,10 @@ data: #LOG_LEVEL=2 #MQ_MESSAGE_CHUNK=5000000 - #HEDERA_CUSTOM_NODES={"0.testnet.hedera.com:50211":"0.0.3"} - #HEDERA_CUSTOM_MIRROR_NODES=["testnet.mirrornode.hedera.com:443"] + #OVERRIDE_NETWORK_CONFIGURATION="true" # if true, the OVERRIDE configurations will be applied on top of the base configuration defined by the HEDERA_NET value + #OVERRIDE_HEDERA_CONSENSUS_NODES={"0.testnet.hedera.com:50211":"0.0.3"} + #OVERRIDE_HEDERA_MIRROR_NODES=["testnet.mirrornode.hedera.com:443"] + #OVERRIDE_HEDERA_MIRROR_NODES_BASE_API="/api/v1" #MAP_API_KEY=... #DOCUMENT_CACHE_FIELD_LIMIT=100 diff --git a/k8s-manifests/1-config/policy-service-configmap.yaml b/k8s-manifests/1-config/policy-service-configmap.yaml index 80dfdd82e9..44641c3a07 100644 --- a/k8s-manifests/1-config/policy-service-configmap.yaml +++ b/k8s-manifests/1-config/policy-service-configmap.yaml @@ -24,8 +24,10 @@ data: MULTI_POLICY_SCHEDULER="0 0 * * *" EXTERNAL_DOCUMENTS_SCHEDULER="0 0 * * *" #LOG_LEVEL="2" - #HEDERA_CUSTOM_NODES={"0.testnet.hedera.com:50211":"0.0.3"} - #HEDERA_CUSTOM_MIRROR_NODES=["testnet.mirrornode.hedera.com:443"] + #OVERRIDE_NETWORK_CONFIGURATION="true" # if true, the OVERRIDE configurations will be applied on top of the base configuration defined by the HEDERA_NET value + #OVERRIDE_HEDERA_CONSENSUS_NODES={"0.testnet.hedera.com:50211":"0.0.3"} + #OVERRIDE_HEDERA_MIRROR_NODES=["testnet.mirrornode.hedera.com:443"] + #OVERRIDE_HEDERA_MIRROR_NODES_BASE_API="/api/v1" #MQ_MESSAGE_CHUNK=5000000 #DOCUMENT_CACHE_FIELD_LIMIT=100 #BATCH_NFT_MINT_SIZE=10 diff --git a/policy-service/configs/.env.policy b/policy-service/configs/.env.policy index 5418ffd735..2bb0d3e832 100644 --- a/policy-service/configs/.env.policy +++ b/policy-service/configs/.env.policy @@ -17,8 +17,12 @@ MQ_MAX_PAYLOAD="1048576" MULTI_POLICY_SCHEDULER="0 0 * * *" EXTERNAL_DOCUMENTS_SCHEDULER="0 0 * * *" #LOG_LEVEL="2" -#HEDERA_CUSTOM_NODES={"0.testnet.hedera.com:50211":"0.0.3"} -#HEDERA_CUSTOM_MIRROR_NODES=["testnet.mirrornode.hedera.com:443"] + +#OVERRIDE_NETWORK_CONFIGURATION="true" # if true, the OVERRIDE configurations will be applied on top of the base configuration defined by the HEDERA_NET value +#OVERRIDE_HEDERA_CONSENSUS_NODES={"0.testnet.hedera.com:50211":"0.0.3"} +#OVERRIDE_HEDERA_MIRROR_NODES=["testnet.mirrornode.hedera.com:443"] +#OVERRIDE_HEDERA_MIRROR_NODES_BASE_API="/api/v1" + #MQ_MESSAGE_CHUNK=5000000 #DOCUMENT_CACHE_FIELD_LIMIT=100 #BATCH_NFT_MINT_SIZE=10 diff --git a/policy-service/configs/.env.policy.develop b/policy-service/configs/.env.policy.develop index 16f7383b09..ce9931702c 100644 --- a/policy-service/configs/.env.policy.develop +++ b/policy-service/configs/.env.policy.develop @@ -17,8 +17,12 @@ MQ_MAX_PAYLOAD="1048576" MULTI_POLICY_SCHEDULER="0 0 * * *" EXTERNAL_DOCUMENTS_SCHEDULER="0 0 * * *" #LOG_LEVEL="2" -#HEDERA_CUSTOM_NODES={"0.testnet.hedera.com:50211":"0.0.3"} -#HEDERA_CUSTOM_MIRROR_NODES=["testnet.mirrornode.hedera.com:443"] + +#OVERRIDE_NETWORK_CONFIGURATION="true" # if true, the OVERRIDE configurations will be applied on top of the base configuration defined by the HEDERA_NET value +#OVERRIDE_HEDERA_CONSENSUS_NODES={"0.testnet.hedera.com:50211":"0.0.3"} +#OVERRIDE_HEDERA_MIRROR_NODES=["testnet.mirrornode.hedera.com:443"] +#OVERRIDE_HEDERA_MIRROR_NODES_BASE_API="/api/v1" + #MQ_MESSAGE_CHUNK=5000000 #DOCUMENT_CACHE_FIELD_LIMIT=100 #BATCH_NFT_MINT_SIZE=10 diff --git a/policy-service/configs/.env.policy.template b/policy-service/configs/.env.policy.template index e45b5f0a77..8e28f3310e 100644 --- a/policy-service/configs/.env.policy.template +++ b/policy-service/configs/.env.policy.template @@ -17,8 +17,12 @@ MQ_MAX_PAYLOAD="" MULTI_POLICY_SCHEDULER="" EXTERNAL_DOCUMENTS_SCHEDULER="" #LOG_LEVEL="2" -#HEDERA_CUSTOM_NODES={"0.testnet.hedera.com:50211":"0.0.3"} -#HEDERA_CUSTOM_MIRROR_NODES=["testnet.mirrornode.hedera.com:443"] + +#OVERRIDE_NETWORK_CONFIGURATION="true" # if true, the OVERRIDE configurations will be applied on top of the base configuration defined by the HEDERA_NET value +#OVERRIDE_HEDERA_CONSENSUS_NODES={"0.testnet.hedera.com:50211":"0.0.3"} +#OVERRIDE_HEDERA_MIRROR_NODES=["testnet.mirrornode.hedera.com:443"] +#OVERRIDE_HEDERA_MIRROR_NODES_BASE_API="/api/v1" + #MQ_MESSAGE_CHUNK=5000000 #DOCUMENT_CACHE_FIELD_LIMIT=100 #BATCH_NFT_MINT_SIZE=10 diff --git a/policy-service/src/api/policy-process.ts b/policy-service/src/api/policy-process.ts index 57e932cc67..3870f12229 100644 --- a/policy-service/src/api/policy-process.ts +++ b/policy-service/src/api/policy-process.ts @@ -93,35 +93,42 @@ Promise.all([ const logger: PinoLogger = pinoLoggerInitialization(loggerMongo); - if (process.env.HEDERA_CUSTOM_NODES) { - try { - const nodes = JSON.parse(process.env.HEDERA_CUSTOM_NODES); - Environment.setNodes(nodes); - } catch (error) { - await logger.warn( - 'HEDERA_CUSTOM_NODES field in settings: ' + error.message, - ['POLICY', policyConfig.name, policyId.toString()], - policyOwnerId - ); - console.warn(error); + if (process.env.OVERRIDE_NETWORK_CONFIGURATION === 'true') { + if (process.env.OVERRIDE_HEDERA_CONSENSUS_NODES) { + try { + const nodes = JSON.parse(process.env.OVERRIDE_HEDERA_CONSENSUS_NODES); + Environment.setNodes(nodes); + } catch (error) { + await logger.warn( + 'OVERRIDE_HEDERA_CONSENSUS_NODES field in settings: ' + error.message, + ['POLICY', policyConfig.name, policyId.toString()], + policyOwnerId + ); + console.warn(error); + } } - } - if (process.env.HEDERA_CUSTOM_MIRROR_NODES) { - try { - const mirrorNodes = JSON.parse( - process.env.HEDERA_CUSTOM_MIRROR_NODES - ); - Environment.setMirrorNodes(mirrorNodes); - } catch (error) { - await logger.warn( - 'HEDERA_CUSTOM_MIRROR_NODES field in settings: ' + - error.message, - ['POLICY', policyConfig.name, policyId.toString()], - policyOwnerId - ); - console.warn(error); + if (process.env.OVERRIDE_HEDERA_MIRROR_NODES) { + try { + const mirrorNodes = JSON.parse( + process.env.OVERRIDE_HEDERA_MIRROR_NODES + ); + Environment.setMirrorNodes(mirrorNodes); + } catch (error) { + await logger.warn( + 'OVERRIDE_HEDERA_MIRROR_NODES field in settings: ' + + error.message, + ['POLICY', policyConfig.name, policyId.toString()], + policyOwnerId + ); + console.warn(error); + } + } + + if (process.env.OVERRIDE_HEDERA_MIRROR_NODES_BASE_API) { + Environment.setMirrorNodesBaseApi(process.env.OVERRIDE_HEDERA_MIRROR_NODES_BASE_API); } } + Environment.setNetwork(process.env.HEDERA_NET); MessageServer.setLang(process.env.MESSAGE_LANG); diff --git a/topic-listener-service/src/api/listener.ts b/topic-listener-service/src/api/listener.ts index 293bc9ff00..2719e6caf7 100644 --- a/topic-listener-service/src/api/listener.ts +++ b/topic-listener-service/src/api/listener.ts @@ -110,7 +110,7 @@ export class Listener { public async getMessages(topicId: string, lastNumber: number): Promise { try { - const url = `${Environment.HEDERA_TOPIC_API}${topicId}/messages`; + const url = `${Environment.HEDERA_TOPIC_API}/${topicId}/messages`; const option: any = { params: { limit: Listener.REST_API_MAX_LIMIT diff --git a/worker-service/src/api/helpers/environment.ts b/worker-service/src/api/helpers/environment.ts deleted file mode 100644 index 13eb24e4ee..0000000000 --- a/worker-service/src/api/helpers/environment.ts +++ /dev/null @@ -1,416 +0,0 @@ -import { ensurePrefix, stripPrefix } from '@guardian/common'; -import { AccountId, Client } from '@hiero-ledger/sdk'; - -/** - * Environment class - */ -export class Environment { - /** - * Mainnet API - */ - public static readonly HEDERA_MAINNET_API: string = 'https://mainnet-public.mirrornode.hedera.com/api/v1'; - /** - * Mainnet message API - */ - public static readonly HEDERA_MAINNET_MESSAGE_API: string = Environment.HEDERA_MAINNET_API + '/topics/messages'; - /** - * Mainnet topic API - */ - public static readonly HEDERA_MAINNET_TOPIC_API: string = Environment.HEDERA_MAINNET_API + '/topics/'; - /** - * Mainnet account API - */ - public static readonly HEDERA_MAINNET_ACCOUNT_API: string = Environment.HEDERA_MAINNET_API + '/accounts/'; - /** - * Mainnet balances API - */ - public static readonly HEDERA_MAINNET_BALANCES_API: string = Environment.HEDERA_MAINNET_API + '/balances'; - /** - * Mainnet contract API - */ - public static readonly HEDERA_MAINNET_CONTRACT_API: string = Environment.HEDERA_MAINNET_API + '/contracts/'; - /** - * Mainnet tokens API - */ - public static readonly HEDERA_MAINNET_TOKENS_API: string = Environment.HEDERA_MAINNET_API + '/tokens'; - /** - * Mainnet tokens API - */ - public static readonly HEDERA_MAINNET_TRANSACTIONS_API: string = Environment.HEDERA_MAINNET_API + '/transactions'; - - /** - * Testnet API - */ - public static readonly HEDERA_TESTNET_API: string = 'https://testnet.mirrornode.hedera.com/api/v1'; - /** - * Testnet message API - */ - public static readonly HEDERA_TESTNET_MESSAGE_API: string = Environment.HEDERA_TESTNET_API + '/topics/messages'; - /** - * Testnet topic API - */ - public static readonly HEDERA_TESTNET_TOPIC_API: string = Environment.HEDERA_TESTNET_API + '/topics/'; - /** - * Testnet account API - */ - public static readonly HEDERA_TESTNET_ACCOUNT_API: string = Environment.HEDERA_TESTNET_API + '/accounts/'; - /** - * Testnet balances API - */ - public static readonly HEDERA_TESTNET_BALANCES_API: string = Environment.HEDERA_TESTNET_API + '/balances'; - /** - * Testnet contract API - */ - public static readonly HEDERA_TESTNET_CONTRACT_API: string = Environment.HEDERA_TESTNET_API + '/contracts/'; - /** - * Testnet tokens API - */ - public static readonly HEDERA_TESTNET_TOKENS_API: string = Environment.HEDERA_TESTNET_API + '/tokens'; - /** - * Testnet tokens API - */ - public static readonly HEDERA_TESTNET_TRANSACTIONS_API: string = Environment.HEDERA_TESTNET_API + '/transactions'; - - /** - * Preview API - */ - public static readonly HEDERA_PREVIEW_API: string = 'https://preview.mirrornode.hedera.com/api/v1'; - /** - * Preview message API - */ - public static readonly HEDERA_PREVIEW_MESSAGE_API: string = Environment.HEDERA_PREVIEW_API + '/topics/messages'; - /** - * Preview topic API - */ - public static readonly HEDERA_PREVIEW_TOPIC_API: string = Environment.HEDERA_PREVIEW_API + '/topics/'; - /** - * Preview account API - */ - public static readonly HEDERA_PREVIEW_ACCOUNT_API: string = Environment.HEDERA_PREVIEW_API + '/accounts/'; - /** - * Preview balances API - */ - public static readonly HEDERA_PREVIEW_BALANCES_API: string = Environment.HEDERA_PREVIEW_API + '/balances'; - /** - * Preview contract API - */ - public static readonly HEDERA_PREVIEW_CONTRACT_API: string = Environment.HEDERA_PREVIEW_API + '/contracts/'; - /** - * Preview tokens API - */ - public static readonly HEDERA_PREVIEW_TOKENS_API: string = Environment.HEDERA_PREVIEW_API + '/tokens'; - /** - * Preview tokens API - */ - public static readonly HEDERA_PREVIEW_TRANSACTIONS_API: string = Environment.HEDERA_PREVIEW_API + '/transactions'; - - /** - * Localnode API - */ - public static HEDERA_LOCALNODE_API: string = `https://localhost:5551/api/v1`; - /** - * Localnode message API - */ - public static HEDERA_LOCALNODE_MESSAGE_API: string = Environment.HEDERA_LOCALNODE_API + `/topics/messages`; - /** - * Localnode topic API - */ - public static HEDERA_LOCALNODE_TOPIC_API: string = Environment.HEDERA_LOCALNODE_API + `/topics/`; - /** - * Localnode account API - */ - public static HEDERA_LOCALNODE_ACCOUNT_API: string = Environment.HEDERA_LOCALNODE_API + `/accounts/`; - /** - * Localnode balances API - */ - public static HEDERA_LOCALNODE_BALANCES_API: string = Environment.HEDERA_LOCALNODE_API + '/balances'; - /** - * Localnode contract API - */ - public static HEDERA_LOCALNODE_CONTRACT_API: string = Environment.HEDERA_LOCALNODE_API + `/contracts/`; - /** - * Localnode tokens API - */ - public static HEDERA_LOCALNODE_TOKENS_API: string = Environment.HEDERA_LOCALNODE_API + `/tokens/`; - /** - * Localnode tokens API - */ - public static readonly HEDERA_LOCALNODE_TRANSACTIONS_API: string = Environment.HEDERA_LOCALNODE_API + '/transactions'; - - /** - * Localnode protocol - * @private - */ - private static _localnodeprotocol: string = 'http' - /** - * Network - * @private - */ - private static _network: string = 'testnet'; - /** - * LocalNode Address - */ - private static _localnodeaddress = 'localhost' - - /** - * Message API - * @private - */ - private static _messagesApi: string = Environment.HEDERA_TESTNET_MESSAGE_API; - /** - * Topic API - * @private - */ - private static _topicsApi: string = Environment.HEDERA_TESTNET_TOPIC_API; - /** - * Account API - * @private - */ - private static _accountsApi: string = Environment.HEDERA_TESTNET_ACCOUNT_API; - /** - * Balances API - * @private - */ - private static _balancesApi: string = Environment.HEDERA_TESTNET_BALANCES_API; - /** - * Contract API - * @private - */ - private static _contractsApi: string = Environment.HEDERA_TESTNET_CONTRACT_API; - /** - * Tokens API - * @private - */ - private static _tokensApi: string = Environment.HEDERA_TESTNET_TOKENS_API; - /** - * Tokens API - * @private - */ - private static _transactionsApi: string = Environment.HEDERA_TESTNET_TRANSACTIONS_API; - - /** - * Hedera nodes - * @private - */ - private static _nodes: any = {}; - /** - * Hedera mirror nodes - * @private - */ - private static _mirrorNodes: string[] = []; - - /** - * Set network - * @param network - */ - public static setNetwork(network: string) { - switch (network) { - case 'mainnet': - Environment._network = 'mainnet'; - Environment._messagesApi = Environment.HEDERA_MAINNET_MESSAGE_API; - Environment._topicsApi = Environment.HEDERA_MAINNET_TOPIC_API; - Environment._accountsApi = Environment.HEDERA_MAINNET_ACCOUNT_API; - Environment._balancesApi = Environment.HEDERA_MAINNET_BALANCES_API; - Environment._contractsApi = Environment.HEDERA_MAINNET_CONTRACT_API; - Environment._tokensApi = Environment.HEDERA_MAINNET_TOKENS_API; - Environment._transactionsApi = Environment.HEDERA_MAINNET_TRANSACTIONS_API; - break; - - case 'testnet': - Environment._network = 'testnet'; - Environment._messagesApi = Environment.HEDERA_TESTNET_MESSAGE_API; - Environment._topicsApi = Environment.HEDERA_TESTNET_TOPIC_API; - Environment._accountsApi = Environment.HEDERA_TESTNET_ACCOUNT_API; - Environment._balancesApi = Environment.HEDERA_TESTNET_BALANCES_API; - Environment._contractsApi = Environment.HEDERA_TESTNET_CONTRACT_API; - Environment._tokensApi = Environment.HEDERA_TESTNET_TOKENS_API; - Environment._transactionsApi = Environment.HEDERA_TESTNET_TRANSACTIONS_API; - break; - - case 'previewnet': - Environment._network = 'previewnet'; - Environment._messagesApi = Environment.HEDERA_PREVIEW_MESSAGE_API; - Environment._topicsApi = Environment.HEDERA_PREVIEW_TOPIC_API; - Environment._accountsApi = Environment.HEDERA_PREVIEW_ACCOUNT_API; - Environment._balancesApi = Environment.HEDERA_PREVIEW_BALANCES_API; - Environment._contractsApi = Environment.HEDERA_PREVIEW_CONTRACT_API; - Environment._tokensApi = Environment.HEDERA_PREVIEW_TOKENS_API; - Environment._transactionsApi = Environment.HEDERA_PREVIEW_TRANSACTIONS_API; - break; - - case 'localnode': - Environment._network = 'localnode'; - Environment._messagesApi = Environment.HEDERA_LOCALNODE_MESSAGE_API; - Environment._topicsApi = Environment.HEDERA_LOCALNODE_TOPIC_API; - Environment._accountsApi = Environment.HEDERA_LOCALNODE_ACCOUNT_API; - Environment._balancesApi = Environment.HEDERA_LOCALNODE_BALANCES_API; - Environment._contractsApi = Environment.HEDERA_LOCALNODE_CONTRACT_API; - Environment._tokensApi = Environment.HEDERA_LOCALNODE_TOKENS_API; - Environment._transactionsApi = Environment.HEDERA_LOCALNODE_TRANSACTIONS_API; - break; - - default: - throw new Error(`Unknown network: ${network}`) - } - - if (Environment._mirrorNodes && Environment._mirrorNodes.length > 0) { - const mirrornodeUrl = ensurePrefix(Environment._mirrorNodes[0], ['http://', 'https://'], 'https://'); - Environment._messagesApi = `${mirrornodeUrl}/api/v1/topics/messages`; - Environment._topicsApi = `${mirrornodeUrl}/api/v1/topics/`; - Environment._accountsApi = `${mirrornodeUrl}/api/v1/accounts/`; - Environment._balancesApi = `${mirrornodeUrl}/api/v1/balances/`; - Environment._contractsApi = `${mirrornodeUrl}/api/v1/contracts/`; - Environment._tokensApi = `${mirrornodeUrl}/api/v1/tokens/`; - } - } - - /** - * Set localnode address - */ - public static setLocalNodeAddress(address) { - Environment._localnodeaddress = address || 'localhost'; - Environment.HEDERA_LOCALNODE_API = `${Environment._localnodeprotocol}://${Environment._localnodeaddress}:5551/api/v1`; - Environment.HEDERA_LOCALNODE_MESSAGE_API = Environment.HEDERA_LOCALNODE_API + `/topics/messages`; - Environment.HEDERA_LOCALNODE_TOPIC_API = Environment.HEDERA_LOCALNODE_API + `/topics/`; - Environment.HEDERA_LOCALNODE_ACCOUNT_API = Environment.HEDERA_LOCALNODE_API + `/accounts/`; - Environment.HEDERA_LOCALNODE_BALANCES_API = Environment.HEDERA_LOCALNODE_API + `/balances`; - Environment.HEDERA_LOCALNODE_CONTRACT_API = Environment.HEDERA_LOCALNODE_API + `/contracts/`; - Environment.HEDERA_LOCALNODE_TOKENS_API = Environment.HEDERA_LOCALNODE_API + `/tokens/`; - } - - /** - * Set localnode protocol - */ - public static setLocalNodeProtocol(protocol: string) { - Environment._localnodeprotocol = protocol; - } - - /** - * Set hedera nodes - * @param nodes Hedera nodes - */ - public static setNodes(nodes: any) { - Environment._nodes = nodes; - } - - /** - * Set hedera mirror nodes - * @param mirrorNodes Hedera mirror nodes - */ - public static setMirrorNodes(mirrorNodes: string[]) { - Environment._mirrorNodes = mirrorNodes; - } - - /** - * Create client - */ - public static createClient(): Client { - let client: Client; - - switch (Environment._network) { - case 'mainnet': - client = Client.forMainnet(); - break; - case 'testnet': - client = Client.forTestnet(); - break; - case 'previewnet': - client = Client.forPreviewnet(); - break; - case 'localnode': - const node = {} as any; - node[`${Environment._localnodeaddress}:50211`] = new AccountId(3) - client = Client.forNetwork(node).setMirrorNetwork(`${Environment._localnodeaddress}:5600`); - break; - default: - throw new Error(`Unknown network: ${Environment._network}`) - } - - if (Environment._nodes && Object.keys(Environment._nodes).length) { - client.setNetwork(Environment._nodes); - } - if (Environment._mirrorNodes?.length) { - const mirrornodeUrls = Environment._mirrorNodes.map(node => stripPrefix(node, ['http://', 'https://'])); - client.setMirrorNetwork(mirrornodeUrls); - } - - return client; - } - - /** - * Network - */ - public static get network(): string { - return Environment._network; - } - - /** - * Hedera message API - * @constructor - */ - public static get HEDERA_MESSAGE_API(): string { - return Environment._messagesApi; - } - - /** - * Hedera topic API - * @constructor - */ - public static get HEDERA_TOPIC_API(): string { - return Environment._topicsApi; - } - - /** - * Hedera account API - * @constructor - */ - public static get HEDERA_ACCOUNT_API(): string { - return Environment._accountsApi; - } - - /** - * Hedera account API - * @constructor - */ - public static get HEDERA_BALANCES_API(): string { - return Environment._balancesApi; - } - - /** - * Hedera contract API - * @constructor - */ - public static get HEDERA_CONTRACT_API(): string { - return Environment._contractsApi; - } - - /** - * Hedera tokens API - * @constructor - */ - public static get HEDERA_TOKENS_API(): string { - return Environment._tokensApi; - } - - /** - * Hedera tokens API - * @constructor - */ - public static get HEDERA_TRANSACTIONS_API(): string { - return Environment._transactionsApi; - } - - /** - * Nodes - */ - public static get nodes(): any { - return Environment._nodes; - } - - /** - * Mirror nodes - */ - public static get mirrorNodes(): string[] { - return Environment._mirrorNodes; - } -} diff --git a/worker-service/src/api/helpers/hedera-sdk-helper.ts b/worker-service/src/api/helpers/hedera-sdk-helper.ts index 77667c666a..098e81f008 100644 --- a/worker-service/src/api/helpers/hedera-sdk-helper.ts +++ b/worker-service/src/api/helpers/hedera-sdk-helper.ts @@ -48,12 +48,12 @@ import { } from '@hiero-ledger/sdk'; import { HederaUtils, timeout } from './utils.js'; import axios, { AxiosResponse } from 'axios'; -import { Environment } from './environment.js'; import { ContractParamType, FireblocksCreds, GenerateUUIDv4, HederaResponseCode, ISignOptions, SignType } from '@guardian/interfaces'; import Long from 'long'; import { TransactionLogger } from './transaction-logger.js'; import process from 'process'; import { FireblocksHelper } from './fireblocks-helper.js'; +import { Environment } from '@guardian/common'; export const MAX_FEE = Math.abs(+process.env.MAX_TRANSACTION_FEE) || 30; export const INITIAL_BALANCE = 30; @@ -107,6 +107,11 @@ export class NetworkOptions { * Hedera mirror nodes */ public mirrorNodes: string[] = []; + + /** + * Hedera mirror nodes base api + */ + public mirrorNodesBaseApi: string = '/api/v1'; } /** @@ -158,16 +163,24 @@ export class HederaSDKHelper { */ private readonly network: string; + /** + * Mainnet API + * @private + */ + private static readonly HEDERA_MAINNET_API: string = 'https://mainnet-public.mirrornode.hedera.com/api/v1'; + constructor( operatorId: string | AccountId | null, operatorKey: string | PrivateKey | null, dryRun: string = null, networkOptions: NetworkOptions ) { + Environment.setMainnetApiUrl(HederaSDKHelper.HEDERA_MAINNET_API); Environment.setLocalNodeAddress(networkOptions.localNodeAddress); Environment.setLocalNodeProtocol(networkOptions.localNodeProtocol); Environment.setNodes(networkOptions.nodes); Environment.setMirrorNodes(networkOptions.mirrorNodes); + Environment.setMirrorNodesBaseApi(networkOptions.mirrorNodesBaseApi); Environment.setNetwork(networkOptions.network); this.dryRun = dryRun || null; this.client = Environment.createClient(); @@ -183,10 +196,12 @@ export class HederaSDKHelper { * @private */ public static setNetwork(networkOptions: NetworkOptions) { + Environment.setMainnetApiUrl(HederaSDKHelper.HEDERA_MAINNET_API); Environment.setLocalNodeAddress(networkOptions.localNodeAddress); Environment.setLocalNodeProtocol(networkOptions.localNodeProtocol); Environment.setNodes(networkOptions.nodes); Environment.setMirrorNodes(networkOptions.mirrorNodes); + Environment.setMirrorNodesBaseApi(networkOptions.mirrorNodesBaseApi); Environment.setNetwork(networkOptions.network); return HederaSDKHelper; } @@ -1082,7 +1097,7 @@ export class HederaSDKHelper { startTimestamp?: string ): Promise { let goNext = true; - let url = `${Environment.HEDERA_TOPIC_API}${topicId}/messages`; + let url = `${Environment.HEDERA_TOPIC_API}/${topicId}/messages`; if (startTimestamp) { url += `?timestamp=gt:${startTimestamp}`; } @@ -1155,7 +1170,7 @@ export class HederaSDKHelper { */ @timeout(HederaSDKHelper.MAX_TIMEOUT, 'Get topic message request (by index) timeout exceeded') public static async getTopicMessageByIndex(topicId: string, index: number): Promise { - const url = `${Environment.HEDERA_TOPIC_API}${topicId}/messages/${index}`; + const url = `${Environment.HEDERA_TOPIC_API}/${topicId}/messages/${index}`; const res = await axios.get(url, { responseType: 'json' }); if (!res || !res.data || !res.data.message) { throw new Error(`Invalid message. TopicId: '${topicId}', index: '${index}'`); @@ -1775,7 +1790,7 @@ export class HederaSDKHelper { public static async getContractInfo( contractId: string | ContractId, ): Promise<{ memo: string }> { - const url = `${Environment.HEDERA_CONTRACT_API}${contractId}`; + const url = `${Environment.HEDERA_CONTRACT_API}/${contractId}`; const res = await axios.get(url, { responseType: 'json', }); @@ -1812,7 +1827,7 @@ export class HederaSDKHelper { params, responseType: 'json', }; - const url = `${Environment.HEDERA_CONTRACT_API}${contractId}/results/logs`; + const url = `${Environment.HEDERA_CONTRACT_API}/${contractId}/results/logs`; return await HederaSDKHelper.hederaRestApi(url, p, 'logs'); } @@ -1834,7 +1849,7 @@ export class HederaSDKHelper { params, responseType: 'json', }; - const url = `${Environment.HEDERA_ACCOUNT_API}${client.operatorAccountId}/nfts`; + const url = `${Environment.HEDERA_ACCOUNT_API}/${client.operatorAccountId}/nfts`; return await HederaSDKHelper.hederaRestApi(url, p, 'nfts'); } @@ -1855,7 +1870,7 @@ export class HederaSDKHelper { params, responseType: 'json', }; - const url = `${Environment.HEDERA_ACCOUNT_API}${hederaAccountId}/nfts`; + const url = `${Environment.HEDERA_ACCOUNT_API}/${hederaAccountId}/nfts`; return await HederaSDKHelper.hederaRestApi(url, p, 'nfts'); } @@ -1983,7 +1998,7 @@ export class HederaSDKHelper { @timeout(HederaSDKHelper.MAX_TIMEOUT, 'Get contract info request timeout exceeded') public async getContractInfoRest(contractId: string): Promise { const res = await axios.get( - `${Environment.HEDERA_CONTRACT_API}${contractId}`, + `${Environment.HEDERA_CONTRACT_API}/${contractId}`, { responseType: 'json' } ); if (!res || !res.data) { @@ -2056,7 +2071,7 @@ export class HederaSDKHelper { } const error = `Invalid account '${accountId}'`; - const responses = await HederaSDKHelper.loadData(`${Environment.HEDERA_ACCOUNT_API}${accountId}/tokens`, '', [], error); + const responses = await HederaSDKHelper.loadData(`${Environment.HEDERA_ACCOUNT_API}/${accountId}/tokens`, '', [], error); const result: { [tokenId: string]: any } = {}; for (const response of responses) { const tokens: any[] = response.tokens; @@ -2088,7 +2103,7 @@ export class HederaSDKHelper { } const res = await axios.get( - `${Environment.HEDERA_ACCOUNT_API}${accountId}`, + `${Environment.HEDERA_ACCOUNT_API}/${accountId}`, { responseType: 'json' } ); if (!res || !res.data) { @@ -2123,7 +2138,7 @@ export class HederaSDKHelper { responseType: 'json' } } else { - url = `${Environment.HEDERA_TOPIC_API}${topicId}/messages`; + url = `${Environment.HEDERA_TOPIC_API}/${topicId}/messages`; if (startTimestamp) { requestParams = { params: { @@ -2192,7 +2207,7 @@ export class HederaSDKHelper { @timeout(HederaSDKHelper.MAX_TIMEOUT, 'Resolve alias request timeout exceeded') public static async resolveAccountAlias(accountId: string): Promise<{ accountId: string }> { const res = await axios.get( - `${Environment.HEDERA_ACCOUNT_API}${accountId}`, + `${Environment.HEDERA_ACCOUNT_API}/${accountId}`, { responseType: 'json' } ); diff --git a/worker-service/src/api/worker.ts b/worker-service/src/api/worker.ts index 6b507839bf..dae71a1cd2 100644 --- a/worker-service/src/api/worker.ts +++ b/worker-service/src/api/worker.ts @@ -317,7 +317,8 @@ export class Worker extends NatsService { localNodeAddress: task.data.localNodeAddress, localNodeProtocol: task.data.localNodeProtocol, nodes: task.data.nodes, - mirrorNodes: task.data.mirrorNodes + mirrorNodes: task.data.mirrorNodes, + mirrorNodesBaseApi: task.data.mirrorNodesBaseApi } let client: HederaSDKHelper; try {