From 9e4aa4530575a8e91b4bc8d66ee6006ec73e760d Mon Sep 17 00:00:00 2001 From: agodnic Date: Wed, 5 Jul 2023 14:53:00 -0300 Subject: [PATCH] [tx-tracker] Add support for Terra, Injective, Acala and Karura (#502) ### Description Tracking issue: https://github.com/wormhole-foundation/wormhole-explorer/issues/499 This pull request adds support in the `tx-tracker` service for the blockchains Terra, Injective, Acala and Karura. Also, deployment settings were updated with reasonable defaults. --- .../tx-tracker-backfiller/env/production.env | 72 +++++++++++-------- deploy/tx-tracker-backfiller/env/staging.env | 48 ++++++++----- deploy/tx-tracker-backfiller/env/test.env | 46 +++++++----- .../tx-tracker-backfiller-job.yaml | 16 +++++ deploy/tx-tracker/env/production.env | 72 +++++++++++-------- deploy/tx-tracker/env/staging.env | 48 ++++++++----- deploy/tx-tracker/env/test.env | 46 +++++++----- deploy/tx-tracker/tx-tracker-service.yaml | 16 +++++ tx-tracker/chains/api_cosmos.go | 7 +- tx-tracker/chains/{api_eth.go => api_evm.go} | 0 tx-tracker/chains/chains.go | 16 ++++- tx-tracker/config/structs.go | 8 +++ 12 files changed, 264 insertions(+), 131 deletions(-) rename tx-tracker/chains/{api_eth.go => api_evm.go} (100%) diff --git a/deploy/tx-tracker-backfiller/env/production.env b/deploy/tx-tracker-backfiller/env/production.env index da6bd6ca..394394e0 100644 --- a/deploy/tx-tracker-backfiller/env/production.env +++ b/deploy/tx-tracker-backfiller/env/production.env @@ -7,53 +7,67 @@ RESOURCES_LIMITS_CPU=500m RESOURCES_REQUESTS_MEMORY=128Mi RESOURCES_REQUESTS_CPU=250m -ALGORAND_BASE_URL= -ALGORAND_REQUESTS_PER_MINUTE=2 +ACALA_BASE_URL=https://eth-rpc-acala.aca-api.network +ACALA_REQUESTS_PER_MINUTE=1 -APTOS_BASE_URL= +ALGORAND_BASE_URL=https://mainnet-idx.algonode.cloud +ALGORAND_REQUESTS_PER_MINUTE=1 + +APTOS_BASE_URL=https://fullnode.mainnet.aptoslabs.com/v1 APTOS_REQUESTS_PER_MINUTE=2 -ARBITRUM_BASE_URL= -ARBITRUM_REQUESTS_PER_MINUTE=2 +ARBITRUM_BASE_URL=https://rpc.ankr.com/arbitrum +ARBITRUM_REQUESTS_PER_MINUTE=1 -AVALANCHE_BASE_URL= -AVALANCHE_REQUESTS_PER_MINUTE=2 +AVALANCHE_BASE_URL=https://rpc.ankr.com/avalanche +AVALANCHE_REQUESTS_PER_MINUTE=1 -BSC_BASE_URL= +BSC_BASE_URL=https://bsc-dataseed2.defibit.io BSC_REQUESTS_PER_MINUTE=2 -CELO_BASE_URL= -CELO_REQUESTS_PER_MINUTE=2 +CELO_BASE_URL=https://forno.celo.org +CELO_REQUESTS_PER_MINUTE=1 -ETHEREUM_BASE_URL= +ETHEREUM_BASE_URL=https://rpc.ankr.com/eth ETHEREUM_REQUESTS_PER_MINUTE=2 -FANTOM_BASE_URL= -FANTOM_REQUESTS_PER_MINUTE=2 +FANTOM_BASE_URL=https://rpc.ankr.com/fantom +FANTOM_REQUESTS_PER_MINUTE=1 -KLAYTN_BASE_URL= -KLAYTN_REQUESTS_PER_MINUTE=2 +# Currently, the main URL for injective RPC (https://k8s.mainnet.lcd.injective.network) is down. +# We're temporally using a different one. +INJECTIVE_BASE_URL=http://sentry2.injective.network:10337/ +INJECTIVE_REQUESTS_PER_MINUTE=1 -MOONBEAM_BASE_URL= -MOONBEAM_REQUESTS_PER_MINUTE=2 +KARURA_BASE_URL=https://eth-rpc-karura.aca-api.network +KARURA_REQUESTS_PER_MINUTE=1 -OASIS_BASE_URL= -OASIS_REQUESTS_PER_MINUTE=2 +KLAYTN_BASE_URL=https://klaytn-mainnet-rpc.allthatnode.com:8551 +KLAYTN_REQUESTS_PER_MINUTE=1 -OPTIMISM_BASE_URL= -OPTIMISM_REQUESTS_PER_MINUTE=2 +MOONBEAM_BASE_URL=https://rpc.ankr.com/moonbeam +MOONBEAM_REQUESTS_PER_MINUTE=1 -POLYGON_BASE_URL= +OASIS_BASE_URL=https://emerald.oasis.dev +OASIS_REQUESTS_PER_MINUTE=1 + +OPTIMISM_BASE_URL=https://rpc.ankr.com/optimism +OPTIMISM_REQUESTS_PER_MINUTE=1 + +POLYGON_BASE_URL=https://rpc.ankr.com/polygon POLYGON_REQUESTS_PER_MINUTE=2 -SOLANA_BASE_URL= +SOLANA_BASE_URL=https://api.mainnet-beta.solana.com SOLANA_REQUESTS_PER_MINUTE=2 -SUI_BASE_URL= -SUI_REQUESTS_PER_MINUTE=2 +SUI_BASE_URL=https://fullnode.mainnet.sui.io:443 +SUI_REQUESTS_PER_MINUTE=1 -TERRA2_BASE_URL= -TERRA2_REQUESTS_PER_MINUTE=2 +TERRA_BASE_URL=https://columbus-fcd.terra.dev +TERRA_REQUESTS_PER_MINUTE=2 -XPLA_BASE_URL= -XPLA_REQUESTS_PER_MINUTE=2 \ No newline at end of file +TERRA2_BASE_URL=https://phoenix-lcd.terra.dev +TERRA2_REQUESTS_PER_MINUTE=1 + +XPLA_BASE_URL=https://dimension-lcd.xpla.dev +XPLA_REQUESTS_PER_MINUTE=1 \ No newline at end of file diff --git a/deploy/tx-tracker-backfiller/env/staging.env b/deploy/tx-tracker-backfiller/env/staging.env index 930b9970..93a49829 100644 --- a/deploy/tx-tracker-backfiller/env/staging.env +++ b/deploy/tx-tracker-backfiller/env/staging.env @@ -11,53 +11,67 @@ STRATEGY_NAME=time_range STRATEGY_TIMESTAMP_AFTER=2023-01-01T00:00:00.000Z STRATEGY_TIMESTAMP_BEFORE=2023-04-01T00:00:00.000Z -ALGORAND_BASE_URL= +ACALA_BASE_URL=https://eth-rpc-acala.aca-api.network +ACALA_REQUESTS_PER_MINUTE=1 + +ALGORAND_BASE_URL=https://mainnet-idx.algonode.cloud ALGORAND_REQUESTS_PER_MINUTE=1 -APTOS_BASE_URL= +APTOS_BASE_URL=https://fullnode.mainnet.aptoslabs.com/v1 APTOS_REQUESTS_PER_MINUTE=1 -ARBITRUM_BASE_URL= +ARBITRUM_BASE_URL=https://rpc.ankr.com/arbitrum ARBITRUM_REQUESTS_PER_MINUTE=1 -AVALANCHE_BASE_URL= +AVALANCHE_BASE_URL=https://rpc.ankr.com/avalanche AVALANCHE_REQUESTS_PER_MINUTE=1 -BSC_BASE_URL= +BSC_BASE_URL=https://bsc-dataseed2.defibit.io BSC_REQUESTS_PER_MINUTE=1 -CELO_BASE_URL= +CELO_BASE_URL=https://forno.celo.org CELO_REQUESTS_PER_MINUTE=1 -ETHEREUM_BASE_URL= +ETHEREUM_BASE_URL=https://rpc.ankr.com/eth ETHEREUM_REQUESTS_PER_MINUTE=1 -FANTOM_BASE_URL= +FANTOM_BASE_URL=https://rpc.ankr.com/fantom FANTOM_REQUESTS_PER_MINUTE=1 -KLAYTN_BASE_URL= +# Currently, the main URL for injective RPC (https://k8s.mainnet.lcd.injective.network) is down. +# We're temporally using a different one. +INJECTIVE_BASE_URL=http://sentry2.injective.network:10337/ +INJECTIVE_REQUESTS_PER_MINUTE=1 + +KARURA_BASE_URL=https://eth-rpc-karura.aca-api.network +KARURA_REQUESTS_PER_MINUTE=1 + +KLAYTN_BASE_URL=https://klaytn-mainnet-rpc.allthatnode.com:8551 KLAYTN_REQUESTS_PER_MINUTE=1 -MOONBEAM_BASE_URL= +MOONBEAM_BASE_URL=https://rpc.ankr.com/moonbeam MOONBEAM_REQUESTS_PER_MINUTE=1 -OASIS_BASE_URL= +OASIS_BASE_URL=https://emerald.oasis.dev OASIS_REQUESTS_PER_MINUTE=1 -OPTIMISM_BASE_URL= +OPTIMISM_BASE_URL=https://rpc.ankr.com/optimism OPTIMISM_REQUESTS_PER_MINUTE=1 -POLYGON_BASE_URL= +POLYGON_BASE_URL=https://rpc.ankr.com/polygon POLYGON_REQUESTS_PER_MINUTE=1 -SOLANA_BASE_URL= +SOLANA_BASE_URL=https://api.mainnet-beta.solana.com SOLANA_REQUESTS_PER_MINUTE=1 -SUI_BASE_URL= +SUI_BASE_URL=https://fullnode.mainnet.sui.io:443 SUI_REQUESTS_PER_MINUTE=1 -TERRA2_BASE_URL= +TERRA_BASE_URL=https://columbus-fcd.terra.dev +TERRA_REQUESTS_PER_MINUTE=1 + +TERRA2_BASE_URL=https://phoenix-lcd.terra.dev TERRA2_REQUESTS_PER_MINUTE=1 -XPLA_BASE_URL= +XPLA_BASE_URL=https://dimension-lcd.xpla.dev XPLA_REQUESTS_PER_MINUTE=1 \ No newline at end of file diff --git a/deploy/tx-tracker-backfiller/env/test.env b/deploy/tx-tracker-backfiller/env/test.env index 3a7620f2..d8946757 100644 --- a/deploy/tx-tracker-backfiller/env/test.env +++ b/deploy/tx-tracker-backfiller/env/test.env @@ -7,53 +7,65 @@ RESOURCES_LIMITS_CPU=200m RESOURCES_REQUESTS_MEMORY=64Mi RESOURCES_REQUESTS_CPU=100m -ALGORAND_BASE_URL= +ACALA_BASE_URL=https://acala-dev.aca-dev.network/eth/http +ACALA_REQUESTS_PER_MINUTE=1 + +ALGORAND_BASE_URL=https://testnet-idx.algonode.cloud ALGORAND_REQUESTS_PER_MINUTE=1 -APTOS_BASE_URL= +APTOS_BASE_URL=https://fullnode.testnet.aptoslabs.com/v1 APTOS_REQUESTS_PER_MINUTE=1 -ARBITRUM_BASE_URL= +ARBITRUM_BASE_URL=https://goerli-rollup.arbitrum.io/rpc ARBITRUM_REQUESTS_PER_MINUTE=1 -AVALANCHE_BASE_URL= +AVALANCHE_BASE_URL=https://rpc.ankr.com/avalanche_fuji AVALANCHE_REQUESTS_PER_MINUTE=1 -BSC_BASE_URL= +BSC_BASE_URL=https://data-seed-prebsc-1-s1.binance.org:8545 BSC_REQUESTS_PER_MINUTE=1 -CELO_BASE_URL= +CELO_BASE_URL=https://alfajores-forno.celo-testnet.org CELO_REQUESTS_PER_MINUTE=1 -ETHEREUM_BASE_URL= +ETHEREUM_BASE_URL=https://rpc.ankr.com/eth_goerli ETHEREUM_REQUESTS_PER_MINUTE=1 -FANTOM_BASE_URL= +FANTOM_BASE_URL=https://rpc.testnet.fantom.network FANTOM_REQUESTS_PER_MINUTE=1 -KLAYTN_BASE_URL= +INJECTIVE_BASE_URL=https://k8s.testnet.tm.injective.network:443 +INJECTIVE_REQUESTS_PER_MINUTE=4 + +KARURA_BASE_URL=https://karura-dev.aca-dev.network/eth/http +KARURA_REQUESTS_PER_MINUTE=1 + +KLAYTN_BASE_URL=https://api.baobab.klaytn.net:8651 KLAYTN_REQUESTS_PER_MINUTE=1 -MOONBEAM_BASE_URL= +MOONBEAM_BASE_URL=https://rpc.api.moonbase.moonbeam.network MOONBEAM_REQUESTS_PER_MINUTE=1 -OASIS_BASE_URL= +OASIS_BASE_URL=https://testnet.emerald.oasis.dev OASIS_REQUESTS_PER_MINUTE=1 -OPTIMISM_BASE_URL= +OPTIMISM_BASE_URL=https://goerli.optimism.io OPTIMISM_REQUESTS_PER_MINUTE=1 -POLYGON_BASE_URL= +POLYGON_BASE_URL=https://rpc.ankr.com/polygon_mumbai POLYGON_REQUESTS_PER_MINUTE=1 -SOLANA_BASE_URL= +SOLANA_BASE_URL=https://api.devnet.solana.com SOLANA_REQUESTS_PER_MINUTE=1 -SUI_BASE_URL= +SUI_BASE_URL=https://fullnode.testnet.sui.io:443 SUI_REQUESTS_PER_MINUTE=1 -TERRA2_BASE_URL= +TERRA_BASE_URL=https://bombay-lcd.terra.dev +TERRA_REQUESTS_PER_MINUTE=1 + +TERRA2_BASE_URL=https://pisco-lcd.terra.dev TERRA2_REQUESTS_PER_MINUTE=1 -XPLA_BASE_URL= +XPLA_BASE_URL=https://cube-lcd.xpla.dev:443 XPLA_REQUESTS_PER_MINUTE=1 diff --git a/deploy/tx-tracker-backfiller/tx-tracker-backfiller-job.yaml b/deploy/tx-tracker-backfiller/tx-tracker-backfiller-job.yaml index 231e5248..70822171 100644 --- a/deploy/tx-tracker-backfiller/tx-tracker-backfiller-job.yaml +++ b/deploy/tx-tracker-backfiller/tx-tracker-backfiller-job.yaml @@ -31,6 +31,10 @@ spec: configMapKeyRef: name: config key: mongo-database + - name: ACALA_BASE_URL + value: {{ .ACALA_BASE_URL }} + - name: ACALA_REQUESTS_PER_MINUTE + value: "{{ .ACALA_REQUESTS_PER_MINUTE }}" - name: ALGORAND_BASE_URL value: {{ .ALGORAND_BASE_URL }} - name: ALGORAND_REQUESTS_PER_MINUTE @@ -63,6 +67,14 @@ spec: value: {{ .FANTOM_BASE_URL }} - name: FANTOM_REQUESTS_PER_MINUTE value: "{{ .FANTOM_REQUESTS_PER_MINUTE }}" + - name: INJECTIVE_BASE_URL + value: {{ .INJECTIVE_BASE_URL }} + - name: INJECTIVE_REQUESTS_PER_MINUTE + value: "{{ .INJECTIVE_REQUESTS_PER_MINUTE }}" + - name: KARURA_BASE_URL + value: {{ .KARURA_BASE_URL }} + - name: KARURA_REQUESTS_PER_MINUTE + value: "{{ .KARURA_REQUESTS_PER_MINUTE }}" - name: KLAYTN_BASE_URL value: {{ .KLAYTN_BASE_URL }} - name: KLAYTN_REQUESTS_PER_MINUTE @@ -91,6 +103,10 @@ spec: value: {{ .SUI_BASE_URL }} - name: SUI_REQUESTS_PER_MINUTE value: "{{ .SUI_REQUESTS_PER_MINUTE }}" + - name: TERRA_BASE_URL + value: {{ .TERRA_BASE_URL }} + - name: TERRA_REQUESTS_PER_MINUTE + value: "{{ .TERRA_REQUESTS_PER_MINUTE }}" - name: TERRA2_BASE_URL value: {{ .TERRA2_BASE_URL }} - name: TERRA2_REQUESTS_PER_MINUTE diff --git a/deploy/tx-tracker/env/production.env b/deploy/tx-tracker/env/production.env index ef0ecc78..fefa7d6e 100644 --- a/deploy/tx-tracker/env/production.env +++ b/deploy/tx-tracker/env/production.env @@ -11,53 +11,67 @@ SQS_URL= SQS_AWS_REGION= AWS_IAM_ROLE= -ALGORAND_BASE_URL= -ALGORAND_REQUESTS_PER_MINUTE=8 +ACALA_BASE_URL=https://eth-rpc-acala.aca-api.network +ACALA_REQUESTS_PER_MINUTE=4 -APTOS_BASE_URL= +ALGORAND_BASE_URL=https://mainnet-idx.algonode.cloud +ALGORAND_REQUESTS_PER_MINUTE=4 + +APTOS_BASE_URL=https://fullnode.mainnet.aptoslabs.com/v1 APTOS_REQUESTS_PER_MINUTE=8 -ARBITRUM_BASE_URL= -ARBITRUM_REQUESTS_PER_MINUTE=8 +ARBITRUM_BASE_URL=https://rpc.ankr.com/arbitrum +ARBITRUM_REQUESTS_PER_MINUTE=4 -AVALANCHE_BASE_URL= -AVALANCHE_REQUESTS_PER_MINUTE=4 +AVALANCHE_BASE_URL=https://rpc.ankr.com/avalanche +AVALANCHE_REQUESTS_PER_MINUTE=6 -BSC_BASE_URL= -BSC_REQUESTS_PER_MINUTE=8 +BSC_BASE_URL=https://bsc-dataseed2.defibit.io +BSC_REQUESTS_PER_MINUTE=6 -CELO_BASE_URL= -CELO_REQUESTS_PER_MINUTE=8 +CELO_BASE_URL=https://forno.celo.org +CELO_REQUESTS_PER_MINUTE=4 -ETHEREUM_BASE_URL= -ETHEREUM_REQUESTS_PER_MINUTE=8 +ETHEREUM_BASE_URL=https://rpc.ankr.com/eth +ETHEREUM_REQUESTS_PER_MINUTE=6 -FANTOM_BASE_URL= -FANTOM_REQUESTS_PER_MINUTE=8 +FANTOM_BASE_URL=https://rpc.ankr.com/fantom +FANTOM_REQUESTS_PER_MINUTE=4 -KLAYTN_BASE_URL= -KLAYTN_REQUESTS_PER_MINUTE=8 +# Currently, the main URL for injective RPC (https://k8s.mainnet.lcd.injective.network) is down. +# We're temporally using a different one. +INJECTIVE_BASE_URL=http://sentry2.injective.network:10337/ +INJECTIVE_REQUESTS_PER_MINUTE=4 -MOONBEAM_BASE_URL= -MOONBEAM_REQUESTS_PER_MINUTE=8 +KARURA_BASE_URL=https://eth-rpc-karura.aca-api.network +KARURA_REQUESTS_PER_MINUTE=4 -OASIS_BASE_URL= +KLAYTN_BASE_URL=https://klaytn-mainnet-rpc.allthatnode.com:8551 +KLAYTN_REQUESTS_PER_MINUTE=4 + +MOONBEAM_BASE_URL=https://rpc.ankr.com/moonbeam +MOONBEAM_REQUESTS_PER_MINUTE=4 + +OASIS_BASE_URL=https://emerald.oasis.dev OASIS_REQUESTS_PER_MINUTE=4 -OPTIMISM_BASE_URL= -OPTIMISM_REQUESTS_PER_MINUTE=8 +OPTIMISM_BASE_URL=https://rpc.ankr.com/optimism +OPTIMISM_REQUESTS_PER_MINUTE=4 -POLYGON_BASE_URL= -POLYGON_REQUESTS_PER_MINUTE=8 +POLYGON_BASE_URL=https://rpc.ankr.com/polygon +POLYGON_REQUESTS_PER_MINUTE=6 -SOLANA_BASE_URL= -SOLANA_REQUESTS_PER_MINUTE=4 +SOLANA_BASE_URL=https://api.mainnet-beta.solana.com +SOLANA_REQUESTS_PER_MINUTE=8 -SUI_BASE_URL= +SUI_BASE_URL=https://fullnode.mainnet.sui.io:443 SUI_REQUESTS_PER_MINUTE=4 -TERRA2_BASE_URL= +TERRA_BASE_URL=https://columbus-fcd.terra.dev +TERRA_REQUESTS_PER_MINUTE=4 + +TERRA2_BASE_URL=https://phoenix-lcd.terra.dev TERRA2_REQUESTS_PER_MINUTE=4 -XPLA_BASE_URL= +XPLA_BASE_URL=https://dimension-lcd.xpla.dev XPLA_REQUESTS_PER_MINUTE=4 \ No newline at end of file diff --git a/deploy/tx-tracker/env/staging.env b/deploy/tx-tracker/env/staging.env index e750a4eb..eaa4a559 100644 --- a/deploy/tx-tracker/env/staging.env +++ b/deploy/tx-tracker/env/staging.env @@ -11,53 +11,67 @@ SQS_URL= SQS_AWS_REGION= AWS_IAM_ROLE= -ALGORAND_BASE_URL= +ACALA_BASE_URL=https://eth-rpc-acala.aca-api.network +ACALA_REQUESTS_PER_MINUTE=2 + +ALGORAND_BASE_URL=https://mainnet-idx.algonode.cloud ALGORAND_REQUESTS_PER_MINUTE=2 -APTOS_BASE_URL= +APTOS_BASE_URL=https://fullnode.mainnet.aptoslabs.com/v1 APTOS_REQUESTS_PER_MINUTE=2 -ARBITRUM_BASE_URL= +ARBITRUM_BASE_URL=https://rpc.ankr.com/arbitrum ARBITRUM_REQUESTS_PER_MINUTE=2 -AVALANCHE_BASE_URL= +AVALANCHE_BASE_URL=https://rpc.ankr.com/avalanche AVALANCHE_REQUESTS_PER_MINUTE=2 -BSC_BASE_URL= +BSC_BASE_URL=https://bsc-dataseed2.defibit.io BSC_REQUESTS_PER_MINUTE=2 -CELO_BASE_URL= +CELO_BASE_URL=https://forno.celo.org CELO_REQUESTS_PER_MINUTE=2 -ETHEREUM_BASE_URL= +ETHEREUM_BASE_URL=https://rpc.ankr.com/eth ETHEREUM_REQUESTS_PER_MINUTE=2 -FANTOM_BASE_URL= +FANTOM_BASE_URL=https://rpc.ankr.com/fantom FANTOM_REQUESTS_PER_MINUTE=2 -KLAYTN_BASE_URL= +# Currently, the main URL for injective RPC (https://k8s.mainnet.lcd.injective.network) is down. +# We're temporally using a different one. +INJECTIVE_BASE_URL=http://sentry2.injective.network:10337/ +INJECTIVE_REQUESTS_PER_MINUTE=2 + +KARURA_BASE_URL=https://eth-rpc-karura.aca-api.network +KARURA_REQUESTS_PER_MINUTE=2 + +KLAYTN_BASE_URL=https://klaytn-mainnet-rpc.allthatnode.com:8551 KLAYTN_REQUESTS_PER_MINUTE=2 -MOONBEAM_BASE_URL= +MOONBEAM_BASE_URL=https://rpc.ankr.com/moonbeam MOONBEAM_REQUESTS_PER_MINUTE=2 -OASIS_BASE_URL= +OASIS_BASE_URL=https://emerald.oasis.dev OASIS_REQUESTS_PER_MINUTE=2 -OPTIMISM_BASE_URL= +OPTIMISM_BASE_URL=https://rpc.ankr.com/optimism OPTIMISM_REQUESTS_PER_MINUTE=2 -POLYGON_BASE_URL= +POLYGON_BASE_URL=https://rpc.ankr.com/polygon POLYGON_REQUESTS_PER_MINUTE=2 -SOLANA_BASE_URL= +SOLANA_BASE_URL=https://api.mainnet-beta.solana.com SOLANA_REQUESTS_PER_MINUTE=2 -SUI_BASE_URL= +SUI_BASE_URL=https://fullnode.mainnet.sui.io:443 SUI_REQUESTS_PER_MINUTE=2 -TERRA2_BASE_URL= +TERRA_BASE_URL=https://columbus-fcd.terra.dev +TERRA_REQUESTS_PER_MINUTE=2 + +TERRA2_BASE_URL=https://phoenix-lcd.terra.dev TERRA2_REQUESTS_PER_MINUTE=2 -XPLA_BASE_URL= +XPLA_BASE_URL=https://dimension-lcd.xpla.dev XPLA_REQUESTS_PER_MINUTE=2 \ No newline at end of file diff --git a/deploy/tx-tracker/env/test.env b/deploy/tx-tracker/env/test.env index d8b1002e..394b1fd3 100644 --- a/deploy/tx-tracker/env/test.env +++ b/deploy/tx-tracker/env/test.env @@ -11,53 +11,65 @@ SQS_URL= SQS_AWS_REGION= AWS_IAM_ROLE= -ALGORAND_BASE_URL= +ACALA_BASE_URL=https://acala-dev.aca-dev.network/eth/http +ACALA_REQUESTS_PER_MINUTE=2 + +ALGORAND_BASE_URL=https://testnet-idx.algonode.cloud ALGORAND_REQUESTS_PER_MINUTE=2 -APTOS_BASE_URL= +APTOS_BASE_URL=https://fullnode.testnet.aptoslabs.com/v1 APTOS_REQUESTS_PER_MINUTE=2 -ARBITRUM_BASE_URL= +ARBITRUM_BASE_URL=https://goerli-rollup.arbitrum.io/rpc ARBITRUM_REQUESTS_PER_MINUTE=2 -AVALANCHE_BASE_URL= +AVALANCHE_BASE_URL=https://rpc.ankr.com/avalanche_fuji AVALANCHE_REQUESTS_PER_MINUTE=2 -BSC_BASE_URL= +BSC_BASE_URL=https://data-seed-prebsc-1-s1.binance.org:8545 BSC_REQUESTS_PER_MINUTE=2 -CELO_BASE_URL= +CELO_BASE_URL=https://alfajores-forno.celo-testnet.org CELO_REQUESTS_PER_MINUTE=2 -ETHEREUM_BASE_URL= +ETHEREUM_BASE_URL=https://rpc.ankr.com/eth_goerli ETHEREUM_REQUESTS_PER_MINUTE=2 -FANTOM_BASE_URL= +FANTOM_BASE_URL=https://rpc.testnet.fantom.network FANTOM_REQUESTS_PER_MINUTE=2 -KLAYTN_BASE_URL= +INJECTIVE_BASE_URL=https://k8s.testnet.tm.injective.network:443 +INJECTIVE_REQUESTS_PER_MINUTE=2 + +KARURA_BASE_URL=https://karura-dev.aca-dev.network/eth/http +KARURA_REQUESTS_PER_MINUTE=2 + +KLAYTN_BASE_URL=https://api.baobab.klaytn.net:8651 KLAYTN_REQUESTS_PER_MINUTE=2 -MOONBEAM_BASE_URL= +MOONBEAM_BASE_URL=https://rpc.api.moonbase.moonbeam.network MOONBEAM_REQUESTS_PER_MINUTE=2 -OASIS_BASE_URL= +OASIS_BASE_URL=https://testnet.emerald.oasis.dev OASIS_REQUESTS_PER_MINUTE=2 -OPTIMISM_BASE_URL= +OPTIMISM_BASE_URL=https://goerli.optimism.io OPTIMISM_REQUESTS_PER_MINUTE=2 -POLYGON_BASE_URL= +POLYGON_BASE_URL=https://rpc.ankr.com/polygon_mumbai POLYGON_REQUESTS_PER_MINUTE=2 -SOLANA_BASE_URL= +SOLANA_BASE_URL=https://api.devnet.solana.com SOLANA_REQUESTS_PER_MINUTE=2 -SUI_BASE_URL= +SUI_BASE_URL=https://fullnode.testnet.sui.io:443 SUI_REQUESTS_PER_MINUTE=2 -TERRA2_BASE_URL= +TERRA_BASE_URL=https://bombay-lcd.terra.dev +TERRA_REQUESTS_PER_MINUTE=4 + +TERRA2_BASE_URL=https://pisco-lcd.terra.dev TERRA2_REQUESTS_PER_MINUTE=2 -XPLA_BASE_URL= +XPLA_BASE_URL=https://cube-lcd.xpla.dev:443 XPLA_REQUESTS_PER_MINUTE=2 \ No newline at end of file diff --git a/deploy/tx-tracker/tx-tracker-service.yaml b/deploy/tx-tracker/tx-tracker-service.yaml index 2720a8d4..501e4b88 100644 --- a/deploy/tx-tracker/tx-tracker-service.yaml +++ b/deploy/tx-tracker/tx-tracker-service.yaml @@ -57,6 +57,10 @@ spec: value: {{ .SQS_URL }} - name: AWS_REGION value: {{ .SQS_AWS_REGION }} + - name: ACALA_BASE_URL + value: {{ .ACALA_BASE_URL }} + - name: ACALA_REQUESTS_PER_MINUTE + value: "{{ .ACALA_REQUESTS_PER_MINUTE }}" - name: ALGORAND_BASE_URL value: {{ .ALGORAND_BASE_URL }} - name: ALGORAND_REQUESTS_PER_MINUTE @@ -89,6 +93,14 @@ spec: value: {{ .FANTOM_BASE_URL }} - name: FANTOM_REQUESTS_PER_MINUTE value: "{{ .FANTOM_REQUESTS_PER_MINUTE }}" + - name: INJECTIVE_BASE_URL + value: {{ .INJECTIVE_BASE_URL }} + - name: INJECTIVE_REQUESTS_PER_MINUTE + value: "{{ .INJECTIVE_REQUESTS_PER_MINUTE }}" + - name: KARURA_BASE_URL + value: {{ .KARURA_BASE_URL }} + - name: KARURA_REQUESTS_PER_MINUTE + value: "{{ .KARURA_REQUESTS_PER_MINUTE }}" - name: KLAYTN_BASE_URL value: {{ .KLAYTN_BASE_URL }} - name: KLAYTN_REQUESTS_PER_MINUTE @@ -117,6 +129,10 @@ spec: value: {{ .SUI_BASE_URL }} - name: SUI_REQUESTS_PER_MINUTE value: "{{ .SUI_REQUESTS_PER_MINUTE }}" + - name: TERRA_BASE_URL + value: {{ .TERRA_BASE_URL }} + - name: TERRA_REQUESTS_PER_MINUTE + value: "{{ .TERRA_REQUESTS_PER_MINUTE }}" - name: TERRA2_BASE_URL value: {{ .TERRA2_BASE_URL }} - name: TERRA2_REQUESTS_PER_MINUTE diff --git a/tx-tracker/chains/api_cosmos.go b/tx-tracker/chains/api_cosmos.go index d728dee8..18db92bb 100644 --- a/tx-tracker/chains/api_cosmos.go +++ b/tx-tracker/chains/api_cosmos.go @@ -8,7 +8,8 @@ import ( ) const ( - cosmosMsgExecuteContract = "/cosmwasm.wasm.v1.MsgExecuteContract" + cosmosMsgExecuteContract = "/cosmwasm.wasm.v1.MsgExecuteContract" + injectiveMsgExecuteContract = "/injective.wasmx.v1.MsgExecuteContractCompat" ) // cosmosTxsResponse models the response body from `GET /cosmos/tx/v1beta1/txs/{hash}` @@ -53,9 +54,9 @@ func fetchCosmosTx( // Find the sender address var sender string for i := range response.TxResponse.Tx.Body.Messages { - msg := &response.TxResponse.Tx.Body.Messages[i] - if msg.Type_ == cosmosMsgExecuteContract { + + if msg.Type_ == cosmosMsgExecuteContract || msg.Type_ == injectiveMsgExecuteContract { sender = msg.Sender break } diff --git a/tx-tracker/chains/api_eth.go b/tx-tracker/chains/api_evm.go similarity index 100% rename from tx-tracker/chains/api_eth.go rename to tx-tracker/chains/api_evm.go diff --git a/tx-tracker/chains/chains.go b/tx-tracker/chains/chains.go index eb8d462d..c3486fb2 100644 --- a/tx-tracker/chains/chains.go +++ b/tx-tracker/chains/chains.go @@ -47,6 +47,7 @@ func Initialize(cfg *config.RpcProviderSettings) { // Initialize rate limiters for each chain rateLimitersByChain = make(map[sdk.ChainID]*time.Ticker) + rateLimitersByChain[sdk.ChainIDAcala] = convertToRateLimiter(cfg.AcalaRequestsPerMinute) rateLimitersByChain[sdk.ChainIDArbitrum] = convertToRateLimiter(cfg.ArbitrumRequestsPerMinute) rateLimitersByChain[sdk.ChainIDAlgorand] = convertToRateLimiter(cfg.AlgorandRequestsPerMinute) rateLimitersByChain[sdk.ChainIDAptos] = convertToRateLimiter(cfg.AptosRequestsPerMinute) @@ -55,18 +56,22 @@ func Initialize(cfg *config.RpcProviderSettings) { rateLimitersByChain[sdk.ChainIDCelo] = convertToRateLimiter(cfg.CeloRequestsPerMinute) rateLimitersByChain[sdk.ChainIDEthereum] = convertToRateLimiter(cfg.EthereumRequestsPerMinute) rateLimitersByChain[sdk.ChainIDFantom] = convertToRateLimiter(cfg.FantomRequestsPerMinute) + rateLimitersByChain[sdk.ChainIDInjective] = convertToRateLimiter(cfg.InjectiveRequestsPerMinute) + rateLimitersByChain[sdk.ChainIDKarura] = convertToRateLimiter(cfg.KaruraRequestsPerMinute) rateLimitersByChain[sdk.ChainIDKlaytn] = convertToRateLimiter(cfg.KlaytnRequestsPerMinute) rateLimitersByChain[sdk.ChainIDMoonbeam] = convertToRateLimiter(cfg.MoonbeamRequestsPerMinute) rateLimitersByChain[sdk.ChainIDOasis] = convertToRateLimiter(cfg.OasisRequestsPerMinute) rateLimitersByChain[sdk.ChainIDOptimism] = convertToRateLimiter(cfg.OptimismRequestsPerMinute) rateLimitersByChain[sdk.ChainIDPolygon] = convertToRateLimiter(cfg.PolygonRequestsPerMinute) rateLimitersByChain[sdk.ChainIDSolana] = convertToRateLimiter(cfg.SolanaRequestsPerMinute) + rateLimitersByChain[sdk.ChainIDTerra] = convertToRateLimiter(cfg.TerraRequestsPerMinute) rateLimitersByChain[sdk.ChainIDTerra2] = convertToRateLimiter(cfg.Terra2RequestsPerMinute) rateLimitersByChain[sdk.ChainIDSui] = convertToRateLimiter(cfg.SuiRequestsPerMinute) rateLimitersByChain[sdk.ChainIDXpla] = convertToRateLimiter(cfg.XplaRequestsPerMinute) // Initialize the RPC base URLs for each chain baseUrlsByChain = make(map[sdk.ChainID]string) + baseUrlsByChain[sdk.ChainIDAcala] = cfg.AcalaBaseUrl baseUrlsByChain[sdk.ChainIDArbitrum] = cfg.ArbitrumBaseUrl baseUrlsByChain[sdk.ChainIDAlgorand] = cfg.AlgorandBaseUrl baseUrlsByChain[sdk.ChainIDAptos] = cfg.AptosBaseUrl @@ -75,12 +80,15 @@ func Initialize(cfg *config.RpcProviderSettings) { baseUrlsByChain[sdk.ChainIDCelo] = cfg.CeloBaseUrl baseUrlsByChain[sdk.ChainIDEthereum] = cfg.EthereumBaseUrl baseUrlsByChain[sdk.ChainIDFantom] = cfg.FantomBaseUrl + baseUrlsByChain[sdk.ChainIDInjective] = cfg.InjectiveBaseUrl + baseUrlsByChain[sdk.ChainIDKarura] = cfg.KaruraBaseUrl baseUrlsByChain[sdk.ChainIDKlaytn] = cfg.KlaytnBaseUrl baseUrlsByChain[sdk.ChainIDMoonbeam] = cfg.MoonbeamBaseUrl baseUrlsByChain[sdk.ChainIDOasis] = cfg.OasisBaseUrl baseUrlsByChain[sdk.ChainIDOptimism] = cfg.OptimismBaseUrl baseUrlsByChain[sdk.ChainIDPolygon] = cfg.PolygonBaseUrl baseUrlsByChain[sdk.ChainIDSolana] = cfg.SolanaBaseUrl + baseUrlsByChain[sdk.ChainIDTerra] = cfg.TerraBaseUrl baseUrlsByChain[sdk.ChainIDTerra2] = cfg.Terra2BaseUrl baseUrlsByChain[sdk.ChainIDSui] = cfg.SuiBaseUrl baseUrlsByChain[sdk.ChainIDXpla] = cfg.XplaBaseUrl @@ -104,15 +112,19 @@ func FetchTx( fetchFunc = fetchAptosTx case sdk.ChainIDSui: fetchFunc = fetchSuiTx - case sdk.ChainIDTerra2, + case sdk.ChainIDInjective, + sdk.ChainIDTerra, + sdk.ChainIDTerra2, sdk.ChainIDXpla: fetchFunc = fetchCosmosTx - case sdk.ChainIDArbitrum, + case sdk.ChainIDAcala, + sdk.ChainIDArbitrum, sdk.ChainIDAvalanche, sdk.ChainIDBSC, sdk.ChainIDCelo, sdk.ChainIDEthereum, sdk.ChainIDFantom, + sdk.ChainIDKarura, sdk.ChainIDKlaytn, sdk.ChainIDMoonbeam, sdk.ChainIDOasis, diff --git a/tx-tracker/config/structs.go b/tx-tracker/config/structs.go index bf63541b..e7f3cc8c 100644 --- a/tx-tracker/config/structs.go +++ b/tx-tracker/config/structs.go @@ -59,6 +59,8 @@ type MongodbSettings struct { } type RpcProviderSettings struct { + AcalaBaseUrl string `split_words:"true" required:"true"` + AcalaRequestsPerMinute uint16 `split_words:"true" required:"true"` AlgorandBaseUrl string `split_words:"true" required:"true"` AlgorandRequestsPerMinute uint16 `split_words:"true" required:"true"` AptosBaseUrl string `split_words:"true" required:"true"` @@ -75,6 +77,10 @@ type RpcProviderSettings struct { EthereumRequestsPerMinute uint16 `split_words:"true" required:"true"` FantomBaseUrl string `split_words:"true" required:"true"` FantomRequestsPerMinute uint16 `split_words:"true" required:"true"` + InjectiveBaseUrl string `split_words:"true" required:"true"` + InjectiveRequestsPerMinute uint16 `split_words:"true" required:"true"` + KaruraBaseUrl string `split_words:"true" required:"true"` + KaruraRequestsPerMinute uint16 `split_words:"true" required:"true"` KlaytnBaseUrl string `split_words:"true" required:"true"` KlaytnRequestsPerMinute uint16 `split_words:"true" required:"true"` MoonbeamBaseUrl string `split_words:"true" required:"true"` @@ -89,6 +95,8 @@ type RpcProviderSettings struct { SolanaRequestsPerMinute uint16 `split_words:"true" required:"true"` SuiBaseUrl string `split_words:"true" required:"true"` SuiRequestsPerMinute uint16 `split_words:"true" required:"true"` + TerraBaseUrl string `split_words:"true" required:"true"` + TerraRequestsPerMinute uint16 `split_words:"true" required:"true"` Terra2BaseUrl string `split_words:"true" required:"true"` Terra2RequestsPerMinute uint16 `split_words:"true" required:"true"` XplaBaseUrl string `split_words:"true" required:"true"`