Skip to content

Commit

Permalink
Add requests per second configuration in environment variables for co…
Browse files Browse the repository at this point in the history
…ntract-watcher (#554)

Co-authored-by: walker-16 <agpazos85@gmail.com>
  • Loading branch information
ftocal and walker-16 committed Jul 24, 2023
1 parent 4ee9abe commit 1d512db
Show file tree
Hide file tree
Showing 6 changed files with 79 additions and 37 deletions.
42 changes: 21 additions & 21 deletions contract-watcher/cmd/service/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ type watchersConfig struct {
}

type rateLimitConfig struct {
evm int
ankr int
solana int
terra int
aptos int
Expand Down Expand Up @@ -137,17 +137,17 @@ func newWatchers(config *config.ServiceConfiguration, repo *storage.Repository,
var watchers *watchersConfig
switch config.P2pNetwork {
case domain.P2pMainNet:
watchers = newWatchersForMainnet()
watchers = newWatchersForMainnet(config)
case domain.P2pTestNet:
watchers = newWatchersForTestnet()
watchers = newWatchersForTestnet(config)
default:
watchers = &watchersConfig{}
}

result := make([]watcher.ContractWatcher, 0)

// add evm watchers
evmLimiter := ratelimit.New(watchers.rateLimit.evm, ratelimit.Per(time.Second))
evmLimiter := ratelimit.New(watchers.rateLimit.ankr, ratelimit.Per(time.Second))
ankrClient := ankr.NewAnkrSDK(config.AnkrUrl, evmLimiter, metrics)
for _, w := range watchers.evms {
params := watcher.EVMParams{ChainID: w.ChainID, Blockchain: w.Name, SizeBlocks: w.SizeBlocks,
Expand Down Expand Up @@ -186,13 +186,13 @@ func newWatchers(config *config.ServiceConfiguration, repo *storage.Repository,
}

if watchers.celo != nil {
celoWatcher := builder.CreateCeloWatcher(watchers.rateLimit.evm, config.CeloUrl, *watchers.celo, logger, repo, metrics)
celoWatcher := builder.CreateCeloWatcher(watchers.rateLimit.celo, config.CeloUrl, *watchers.celo, logger, repo, metrics)
result = append(result, celoWatcher)
}
return result
}

func newWatchersForMainnet() *watchersConfig {
func newWatchersForMainnet(cfg *config.ServiceConfiguration) *watchersConfig {
return &watchersConfig{
evms: []config.WatcherBlockchainAddresses{
config.ETHEREUM_MAINNET,
Expand All @@ -208,18 +208,18 @@ func newWatchersForMainnet() *watchersConfig {
moonbeam: &config.MOONBEAM_MAINNET,
celo: &config.CELO_MAINNET,
rateLimit: rateLimitConfig{
evm: 1000,
solana: 20,
terra: 10,
aptos: 20,
oasis: 3,
moonbeam: 5,
celo: 3,
ankr: cfg.AnkrRequestsPerSecond,
solana: cfg.SolanaRequestsPerSecond,
terra: cfg.TerraRequestsPerSecond,
aptos: cfg.AptosRequestsPerSecond,
oasis: cfg.OasisRequestsPerSecond,
moonbeam: cfg.MoonbeamRequestsPerSecond,
celo: cfg.CeloRequestsPerSecond,
},
}
}

func newWatchersForTestnet() *watchersConfig {
func newWatchersForTestnet(cfg *config.ServiceConfiguration) *watchersConfig {
return &watchersConfig{
evms: []config.WatcherBlockchainAddresses{
config.ETHEREUM_TESTNET,
Expand All @@ -234,13 +234,13 @@ func newWatchersForTestnet() *watchersConfig {
moonbeam: &config.MOONBEAM_TESTNET,
celo: &config.CELO_TESTNET,
rateLimit: rateLimitConfig{
evm: 10,
solana: 2,
terra: 5,
aptos: 1,
oasis: 1,
moonbeam: 2,
celo: 3,
ankr: cfg.AnkrRequestsPerSecond,
solana: cfg.SolanaRequestsPerSecond,
terra: cfg.TerraRequestsPerSecond,
aptos: cfg.AptosRequestsPerSecond,
oasis: cfg.OasisRequestsPerSecond,
moonbeam: cfg.MoonbeamRequestsPerSecond,
celo: cfg.CeloRequestsPerSecond,
},
}
}
Expand Down
39 changes: 23 additions & 16 deletions contract-watcher/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,29 @@ import (

// ServiceConfiguration represents the application configuration when running as service with the default values.
type ServiceConfiguration struct {
Environment string `env:"ENVIRONMENT,required"`
LogLevel string `env:"LOG_LEVEL,default=INFO"`
Port string `env:"PORT,default=8000"`
MongoURI string `env:"MONGODB_URI,required"`
MongoDatabase string `env:"MONGODB_DATABASE,required"`
AnkrUrl string `env:"ANKR_URL,required"`
SolanaUrl string `env:"SOLANA_URL,required"`
TerraUrl string `env:"TERRA_URL,required"`
AptosUrl string `env:"APTOS_URL,required"`
OasisUrl string `env:"OASIS_URL,required"`
MoonbeamUrl string `env:"MOONBEAM_URL,required"`
CeloUrl string `env:"CELO_URL,required"`
PprofEnabled bool `env:"PPROF_ENABLED,default=false"`
P2pNetwork string `env:"P2P_NETWORK,required"`
AlertEnabled bool `env:"ALERT_ENABLED,required"`
AlertApiKey string `env:"ALERT_API_KEY"`
Environment string `env:"ENVIRONMENT,required"`
LogLevel string `env:"LOG_LEVEL,default=INFO"`
Port string `env:"PORT,default=8000"`
MongoURI string `env:"MONGODB_URI,required"`
MongoDatabase string `env:"MONGODB_DATABASE,required"`
AnkrUrl string `env:"ANKR_URL,required"`
AnkrRequestsPerSecond int `env:"ANKR_REQUESTS_PER_SECOND,required"`
SolanaUrl string `env:"SOLANA_URL,required"`
SolanaRequestsPerSecond int `env:"SOLANA_REQUESTS_PER_SECOND,required"`
TerraUrl string `env:"TERRA_URL,required"`
TerraRequestsPerSecond int `env:"TERRA_REQUESTS_PER_SECOND,required"`
AptosUrl string `env:"APTOS_URL,required"`
AptosRequestsPerSecond int `env:"APTOS_REQUESTS_PER_SECOND,required"`
OasisUrl string `env:"OASIS_URL,required"`
OasisRequestsPerSecond int `env:"OASIS_REQUESTS_PER_SECOND,required"`
MoonbeamUrl string `env:"MOONBEAM_URL,required"`
MoonbeamRequestsPerSecond int `env:"MOONBEAM_REQUESTS_PER_SECOND,required"`
CeloUrl string `env:"CELO_URL,required"`
CeloRequestsPerSecond int `env:"CELO_REQUESTS_PER_SECOND,required"`
PprofEnabled bool `env:"PPROF_ENABLED,default=false"`
P2pNetwork string `env:"P2P_NETWORK,required"`
AlertEnabled bool `env:"ALERT_ENABLED,required"`
AlertApiKey string `env:"ALERT_API_KEY"`
}

// BackfillerConfiguration represents the application configuration when running as backfiller.
Expand Down
14 changes: 14 additions & 0 deletions deploy/contract-watcher/contract-watcher-service.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -65,36 +65,50 @@ spec:
secretKeyRef:
name: blockchain
key: ankr-url
- name: ANKR_REQUESTS_PER_SECOND
value: "{{ .ANKR_REQUESTS_PER_SECOND }}"
- name: SOLANA_URL
valueFrom:
secretKeyRef:
name: blockchain
key: solana-url
- name: SOLANA_REQUESTS_PER_SECOND
value: "{{ .SOLANA_REQUESTS_PER_SECOND }}"
- name: TERRA_URL
valueFrom:
secretKeyRef:
name: blockchain
key: terra-url
- name: TERRA_REQUESTS_PER_SECOND
value: "{{ .TERRA_REQUESTS_PER_SECOND }}"
- name: APTOS_URL
valueFrom:
secretKeyRef:
name: blockchain
key: aptos-url
- name: APTOS_REQUESTS_PER_SECOND
value: "{{ .APTOS_REQUESTS_PER_SECOND }}"
- name: OASIS_URL
valueFrom:
secretKeyRef:
name: blockchain
key: oasis-url
- name: OASIS_REQUESTS_PER_SECOND
value: "{{ .OASIS_REQUESTS_PER_SECOND }}"
- name: MOONBEAM_URL
valueFrom:
secretKeyRef:
name: blockchain
key: moonbeam-url
- name: MOONBEAM_REQUESTS_PER_SECOND
value: "{{ .MOONBEAM_REQUESTS_PER_SECOND }}"
- name: CELO_URL
valueFrom:
secretKeyRef:
name: blockchain
key: celo-url
- name: CELO_REQUESTS_PER_SECOND
value: "{{ .CELO_REQUESTS_PER_SECOND }}"
- name: ALERT_API_KEY
valueFrom:
secretKeyRef:
Expand Down
7 changes: 7 additions & 0 deletions deploy/contract-watcher/env/production.env
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,17 @@ RESOURCES_REQUESTS_CPU=250m
P2P_NETWORK=mainnet
PPROF_ENABLED=false
ANKR_URL=
ANKR_REQUESTS_PER_SECOND=1000
SOLANA_URL=
SOLANA_REQUESTS_PER_SECOND=20
TERRA_URL=
TERRA_REQUESTS_PER_SECOND=10
APTOS_URL=
APTOS_REQUESTS_PER_SECOND=20
OASIS_URL=
OASIS_REQUESTS_PER_SECOND=3
MOONBEAM_URL=
MOONBEAM_REQUESTS_PER_SECOND=5
CELO_URL=
CELO_REQUESTS_PER_SECOND=20
ALERT_ENABLED=true
7 changes: 7 additions & 0 deletions deploy/contract-watcher/env/staging.env
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,17 @@ RESOURCES_REQUESTS_CPU=250m
P2P_NETWORK=mainnet
PPROF_ENABLED=true
ANKR_URL=
ANKR_REQUESTS_PER_SECOND=1000
SOLANA_URL=
SOLANA_REQUESTS_PER_SECOND=20
TERRA_URL=
TERRA_REQUESTS_PER_SECOND=10
APTOS_URL=
APTOS_REQUESTS_PER_SECOND=20
OASIS_URL=
OASIS_REQUESTS_PER_SECOND=3
MOONBEAM_URL=
MOONBEAM_REQUESTS_PER_SECOND=5
CELO_URL=
CELO_REQUESTS_PER_SECOND=20
ALERT_ENABLED=false
7 changes: 7 additions & 0 deletions deploy/contract-watcher/env/test.env
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,17 @@ RESOURCES_REQUESTS_CPU=10m
P2P_NETWORK=testnet
PPROF_ENABLED=false
ANKR_URL=
ANKR_REQUESTS_PER_SECOND=10
SOLANA_URL=
SOLANA_REQUESTS_PER_SECOND=2
TERRA_URL=
TERRA_REQUESTS_PER_SECOND=5
APTOS_URL=
APTOS_REQUESTS_PER_SECOND=1
OASIS_URL=
OASIS_REQUESTS_PER_SECOND=1
MOONBEAM_URL=
MOONBEAM_REQUESTS_PER_SECOND=2
CELO_URL=
CELO_REQUESTS_PER_SECOND=20
ALERT_ENABLED=false

0 comments on commit 1d512db

Please sign in to comment.