Add support for Moonbeam and Klaytn in the `tx-tracker` service (#422)
### Description This pull request modifies the `tx-tracker` service to support the Moonbeam and Klaytn blockchains. In particular, this will make sender addresses for these particular blockchains available for the Wormhole Scan UI.
This commit is contained in:
parent
b490be0f5d
commit
50c1d479a6
|
@ -59,6 +59,14 @@ spec:
|
||||||
value: {{ .FANTOM_BASE_URL }}
|
value: {{ .FANTOM_BASE_URL }}
|
||||||
- name: FANTOM_REQUESTS_PER_MINUTE
|
- name: FANTOM_REQUESTS_PER_MINUTE
|
||||||
value: "{{ .FANTOM_REQUESTS_PER_MINUTE }}"
|
value: "{{ .FANTOM_REQUESTS_PER_MINUTE }}"
|
||||||
|
- name: KLAYTN_BASE_URL
|
||||||
|
value: {{ .KLAYTN_BASE_URL }}
|
||||||
|
- name: KLAYTN_REQUESTS_PER_MINUTE
|
||||||
|
value: "{{ .KLAYTN_REQUESTS_PER_MINUTE }}"
|
||||||
|
- name: MOONBEAM_BASE_URL
|
||||||
|
value: {{ .MOONBEAM_BASE_URL }}
|
||||||
|
- name: MOONBEAM_REQUESTS_PER_MINUTE
|
||||||
|
value: "{{ .MOONBEAM_REQUESTS_PER_MINUTE }}"
|
||||||
- name: OPTIMISM_BASE_URL
|
- name: OPTIMISM_BASE_URL
|
||||||
value: {{ .OPTIMISM_BASE_URL }}
|
value: {{ .OPTIMISM_BASE_URL }}
|
||||||
- name: OPTIMISM_REQUESTS_PER_MINUTE
|
- name: OPTIMISM_REQUESTS_PER_MINUTE
|
||||||
|
|
|
@ -85,6 +85,14 @@ spec:
|
||||||
value: {{ .FANTOM_BASE_URL }}
|
value: {{ .FANTOM_BASE_URL }}
|
||||||
- name: FANTOM_REQUESTS_PER_MINUTE
|
- name: FANTOM_REQUESTS_PER_MINUTE
|
||||||
value: "{{ .FANTOM_REQUESTS_PER_MINUTE }}"
|
value: "{{ .FANTOM_REQUESTS_PER_MINUTE }}"
|
||||||
|
- name: KLAYTN_BASE_URL
|
||||||
|
value: {{ .KLAYTN_BASE_URL }}
|
||||||
|
- name: KLAYTN_REQUESTS_PER_MINUTE
|
||||||
|
value: "{{ .KLAYTN_REQUESTS_PER_MINUTE }}"
|
||||||
|
- name: MOONBEAM_BASE_URL
|
||||||
|
value: {{ .MOONBEAM_BASE_URL }}
|
||||||
|
- name: MOONBEAM_REQUESTS_PER_MINUTE
|
||||||
|
value: "{{ .MOONBEAM_REQUESTS_PER_MINUTE }}"
|
||||||
- name: OPTIMISM_BASE_URL
|
- name: OPTIMISM_BASE_URL
|
||||||
value: {{ .OPTIMISM_BASE_URL }}
|
value: {{ .OPTIMISM_BASE_URL }}
|
||||||
- name: OPTIMISM_REQUESTS_PER_MINUTE
|
- name: OPTIMISM_REQUESTS_PER_MINUTE
|
||||||
|
|
|
@ -32,16 +32,18 @@ type TxDetail struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
var tickers = struct {
|
var tickers = struct {
|
||||||
|
aptos *time.Ticker
|
||||||
arbitrum *time.Ticker
|
arbitrum *time.Ticker
|
||||||
avalanche *time.Ticker
|
avalanche *time.Ticker
|
||||||
bsc *time.Ticker
|
bsc *time.Ticker
|
||||||
celo *time.Ticker
|
celo *time.Ticker
|
||||||
ethereum *time.Ticker
|
ethereum *time.Ticker
|
||||||
fantom *time.Ticker
|
fantom *time.Ticker
|
||||||
|
klaytn *time.Ticker
|
||||||
|
moonbeam *time.Ticker
|
||||||
optimism *time.Ticker
|
optimism *time.Ticker
|
||||||
polygon *time.Ticker
|
polygon *time.Ticker
|
||||||
solana *time.Ticker
|
solana *time.Ticker
|
||||||
aptos *time.Ticker
|
|
||||||
sui *time.Ticker
|
sui *time.Ticker
|
||||||
}{}
|
}{}
|
||||||
|
|
||||||
|
@ -67,6 +69,8 @@ func Initialize(cfg *config.RpcProviderSettings) {
|
||||||
tickers.celo = time.NewTicker(f(cfg.CeloRequestsPerMinute / 2))
|
tickers.celo = time.NewTicker(f(cfg.CeloRequestsPerMinute / 2))
|
||||||
tickers.ethereum = time.NewTicker(f(cfg.EthereumRequestsPerMinute / 2))
|
tickers.ethereum = time.NewTicker(f(cfg.EthereumRequestsPerMinute / 2))
|
||||||
tickers.fantom = time.NewTicker(f(cfg.FantomRequestsPerMinute / 2))
|
tickers.fantom = time.NewTicker(f(cfg.FantomRequestsPerMinute / 2))
|
||||||
|
tickers.klaytn = time.NewTicker(f(cfg.KlaytnRequestsPerMinute / 2))
|
||||||
|
tickers.moonbeam = time.NewTicker(f(cfg.MoonbeamRequestsPerMinute / 2))
|
||||||
tickers.optimism = time.NewTicker(f(cfg.OptimismRequestsPerMinute / 2))
|
tickers.optimism = time.NewTicker(f(cfg.OptimismRequestsPerMinute / 2))
|
||||||
tickers.polygon = time.NewTicker(f(cfg.PolygonRequestsPerMinute / 2))
|
tickers.polygon = time.NewTicker(f(cfg.PolygonRequestsPerMinute / 2))
|
||||||
tickers.solana = time.NewTicker(f(cfg.SolanaRequestsPerMinute / 2))
|
tickers.solana = time.NewTicker(f(cfg.SolanaRequestsPerMinute / 2))
|
||||||
|
@ -112,6 +116,11 @@ func FetchTx(
|
||||||
return fetchEthTx(ctx, txHash, cfg.FantomBaseUrl)
|
return fetchEthTx(ctx, txHash, cfg.FantomBaseUrl)
|
||||||
}
|
}
|
||||||
rateLimiter = *tickers.fantom
|
rateLimiter = *tickers.fantom
|
||||||
|
case vaa.ChainIDKlaytn:
|
||||||
|
fetchFunc = func(ctx context.Context, cfg *config.RpcProviderSettings, txHash string) (*TxDetail, error) {
|
||||||
|
return fetchEthTx(ctx, txHash, cfg.KlaytnBaseUrl)
|
||||||
|
}
|
||||||
|
rateLimiter = *tickers.fantom
|
||||||
case vaa.ChainIDArbitrum:
|
case vaa.ChainIDArbitrum:
|
||||||
fetchFunc = func(ctx context.Context, cfg *config.RpcProviderSettings, txHash string) (*TxDetail, error) {
|
fetchFunc = func(ctx context.Context, cfg *config.RpcProviderSettings, txHash string) (*TxDetail, error) {
|
||||||
return fetchEthTx(ctx, txHash, cfg.ArbitrumBaseUrl)
|
return fetchEthTx(ctx, txHash, cfg.ArbitrumBaseUrl)
|
||||||
|
@ -127,6 +136,11 @@ func FetchTx(
|
||||||
return fetchEthTx(ctx, txHash, cfg.AvalancheBaseUrl)
|
return fetchEthTx(ctx, txHash, cfg.AvalancheBaseUrl)
|
||||||
}
|
}
|
||||||
rateLimiter = *tickers.avalanche
|
rateLimiter = *tickers.avalanche
|
||||||
|
case vaa.ChainIDMoonbeam:
|
||||||
|
fetchFunc = func(ctx context.Context, cfg *config.RpcProviderSettings, txHash string) (*TxDetail, error) {
|
||||||
|
return fetchEthTx(ctx, txHash, cfg.MoonbeamBaseUrl)
|
||||||
|
}
|
||||||
|
rateLimiter = *tickers.avalanche
|
||||||
case vaa.ChainIDAptos:
|
case vaa.ChainIDAptos:
|
||||||
fetchFunc = fetchAptosTx
|
fetchFunc = fetchAptosTx
|
||||||
rateLimiter = *tickers.aptos
|
rateLimiter = *tickers.aptos
|
||||||
|
|
|
@ -73,6 +73,10 @@ type RpcProviderSettings struct {
|
||||||
EthereumRequestsPerMinute uint16 `split_words:"true" required:"true"`
|
EthereumRequestsPerMinute uint16 `split_words:"true" required:"true"`
|
||||||
FantomBaseUrl string `split_words:"true" required:"true"`
|
FantomBaseUrl string `split_words:"true" required:"true"`
|
||||||
FantomRequestsPerMinute uint16 `split_words:"true" required:"true"`
|
FantomRequestsPerMinute 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"`
|
||||||
|
MoonbeamRequestsPerMinute uint16 `split_words:"true" required:"true"`
|
||||||
OptimismBaseUrl string `split_words:"true" required:"true"`
|
OptimismBaseUrl string `split_words:"true" required:"true"`
|
||||||
OptimismRequestsPerMinute uint16 `split_words:"true" required:"true"`
|
OptimismRequestsPerMinute uint16 `split_words:"true" required:"true"`
|
||||||
PolygonBaseUrl string `split_words:"true" required:"true"`
|
PolygonBaseUrl string `split_words:"true" required:"true"`
|
||||||
|
|
Loading…
Reference in New Issue