diff --git a/.env b/.env index fd9a3a5..1cf9840 100644 --- a/.env +++ b/.env @@ -1,10 +1,7 @@ # Application settings START_TIMEOUT=20s # Start application timeout duration STOP_TIMEOUT=20s # Stop application timeout duration -MODULES=auth,authz,bandwidth,bank,core,distribution,dmn,feegrant,gov,graph,grid,ibc,liquidity,mint,rank,slashing,staking,wasm,raw # Modules for processing CHAIN_PREFIX=cosmos # Prefix of indexing chain -DEFAULT_DEMON=uatom # Default demon of chain coins -PARSE_AVATAR_URL=false # Parse avatar url for validator from keychain. It will decrease index performance!!! # Server settings SERVER_PORT=2112 @@ -16,12 +13,12 @@ GRPC_URL=http://127.0.0.1:8090 # GRPC API GRPC_SECURE_CONNECTION=false # GRPC secure connection GRPC_TIMEOUT=15s # GRPC requests timeout RPC_TIMEOUT=15s # RPC requests timeout -WS_ENABLED=true # Websocket enabled # Broker settings BROKER_SERVER=localhost:9092 # Broker address PARTITIONS_COUNT=1 BROKER_ENABLED=true # Publish messages to broker +BATCH_PRODUCER=false # Enable batch producer (increase performance but experimental feature) # Worker settings WORKERS_COUNT=8 # Count of block processing processes diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index a456ee2..95da0c9 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -13,7 +13,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-go@v4 with: - go-version: 1.21.4 + go-version: 1.22.4 - name: lint run: make lint diff --git a/Dockerfile b/Dockerfile index 1dde372..52168fe 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.21.4-alpine as builder +FROM golang:1.22.4-alpine as builder ARG version diff --git a/Makefile b/Makefile index e337b25..55662e6 100644 --- a/Makefile +++ b/Makefile @@ -25,7 +25,7 @@ race: dep ## Run data race detector install-linter: ## Install golangci-lint @mkdir -p bin - @curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b bin v1.55.2 + @curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b bin v1.59.0 @bin/golangci-lint --version lint: install-linter ## Lint the files diff --git a/adapter/storage/block.go b/adapter/storage/block.go index 94644d6..6bf1cb0 100644 --- a/adapter/storage/block.go +++ b/adapter/storage/block.go @@ -9,8 +9,8 @@ import ( "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" - "github.com/bro-n-bro/spacebox-crawler/adapter/storage/model" - "github.com/bro-n-bro/spacebox-crawler/types" + "github.com/bro-n-bro/spacebox-crawler/v2/adapter/storage/model" + "github.com/bro-n-bro/spacebox-crawler/v2/types" ) func (s *Storage) GetBlockByHeight(ctx context.Context, height int64) (*model.Block, error) { diff --git a/adapter/storage/message.go b/adapter/storage/message.go index 0446be9..d337b72 100644 --- a/adapter/storage/message.go +++ b/adapter/storage/message.go @@ -5,7 +5,7 @@ import ( "go.mongodb.org/mongo-driver/bson" - "github.com/bro-n-bro/spacebox-crawler/adapter/storage/model" + "github.com/bro-n-bro/spacebox-crawler/v2/adapter/storage/model" ) func (s *Storage) InsertErrorMessage(ctx context.Context, message model.Message) error { diff --git a/adapter/storage/tx.go b/adapter/storage/tx.go index 112579e..879344b 100644 --- a/adapter/storage/tx.go +++ b/adapter/storage/tx.go @@ -5,7 +5,7 @@ import ( "go.mongodb.org/mongo-driver/bson" - "github.com/bro-n-bro/spacebox-crawler/adapter/storage/model" + "github.com/bro-n-bro/spacebox-crawler/v2/adapter/storage/model" ) func (s *Storage) InsertErrorTx(ctx context.Context, tx model.Tx) error { diff --git a/client/grpc/bank.go b/client/grpc/bank.go deleted file mode 100644 index 710d731..0000000 --- a/client/grpc/bank.go +++ /dev/null @@ -1,21 +0,0 @@ -package grpc - -import ( - "context" - - basetypes "github.com/cosmos/cosmos-sdk/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" -) - -func (c *Client) GetTotalSupply(ctx context.Context, height int64) (basetypes.Coins, error) { - respPb, err := c.BankQueryClient.TotalSupply( - ctx, - &banktypes.QueryTotalSupplyRequest{}, - GetHeightRequestHeader(height), - ) - if err != nil { - return nil, err - } - - return respPb.Supply, nil -} diff --git a/client/grpc/client.go b/client/grpc/client.go index 2d5090c..db265d1 100644 --- a/client/grpc/client.go +++ b/client/grpc/client.go @@ -7,31 +7,15 @@ import ( "github.com/cosmos/cosmos-sdk/client/grpc/tmservice" "github.com/cosmos/cosmos-sdk/types/tx" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - authztypes "github.com/cosmos/cosmos-sdk/x/authz" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - distributiontypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - feegranttypes "github.com/cosmos/cosmos-sdk/x/feegrant" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" - slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - bandwidthtypes "github.com/cybercongress/go-cyber/x/bandwidth/types" - dmntypes "github.com/cybercongress/go-cyber/x/dmn/types" - graphtypes "github.com/cybercongress/go-cyber/x/graph/types" - gridtypes "github.com/cybercongress/go-cyber/x/grid/types" - ranktypes "github.com/cybercongress/go-cyber/x/rank/types" - resourcestypes "github.com/cybercongress/go-cyber/x/resources/types" + grpcprom "github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus" "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/timeout" - grpc_prometheus "github.com/grpc-ecosystem/go-grpc-prometheus" + "github.com/prometheus/client_golang/prometheus" "github.com/rs/zerolog" "google.golang.org/grpc" "google.golang.org/grpc/credentials" "google.golang.org/grpc/credentials/insecure" - "github.com/bro-n-bro/spacebox-crawler/adapter/storage/model" - liquiditytypes "github.com/bro-n-bro/spacebox-crawler/types/liquidity" + "github.com/bro-n-bro/spacebox-crawler/v2/adapter/storage/model" ) type ( @@ -40,29 +24,13 @@ type ( } Client struct { - SlashingQueryClient slashingtypes.QueryClient - TmsService tmservice.ServiceClient - TxService tx.ServiceClient - BankQueryClient banktypes.QueryClient - AuthQueryClient authtypes.QueryClient - GovQueryClient govtypes.QueryClient - MintQueryClient minttypes.QueryClient - StakingQueryClient stakingtypes.QueryClient - DistributionQueryClient distributiontypes.QueryClient - AuthzQueryClient authztypes.QueryClient - FeegrantQueryClient feegranttypes.QueryClient - IbcTransferQueryClient ibctransfertypes.QueryClient - LiquidityQueryClient liquiditytypes.QueryClient - GraphQueryClient graphtypes.QueryClient - BandwidthQueryClient bandwidthtypes.QueryClient - DMNQueryClient dmntypes.QueryClient - GridQueryClient gridtypes.QueryClient - RankQueryClient ranktypes.QueryClient - ResourcesQueryClient resourcestypes.QueryClient - conn *grpc.ClientConn - log *zerolog.Logger - storage storage - cfg Config + TmsService tmservice.ServiceClient + TxService tx.ServiceClient + + conn *grpc.ClientConn + log *zerolog.Logger + storage storage + cfg Config } ) @@ -79,16 +47,20 @@ func (c *Client) Start(ctx context.Context) error { options := []grpc.DialOption{ grpc.WithBlock(), grpc.WithChainUnaryInterceptor(timeout.UnaryClientInterceptor(c.cfg.Timeout)), // request timeout + grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(c.cfg.MaxReceiveMessageSize)), } if c.cfg.MetricsEnabled { + cm := grpcprom.NewClientMetrics( + grpcprom.WithClientHandlingTimeHistogram()) + + prometheus.MustRegister(cm) + options = append( options, - grpc.WithChainUnaryInterceptor(grpc_prometheus.UnaryClientInterceptor), - grpc.WithChainStreamInterceptor(grpc_prometheus.StreamClientInterceptor), + grpc.WithChainUnaryInterceptor(cm.UnaryClientInterceptor()), + grpc.WithChainStreamInterceptor(cm.StreamClientInterceptor()), ) - - grpc_prometheus.EnableClientHandlingTimeHistogram() } // Add required secure grpc option based on config parameter @@ -110,23 +82,6 @@ func (c *Client) Start(ctx context.Context) error { c.TmsService = tmservice.NewServiceClient(grpcConn) c.TxService = tx.NewServiceClient(grpcConn) - c.BankQueryClient = banktypes.NewQueryClient(grpcConn) - c.GovQueryClient = govtypes.NewQueryClient(grpcConn) - c.MintQueryClient = minttypes.NewQueryClient(grpcConn) - c.SlashingQueryClient = slashingtypes.NewQueryClient(grpcConn) - c.StakingQueryClient = stakingtypes.NewQueryClient(grpcConn) - c.DistributionQueryClient = distributiontypes.NewQueryClient(grpcConn) - c.AuthzQueryClient = authztypes.NewQueryClient(grpcConn) - c.FeegrantQueryClient = feegranttypes.NewQueryClient(grpcConn) - c.IbcTransferQueryClient = ibctransfertypes.NewQueryClient(grpcConn) - c.LiquidityQueryClient = liquiditytypes.NewQueryClient(grpcConn) - c.AuthQueryClient = authtypes.NewQueryClient(grpcConn) - c.GraphQueryClient = graphtypes.NewQueryClient(grpcConn) - c.BandwidthQueryClient = bandwidthtypes.NewQueryClient(grpcConn) - c.DMNQueryClient = dmntypes.NewQueryClient(grpcConn) - c.GridQueryClient = gridtypes.NewQueryClient(grpcConn) - c.RankQueryClient = ranktypes.NewQueryClient(grpcConn) - c.ResourcesQueryClient = resourcestypes.NewQueryClient(grpcConn) c.conn = grpcConn @@ -134,3 +89,5 @@ func (c *Client) Start(ctx context.Context) error { } func (c *Client) Stop(_ context.Context) error { return c.conn.Close() } + +func (c *Client) Conn() *grpc.ClientConn { return c.conn } diff --git a/client/grpc/config.go b/client/grpc/config.go index cd82d23..5db5b3d 100644 --- a/client/grpc/config.go +++ b/client/grpc/config.go @@ -4,9 +4,10 @@ import "time" type ( Config struct { - Host string `env:"GRPC_URL" envDefault:"http://localhost:9090"` - SecureConnection bool `env:"GRPC_SECURE_CONNECTION" envDefault:"false"` - MetricsEnabled bool `env:"METRICS_ENABLED" envDefault:"false"` - Timeout time.Duration `env:"GRPC_TIMEOUT" envDefault:"15s"` + Host string `env:"GRPC_URL" envDefault:"http://localhost:9090"` + SecureConnection bool `env:"GRPC_SECURE_CONNECTION" envDefault:"false"` + MetricsEnabled bool `env:"METRICS_ENABLED" envDefault:"false"` + MaxReceiveMessageSize int `env:"GRPC_MAX_RECEIVE_MESSAGE_SIZE_BYTES" envDefault:"5242880"` // 5MB + Timeout time.Duration `env:"GRPC_TIMEOUT" envDefault:"15s"` } ) diff --git a/client/grpc/tx.go b/client/grpc/tx.go index 75914c0..f27bd93 100644 --- a/client/grpc/tx.go +++ b/client/grpc/tx.go @@ -8,7 +8,7 @@ import ( cometbfttypes "github.com/cometbft/cometbft/types" "github.com/cosmos/cosmos-sdk/types/tx" - "github.com/bro-n-bro/spacebox-crawler/adapter/storage/model" + "github.com/bro-n-bro/spacebox-crawler/v2/adapter/storage/model" ) // Txs queries for all the transactions in a block. Transactions are returned diff --git a/client/grpc/utils.go b/client/grpc/utils.go deleted file mode 100644 index ec14361..0000000 --- a/client/grpc/utils.go +++ /dev/null @@ -1,18 +0,0 @@ -package grpc - -import ( - "strconv" - - grpctypes "github.com/cosmos/cosmos-sdk/types/grpc" - "google.golang.org/grpc" - "google.golang.org/grpc/metadata" -) - -// GetHeightRequestHeader returns the grpc.CallOption to query the state at a given height -func GetHeightRequestHeader(height int64) grpc.CallOption { - header := metadata.New(map[string]string{ - grpctypes.GRPCBlockHeightHeader: strconv.FormatInt(height, 10), - }) - - return grpc.Header(&header) -} diff --git a/client/rpc/blocker.go b/client/rpc/blocker.go index 46dbbb8..0b26682 100644 --- a/client/rpc/blocker.go +++ b/client/rpc/blocker.go @@ -3,7 +3,7 @@ package rpc import ( "context" - "github.com/bro-n-bro/spacebox-crawler/types" + "github.com/bro-n-bro/spacebox-crawler/v2/types" ) // GetBlockEvents returns begin block and end block events. diff --git a/client/rpc/client.go b/client/rpc/client.go index c6bc547..577e7c1 100644 --- a/client/rpc/client.go +++ b/client/rpc/client.go @@ -2,9 +2,11 @@ package rpc import ( "context" + "net/http" cometbftHttp "github.com/cometbft/cometbft/rpc/client/http" jsonrpcclient "github.com/cometbft/cometbft/rpc/jsonrpc/client" + "github.com/prometheus/client_golang/prometheus/promhttp" ) type Client struct { @@ -20,43 +22,37 @@ func New(cfg Config) *Client { return &Client{cfg: cfg} } -func (c *Client) Start(ctx context.Context) error { - // FIXME: does not work without websocket connection - var rpcCli *cometbftHttp.HTTP - if c.cfg.WSEnabled { - var err error - rpcCli, err = cometbftHttp.NewWithTimeout(c.cfg.Host, "/websocket", uint(c.cfg.Timeout.Seconds())) - if err != nil { - return err - } - - if err = rpcCli.Start(); err != nil { - return err - } - } else { - var err error - rpcCli, err = cometbftHttp.NewWithTimeout(c.cfg.Host, "", uint(c.cfg.Timeout.Seconds())) - if err != nil { - return err - } - if err = rpcCli.Start(); err != nil { - return err - } +func (c *Client) Start(_ context.Context) error { + httpClient, err := jsonrpcclient.DefaultHTTPClient(c.cfg.Host) + if err != nil { + return err } - c.RPCClient = rpcCli + httpClient.Timeout = c.cfg.Timeout + + if c.cfg.MetricsEnabled { + httpClient.Transport = promhttp.InstrumentRoundTripperInFlight(inFlightGauge, + promhttp.InstrumentRoundTripperCounter(counter, + promhttp.InstrumentRoundTripperDuration(histVec, http.DefaultTransport)), + ) + } + + c.RPCClient, err = cometbftHttp.NewWithClient(c.cfg.Host, "/websocket", httpClient) + if err != nil { + return err + } + + if err = c.RPCClient.Start(); err != nil { + return err + } return nil } func (c *Client) Stop(_ context.Context) error { - if c.cfg.WSEnabled { - if err := c.RPCClient.Stop(); err != nil { - return err - } + if err := c.RPCClient.Stop(); err != nil { + return err } return nil } - -func (c *Client) WsEnabled() bool { return c.cfg.WSEnabled } diff --git a/client/rpc/config.go b/client/rpc/config.go index 0d63055..ed23939 100644 --- a/client/rpc/config.go +++ b/client/rpc/config.go @@ -3,7 +3,7 @@ package rpc import "time" type Config struct { - Host string `env:"RPC_URL" envDefault:"http://localhost:26657"` - WSEnabled bool `env:"WS_ENABLED" envDefault:"true"` - Timeout time.Duration `env:"RPC_TIMEOUT" envDefault:"15s"` + Host string `env:"RPC_URL" envDefault:"http://localhost:26657"` + MetricsEnabled bool `env:"METRICS_ENABLED" envDefault:"false"` + Timeout time.Duration `env:"RPC_TIMEOUT" envDefault:"15s"` } diff --git a/client/rpc/metrics.go b/client/rpc/metrics.go new file mode 100644 index 0000000..01a044a --- /dev/null +++ b/client/rpc/metrics.go @@ -0,0 +1,30 @@ +package rpc + +import ( + "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/client_golang/prometheus/promauto" +) + +var ( + inFlightGauge = promauto.NewGauge(prometheus.GaugeOpts{ + Name: "client_in_flight_requests", + Help: "A gauge of in-flight requests for the wrapped client.", + }) + + counter = promauto.NewCounterVec( + prometheus.CounterOpts{ + Name: "client_api_requests_total", + Help: "A counter for requests from the wrapped client.", + }, + []string{"code", "method"}, + ) + + histVec = promauto.NewHistogramVec( + prometheus.HistogramOpts{ + Name: "request_duration_seconds", + Help: "A histogram of request latencies.", + Buckets: prometheus.DefBuckets, + }, + []string{"method"}, + ) +) diff --git a/cmd/main.go b/cmd/main.go index f80950b..33c76f2 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -9,8 +9,8 @@ import ( "github.com/joho/godotenv" "github.com/rs/zerolog" - "github.com/bro-n-bro/spacebox-crawler/internal/app" - executor "github.com/bro-n-bro/spacebox-crawler/pkg/app" + "github.com/bro-n-bro/spacebox-crawler/v2/internal/app" + executor "github.com/bro-n-bro/spacebox-crawler/v2/pkg/app" ) const ( diff --git a/delivery/broker/account.go b/delivery/broker/account.go deleted file mode 100644 index 9ae0392..0000000 --- a/delivery/broker/account.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishAccount(ctx context.Context, account model.Account) error { - return b.marshalAndProduce(Account, account) -} diff --git a/delivery/broker/account_balance.go b/delivery/broker/account_balance.go deleted file mode 100644 index 28cb7ce..0000000 --- a/delivery/broker/account_balance.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishAccountBalance(ctx context.Context, ab model.AccountBalance) error { - return b.marshalAndProduce(AccountBalance, ab) -} diff --git a/delivery/broker/acknowledgement_message.go b/delivery/broker/acknowledgement_message.go deleted file mode 100644 index fed21dc..0000000 --- a/delivery/broker/acknowledgement_message.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishAcknowledgementMessage(ctx context.Context, msg model.AcknowledgementMessage) error { - return b.marshalAndProduce(AcknowledgementMessage, msg) -} diff --git a/delivery/broker/annual_provision.go b/delivery/broker/annual_provision.go deleted file mode 100644 index f8dcaf7..0000000 --- a/delivery/broker/annual_provision.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishAnnualProvision(ctx context.Context, ap model.AnnualProvision) error { - return b.marshalAndProduce(AnnualProvision, ap) -} diff --git a/delivery/broker/authz_grant.go b/delivery/broker/authz_grant.go deleted file mode 100644 index d65a386..0000000 --- a/delivery/broker/authz_grant.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishAuthzGrant(ctx context.Context, grant model.AuthzGrant) error { - return b.marshalAndProduce(AuthzGrant, grant) -} diff --git a/delivery/broker/bandwidth.go b/delivery/broker/bandwidth.go deleted file mode 100644 index ded1b37..0000000 --- a/delivery/broker/bandwidth.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishBandwidthParams(ctx context.Context, msg model.BandwidthParams) error { - return b.marshalAndProduce(BandwidthParams, msg) -} diff --git a/delivery/broker/block.go b/delivery/broker/block.go deleted file mode 100644 index 124298d..0000000 --- a/delivery/broker/block.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishBlock(ctx context.Context, block model.Block) error { - return b.marshalAndProduce(Block, block) -} diff --git a/delivery/broker/broker.go b/delivery/broker/broker.go index 60791bf..2d24b18 100644 --- a/delivery/broker/broker.go +++ b/delivery/broker/broker.go @@ -21,36 +21,21 @@ const ( type ( Broker struct { - log *zerolog.Logger - p *kafka.Producer - ac *kafka.AdminClient - cache lruCache - modules []string - cfg Config - } - - lruCache struct { - validator cache[string, int64] - valCommission cache[string, int64] - valDescription cache[string, int64] - valInfo cache[string, int64] - valStatus cache[string, int64] - } - - cache[K, V comparable] interface { - UpdateCacheValue(K, V) bool + log *zerolog.Logger + p *kafka.Producer + ac *kafka.AdminClient + cfg Config } opt func(b *Broker) ) -func New(cfg Config, modules []string, l zerolog.Logger, opts ...opt) *Broker { +func New(cfg Config, l zerolog.Logger, opts ...opt) *Broker { l = l.With().Str("cmp", "broker").Logger() b := &Broker{ - log: &l, - cfg: cfg, - modules: modules, + log: &l, + cfg: cfg, } for _, apply := range opts { @@ -97,6 +82,7 @@ func (b *Broker) Start(ctx context.Context) error { p, err := kafka.NewProducer(&kafka.ConfigMap{ "bootstrap.servers": b.cfg.ServerURL, "message.max.bytes": b.cfg.MaxMessageBytes, + "go.batch.producer": b.cfg.BatchProducer, }) if err != nil { b.log.Error().Err(err).Msg(MsgErrCreateProducer) @@ -176,36 +162,6 @@ func (b *Broker) produce(topic Topic, data []byte) error { return nil } -func WithValidatorCache(valCache cache[string, int64]) func(b *Broker) { - return func(b *Broker) { - b.cache.validator = valCache - } -} - -func WithValidatorCommissionCache(valCommissionCache cache[string, int64]) func(b *Broker) { - return func(b *Broker) { - b.cache.valCommission = valCommissionCache - } -} - -func WithValidatorDescriptionCache(valDescriptionCache cache[string, int64]) func(b *Broker) { - return func(b *Broker) { - b.cache.valDescription = valDescriptionCache - } -} - -func WithValidatorInfoCache(valInfoCache cache[string, int64]) func(b *Broker) { - return func(b *Broker) { - b.cache.valInfo = valInfoCache - } -} - -func WithValidatorStatusCache(valStatusCache cache[string, int64]) func(b *Broker) { - return func(b *Broker) { - b.cache.valStatus = valStatusCache - } -} - func removeDuplicates[T comparable](s []T) []T { res := make([]T, 0) uniq := make(map[T]struct{}) diff --git a/delivery/broker/community_pool.go b/delivery/broker/community_pool.go deleted file mode 100644 index e937701..0000000 --- a/delivery/broker/community_pool.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishCommunityPool(ctx context.Context, cp model.CommunityPool) error { - return b.marshalAndProduce(CommunityPool, cp) -} diff --git a/delivery/broker/config.go b/delivery/broker/config.go index 3186278..ba5350f 100644 --- a/delivery/broker/config.go +++ b/delivery/broker/config.go @@ -5,6 +5,7 @@ type ( ServerURL string `env:"BROKER_SERVER"` PartitionsCount int `env:"PARTITIONS_COUNT" envDefault:"1"` MaxMessageBytes int `env:"MAX_MESSAGE_MAX_BYTES" envDefault:"5242880"` // 5MB + BatchProducer bool `env:"BATCH_PRODUCER"` Enabled bool `env:"BROKER_ENABLED"` } ) diff --git a/delivery/broker/create_validator_message.go b/delivery/broker/create_validator_message.go deleted file mode 100644 index 8ae4935..0000000 --- a/delivery/broker/create_validator_message.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishCreateValidatorMessage(_ context.Context, cvm model.CreateValidatorMessage) error { - return b.marshalAndProduce(CreateValidatorMessage, cvm) -} diff --git a/delivery/broker/cyberlink.go b/delivery/broker/cyberlink.go deleted file mode 100644 index 140594c..0000000 --- a/delivery/broker/cyberlink.go +++ /dev/null @@ -1,19 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishCyberlink(ctx context.Context, msg model.Cyberlink) error { - return b.marshalAndProduce(Cyberlink, msg) -} - -func (b *Broker) PublishCyberlinkMessage(ctx context.Context, msg model.CyberlinkMessage) error { - return b.marshalAndProduce(CyberlinkMessage, msg) -} - -func (b *Broker) PublishParticle(ctx context.Context, msg model.Particle) error { - return b.marshalAndProduce(Particle, msg) -} diff --git a/delivery/broker/delegation.go b/delivery/broker/delegation.go deleted file mode 100644 index 8ee313c..0000000 --- a/delivery/broker/delegation.go +++ /dev/null @@ -1,17 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishDelegation(ctx context.Context, d model.Delegation) error { - d.IsActive = true - return b.marshalAndProduce(Delegation, d) -} - -func (b *Broker) PublishDisabledDelegation(ctx context.Context, d model.Delegation) error { - d.IsActive = false - return b.marshalAndProduce(Delegation, d) -} diff --git a/delivery/broker/delegation_message.go b/delivery/broker/delegation_message.go deleted file mode 100644 index a25e095..0000000 --- a/delivery/broker/delegation_message.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishDelegationMessage(ctx context.Context, dm model.DelegationMessage) error { - return b.marshalAndProduce(DelegationMessage, dm) -} diff --git a/delivery/broker/delegation_reward.go b/delivery/broker/delegation_reward.go deleted file mode 100644 index cbae8fb..0000000 --- a/delivery/broker/delegation_reward.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishDelegationReward(ctx context.Context, dr model.DelegationReward) error { - return b.marshalAndProduce(DelegationReward, dr) -} diff --git a/delivery/broker/delegation_reward_message.go b/delivery/broker/delegation_reward_message.go deleted file mode 100644 index 53a80cc..0000000 --- a/delivery/broker/delegation_reward_message.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishDelegationRewardMessage(ctx context.Context, drm model.DelegationRewardMessage) error { - return b.marshalAndProduce(DelegationRewardMessage, drm) -} diff --git a/delivery/broker/denom_trace.go b/delivery/broker/denom_trace.go deleted file mode 100644 index 72abe88..0000000 --- a/delivery/broker/denom_trace.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishDenomTrace(ctx context.Context, dt model.DenomTrace) error { - return b.marshalAndProduce(DenomTrace, dt) -} diff --git a/delivery/broker/distribution.go b/delivery/broker/distribution.go deleted file mode 100644 index 8d1390d..0000000 --- a/delivery/broker/distribution.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishDistributionParams(ctx context.Context, dp model.DistributionParams) error { - return b.marshalAndProduce(DistributionParams, dp) -} diff --git a/delivery/broker/distribution_commission.go b/delivery/broker/distribution_commission.go deleted file mode 100644 index dbf02e7..0000000 --- a/delivery/broker/distribution_commission.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishDistributionCommission(_ context.Context, commission model.DistributionCommission) error { - return b.marshalAndProduce(DistributionCommission, commission) -} diff --git a/delivery/broker/distribution_reward.go b/delivery/broker/distribution_reward.go deleted file mode 100644 index 4c71e5b..0000000 --- a/delivery/broker/distribution_reward.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishDistributionReward(_ context.Context, reward model.DistributionReward) error { - return b.marshalAndProduce(DistributionReward, reward) -} diff --git a/delivery/broker/dmn.go b/delivery/broker/dmn.go deleted file mode 100644 index 5feff68..0000000 --- a/delivery/broker/dmn.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishDMNParams(ctx context.Context, msg model.DMNParams) error { - return b.marshalAndProduce(DMNParams, msg) -} diff --git a/delivery/broker/edit_validator_message.go b/delivery/broker/edit_validator_message.go deleted file mode 100644 index 9d440e8..0000000 --- a/delivery/broker/edit_validator_message.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishEditValidatorMessage(_ context.Context, msg model.EditValidatorMessage) error { - return b.marshalAndProduce(EditValidatorMessage, msg) -} diff --git a/delivery/broker/exec_message.go b/delivery/broker/exec_message.go deleted file mode 100644 index fd89023..0000000 --- a/delivery/broker/exec_message.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishExecMessage(ctx context.Context, em model.ExecMessage) error { - return b.marshalAndProduce(ExecMessage, em) -} diff --git a/delivery/broker/fee_allowance.go b/delivery/broker/fee_allowance.go deleted file mode 100644 index 79ff69e..0000000 --- a/delivery/broker/fee_allowance.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishFeeAllowance(ctx context.Context, feeAllowance model.FeeAllowance) error { - return b.marshalAndProduce(FeeAllowance, feeAllowance) -} diff --git a/delivery/broker/gov.go b/delivery/broker/gov.go deleted file mode 100644 index 85259de..0000000 --- a/delivery/broker/gov.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishGovParams(ctx context.Context, params model.GovParams) error { - return b.marshalAndProduce(GovParams, params) -} diff --git a/delivery/broker/grant_allowance_message.go b/delivery/broker/grant_allowance_message.go deleted file mode 100644 index b95e4e7..0000000 --- a/delivery/broker/grant_allowance_message.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishGrantAllowanceMessage(ctx context.Context, gam model.GrantAllowanceMessage) error { - return b.marshalAndProduce(GrantAllowanceMessage, gam) -} diff --git a/delivery/broker/grant_message.go b/delivery/broker/grant_message.go deleted file mode 100644 index 488d83b..0000000 --- a/delivery/broker/grant_message.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishGrantMessage(ctx context.Context, gm model.GrantMessage) error { - return b.marshalAndProduce(GrantMessage, gm) -} diff --git a/delivery/broker/grid.go b/delivery/broker/grid.go deleted file mode 100644 index e7f2570..0000000 --- a/delivery/broker/grid.go +++ /dev/null @@ -1,31 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishGridParams(ctx context.Context, msg model.GridParams) error { - return b.marshalAndProduce(GridParams, msg) -} - -func (b *Broker) PublishCreateRouteMessage(ctx context.Context, msg model.CreateRouteMessage) error { - return b.marshalAndProduce(CreateRouteMessage, msg) -} - -func (b *Broker) PublishEditRouteMessage(ctx context.Context, msg model.EditRouteMessage) error { - return b.marshalAndProduce(EditRouteMessage, msg) -} - -func (b *Broker) PublishEditRouteNameMessage(ctx context.Context, msg model.EditRouteNameMessage) error { - return b.marshalAndProduce(EditRouteNameMessage, msg) -} - -func (b *Broker) PublishDeleteRouteMessage(ctx context.Context, msg model.DeleteRouteMessage) error { - return b.marshalAndProduce(DeleteRouteMessage, msg) -} - -func (b *Broker) PublishRoute(ctx context.Context, msg model.Route) error { - return b.marshalAndProduce(Route, msg) -} diff --git a/delivery/broker/handle_validator_signature.go b/delivery/broker/handle_validator_signature.go deleted file mode 100644 index b2f5bb1..0000000 --- a/delivery/broker/handle_validator_signature.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishHandleValidatorSignature(ctx context.Context, hvs model.HandleValidatorSignature) error { - return b.marshalAndProduce(HandleValidatorSignature, hvs) -} diff --git a/delivery/broker/liquidity_pool.go b/delivery/broker/liquidity_pool.go deleted file mode 100644 index 52e6df6..0000000 --- a/delivery/broker/liquidity_pool.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishLiquidityPool(_ context.Context, v model.LiquidityPool) error { - return b.marshalAndProduce(LiquidityPool, v) -} diff --git a/delivery/broker/message.go b/delivery/broker/message.go deleted file mode 100644 index 758b59a..0000000 --- a/delivery/broker/message.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishMessage(ctx context.Context, message model.Message) error { - return b.marshalAndProduce(Message, message) -} diff --git a/delivery/broker/mint_params.go b/delivery/broker/mint_params.go deleted file mode 100644 index b7cd1d7..0000000 --- a/delivery/broker/mint_params.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishMintParams(ctx context.Context, mp model.MintParams) error { - return b.marshalAndProduce(MintParams, mp) -} diff --git a/delivery/broker/multi_send_message.go b/delivery/broker/multi_send_message.go deleted file mode 100644 index a011baa..0000000 --- a/delivery/broker/multi_send_message.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishMultiSendMessage(ctx context.Context, msm model.MultiSendMessage) error { - return b.marshalAndProduce(MultiSendMessage, msm) -} diff --git a/delivery/broker/proposal.go b/delivery/broker/proposal.go deleted file mode 100644 index f051180..0000000 --- a/delivery/broker/proposal.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishProposal(ctx context.Context, proposal model.Proposal) error { - return b.marshalAndProduce(Proposal, proposal) -} diff --git a/delivery/broker/proposal_deposit.go b/delivery/broker/proposal_deposit.go deleted file mode 100644 index b243032..0000000 --- a/delivery/broker/proposal_deposit.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishProposalDeposit(ctx context.Context, pvm model.ProposalDeposit) error { - return b.marshalAndProduce(ProposalDeposit, pvm) -} diff --git a/delivery/broker/proposal_deposit_message.go b/delivery/broker/proposal_deposit_message.go deleted file mode 100644 index ac86495..0000000 --- a/delivery/broker/proposal_deposit_message.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishProposalDepositMessage(ctx context.Context, pvm model.ProposalDepositMessage) error { - return b.marshalAndProduce(ProposalDepositMessage, pvm) -} diff --git a/delivery/broker/proposal_tally_result.go b/delivery/broker/proposal_tally_result.go deleted file mode 100644 index dd9361b..0000000 --- a/delivery/broker/proposal_tally_result.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishProposalTallyResult(ctx context.Context, ptr model.ProposalTallyResult) error { - return b.marshalAndProduce(ProposalTallyResult, ptr) -} diff --git a/delivery/broker/proposal_vote_message.go b/delivery/broker/proposal_vote_message.go deleted file mode 100644 index 610d229..0000000 --- a/delivery/broker/proposal_vote_message.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishProposalVoteMessage(ctx context.Context, pvm model.ProposalVoteMessage) error { - return b.marshalAndProduce(ProposalVoteMessage, pvm) -} diff --git a/delivery/broker/proposer_reward.go b/delivery/broker/proposer_reward.go deleted file mode 100644 index 8d02516..0000000 --- a/delivery/broker/proposer_reward.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishProposerReward(ctx context.Context, r model.ProposerReward) error { - return b.marshalAndProduce(ProposerReward, r) -} diff --git a/delivery/broker/publish_cancel_unbonding_delegation_message.go b/delivery/broker/publish_cancel_unbonding_delegation_message.go deleted file mode 100644 index 0aeb7c7..0000000 --- a/delivery/broker/publish_cancel_unbonding_delegation_message.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishCancelUnbondingDelegationMessage(_ context.Context, d model.CancelUnbondingDelegationMessage) error { - return b.marshalAndProduce(CancelUnbondingDelegationMessage, d) -} diff --git a/delivery/broker/rank.go b/delivery/broker/rank.go deleted file mode 100644 index b6ca093..0000000 --- a/delivery/broker/rank.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishRankParams(ctx context.Context, msg model.RankParams) error { - return b.marshalAndProduce(RankParams, msg) -} diff --git a/delivery/broker/receive_packet_message.go b/delivery/broker/receive_packet_message.go deleted file mode 100644 index 0bc7a22..0000000 --- a/delivery/broker/receive_packet_message.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishReceivePacketMessage(ctx context.Context, r model.RecvPacketMessage) error { - return b.marshalAndProduce(ReceivePacketMessage, r) -} diff --git a/delivery/broker/redelegation.go b/delivery/broker/redelegation.go deleted file mode 100644 index fec749a..0000000 --- a/delivery/broker/redelegation.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishRedelegation(ctx context.Context, r model.Redelegation) error { - return b.marshalAndProduce(Redelegation, r) -} diff --git a/delivery/broker/redelegation_message.go b/delivery/broker/redelegation_message.go deleted file mode 100644 index 2f3dff6..0000000 --- a/delivery/broker/redelegation_message.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishRedelegationMessage(ctx context.Context, rm model.RedelegationMessage) error { - return b.marshalAndProduce(RedelegationMessage, rm) -} diff --git a/delivery/broker/resources.go b/delivery/broker/resources.go deleted file mode 100644 index a5effb7..0000000 --- a/delivery/broker/resources.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishInvestmintMessage(ctx context.Context, msg model.InvestmintMessage) error { - return b.marshalAndProduce(InvestmintMessage, msg) -} diff --git a/delivery/broker/revoke_allowance_message.go b/delivery/broker/revoke_allowance_message.go deleted file mode 100644 index 6ff4709..0000000 --- a/delivery/broker/revoke_allowance_message.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishRevokeAllowanceMessage(ctx context.Context, ram model.RevokeAllowanceMessage) error { - return b.marshalAndProduce(RevokeAllowanceMessage, ram) -} diff --git a/delivery/broker/revoke_message.go b/delivery/broker/revoke_message.go deleted file mode 100644 index 7102146..0000000 --- a/delivery/broker/revoke_message.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishRevokeMessage(ctx context.Context, rm model.RevokeMessage) error { - return b.marshalAndProduce(RevokeMessage, rm) -} diff --git a/delivery/broker/send_message.go b/delivery/broker/send_message.go deleted file mode 100644 index 118ea92..0000000 --- a/delivery/broker/send_message.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishSendMessage(ctx context.Context, sm model.SendMessage) error { - return b.marshalAndProduce(SendMessage, sm) -} diff --git a/delivery/broker/set_withdraw_adress_message.go b/delivery/broker/set_withdraw_adress_message.go deleted file mode 100644 index 91d2fbf..0000000 --- a/delivery/broker/set_withdraw_adress_message.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishSetWithdrawAddressMessage(_ context.Context, swm model.SetWithdrawAddressMessage) error { - return b.marshalAndProduce(SetWithdrawAddressMessage, swm) -} diff --git a/delivery/broker/slashing_params.go b/delivery/broker/slashing_params.go deleted file mode 100644 index 8fd37ff..0000000 --- a/delivery/broker/slashing_params.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishSlashingParams(_ context.Context, params model.SlashingParams) error { - return b.marshalAndProduce(SlashingParams, params) -} diff --git a/delivery/broker/staking_params.go b/delivery/broker/staking_params.go deleted file mode 100644 index 6606fae..0000000 --- a/delivery/broker/staking_params.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishStakingParams(ctx context.Context, sp model.StakingParams) error { - return b.marshalAndProduce(StakingParams, sp) -} diff --git a/delivery/broker/staking_pool.go b/delivery/broker/staking_pool.go deleted file mode 100644 index ffa2194..0000000 --- a/delivery/broker/staking_pool.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishStakingPool(ctx context.Context, sp model.StakingPool) error { - return b.marshalAndProduce(StakingPool, sp) -} diff --git a/delivery/broker/submit_proposal_message.go b/delivery/broker/submit_proposal_message.go deleted file mode 100644 index 84b0f50..0000000 --- a/delivery/broker/submit_proposal_message.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishSubmitProposalMessage(_ context.Context, spm model.SubmitProposalMessage) error { - return b.marshalAndProduce(SubmitProposalMessage, spm) -} diff --git a/delivery/broker/supply.go b/delivery/broker/supply.go deleted file mode 100644 index 3e78c4c..0000000 --- a/delivery/broker/supply.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishSupply(ctx context.Context, supply model.Supply) error { - return b.marshalAndProduce(Supply, supply) -} diff --git a/delivery/broker/swap.go b/delivery/broker/swap.go deleted file mode 100644 index 0655a34..0000000 --- a/delivery/broker/swap.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishSwap(ctx context.Context, swap model.Swap) error { - return b.marshalAndProduce(Swap, swap) -} diff --git a/delivery/broker/topics.go b/delivery/broker/topics.go index 1cd052b..bd14479 100644 --- a/delivery/broker/topics.go +++ b/delivery/broker/topics.go @@ -1,129 +1,10 @@ package broker var ( - Account Topic = newTopic("account") - AccountBalance Topic = newTopic("account_balance") - AcknowledgementMessage Topic = newTopic("acknowledgement_message") - AnnualProvision Topic = newTopic("annual_provision") - AuthzGrant Topic = newTopic("authz_grant") - BandwidthParams Topic = newTopic("bandwidth_params") - Block Topic = newTopic("block") - CancelUnbondingDelegationMessage Topic = newTopic("cancel_unbonding_delegation_message") - CommunityPool Topic = newTopic("community_pool") - CreateRouteMessage Topic = newTopic("create_route_message") - CreateValidatorMessage Topic = newTopic("create_validator_message") - Cyberlink Topic = newTopic("cyberlink") - CyberlinkMessage Topic = newTopic("cyberlink_message") - DMNParams Topic = newTopic("dmn_params") - Delegation Topic = newTopic("delegation") - DelegationMessage Topic = newTopic("delegation_message") - DelegationReward Topic = newTopic("delegation_reward") - DelegationRewardMessage Topic = newTopic("delegation_reward_message") - DeleteRouteMessage Topic = newTopic("delete_route_message") - DenomTrace Topic = newTopic("denom_trace") - DistributionCommission Topic = newTopic("distribution_commission") - DistributionParams Topic = newTopic("distribution_params") - DistributionReward Topic = newTopic("distribution_reward") - EditRouteMessage Topic = newTopic("edit_route_message") - EditRouteNameMessage Topic = newTopic("edit_route_name_message") - EditValidatorMessage Topic = newTopic("edit_validator_message") - ExecMessage Topic = newTopic("exec_message") - FeeAllowance Topic = newTopic("fee_allowance") - GovParams Topic = newTopic("gov_params") - GrantAllowanceMessage Topic = newTopic("grant_allowance_message") - GrantMessage Topic = newTopic("grant_message") - GridParams Topic = newTopic("grid_params") - HandleValidatorSignature Topic = newTopic("handle_validator_signature") - InvestmintMessage Topic = newTopic("investmint_message") - LiquidityPool Topic = newTopic("liquidity_pool") - Message Topic = newTopic("message") - MintParams Topic = newTopic("mint_params") - MultiSendMessage Topic = newTopic("multisend_message") - Particle Topic = newTopic("particle") - Proposal Topic = newTopic("proposal") - ProposalDeposit Topic = newTopic("proposal_deposit") - ProposalDepositMessage Topic = newTopic("proposal_deposit_message") - ProposalTallyResult Topic = newTopic("proposal_tally_result") - ProposalVoteMessage Topic = newTopic("proposal_vote_message") - ProposerReward Topic = newTopic("proposer_reward") - RankParams Topic = newTopic("rank_params") - RawBlock Topic = newTopic("raw_block") - RawBlockResults Topic = newTopic("raw_block_results") - RawGenesis Topic = newTopic("raw_genesis") - RawTransaction Topic = newTopic("raw_transaction") - ReceivePacketMessage Topic = newTopic("receive_packet_message") - Redelegation Topic = newTopic("redelegation") - RedelegationMessage Topic = newTopic("redelegation_message") - RevokeAllowanceMessage Topic = newTopic("revoke_allowance_message") - RevokeMessage Topic = newTopic("revoke_message") - Route Topic = newTopic("route") - SendMessage Topic = newTopic("send_message") - SetWithdrawAddressMessage Topic = newTopic("set_withdraw_address_message") - SlashingParams Topic = newTopic("slashing_params") - StakingParams Topic = newTopic("staking_params") - StakingPool Topic = newTopic("staking_pool") - SubmitProposalMessage Topic = newTopic("submit_proposal_message") - Supply Topic = newTopic("supply") - Swap Topic = newTopic("swap") - Transaction Topic = newTopic("transaction") - TransferMessage Topic = newTopic("transfer_message") - UnbondingDelegation Topic = newTopic("unbonding_delegation") - UnbondingDelegationMessage Topic = newTopic("unbonding_delegation_message") - UnjailMessage Topic = newTopic("unjail_message") - Validator Topic = newTopic("validator") - ValidatorCommission Topic = newTopic("validator_commission") - ValidatorDescription Topic = newTopic("validator_description") - ValidatorInfo Topic = newTopic("validator_info") - ValidatorPreCommit Topic = newTopic("validator_precommit") - ValidatorStatus Topic = newTopic("validator_status") - ValidatorVotingPower Topic = newTopic("validator_voting_power") - VoteWeightedMessage Topic = newTopic("vote_weighted_message") - WithdrawValidatorCommissionMessage Topic = newTopic("withdraw_validator_commission_message") - - authTopics = Topics{Account} - - bankTopics = Topics{Supply, AccountBalance, SendMessage, MultiSendMessage} - - distributionTopics = Topics{DistributionCommission, DistributionParams, CommunityPool, - DelegationRewardMessage, SetWithdrawAddressMessage, ProposerReward, DistributionReward, - WithdrawValidatorCommissionMessage, /* TODO: validatorCommission, DelegationReward, */ - } - - govTopics = Topics{GovParams, Proposal, ProposalDepositMessage, ProposalTallyResult, ProposalVoteMessage, - VoteWeightedMessage, SubmitProposalMessage} - - mintTopics = Topics{MintParams, AnnualProvision} - - stakingTopics = Topics{Validator, ValidatorStatus, ValidatorInfo, ValidatorDescription, StakingParams, - StakingPool, Redelegation, RedelegationMessage, UnbondingDelegation, UnbondingDelegationMessage, - Delegation, DelegationMessage, CreateValidatorMessage, EditValidatorMessage, CancelUnbondingDelegationMessage, - } - - coreTopics = Topics{Block, Transaction, Message, ValidatorPreCommit} - - authzTopics = Topics{AuthzGrant, GrantMessage, RevokeMessage, ExecMessage} - - feegrantTopics = Topics{FeeAllowance, GrantAllowanceMessage, RevokeAllowanceMessage} - - slashingTopics = Topics{UnjailMessage, HandleValidatorSignature, SlashingParams} - - ibcTopics = Topics{TransferMessage, AcknowledgementMessage, ReceivePacketMessage, DenomTrace} - - liquidityTopics = Topics{Swap, LiquidityPool} - - graphTopics = Topics{Cyberlink, CyberlinkMessage, Particle} - - bandwidthTopics = Topics{BandwidthParams} - - dmnTopics = Topics{DMNParams} - - gridTopics = Topics{GridParams, CreateRouteMessage, EditRouteMessage, EditRouteNameMessage, DeleteRouteMessage, Route} - - rankTopics = Topics{RankParams} - - resourcesTopics = Topics{InvestmintMessage} - - wasmTopics = Topics{Cyberlink, Particle} + RawBlock Topic = newTopic("raw_block") + RawBlockResults Topic = newTopic("raw_block_results") + RawGenesis Topic = newTopic("raw_genesis") + RawTransaction Topic = newTopic("raw_transaction") rawTopics = Topics{RawBlock, RawTransaction, RawBlockResults, RawGenesis} @@ -134,10 +15,7 @@ var ( stringTopics = append(stringTopics, t.ToStringSlice()...) } return removeDuplicates(stringTopics) - }([]Topics{ - authTopics, bankTopics, distributionTopics, govTopics, mintTopics, stakingTopics, coreTopics, authzTopics, - feegrantTopics, slashingTopics, ibcTopics, liquidityTopics, graphTopics, bandwidthTopics, dmnTopics, - gridTopics, rankTopics, resourcesTopics, wasmTopics, rawTopics}) + }([]Topics{rawTopics}) ) type ( diff --git a/delivery/broker/transaction.go b/delivery/broker/transaction.go deleted file mode 100644 index 7c2cba2..0000000 --- a/delivery/broker/transaction.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishTransaction(ctx context.Context, tx model.Transaction) error { - return b.marshalAndProduce(Transaction, tx) -} diff --git a/delivery/broker/transfer_message.go b/delivery/broker/transfer_message.go deleted file mode 100644 index d851754..0000000 --- a/delivery/broker/transfer_message.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishTransferMessage(ctx context.Context, tm model.TransferMessage) error { - return b.marshalAndProduce(TransferMessage, tm) -} diff --git a/delivery/broker/unbonding_delegation.go b/delivery/broker/unbonding_delegation.go deleted file mode 100644 index c7726d3..0000000 --- a/delivery/broker/unbonding_delegation.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishUnbondingDelegation(ctx context.Context, ud model.UnbondingDelegation) error { - return b.marshalAndProduce(UnbondingDelegation, ud) -} diff --git a/delivery/broker/unbonding_delegation_message.go b/delivery/broker/unbonding_delegation_message.go deleted file mode 100644 index 020cce1..0000000 --- a/delivery/broker/unbonding_delegation_message.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishUnbondingDelegationMessage(ctx context.Context, udm model.UnbondingDelegationMessage) error { - return b.marshalAndProduce(UnbondingDelegationMessage, udm) -} diff --git a/delivery/broker/unjail_message.go b/delivery/broker/unjail_message.go deleted file mode 100644 index 9fd0397..0000000 --- a/delivery/broker/unjail_message.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishUnjailMessage(_ context.Context, msg model.UnjailMessage) error { - return b.marshalAndProduce(UnjailMessage, msg) -} diff --git a/delivery/broker/utils.go b/delivery/broker/utils.go deleted file mode 100644 index eb62446..0000000 --- a/delivery/broker/utils.go +++ /dev/null @@ -1,6 +0,0 @@ -package broker - -// checkCache checks the cache to see if it needs to do something with the new value. -func checkCache[K, V comparable](key K, val V, cache cache[K, V]) bool { - return cache != nil && cache.UpdateCacheValue(key, val) -} diff --git a/delivery/broker/validator_comission.go b/delivery/broker/validator_comission.go deleted file mode 100644 index 7f9bffb..0000000 --- a/delivery/broker/validator_comission.go +++ /dev/null @@ -1,15 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishValidatorCommission(ctx context.Context, commission model.ValidatorCommission) error { - if checkCache(commission.OperatorAddress, commission.Height, b.cache.valCommission) { - return b.marshalAndProduce(ValidatorCommission, commission) - } - - return nil -} diff --git a/delivery/broker/validator_description.go b/delivery/broker/validator_description.go deleted file mode 100644 index f3010bd..0000000 --- a/delivery/broker/validator_description.go +++ /dev/null @@ -1,15 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishValidatorDescription(ctx context.Context, description model.ValidatorDescription) error { - if checkCache(description.OperatorAddress, description.Height, b.cache.valDescription) { - return b.marshalAndProduce(ValidatorDescription, description) - } - - return nil -} diff --git a/delivery/broker/validator_info.go b/delivery/broker/validator_info.go deleted file mode 100644 index 23cc152..0000000 --- a/delivery/broker/validator_info.go +++ /dev/null @@ -1,15 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishValidatorInfo(ctx context.Context, info model.ValidatorInfo) error { - if checkCache(info.ConsensusAddress, info.Height, b.cache.valInfo) { - return b.marshalAndProduce(ValidatorInfo, info) - } - - return nil -} diff --git a/delivery/broker/validator_precommit.go b/delivery/broker/validator_precommit.go deleted file mode 100644 index 95fbe31..0000000 --- a/delivery/broker/validator_precommit.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishValidatorPreCommit(_ context.Context, v model.ValidatorPreCommit) error { - return b.marshalAndProduce(ValidatorPreCommit, v) -} diff --git a/delivery/broker/validator_status.go b/delivery/broker/validator_status.go deleted file mode 100644 index 3b5d20a..0000000 --- a/delivery/broker/validator_status.go +++ /dev/null @@ -1,15 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishValidatorStatus(ctx context.Context, status model.ValidatorStatus) error { - if checkCache(status.ConsensusAddress, status.Height, b.cache.valStatus) { - return b.marshalAndProduce(ValidatorStatus, status) - } - - return nil -} diff --git a/delivery/broker/validator_voting_power.go b/delivery/broker/validator_voting_power.go deleted file mode 100644 index 788a9fd..0000000 --- a/delivery/broker/validator_voting_power.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishValidatorVotingPower(_ context.Context, vp model.ValidatorVotingPower) error { - return b.marshalAndProduce(ValidatorVotingPower, vp) -} diff --git a/delivery/broker/validators.go b/delivery/broker/validators.go deleted file mode 100644 index b24bbc6..0000000 --- a/delivery/broker/validators.go +++ /dev/null @@ -1,15 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishValidator(ctx context.Context, val model.Validator) error { - if checkCache(val.ConsensusAddress, val.Height, b.cache.validator) { - return b.marshalAndProduce(Validator, val) - } - - return nil -} diff --git a/delivery/broker/vote_weighted_message.go b/delivery/broker/vote_weighted_message.go deleted file mode 100644 index a985822..0000000 --- a/delivery/broker/vote_weighted_message.go +++ /dev/null @@ -1,11 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishVoteWeightedMessage(_ context.Context, vwm model.VoteWeightedMessage) error { - return b.marshalAndProduce(VoteWeightedMessage, vwm) -} diff --git a/delivery/broker/withdraw_validator_commission_message.go b/delivery/broker/withdraw_validator_commission_message.go deleted file mode 100644 index 6f88c42..0000000 --- a/delivery/broker/withdraw_validator_commission_message.go +++ /dev/null @@ -1,15 +0,0 @@ -package broker - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (b *Broker) PublishWithdrawValidatorCommissionMessage( - _ context.Context, - msg model.WithdrawValidatorCommissionMessage, -) error { - - return b.marshalAndProduce(WithdrawValidatorCommissionMessage, msg) -} diff --git a/delivery/server/scraper.go b/delivery/server/scraper.go index 0779dcb..e88d2b9 100644 --- a/delivery/server/scraper.go +++ b/delivery/server/scraper.go @@ -7,7 +7,7 @@ import ( "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promauto" - "github.com/bro-n-bro/spacebox-crawler/adapter/storage/model" + "github.com/bro-n-bro/spacebox-crawler/v2/adapter/storage/model" ) const ( diff --git a/delivery/server/server.go b/delivery/server/server.go index 03c55b7..e59bae5 100644 --- a/delivery/server/server.go +++ b/delivery/server/server.go @@ -10,7 +10,7 @@ import ( "github.com/prometheus/client_golang/prometheus/promhttp" "github.com/rs/zerolog" - "github.com/bro-n-bro/spacebox-crawler/adapter/storage" + "github.com/bro-n-bro/spacebox-crawler/v2/adapter/storage" ) type Server struct { diff --git a/go.mod b/go.mod index bd15181..1000ace 100644 --- a/go.mod +++ b/go.mod @@ -1,77 +1,60 @@ -module github.com/bro-n-bro/spacebox-crawler +module github.com/bro-n-bro/spacebox-crawler/v2 -go 1.21.4 - -toolchain go1.21.6 +go 1.22.4 replace ( - github.com/cosmos/admin-module => github.com/neutron-org/admin-module v1.0.0 - - github.com/cosmos/cosmos-sdk => github.com/cosmos/cosmos-sdk v0.47.7-0.20240131111736-17d5f73db4ab - - github.com/cosmos/gaia/v11 => github.com/cosmos/gaia/v11 v11.0.0-20230724152830-861ba391c3b4 - - github.com/cosmos/iavl => github.com/cosmos/iavl v0.20.0 + github.com/cosmos/cosmos-sdk => github.com/cosmos/cosmos-sdk v0.47.15-ics-lsm - // Fix upstream GHSA-h395-qcrw-5vmq vulnerability. - // TODO Remove it: https://github.com/cosmos/cosmos-sdk/issues/10409 - github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 + github.com/cosmos/interchain-security/v4 => github.com/cosmos/interchain-security/v4 v4.2.0-lsm golang.org/x/exp => golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb ) require ( github.com/CosmWasm/wasmd v0.45.0 - github.com/bro-n-bro/spacebox v1.2.0 github.com/caarlos0/env/v6 v6.10.1 - github.com/cometbft/cometbft v0.37.4 + github.com/cometbft/cometbft v0.37.6 github.com/confluentinc/confluent-kafka-go/v2 v2.3.0 - github.com/cosmos/admin-module v0.0.0-20220204080909-475a98e03f31 - github.com/cosmos/cosmos-sdk v0.47.7 + github.com/cosmos/cosmos-sdk v0.47.11 + github.com/cosmos/gaia/v17 v17.2.0 github.com/cosmos/gogoproto v1.4.10 - github.com/cosmos/ibc-go/v7 v7.3.1 - github.com/cosmos/interchain-security/v4 v4.0.0 - github.com/cybercongress/go-cyber v0.3.2 + github.com/cosmos/ibc-go/v7 v7.4.0 + github.com/cosmos/interchain-security/v4 v4.2.0 github.com/globocom/mongo-go-prometheus v0.1.1 + github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.0 github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.1 - github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/hashicorp/golang-lru/v2 v2.0.1 github.com/joho/godotenv v1.4.0 github.com/json-iterator/go v1.1.12 - github.com/neutron-org/neutron/v2 v2.0.2 github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.16.0 - github.com/rs/zerolog v1.31.0 - github.com/skip-mev/block-sdk v1.4.0 - github.com/stretchr/testify v1.8.4 + github.com/rs/zerolog v1.32.0 go.mongodb.org/mongo-driver v1.12.1 - golang.org/x/crypto v0.18.0 - golang.org/x/exp v0.0.0-20230905200255-921286631fa9 + golang.org/x/crypto v0.21.0 golang.org/x/sync v0.6.0 - golang.org/x/time v0.5.0 - google.golang.org/genproto/googleapis/api v0.0.0-20231212172506-995d672761c0 - google.golang.org/grpc v1.60.1 + google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de + google.golang.org/grpc v1.63.2 gopkg.in/yaml.v3 v3.0.1 ) require ( - cloud.google.com/go v0.111.0 // indirect - cloud.google.com/go/compute v1.23.3 // indirect + cloud.google.com/go v0.112.0 // indirect + cloud.google.com/go/compute v1.24.0 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v1.1.5 // indirect - cloud.google.com/go/storage v1.35.1 // indirect + cloud.google.com/go/iam v1.1.6 // indirect + cloud.google.com/go/storage v1.36.0 // indirect cosmossdk.io/api v0.3.1 // indirect cosmossdk.io/core v0.6.1-0.20230309163709-87da587416ba // indirect cosmossdk.io/depinject v1.0.0-alpha.4 // indirect cosmossdk.io/errors v1.0.1 // indirect - cosmossdk.io/log v1.3.0 // indirect - cosmossdk.io/math v1.2.0 // indirect + cosmossdk.io/log v1.3.1 // indirect + cosmossdk.io/math v1.3.0 // indirect cosmossdk.io/tools/rosetta v0.2.1 // indirect filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.2 // indirect github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect github.com/CosmWasm/wasmvm v1.5.1 // indirect + github.com/DataDog/zstd v1.5.2 // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/aws/aws-sdk-go v1.44.224 // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -80,21 +63,22 @@ require ( github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.0.2 // indirect github.com/cenkalti/backoff/v4 v4.1.3 // indirect - github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/chzyer/readline v1.5.1 // indirect github.com/cockroachdb/apd/v2 v2.0.2 // indirect - github.com/cockroachdb/errors v1.10.0 // indirect + github.com/cockroachdb/errors v1.11.1 // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect + github.com/cockroachdb/pebble v1.1.0 // indirect github.com/cockroachdb/redact v1.1.5 // indirect + github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/coinbase/rosetta-sdk-go/types v1.0.0 // indirect - github.com/cometbft/cometbft-db v0.9.1 // indirect + github.com/cometbft/cometbft-db v0.12.0 // indirect github.com/confio/ics23/go v0.9.0 // indirect github.com/cosmos/btcutil v1.0.5 // indirect - github.com/cosmos/cosmos-proto v1.0.0-beta.3 // indirect + github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect github.com/cosmos/go-bip39 v1.0.0 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect - github.com/cosmos/iavl v0.21.0-beta.1 // indirect + github.com/cosmos/iavl v0.20.1 // indirect github.com/cosmos/ics23/go v0.10.0 // indirect github.com/cosmos/ledger-cosmos-go v0.13.0 // indirect github.com/cosmos/rosetta-sdk-go v0.10.0 // indirect @@ -103,33 +87,35 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect - github.com/dgraph-io/badger/v2 v2.2007.4 // indirect + github.com/dgraph-io/badger/v4 v4.2.0 // indirect github.com/dgraph-io/ristretto v0.1.1 // indirect - github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/docker/distribution v2.8.2+incompatible // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/dvsekhvalnov/jose2go v1.6.0 // indirect - github.com/felixge/httpsnoop v1.0.2 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/getsentry/sentry-go v0.23.0 // indirect github.com/go-kit/kit v0.12.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect - github.com/go-logr/logr v1.2.4 // indirect + github.com/go-logr/logr v1.4.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect + github.com/gobwas/httphead v0.1.0 // indirect + github.com/gobwas/pool v0.2.1 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gogo/googleapis v1.4.1 // indirect - github.com/gogo/protobuf v1.3.3 // indirect - github.com/golang/glog v1.1.2 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/glog v1.2.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/mock v1.6.0 // indirect - github.com/golang/protobuf v1.5.3 // indirect - github.com/golang/snappy v0.0.4 // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/btree v1.1.2 // indirect + github.com/google/flatbuffers v1.12.1 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/orderedcode v0.0.1 // indirect github.com/google/s2a-go v0.1.7 // indirect - github.com/google/uuid v1.4.0 // indirect + github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/gorilla/handlers v1.5.1 // indirect @@ -141,7 +127,7 @@ require ( github.com/gtank/merlin v0.1.1 // indirect github.com/gtank/ristretto255 v0.1.2 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter v1.7.1 // indirect + github.com/hashicorp/go-getter v1.7.4 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect @@ -151,7 +137,6 @@ require ( github.com/huandu/skiplist v1.2.0 // indirect github.com/improbable-eng/grpc-web v0.15.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/ipfs/go-cid v0.0.7 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.17.0 // indirect @@ -159,29 +144,24 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect - github.com/linxGnu/grocksdb v1.8.6 // indirect + github.com/linxGnu/grocksdb v1.8.14 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/manifoldco/promptui v0.9.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b // indirect - github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1 // indirect github.com/minio/highwayhash v1.0.2 // indirect - github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/moby/patternmatcher v0.6.0 // indirect + github.com/moby/sys/sequential v0.5.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect - github.com/mr-tron/base58 v1.1.3 // indirect github.com/mtibben/percent v0.2.1 // indirect - github.com/multiformats/go-base32 v0.0.3 // indirect - github.com/multiformats/go-base36 v0.1.0 // indirect - github.com/multiformats/go-multibase v0.0.3 // indirect - github.com/multiformats/go-multihash v0.0.13 // indirect - github.com/multiformats/go-varint v0.0.5 // indirect + github.com/onsi/gomega v1.27.1 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/pelletier/go-toml/v2 v2.1.0 // indirect github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761 // indirect @@ -196,17 +176,17 @@ require ( github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect + github.com/sirupsen/logrus v1.9.3 // indirect github.com/sourcegraph/conc v0.3.0 // indirect - github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/spf13/afero v1.11.0 // indirect github.com/spf13/cast v1.6.0 // indirect github.com/spf13/cobra v1.8.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.18.2 // indirect + github.com/stretchr/testify v1.9.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/tendermint/go-amino v0.16.0 // indirect - github.com/tendermint/tendermint v0.34.19 // indirect github.com/tidwall/btree v1.6.0 // indirect github.com/ulikunitz/xz v0.5.11 // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect @@ -215,25 +195,30 @@ require ( github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect github.com/zondax/hid v0.9.2 // indirect github.com/zondax/ledger-go v0.14.3 // indirect - go.etcd.io/bbolt v1.3.8 // indirect + go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/otel v1.19.0 // indirect - go.opentelemetry.io/otel/metric v1.19.0 // indirect - go.opentelemetry.io/otel/trace v1.19.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 // indirect + go.opentelemetry.io/otel v1.22.0 // indirect + go.opentelemetry.io/otel/metric v1.22.0 // indirect + go.opentelemetry.io/otel/trace v1.22.0 // indirect go.uber.org/multierr v1.10.0 // indirect - golang.org/x/net v0.20.0 // indirect - golang.org/x/oauth2 v0.15.0 // indirect - golang.org/x/sys v0.16.0 // indirect - golang.org/x/term v0.16.0 // indirect + golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect + golang.org/x/net v0.23.0 // indirect + golang.org/x/oauth2 v0.17.0 // indirect + golang.org/x/sys v0.18.0 // indirect + golang.org/x/term v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect - google.golang.org/api v0.153.0 // indirect + golang.org/x/time v0.5.0 // indirect + golang.org/x/tools v0.17.0 // indirect + google.golang.org/api v0.162.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240108191215-35c7eff3a6b1 // indirect - google.golang.org/protobuf v1.32.0 // indirect + google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de // indirect + google.golang.org/protobuf v1.33.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect nhooyr.io/websocket v1.8.6 // indirect pgregory.net/rapid v1.1.0 // indirect - sigs.k8s.io/yaml v1.3.0 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect ) diff --git a/go.sum b/go.sum index 8aaed77..a28ae57 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,3 @@ -bazil.org/fuse v0.0.0-20200407214033-5883e5a4b512/go.mod h1:FbcW6z/2VytnFDhZfumh8Ss8zxHE6qpMP5sHTRe0EaM= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -31,8 +30,8 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9 cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.111.0 h1:YHLKNupSD1KqjDbQ3+LVdQ81h/UJbJyZG203cEfnQgM= -cloud.google.com/go v0.111.0/go.mod h1:0mibmpKP1TyOOFYQY5izo0LnT+ecvOQ0Sg3OdmMiNRU= +cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM= +cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= @@ -69,8 +68,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk= -cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= +cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= +cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= @@ -99,7 +98,6 @@ cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1 cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= -cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= @@ -111,8 +109,8 @@ cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y97 cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI= -cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= +cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= +cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= @@ -173,8 +171,8 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.35.1 h1:B59ahL//eDfx2IIKFBeT5Atm9wnNmj3+8xG/W4WB//w= -cloud.google.com/go/storage v1.35.1/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= +cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8= +cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= @@ -194,10 +192,10 @@ cosmossdk.io/depinject v1.0.0-alpha.4 h1:PLNp8ZYAMPTUKyG9IK2hsbciDWqna2z1Wsl98ok cosmossdk.io/depinject v1.0.0-alpha.4/go.mod h1:HeDk7IkR5ckZ3lMGs/o91AVUc7E596vMaOmslGFM3yU= cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= -cosmossdk.io/log v1.3.0 h1:L0Z0XstClo2kOU4h3V1iDoE5Ji64sg5HLOogzGg67Oo= -cosmossdk.io/log v1.3.0/go.mod h1:HIDyvWLqZe2ovlWabsDN4aPMpY/nUEquAhgfTf2ZzB8= -cosmossdk.io/math v1.2.0 h1:8gudhTkkD3NxOP2YyyJIYYmt6dQ55ZfJkDOaxXpy7Ig= -cosmossdk.io/math v1.2.0/go.mod h1:l2Gnda87F0su8a/7FEKJfFdJrM0JZRXQaohlgJeyQh0= +cosmossdk.io/log v1.3.1 h1:UZx8nWIkfbbNEWusZqzAx3ZGvu54TZacWib3EzUYmGI= +cosmossdk.io/log v1.3.1/go.mod h1:2/dIomt8mKdk6vl3OWJcPk2be3pGOS8OQaLUM/3/tCM= +cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= +cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= cosmossdk.io/tools/rosetta v0.2.1 h1:ddOMatOH+pbxWbrGJKRAawdBkPYLfKXutK9IETnjYxw= cosmossdk.io/tools/rosetta v0.2.1/go.mod h1:Pqdc1FdvkNV3LcNIkYWt2RQY6IP1ge6YWZk8MhhO9Hw= filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek= @@ -206,46 +204,31 @@ github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMb github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= github.com/99designs/keyring v1.2.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0= github.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk= -github.com/Azure/azure-sdk-for-go/sdk/azcore v0.19.0/go.mod h1:h6H6c8enJmmocHUbLiiGY6sx7f9i+X3m1CHdd5c6Rdw= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.11.0/go.mod h1:HcM1YX14R7CJcghJGOYCgdezslRSVzqwLf/q+4Y2r/0= -github.com/Azure/azure-sdk-for-go/sdk/internal v0.7.0/go.mod h1:yqy467j36fJxcRV2TzfVZ1pCb5vxm4BtZPUdYWe/Xo8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= github.com/CosmWasm/wasmd v0.45.0 h1:9zBqrturKJwC2kVsfHvbrA++EN0PS7UTXCffCGbg6JI= github.com/CosmWasm/wasmd v0.45.0/go.mod h1:RnSAiqbNIZu4QhO+0pd7qGZgnYAMBPGmXpzTADag944= github.com/CosmWasm/wasmvm v1.5.1 h1:2MHN9uFyHP6pxfvpBJ0JW6ujvAIBk9kQk283zyri0Ro= github.com/CosmWasm/wasmvm v1.5.1/go.mod h1:fXB+m2gyh4v9839zlIXdMZGeLAxqUdYdFQqYsTha2hc= -github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= -github.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= -github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= +github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= +github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= -github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= -github.com/Microsoft/hcsshim v0.9.4 h1:mnUj0ivWy6UzbB1uLFqKR6F+ZyiDc7j4iGgHTpO+5+I= -github.com/Microsoft/hcsshim v0.9.4/go.mod h1:7pLA8lDk46WKDWlVsENo92gC0XFa8rbKfyFRBqxEbCc= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= -github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/Workiva/go-datastructures v1.0.53/go.mod h1:1yZL+zfsztete+ePzZz/Zb1/t5BnDuE2Ya2MMGhzP6A= -github.com/adlio/schema v1.3.0/go.mod h1:51QzxkpeFs6lRY11kPye26IaFPOV+HqEj01t5aXXKfs= github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= github.com/adlio/schema v1.3.3/go.mod h1:1EsRssiv9/Ce2CMzq5DoL7RiMshhuigQxrR4DMV9fHg= -github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= -github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= @@ -255,25 +238,17 @@ github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kd github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.3.9/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= -github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.40.45/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.44.224 h1:09CiaaF35nRmxrzWZ2uRq5v6Ghg/d2RiPjZnSgtt+RQ= github.com/aws/aws-sdk-go v1.44.224/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnOQKwDc7H1KwXTz+h61oUSHyhV0b3o= -github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -284,48 +259,27 @@ github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 h1:41iFGWnSlI2gVpmOtVTJZNodLdLQLn/KsJqFvXwnd/s= github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= -github.com/bro-n-bro/spacebox v1.2.0 h1:7fbuq1KzXT65EpPeBi7xaviu1Cy3xmJZbAPxADpnx9I= -github.com/bro-n-bro/spacebox v1.2.0/go.mod h1:HtLDKfstS5gaocXKym0e1LLygmxLFHgn4UxBbDzTyLg= -github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= -github.com/btcsuite/btcd v0.22.0-beta h1:LTDpDKUM5EeOFBPM8IXpinEcmZ6FWfNZbE3lfrfdnWo= -github.com/btcsuite/btcd v0.22.0-beta/go.mod h1:9n5ntfhhHQBIhUvlhDvD3Qg6fRUj4jkN0VB8L8svzOA= github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= github.com/btcsuite/btcd/btcutil v1.1.2 h1:XLMbX8JQEiwMcYft2EGi8zPUkoa0abKIU6/BJSRsjzQ= github.com/btcsuite/btcd/btcutil v1.1.2/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.2 h1:KdUfX2zKommPRa+PD0sWZUyXe9w277ABlgELO7H04IM= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.2/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= -github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= -github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o= -github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= -github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= -github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= -github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= -github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= -github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= -github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA= github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8= github.com/caarlos0/env/v6 v6.10.1 h1:t1mPSxNpei6M5yAeu1qtRdPAK29Nbcf/n3G7x+b3/II= github.com/caarlos0/env/v6 v6.10.1/go.mod h1:hvp/ryKXKipEkcuYjs9mI4bBCg+UI0Yhgm5Zu0ddvwc= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/casbin/casbin/v2 v2.37.0/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM= @@ -336,10 +290,8 @@ github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObk github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04= github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= -github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= -github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= @@ -351,54 +303,50 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa h1:jQCWAUqqlij9Pgj2i/PB79y4KOPYVyFYdROxgaCwdTQ= +github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa/go.mod h1:x/1Gn8zydmfq8dk6e9PdstVsDgu9RuyIIJqAaF//0IM= github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/cockroachdb/errors v1.10.0 h1:lfxS8zZz1+OjtV4MtNWgboi/W5tyLEB6VQZBXN+0VUU= -github.com/cockroachdb/errors v1.10.0/go.mod h1:lknhIsEVQ9Ss/qKDBQS/UqFSvPQjOwNq2qyKAxtHRqE= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= +github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= +github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/pebble v1.1.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4= +github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= -github.com/cometbft/cometbft v0.37.4 h1:xyvvEqlyfK8MgNIIKVJaMsuIp03wxOcFmVkT26+Ikpg= -github.com/cometbft/cometbft v0.37.4/go.mod h1:Cmg5Hp4sNpapm7j+x0xRyt2g0juQfmB752ous+pA0G8= -github.com/cometbft/cometbft-db v0.9.1 h1:MIhVX5ja5bXNHF8EYrThkG9F7r9kSfv8BX4LWaxWJ4M= -github.com/cometbft/cometbft-db v0.9.1/go.mod h1:iliyWaoV0mRwBJoizElCwwRA9Tf7jZJOURcRZF9m60U= +github.com/cometbft/cometbft v0.37.6 h1:2BSD0lGPbcIyRd99Pf1zH0Sa8o0pbfqVWEDbZ4Ec2Uc= +github.com/cometbft/cometbft v0.37.6/go.mod h1:5FRkFil9uagHZogIX9x8z51c3GIPpQmdIN8Mq46HfzY= +github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= +github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4= github.com/confio/ics23/go v0.9.0/go.mod h1:4LPZ2NYqnYIVRklaozjNR1FScgDJ2s5Xrp+e/mYVRak= github.com/confluentinc/confluent-kafka-go/v2 v2.3.0 h1:icCHutJouWlQREayFwCc7lxDAhws08td+W3/gdqgZts= github.com/confluentinc/confluent-kafka-go/v2 v2.3.0/go.mod h1:/VTy8iEpe6mD9pkCH5BhijlUl8ulUXymKv1Qig5Rgb8= -github.com/containerd/cgroups v1.0.4 h1:jN/mbWBEaz+T1pi5OFtnkQ+8qnmEbAr1Oo1FRm5B0dA= -github.com/containerd/cgroups v1.0.4/go.mod h1:nLNQtsF7Sl2HxNebu77i1R0oDlhiTG+kO4JTrUzo6IA= -github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= github.com/containerd/containerd v1.6.8 h1:h4dOFDwzHmqFEP754PgfgTeVXFnLiRc6kiqC7tplDJs= github.com/containerd/containerd v1.6.8/go.mod h1:By6p5KqPK0/7/CgO/A6t/Gz+CUYUu2zf1hUaaymVXB0= -github.com/containerd/continuity v0.2.1/go.mod h1:wCYX+dRqZdImhGucXOqTQn05AhX6EUDaGEMUzTFFpLg= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= -github.com/cosmos/cosmos-proto v1.0.0-beta.3 h1:VitvZ1lPORTVxkmF2fAp3IiA61xVwArQYKXTdEcpW6o= -github.com/cosmos/cosmos-proto v1.0.0-beta.3/go.mod h1:t8IASdLaAq+bbHbjq4p960BvcTqtwuAxid3b/2rOD6I= -github.com/cosmos/cosmos-sdk v0.47.7-0.20240131111736-17d5f73db4ab h1:RayaSUazD63ZBcvw7DQ3RZ247ao7jwp6SWkiinUqnhQ= -github.com/cosmos/cosmos-sdk v0.47.7-0.20240131111736-17d5f73db4ab/go.mod h1:Rx0pFb7vaFKsgRjFpBzUB+1HT4sQm11MHADdkpJlvuc= -github.com/cosmos/gaia/v11 v11.0.0-20230724152830-861ba391c3b4 h1:mfMLLg6wbQfZCf0IkdvEWiC3AVXkNgX0vaDZFtdYLs0= -github.com/cosmos/gaia/v11 v11.0.0-20230724152830-861ba391c3b4/go.mod h1:6zse9gY32FcZtX9/GYqXPGxneRN7+qpPCi/doXzgK5E= +github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= +github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= +github.com/cosmos/cosmos-sdk v0.47.15-ics-lsm h1:OvJXkwmAyhG+K+WkQSUNeQls4QnSbnPsyh+Mg0F+bPc= +github.com/cosmos/cosmos-sdk v0.47.15-ics-lsm/go.mod h1:uzvMwHXmuRDSOaF8ec9HickjLHJcItWBREdkaDHcPiE= +github.com/cosmos/gaia/v17 v17.2.0 h1:en+7WKUrk23xtFDzD7lTUIKYseBbyxj5rKWIJPv/wlc= +github.com/cosmos/gaia/v17 v17.2.0/go.mod h1:V1t2viM7J0wBDqAB4PqLVpdhsk9WEsMah6PtOjSnPsg= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= @@ -407,37 +355,26 @@ github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= github.com/cosmos/gogoproto v1.4.10 h1:QH/yT8X+c0F4ZDacDv3z+xE3WU1P1Z3wQoLMBRJoKuI= github.com/cosmos/gogoproto v1.4.10/go.mod h1:3aAZzeRWpAwr+SS/LLkICX2/kDFyaYVzckBDzygIxek= -github.com/cosmos/iavl v0.20.0 h1:fTVznVlepH0KK8NyKq8w+U7c2L6jofa27aFX6YGlm38= -github.com/cosmos/iavl v0.20.0/go.mod h1:WO7FyvaZJoH65+HFOsDir7xU9FWk2w9cHXNW1XHcl7A= -github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7 v7.1.2 h1:6zjj+yIpMbCTRI2eJ2fXuflElENs3mrUSLH/TSWL8fk= -github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7 v7.1.2/go.mod h1:UvDmcGIWJPIytq+Q78/ff5NTOsuX/7IrNgEugTW5i0s= -github.com/cosmos/ibc-go/v7 v7.3.1 h1:bil1IjnHdyWDASFYKfwdRiNtFP6WK3osW7QFEAgU4I8= -github.com/cosmos/ibc-go/v7 v7.3.1/go.mod h1:wvx4pPBofe5ZdMNV3OFRxSI4auEP5Qfqf8JXLLNV04g= +github.com/cosmos/iavl v0.20.1 h1:rM1kqeG3/HBT85vsZdoSNsehciqUQPWrR4BYmqE2+zg= +github.com/cosmos/iavl v0.20.1/go.mod h1:WO7FyvaZJoH65+HFOsDir7xU9FWk2w9cHXNW1XHcl7A= +github.com/cosmos/ibc-go/v7 v7.4.0 h1:8FqYMptvksgMvlbN4UW9jFxTXzsPyfAzEZurujXac8M= +github.com/cosmos/ibc-go/v7 v7.4.0/go.mod h1:L/KaEhzV5TGUCTfGysVgMBQtl5Dm7hHitfpk+GIeoAo= github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= github.com/cosmos/ics23/go v0.10.0/go.mod h1:ZfJSmng/TBNTBkFemHHHj5YY7VAU/MBU980F4VU1NG0= -github.com/cosmos/interchain-security/v3 v3.1.0 h1:EKDJCIKIDLG45tvKwfoANrRPgqvqfUt/f1TNKx3b7Uo= -github.com/cosmos/interchain-security/v3 v3.1.0/go.mod h1:2fILBgypEZcwR3BSzKDw+EsYtMKv9Z6cYXfouh4xTYU= -github.com/cosmos/interchain-security/v4 v4.0.0 h1:6olP/UIrvckLgDpzJLAqPjmzo3+AoHjMM1TRrcrpME0= -github.com/cosmos/interchain-security/v4 v4.0.0/go.mod h1:h86YbhHmSDHVMDsDipAHi8zugzyTUwZ6EuSCOzp9shI= +github.com/cosmos/interchain-security/v4 v4.2.0-lsm h1:/ET7ibwJ0tWf5SVRDwSVJ0G53b3i89BsOiFaCguUCDE= +github.com/cosmos/interchain-security/v4 v4.2.0-lsm/go.mod h1:xwuWSAibUdRrUK6Lr2r2K5Bf2tHZNXJkeVoZhQhH6s0= github.com/cosmos/ledger-cosmos-go v0.13.0 h1:ex0CvCxToSR7j5WjrghPu2Bu9sSXKikjnVvUryNnx4s= github.com/cosmos/ledger-cosmos-go v0.13.0/go.mod h1:ZcqYgnfNJ6lAXe4HPtWgarNEY+B74i+2/8MhZw4ziiI= github.com/cosmos/rosetta-sdk-go v0.10.0 h1:E5RhTruuoA7KTIXUcMicL76cffyeoyvNybzUGSKFTcM= github.com/cosmos/rosetta-sdk-go v0.10.0/go.mod h1:SImAZkb96YbwvoRkzSMQB6noNJXFgWl/ENIznEoYQI4= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creachadair/taskgroup v0.4.2 h1:jsBLdAJE42asreGss2xZGZ8fJra7WtwnHWeJFxv2Li8= github.com/creachadair/taskgroup v0.4.2/go.mod h1:qiXUOSrbwAY3u0JPGTzObbE3yf9hcXHDKBZ2ZjpCbgM= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cybercongress/go-cyber v0.3.2 h1:ixSZNv3S3BkH3JGajLzjTcrSSY7pzmDLbfpA/ewoZs0= -github.com/cybercongress/go-cyber v0.3.2/go.mod h1:JuK2uI3S+ksVk6RTtaTHbJHjaf+ozFED8tXXU5ynn6I= -github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= github.com/danieljoos/wincred v1.2.0 h1:ozqKHaLK0W/ii4KVbbvluM91W2H3Sh0BncbUNPS7jLE= github.com/danieljoos/wincred v1.2.0/go.mod h1:FzQLLMKBFdvu+osBrnFODiv32YGwCfx0SkRa/eYHgec= -github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= @@ -446,29 +383,22 @@ github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5il github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= -github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= -github.com/denisenkom/go-mssqldb v0.12.0/go.mod h1:iiK0YP1ZeepvmBQk/QpLEhhTNJgfzrpArPY/aFvc9yU= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= -github.com/dgraph-io/badger/v2 v2.2007.2/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= -github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= -github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= -github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= +github.com/dgraph-io/badger/v4 v4.2.0 h1:kJrlajbXXL9DFTNuhhu9yCx7JJa4qpYWxtE8BzuWsEs= +github.com/dgraph-io/badger/v4 v4.2.0/go.mod h1:qfCqhPoWDFJRx1gp5QwwyGo8xk1lbHUxvK9nK0OGAak= github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v20.10.19+incompatible h1:lzEmjivyNHFHMNAFLXORMBXyGIhw/UP4DvJwvyKYq64= -github.com/docker/docker v20.10.19+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v24.0.9+incompatible h1:HPGzNmwfLZWdxHqK9/II92pyi1EpYKsAqcl4G0Of9v0= +github.com/docker/docker v24.0.9+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= @@ -490,32 +420,22 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws= -github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= -github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= -github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= +github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A= +github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= -github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o= -github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goblin v0.0.0-20210519012713-85d372ac71e2/go.mod h1:VzmDKDJVZI3aJmnRI9VjAn9nJ8qPPsN1fqzr9dqInIo= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= @@ -537,18 +457,16 @@ github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgO github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= -github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= @@ -562,10 +480,8 @@ github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GO github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= github.com/go-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/go-zookeeper/zk v1.0.2/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY= github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg= @@ -590,12 +506,15 @@ github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWe github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= -github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= -github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= +github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU= +github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= +github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og= +github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/gobwas/ws v1.1.0 h1:7RFti/xnNkMJnrK7D1yQ/iCIB5OrrY/54/H930kIbHA= +github.com/gobwas/ws v1.1.0/go.mod h1:nzvNcVha5eUziGrbxFCo6qFIojQHjJV5cLYIbezhfL0= github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk= github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= @@ -605,15 +524,16 @@ github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFG github.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= -github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= -github.com/golang-sql/sqlexp v0.0.0-20170517235910-f1bb20e5a188/go.mod h1:vXjM/+wXQnTPR4KqTKDgJukSZ6amVRtWMPEjE6sQoK8= -github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo= -github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= +github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= +github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -647,17 +567,20 @@ github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= +github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -709,8 +632,8 @@ github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8 github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= -github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= @@ -737,21 +660,18 @@ github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2z github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= +github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.0 h1:f4tggROQKKcnh4eItay6z/HbHLqghBxS8g7pyMhmDio= +github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.0/go.mod h1:hKAkSgNkL0FII46ZkJcpVEAai4KV+swlIWCKfekd1pA= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.1 h1:HcUWd006luQPljE73d5sk+/VgYPGUReEVz2y1/qylwY= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.1/go.mod h1:w9Y7gY31krpLmrVU5ZPG9H7l9fZuRu5/3R3S3FMtVQ4= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= @@ -763,29 +683,21 @@ github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/b github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= -github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= -github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.7.1 h1:SWiSWN/42qdpR0MdhaOc/bLR48PLuP1ZQtYLRlM69uY= -github.com/hashicorp/go-getter v1.7.1/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= -github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v0.16.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v1.0.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-getter v1.7.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0= +github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= @@ -800,23 +712,14 @@ github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09 github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/golang-lru/v2 v2.0.1 h1:5pv5N1lT1fjLg2VQ5KWc7kmucp2x/kvFOnxuVTqZ6x4= -github.com/hashicorp/golang-lru/v2 v2.0.1/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= -github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= -github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hdevalence/ed25519consensus v0.1.0 h1:jtBwzzcHuTmFrQN6xQZn6CQEO/V9f7HsjsjeEZ6auqU= github.com/hdevalence/ed25519consensus v0.1.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -825,10 +728,6 @@ github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0Jr github.com/huandu/skiplist v1.2.0 h1:gox56QD77HzSC0w+Ws3MH3iie755GBJU1OER3h5VsYw= github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/hudl/fargo v1.4.0/go.mod h1:9Ai6uvFy5fQNq6VPKtg+Ceq1+eTY4nKUlR2JElEOcDo= -github.com/iancoleman/orderedmap v0.2.0 h1:sq1N/TFpYH++aViPcaKjys3bDClUEU7s5B+z6jq8pNA= -github.com/iancoleman/orderedmap v0.2.0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= -github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= @@ -837,11 +736,6 @@ github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANyt github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/influxdata/influxdb1-client v0.0.0-20200827194710-b269163b24ab/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/ipfs/go-cid v0.0.7 h1:ysQJVJA3fNDF1qigJbsSQOdjhVLsOEoPdh0+R97k3jY= -github.com/ipfs/go-cid v0.0.7/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I= -github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= @@ -856,7 +750,6 @@ github.com/joho/godotenv v1.4.0 h1:3l4+N6zfMWnkbPEXKng2o2/MR5mSwTrBih4ZEkkz1lg= github.com/joho/godotenv v1.4.0/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= @@ -870,17 +763,15 @@ github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/X github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/klauspost/compress v1.17.0 h1:Rnbp4K9EjcDuVuHtd0dgA4qNuv9yKDYKK1ulpJwgrqM= @@ -888,11 +779,8 @@ github.com/klauspost/compress v1.17.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQs github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -902,20 +790,15 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= -github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/linxGnu/grocksdb v1.8.6 h1:O7I6SIGPrypf3f/gmrrLUBQDKfO8uOoYdWf4gLS06tc= -github.com/linxGnu/grocksdb v1.8.6/go.mod h1:xZCIb5Muw+nhbDK4Y5UJuOrin5MceOuiXkVUR7vp4WY= -github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w= +github.com/linxGnu/grocksdb v1.8.14 h1:HTgyYalNwBSG/1qCQUIott44wU5b2Y9Kr3z7SK5OfGQ= +github.com/linxGnu/grocksdb v1.8.14/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= @@ -923,46 +806,27 @@ github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GW github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-sqlite3 v1.14.9/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= -github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b h1:QrHweqAtyJ9EwCaGHBu1fghwxIPiopAHV06JlXrMHjk= github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b/go.mod h1:xxLb2ip6sSUts3g1irPVHyk/DGslwQsNOo9I7smJfNU= -github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1 h1:lYpkrQH5ajf0OXOcUbGjvZxxijuBwbbmlSxLiuofa+g= -github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= -github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771 h1:MHkK1uRtFbVqvAgvWxafZe54+5uBxLluGylDiKgdhwo= -github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= @@ -973,15 +837,12 @@ github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS4 github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/moby/sys/mount v0.3.3 h1:fX1SVkXFJ47XWDoeFW4Sq7PdQJnV2QIDZAqjNqgEjUs= -github.com/moby/sys/mount v0.3.3/go.mod h1:PBaEorSNTLG5t/+4EgukEQVlAvVEc6ZjTySwKdqp5K0= -github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= -github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= -github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= +github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= +github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= +github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc= +github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo= github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae h1:O4SWKdcHVCvYqyDV+9CJA1fcDN2L11Bule0iFy3YlAI= github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -991,95 +852,59 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe h1:iruDEfMl2E6fbMZ9s0scYfZQ84/6SPL6zC8ACM2oIL0= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= -github.com/mr-tron/base58 v1.1.0/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= -github.com/mr-tron/base58 v1.1.3 h1:v+sk57XuaCKGXpWtVBX8YJzO7hMGx4Aajh4TQbdEFdc= -github.com/mr-tron/base58 v1.1.3/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= -github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= -github.com/multiformats/go-base32 v0.0.3 h1:tw5+NhuwaOjJCC5Pp82QuXbrmLzWg7uxlMFp8Nq/kkI= -github.com/multiformats/go-base32 v0.0.3/go.mod h1:pLiuGC8y0QR3Ue4Zug5UzK9LjgbkL8NSQj0zQ5Nz/AA= -github.com/multiformats/go-base36 v0.1.0 h1:JR6TyF7JjGd3m6FbLU2cOxhC0Li8z8dLNGQ89tUg4F4= -github.com/multiformats/go-base36 v0.1.0/go.mod h1:kFGE83c6s80PklsHO9sRn2NCoffoRdUUOENyW/Vv6sM= -github.com/multiformats/go-multibase v0.0.3 h1:l/B6bJDQjvQ5G52jw4QGSYeOTZoAwIO77RblWplfIqk= -github.com/multiformats/go-multibase v0.0.3/go.mod h1:5+1R4eQrT3PkYZ24C3W2Ue2tPwIdYQD509ZjSb5y9Oc= -github.com/multiformats/go-multihash v0.0.13 h1:06x+mk/zj1FoMsgNejLpy6QTvJqlSt/BhLEy87zidlc= -github.com/multiformats/go-multihash v0.0.13/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= -github.com/multiformats/go-varint v0.0.5 h1:XVZwSo04Cs3j/jS0uAEPpT3JY6DzMcVLLoWOSnCxOjg= -github.com/multiformats/go-varint v0.0.5/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/jwt v1.2.2/go.mod h1:/xX356yQA6LuXI9xWW7mZNpxgF2mBmGecH+Fj34sP5Q= -github.com/nats-io/jwt/v2 v2.0.3/go.mod h1:VRP+deawSXyhNjXmxPCHskrR6Mq50BqpEI5SEcNiGlY= github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats-server/v2 v2.5.0/go.mod h1:Kj86UtrXAL6LwYRA6H4RqzkHhK0Vcv2ZnKD5WbQ1t3g= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nats.go v1.12.1/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nkeys v0.2.0/go.mod h1:XdZpAbhgyyODYqjTawOnIOI7VlbKSarI9Gfy1tqEu/s= -github.com/nats-io/nkeys v0.3.0/go.mod h1:gvUNGjVcM2IPr5rCsRsC6Wb3Hr2CQAm08dsxtV6A5y4= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/neutron-org/admin-module v1.0.0 h1:mmX5U6jz4rX+lk8SB5Bx0Lsugu9bh4PCREMnVkLQoIs= -github.com/neutron-org/admin-module v1.0.0/go.mod h1:INknneN2W3Fr9Eld7SpfLRdjyHR1muzFbbqXln1ixic= -github.com/neutron-org/neutron/v2 v2.0.2 h1:idlFIi1FYKdSK1cCG9XUlKqCKpuPisb+oNq6TVjCaX0= -github.com/neutron-org/neutron/v2 v2.0.2/go.mod h1:FmWEGzhPxQ1avbLkfCirrY02DmcGW/StxxQquobm6+0= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/onsi/gomega v1.20.0 h1:8W0cWlwFkflGPLltQvLRB7ZVD5HuP6ng320w2IS245Q= -github.com/onsi/gomega v1.20.0/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo= +github.com/onsi/gomega v1.27.1 h1:rfztXRbg6nv/5f+Raen9RcGoSecHIFgBBLQK3Wdj754= +github.com/onsi/gomega v1.27.1/go.mod h1:aHX5xOykVYzWOV4WqQy0sy8BQptgukenXpCXfadcIAw= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= -github.com/opencontainers/runc v1.0.3/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= -github.com/opencontainers/runc v1.1.5 h1:L44KXEpKmfWDcS02aeGm8QNTFXTo2D+8MYGDIJ/GDEs= -github.com/opencontainers/runc v1.1.5/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= -github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= +github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf3phss= +github.com/opencontainers/runc v1.1.12/go.mod h1:S+lQwSfncpBha7XTy/5lBwWgm5+y5Ma/O44Ekby9FK8= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.5/go.mod h1:KpXfKdgRDnnhsxw4pNIH9Md5lyFqKUa4YDFlwRYAMyE= github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA= github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= github.com/oxyno-zeta/gomock-extra-matcher v1.2.0 h1:WPEclU0y0PMwUzdDcaKZvld4aXpa3fkzjiUMQdcBEHg= @@ -1089,43 +914,34 @@ github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FI github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= -github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -github.com/performancecopilot/speed/v4 v4.0.0/go.mod h1:qxrSyuDGrTOWfV+uKRFhfxw6h/4HXRGUiZiufxo49BM= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761 h1:W04oB3d0J01W5jgYRGKsV8LCM6g9EkCvPkZcmFuy0OE= github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= -github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= -github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8= github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= @@ -1136,39 +952,29 @@ github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6T github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.11.0 h1:5EAgkfkMl659uZPbe9AS2N68a7Cc1TJbPEuGzFuRbyk= github.com/prometheus/procfs v0.11.0/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= -github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= @@ -1178,27 +984,22 @@ github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/f github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo= github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.31.0 h1:FcTR3NnLWW+NnTwwhFWiJSZr4ECLpqCm6QsEnyvbV4A= -github.com/rs/zerolog v1.31.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0= +github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sagikazarmark/crypt v0.4.0/go.mod h1:ALv2SRj7GxYV4HO9elxH9nS6M9gW+xDNxqmyJ6RfDFM= github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -1206,57 +1007,37 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/skip-mev/block-sdk v1.4.0 h1:j2wEooUDA74ed+FjCDI3I/aPArdYxKLG5asb6C+so2M= -github.com/skip-mev/block-sdk v1.4.0/go.mod h1:Yv+gQqRh41bCbWC0Bpau8DBE7UwxxPfGmNVbtVrgWAo= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/snikch/goodman v0.0.0-20171125024755-10e37e294daa/go.mod h1:oJyF+mSPHbB5mVY2iO9KV3pTt/QbIkGaO8gQ2WrDbP4= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= -github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= -github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/spf13/viper v1.10.1/go.mod h1:IGlFPqhNAPKRxohIzWpI5QEy4kuI7tcl5WvR+8qy1rU= github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v1.0.0/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= -github.com/streadway/handy v0.0.0-20200128134331-0f66f006fb2e/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -1267,36 +1048,24 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= -github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca/go.mod h1:u2MKkTVTVJWe5D1rCvame8WqhBd88EuIwODJZ1VHCPM= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= -github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= -github.com/tendermint/tendermint v0.34.19 h1:y0P1qI5wSa9IRuhKnTDA6IUcOrLi1hXJuALR+R7HFEk= -github.com/tendermint/tendermint v0.34.19/go.mod h1:R5+wgIwSxMdKQcmOaeudL0Cjkr3HDkhpcdum6VeU3R4= -github.com/tendermint/tm-db v0.6.6/go.mod h1:wP8d49A85B7/erz/r4YbKssKw6ylsO/hKtFk7E1aWZI= github.com/testcontainers/testcontainers-go v0.14.0 h1:h0D5GaYG9mhOWr2qHdEKDXpkce/VlvaYOCzTRi6UBi8= github.com/testcontainers/testcontainers-go v0.14.0/go.mod h1:hSRGJ1G8Q5Bw2gXgPulJOLlEBaYJHeBSOkQM5JLG+JQ= github.com/tidwall/btree v1.6.0 h1:LDZfKfQIBHGHWSwckhXI0RPSXzlo+KYdjK7FWSqOzzg= github.com/tidwall/btree v1.6.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -github.com/tinylib/msgp v1.1.5/go.mod h1:eQsjooMTnV42mHu917E26IogZ2930nFyBQdofk10Udg= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31/go.mod h1:onvgF043R+lC5RZ8IT9rBXDaEDnpnw/Cl+HFiw+v/7Q= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0= github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= @@ -1305,8 +1074,6 @@ github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= -github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= @@ -1316,7 +1083,6 @@ github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6 github.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8= github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -1329,19 +1095,10 @@ github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U= github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= -go.etcd.io/bbolt v1.3.8 h1:xs88BrvEv273UsB79e0hcVrlUWmS0a8upikMFhSyAtA= -go.etcd.io/bbolt v1.3.8/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= +go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 h1:qxen9oVGzDdIRP6ejyAJc760RwW4SnVDiTYTzwnXuxo= +go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5/go.mod h1:eW0HG9/oHQhvRCvb1/pIXW4cOvtDqeQK+XSi3TnwaXY= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= -go.etcd.io/etcd/client/v2 v2.305.1/go.mod h1:pMEacxZW7o8pg4CrFE7pquyCJJzZvkvdD2RibOCCCGs= -go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= go.mongodb.org/mongo-driver v1.7.1/go.mod h1:Q4oFMbo1+MSNqICAdYMlC/zSTrwCogR4R8NzkI+yfU8= go.mongodb.org/mongo-driver v1.12.1 h1:nLkghSU8fQNaK7oUmDhQFsnrtcoNy7Z6LVFKsEecqgE= go.mongodb.org/mongo-driver v1.12.1/go.mod h1:/rGBTebI3XYboVmgz+Wv3Bcbl3aD0QF9zl6kDDw18rQ= @@ -1356,69 +1113,54 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/otel v1.19.0 h1:MuS/TNf4/j4IXsZuJegVzI1cwut7Qc00344rgH7p8bs= -go.opentelemetry.io/otel v1.19.0/go.mod h1:i0QyjOq3UPoTzff0PJB2N66fb4S0+rSbSB15/oyH9fY= -go.opentelemetry.io/otel/metric v1.19.0 h1:aTzpGtV0ar9wlV4Sna9sdJyII5jTVJEvKETPiOKwvpE= -go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319EUrDVLrt7jqt8= -go.opentelemetry.io/otel/sdk v1.19.0 h1:6USY6zH+L8uMH8L3t1enZPR3WFEmSTADlqldyHtJi3o= -go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A= -go.opentelemetry.io/otel/trace v1.19.0 h1:DFVQmlVbfVeOuBRrwdtaehRrWiL1JoVs9CPIQ1Dzxpg= -go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 h1:UNQQKPfTDe1J81ViolILjTKPr9WetKW6uei2hFgJmFs= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0/go.mod h1:r9vWsPS/3AQItv3OSlEJ/E4mbrhUbbw18meOjArPtKQ= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 h1:sv9kVfal0MK0wBMCOGr+HeJm9v803BkJxGrk2au7j08= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= +go.opentelemetry.io/otel v1.22.0 h1:xS7Ku+7yTFvDfDraDIJVpw7XPyuHlB9MCiqqX5mcJ6Y= +go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= +go.opentelemetry.io/otel/metric v1.22.0 h1:lypMQnGyJYeuYPhOM/bgjbFM6WE44W1/T45er4d8Hhg= +go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY= +go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= +go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= +go.opentelemetry.io/otel/trace v1.22.0 h1:Hg6pPujv0XG9QaVbGOBVHunyuLcCC3jN7WEhPx83XD0= +go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/mock v0.2.0 h1:TaP3xedm7JaAgScZO7tlvlKrqT0p7I6OsdGB5YNSMDU= go.uber.org/mock v0.2.0/go.mod h1:J0y0rp9L3xiff1+ZBfKxlC1fz2+aO16tw0tsDOixfuM= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ= go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= -go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= -golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210915214749-c084706c2272/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= -golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc= -golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb h1:xIApU0ow1zwMa2uL1VDNeQlNVFTWMQxZUZCMDy0Q4Us= golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= -golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1438,13 +1180,11 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= -golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1459,14 +1199,12 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -1482,28 +1220,19 @@ golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211208012354-db4efeb81f4b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= @@ -1516,8 +1245,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= -golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= +golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1533,7 +1262,6 @@ golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= @@ -1544,8 +1272,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ= -golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM= +golang.org/x/oauth2 v0.17.0 h1:6m3ZPmLEFdVxKKWnKq4VqZ60gutO35zm+zrAHVmHyDQ= +golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1571,10 +1299,8 @@ golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1583,28 +1309,20 @@ golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191210023423-ac6580df4449/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1615,15 +1333,11 @@ golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1632,14 +1346,11 @@ golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1649,18 +1360,12 @@ golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210917161153-d61c044b1678/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1674,6 +1379,7 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1681,13 +1387,13 @@ golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= -golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE= -golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= +golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1706,15 +1412,13 @@ golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= -golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -1729,7 +1433,6 @@ golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1761,7 +1464,6 @@ golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201022035929-9cf592e881e9/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -1787,10 +1489,6 @@ golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNq golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= -gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= @@ -1821,7 +1519,6 @@ google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6 google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= @@ -1841,8 +1538,8 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.153.0 h1:N1AwGhielyKFaUqH07/ZSIQR3uNPcV7NVw0vj+j4iR4= -google.golang.org/api v0.153.0/go.mod h1:3qNJX5eOmhiWYc67jRA/3GsDw97UFb5ivv7Y2PrriAY= +google.golang.org/api v0.162.0 h1:Vhs54HkaEpkMBdgGdOT2P6F0csGG/vxDS0hWHJzmmps= +google.golang.org/api v0.162.0/go.mod h1:6SulDkfoBIg4NFmCuZ39XeeAgSHCPecfSUuDyYlAHs0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1875,7 +1572,6 @@ google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= @@ -1914,10 +1610,7 @@ google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEc google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210917145530-b395a37504d4/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= @@ -1963,12 +1656,12 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917 h1:nz5NESFLZbJGPFxDT/HCn+V1mZ8JGNoY4nUpmW/Y2eg= -google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917/go.mod h1:pZqR+glSb11aJ+JQcczCvgf47+duRuzNSKqE8YAQnV0= -google.golang.org/genproto/googleapis/api v0.0.0-20231212172506-995d672761c0 h1:s1w3X6gQxwrLEpxnLd/qXTVLgQE2yXwaOaoa6IlY/+o= -google.golang.org/genproto/googleapis/api v0.0.0-20231212172506-995d672761c0/go.mod h1:CAny0tYF+0/9rmDB9fahA9YLzX3+AEVl1qXbv5hhj6c= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240108191215-35c7eff3a6b1 h1:gphdwh0npgs8elJ4T6J+DQJHPVF7RsuJHCfwztUb4J4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240108191215-35c7eff3a6b1/go.mod h1:daQN87bsDqDoe316QbbvX60nMoJQa4r6Ds0ZuoAe5yA= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= +google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de h1:jFNzHPIeuzhdRwVhbZdiym9q0ory/xY3sA+v2wPg8I0= +google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:5iCWqnniDlqZHrd3neWVTOwvh/v6s3232omMecelax8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de h1:cZGRis4/ot9uVm639a+rHCUaG0JJHEsdyzSQTMX+suY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -2001,8 +1694,6 @@ google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnD google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.43.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= @@ -2012,8 +1703,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU= -google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= +google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= +google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -2030,13 +1721,12 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= -google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= @@ -2045,7 +1735,6 @@ gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qS gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= @@ -2067,7 +1756,6 @@ gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= -gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -2083,11 +1771,9 @@ nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0 pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= -sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= -sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/golangci.yml b/golangci.yml index 7c82381..0d7d045 100644 --- a/golangci.yml +++ b/golangci.yml @@ -14,7 +14,7 @@ output: # Output styling. # e.g. colored-line-number, line-number, json, tab, checkstyle, code-climate. # Default is colored-line-number. - format: colored-line-number + formats: colored-line-number # Print lines of code with issue, default is true. print-issued-lines: true # Print linter name in the end of issue text, default is true. diff --git a/internal/app/app.go b/internal/app/app.go index d816745..97bcffc 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -5,7 +5,6 @@ import ( "time" wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" - adminTypes "github.com/cosmos/admin-module/x/adminmodule/types" "github.com/cosmos/cosmos-sdk/codec" cdc "github.com/cosmos/cosmos-sdk/codec/types" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" @@ -35,58 +34,40 @@ import ( "github.com/cosmos/cosmos-sdk/x/staking" "github.com/cosmos/cosmos-sdk/x/upgrade" upgradeclient "github.com/cosmos/cosmos-sdk/x/upgrade/client" + gaia "github.com/cosmos/gaia/v17/x/metaprotocols" + ibcaccounts "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts" + ibcfee "github.com/cosmos/ibc-go/v7/modules/apps/29-fee" ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - ibc "github.com/cosmos/ibc-go/v7/modules/core" + ibccore "github.com/cosmos/ibc-go/v7/modules/core" ibclightclient "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint" interchainprovider "github.com/cosmos/interchain-security/v4/x/ccv/provider" - dmntypes "github.com/cybercongress/go-cyber/x/dmn/types" - graphtypes "github.com/cybercongress/go-cyber/x/graph/types" - gridtypes "github.com/cybercongress/go-cyber/x/grid/types" - resourcestypes "github.com/cybercongress/go-cyber/x/resources/types" - contractmanagertypes "github.com/neutron-org/neutron/v2/x/contractmanager/types" - neutroncrontypes "github.com/neutron-org/neutron/v2/x/cron/types" - neutrondextypes "github.com/neutron-org/neutron/v2/x/dex/types" - neutronfeeburnertypes "github.com/neutron-org/neutron/v2/x/feeburner/types" - neutronfeerefundertypes "github.com/neutron-org/neutron/v2/x/feerefunder/types" - neutroninterchainqueriestypes "github.com/neutron-org/neutron/v2/x/interchainqueries/types" - neutroninterchaintxstypes "github.com/neutron-org/neutron/v2/x/interchaintxs/types" - neutrontokenfactorytypes "github.com/neutron-org/neutron/v2/x/tokenfactory/types" - neutrontransfertypes "github.com/neutron-org/neutron/v2/x/transfer/types" "github.com/pkg/errors" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promauto" "github.com/rs/zerolog" - blocksdktypes "github.com/skip-mev/block-sdk/x/auction/types" - - "github.com/bro-n-bro/spacebox-crawler/adapter/storage" - "github.com/bro-n-bro/spacebox-crawler/adapter/storage/model" - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - rpcClient "github.com/bro-n-bro/spacebox-crawler/client/rpc" - "github.com/bro-n-bro/spacebox-crawler/delivery/broker" - "github.com/bro-n-bro/spacebox-crawler/delivery/server" - "github.com/bro-n-bro/spacebox-crawler/internal/rep" - "github.com/bro-n-bro/spacebox-crawler/modules" - "github.com/bro-n-bro/spacebox-crawler/modules/core" - "github.com/bro-n-bro/spacebox-crawler/pkg/cache" - healthchecker "github.com/bro-n-bro/spacebox-crawler/pkg/health_checker" - tb "github.com/bro-n-bro/spacebox-crawler/pkg/mapper/to_broker" - ts "github.com/bro-n-bro/spacebox-crawler/pkg/mapper/to_storage" - "github.com/bro-n-bro/spacebox-crawler/pkg/worker" - _ "github.com/bro-n-bro/spacebox-crawler/types/bostrom" - liquiditytypes "github.com/bro-n-bro/spacebox-crawler/types/liquidity" + + "github.com/bro-n-bro/spacebox-crawler/v2/adapter/storage" + "github.com/bro-n-bro/spacebox-crawler/v2/adapter/storage/model" + grpcClient "github.com/bro-n-bro/spacebox-crawler/v2/client/grpc" + rpcClient "github.com/bro-n-bro/spacebox-crawler/v2/client/rpc" + "github.com/bro-n-bro/spacebox-crawler/v2/delivery/broker" + "github.com/bro-n-bro/spacebox-crawler/v2/delivery/server" + "github.com/bro-n-bro/spacebox-crawler/v2/internal/rep" + "github.com/bro-n-bro/spacebox-crawler/v2/modules" + rawModule "github.com/bro-n-bro/spacebox-crawler/v2/modules/raw" + healthchecker "github.com/bro-n-bro/spacebox-crawler/v2/pkg/health_checker" + ts "github.com/bro-n-bro/spacebox-crawler/v2/pkg/mapper/to_storage" + "github.com/bro-n-bro/spacebox-crawler/v2/pkg/worker" + liquiditytypes "github.com/bro-n-bro/spacebox-crawler/v2/types/liquidity" ) const ( - defaultCacheSize = 100000 - FmtCannotStart = "cannot start %q" + FmtCannotStart = "cannot start %q" ) var ( ErrStartTimeout = errors.New("start timeout") ErrShutdownTimeout = errors.New("shutdown timeout") - - lessInt64 = func(cacheVal, newVal int64) bool { return cacheVal < newVal } - greaterInt64 = func(cacheVal, newVal int64) bool { return cacheVal > newVal } ) type ( @@ -115,61 +96,7 @@ func New(cfg Config, version string, l zerolog.Logger) *App { func (a *App) Start(ctx context.Context) error { a.log.Info().Msg("starting app") - // TODO: use redis - valCache, err := cache.New[string, int64](defaultCacheSize, cache.WithCompareFunc[string, int64](lessInt64)) - if err != nil { - return err - } - - valCommissionCache, err := cache.New[string, int64](defaultCacheSize, cache.WithCompareFunc[string, int64](lessInt64)) - if err != nil { - return err - } - - valDescriptionCache, err := cache.New[string, int64](defaultCacheSize, cache.WithCompareFunc[string, int64](lessInt64)) //nolint:lll - if err != nil { - return err - } - - valInfoCache, err := cache.New[string, int64](defaultCacheSize, cache.WithCompareFunc[string, int64](lessInt64)) - if err != nil { - return err - } - - valStatusCache, err := cache.New[string, int64](defaultCacheSize, cache.WithCompareFunc[string, int64](lessInt64)) - if err != nil { - return err - } - - // collect data only from bigger height - tCache, err := cache.New[uint64, int64](defaultCacheSize, cache.WithCompareFunc[uint64, int64](lessInt64)) - if err != nil { - return err - } - - // collect data only from earlier height - aCache, err := cache.New[string, int64](defaultCacheSize, cache.WithCompareFunc[string, int64](greaterInt64)) - if err != nil { - return err - } - - // collect data only from bigger height - rCache, err := cache.New[string, int64](defaultCacheSize, cache.WithCompareFunc[string, int64](lessInt64)) - if err != nil { - return err - } - if a.cfg.MetricsEnabled { - cache.RegisterMetrics("spacebox_crawler") - - valCache.Patch(cache.WithMetrics[string, int64]("validators")) - valCommissionCache.Patch(cache.WithMetrics[string, int64]("validators_commission")) - valDescriptionCache.Patch(cache.WithMetrics[string, int64]("validators_description")) - valInfoCache.Patch(cache.WithMetrics[string, int64]("validators_info")) - valStatusCache.Patch(cache.WithMetrics[string, int64]("validators_status")) - tCache.Patch(cache.WithMetrics[uint64, int64]("tally")) - aCache.Patch(cache.WithMetrics[string, int64]("account")) - promauto.NewGauge(prometheus.GaugeOpts{ Namespace: "spacebox_crawler", Name: "version", @@ -179,24 +106,18 @@ func (a *App) Start(ctx context.Context) error { } var ( - cod, amn = MakeEncodingConfig() - sto = storage.New(a.cfg.StorageConfig, *a.log) - rpcCli = rpcClient.New(a.cfg.RPCConfig) - grpcCli = grpcClient.New(a.cfg.GRPCConfig, *a.log, sto) - tbr = tb.NewToBroker(cod, amn.LegacyAmino) - par = core.JoinMessageParsers(core.CosmosMessageAddressesParser) - - brk = broker.New(a.cfg.BrokerConfig, a.cfg.Modules, *a.log, - broker.WithValidatorCache(valCache), - broker.WithValidatorCommissionCache(valCommissionCache), - broker.WithValidatorDescriptionCache(valDescriptionCache), - broker.WithValidatorInfoCache(valInfoCache), - broker.WithValidatorStatusCache(valStatusCache), - ) + cod = MakeEncodingConfig() + sto = storage.New(a.cfg.StorageConfig, *a.log) + rpcCli = rpcClient.New(a.cfg.RPCConfig) + grpcCli = grpcClient.New(a.cfg.GRPCConfig, *a.log, sto) + + brk = broker.New(a.cfg.BrokerConfig, *a.log) + + raw = rawModule.New(brk, rpcCli) + mods = modules.NewModuleLoader().WithLogger(a.log).WithModules(raw) - mds = modules.BuildModules(a.log, a.cfg.Modules, a.cfg.DefaultDenom, grpcCli, rpcCli, brk, cod, *tbr, par, tCache, aCache, rCache) //nolint:lll tos = ts.NewToStorage() - wrk = worker.New(a.cfg.WorkerConfig, *a.log, brk, rpcCli, grpcCli, mds, sto, cod, *tbr, *tos) + wrk = worker.New(a.cfg.WorkerConfig, *a.log, brk, rpcCli, grpcCli, mods.Build(), sto, cod, *tos) srv = server.New(a.cfg.Server, sto, *a.log) hc = healthchecker.New(*a.log, checkLastBlockDiff(a.cfg.HealthcheckConfig.MaxBlockLag, sto), a.cfg.HealthcheckConfig) //nolint:lll ) @@ -280,7 +201,7 @@ func (a *App) GetStartTimeout() time.Duration { return a.cfg.StartTimeout } func (a *App) GetStopTimeout() time.Duration { return a.cfg.StopTimeout } // MakeEncodingConfig creates an EncodingConfig to properly handle and marshal all messages -func MakeEncodingConfig() (codec.Codec, *codec.AminoCodec) { +func MakeEncodingConfig() codec.Codec { var ( registry = cdc.NewInterfaceRegistry() basicManager = module.NewBasicManager( @@ -302,9 +223,12 @@ func MakeEncodingConfig() (codec.Codec, *codec.AminoCodec) { vesting.AppModuleBasic{}, nftmodule.AppModuleBasic{}, consensus.AppModuleBasic{}, - ibc.AppModuleBasic{}, + ibccore.AppModuleBasic{}, + ibcfee.AppModuleBasic{}, + ibcaccounts.AppModuleBasic{}, ibclightclient.AppModuleBasic{}, interchainprovider.AppModuleBasic{}, + gaia.AppModuleBasic{}, gov.NewAppModuleBasic( []govclient.ProposalHandler{ paramsclient.ProposalHandler, @@ -315,6 +239,8 @@ func MakeEncodingConfig() (codec.Codec, *codec.AminoCodec) { ) ) + wasmtypes.RegisterInterfaces(registry) + // basicManager.RegisterInterfaces(registry) std.RegisterInterfaces(registry) @@ -322,33 +248,7 @@ func MakeEncodingConfig() (codec.Codec, *codec.AminoCodec) { cryptocodec.RegisterInterfaces(registry) liquiditytypes.RegisterInterfaces(registry) - // bostrom - graphtypes.RegisterInterfaces(registry) - dmntypes.RegisterInterfaces(registry) - gridtypes.RegisterInterfaces(registry) - resourcestypes.RegisterInterfaces(registry) - wasmtypes.RegisterInterfaces(registry) - - // neutron - adminTypes.RegisterInterfaces(registry) - contractmanagertypes.RegisterInterfaces(registry) - neutroncrontypes.RegisterInterfaces(registry) - neutrondextypes.RegisterInterfaces(registry) - neutronfeeburnertypes.RegisterInterfaces(registry) - neutronfeerefundertypes.RegisterInterfaces(registry) - neutroninterchainqueriestypes.RegisterInterfaces(registry) - neutroninterchaintxstypes.RegisterInterfaces(registry) - neutrontokenfactorytypes.RegisterInterfaces(registry) - neutrontransfertypes.RegisterInterfaces(registry) - blocksdktypes.RegisterInterfaces(registry) - - // - amino := codec.NewAminoCodec(codec.NewLegacyAmino()) - std.RegisterLegacyAminoCodec(amino.LegacyAmino) // FIXME: not needed? - ibctransfertypes.RegisterLegacyAminoCodec(amino.LegacyAmino) - liquiditytypes.RegisterLegacyAminoCodec(amino.LegacyAmino) - - return codec.NewProtoCodec(registry), amino + return codec.NewProtoCodec(registry) } // MakeSDKConfig represents a handy implementation of SdkConfigSetup that simply setups the prefix diff --git a/internal/app/config.go b/internal/app/config.go index 32743da..48c5b80 100644 --- a/internal/app/config.go +++ b/internal/app/config.go @@ -3,13 +3,13 @@ package app import ( "time" - "github.com/bro-n-bro/spacebox-crawler/adapter/storage" - "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/client/rpc" - "github.com/bro-n-bro/spacebox-crawler/delivery/broker" - "github.com/bro-n-bro/spacebox-crawler/delivery/server" - healthchecker "github.com/bro-n-bro/spacebox-crawler/pkg/health_checker" - "github.com/bro-n-bro/spacebox-crawler/pkg/worker" + "github.com/bro-n-bro/spacebox-crawler/v2/adapter/storage" + "github.com/bro-n-bro/spacebox-crawler/v2/client/grpc" + "github.com/bro-n-bro/spacebox-crawler/v2/client/rpc" + "github.com/bro-n-bro/spacebox-crawler/v2/delivery/broker" + "github.com/bro-n-bro/spacebox-crawler/v2/delivery/server" + healthchecker "github.com/bro-n-bro/spacebox-crawler/v2/pkg/health_checker" + "github.com/bro-n-bro/spacebox-crawler/v2/pkg/worker" ) type Config struct { @@ -17,7 +17,6 @@ type Config struct { DefaultDenom string `env:"DEFAULT_DENOM" envDefault:"uatom"` LogLevel string `env:"LOG_LEVEL" envDefault:"info"` Server server.Config - Modules []string `env:"MODULES" required:"true"` GRPCConfig grpc.Config RPCConfig rpc.Config BrokerConfig broker.Config diff --git a/internal/rep/broker.go b/internal/rep/broker.go index b5e24ed..6707b96 100644 --- a/internal/rep/broker.go +++ b/internal/rep/broker.go @@ -2,122 +2,9 @@ package rep import ( "context" - - "github.com/bro-n-bro/spacebox/broker/model" ) type Broker interface { - // auth module - PublishAccount(context.Context, model.Account) error - - // core module - PublishBlock(context.Context, model.Block) error - PublishMessage(context.Context, model.Message) error - PublishTransaction(context.Context, model.Transaction) error - PublishValidatorPreCommit(context.Context, model.ValidatorPreCommit) error - PublishValidatorVotingPower(context.Context, model.ValidatorVotingPower) error - - // bank module - PublishSupply(context.Context, model.Supply) error - PublishSendMessage(context.Context, model.SendMessage) error - PublishMultiSendMessage(context.Context, model.MultiSendMessage) error - PublishAccountBalance(context.Context, model.AccountBalance) error - - // distribution module - PublishDelegationReward(context.Context, model.DelegationReward) error - PublishDelegationRewardMessage(context.Context, model.DelegationRewardMessage) error - PublishDistributionParams(context.Context, model.DistributionParams) error - PublishValidatorCommission(context.Context, model.ValidatorCommission) error - PublishSetWithdrawAddressMessage(context.Context, model.SetWithdrawAddressMessage) error - PublishProposerReward(context.Context, model.ProposerReward) error - PublishDistributionCommission(context.Context, model.DistributionCommission) error - PublishDistributionReward(context.Context, model.DistributionReward) error - PublishWithdrawValidatorCommissionMessage(context.Context, model.WithdrawValidatorCommissionMessage) error - - // staking module - PublishCommunityPool(context.Context, model.CommunityPool) error - PublishUnbondingDelegation(context.Context, model.UnbondingDelegation) error - PublishUnbondingDelegationMessage(context.Context, model.UnbondingDelegationMessage) error - PublishStakingParams(context.Context, model.StakingParams) error - PublishDelegation(context.Context, model.Delegation) error - PublishDisabledDelegation(context.Context, model.Delegation) error - PublishDelegationMessage(context.Context, model.DelegationMessage) error - PublishRedelegationMessage(context.Context, model.RedelegationMessage) error - PublishRedelegation(context.Context, model.Redelegation) error - PublishStakingPool(context.Context, model.StakingPool) error - PublishValidator(context.Context, model.Validator) error - PublishValidatorInfo(context.Context, model.ValidatorInfo) error - PublishValidatorStatus(context.Context, model.ValidatorStatus) error - PublishValidatorDescription(context.Context, model.ValidatorDescription) error - PublishCreateValidatorMessage(context.Context, model.CreateValidatorMessage) error - PublishEditValidatorMessage(context.Context, model.EditValidatorMessage) error - PublishCancelUnbondingDelegationMessage(context.Context, model.CancelUnbondingDelegationMessage) error - - // mint module - PublishMintParams(context.Context, model.MintParams) error - PublishAnnualProvision(context.Context, model.AnnualProvision) error - - // gov module - PublishProposal(context.Context, model.Proposal) error - PublishGovParams(context.Context, model.GovParams) error - PublishProposalDeposit(context.Context, model.ProposalDeposit) error - PublishProposalDepositMessage(context.Context, model.ProposalDepositMessage) error - PublishProposalVoteMessage(context.Context, model.ProposalVoteMessage) error - PublishProposalTallyResult(context.Context, model.ProposalTallyResult) error - PublishSubmitProposalMessage(context.Context, model.SubmitProposalMessage) error - PublishVoteWeightedMessage(context.Context, model.VoteWeightedMessage) error - - // authz module - PublishGrantMessage(context.Context, model.GrantMessage) error - PublishAuthzGrant(context.Context, model.AuthzGrant) error - PublishRevokeMessage(context.Context, model.RevokeMessage) error - PublishExecMessage(context.Context, model.ExecMessage) error - - // feegrant module - PublishFeeAllowance(context.Context, model.FeeAllowance) error - PublishGrantAllowanceMessage(context.Context, model.GrantAllowanceMessage) error - PublishRevokeAllowanceMessage(context.Context, model.RevokeAllowanceMessage) error - - // slashing module - PublishSlashingParams(context.Context, model.SlashingParams) error - PublishUnjailMessage(context.Context, model.UnjailMessage) error - PublishHandleValidatorSignature(ctx context.Context, msg model.HandleValidatorSignature) error - - // ibc module - PublishTransferMessage(context.Context, model.TransferMessage) error - PublishAcknowledgementMessage(context.Context, model.AcknowledgementMessage) error - PublishReceivePacketMessage(context.Context, model.RecvPacketMessage) error - PublishDenomTrace(context.Context, model.DenomTrace) error - - // liquidity module - PublishSwap(context.Context, model.Swap) error - PublishLiquidityPool(context.Context, model.LiquidityPool) error - - // graph module - PublishCyberlink(context.Context, model.Cyberlink) error - PublishCyberlinkMessage(context.Context, model.CyberlinkMessage) error - PublishParticle(context.Context, model.Particle) error - - // bandwidth module - PublishBandwidthParams(context.Context, model.BandwidthParams) error - - // dmn module - PublishDMNParams(context.Context, model.DMNParams) error - - // grid module - PublishGridParams(context.Context, model.GridParams) error - PublishRoute(context.Context, model.Route) error - PublishCreateRouteMessage(context.Context, model.CreateRouteMessage) error - PublishEditRouteMessage(context.Context, model.EditRouteMessage) error - PublishEditRouteNameMessage(context.Context, model.EditRouteNameMessage) error - PublishDeleteRouteMessage(context.Context, model.DeleteRouteMessage) error - - // rank module - PublishRankParams(context.Context, model.RankParams) error - - // resources module - PublishInvestmintMessage(context.Context, model.InvestmintMessage) error - // raw PublishRawBlock(ctx context.Context, b interface{}) error PublishRawTransaction(ctx context.Context, tx interface{}) error diff --git a/internal/rep/client.go b/internal/rep/client.go index a6122ed..3dcd389 100644 --- a/internal/rep/client.go +++ b/internal/rep/client.go @@ -7,7 +7,7 @@ import ( cometbfttypes "github.com/cometbft/cometbft/types" "github.com/cosmos/cosmos-sdk/types/tx" - "github.com/bro-n-bro/spacebox-crawler/types" + "github.com/bro-n-bro/spacebox-crawler/v2/types" ) type ( @@ -19,8 +19,6 @@ type ( } RPCClient interface { - WsEnabled() bool - SubscribeNewBlocks(ctx context.Context) (<-chan cometbftcoretypes.ResultEvent, error) Genesis(ctx context.Context) (*cometbfttypes.GenesisDoc, error) GetLastBlockHeight(ctx context.Context) (int64, error) diff --git a/internal/rep/storage.go b/internal/rep/storage.go index fbe893a..81b8090 100644 --- a/internal/rep/storage.go +++ b/internal/rep/storage.go @@ -3,7 +3,7 @@ package rep import ( "context" - "github.com/bro-n-bro/spacebox-crawler/adapter/storage/model" + "github.com/bro-n-bro/spacebox-crawler/v2/adapter/storage/model" ) // Storage implementation needed for store some tmp data for correct processing diff --git a/modules/auth/broker.go b/modules/auth/broker.go deleted file mode 100644 index 52d6ee6..0000000 --- a/modules/auth/broker.go +++ /dev/null @@ -1,11 +0,0 @@ -package auth - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -type broker interface { - PublishAccount(context.Context, model.Account) error -} diff --git a/modules/auth/genesis.go b/modules/auth/genesis.go deleted file mode 100644 index 5b4f8d8..0000000 --- a/modules/auth/genesis.go +++ /dev/null @@ -1,31 +0,0 @@ -package auth - -import ( - "context" - "encoding/json" - - cometbfttypes "github.com/cometbft/cometbft/types" - - "github.com/bro-n-bro/spacebox-crawler/modules/utils" -) - -func (m *Module) HandleGenesis( - ctx context.Context, - doc *cometbfttypes.GenesisDoc, - appState map[string]json.RawMessage, -) error { - - accounts, err := utils.GetGenesisAccounts(appState, m.cdc) - if err != nil { - return err - } - - for _, acc := range accounts { - if err = utils.GetAndPublishAccount(ctx, acc.Address, doc.InitialHeight, m.accCache, m.broker, - m.client.AuthQueryClient); err != nil { - return err - } - } - - return nil -} diff --git a/modules/auth/message.go b/modules/auth/message.go deleted file mode 100644 index 369d61d..0000000 --- a/modules/auth/message.go +++ /dev/null @@ -1,23 +0,0 @@ -package auth - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - "github.com/bro-n-bro/spacebox-crawler/types" -) - -func (m *Module) HandleMessage(ctx context.Context, _ int, msg sdk.Msg, tx *types.Tx) error { - addresses := m.parser(m.cdc, msg) - - for _, addr := range addresses { - if err := utils.GetAndPublishAccount(ctx, addr, tx.Height, m.accCache, m.broker, - m.client.AuthQueryClient); err != nil { - return err - } - } - - return nil -} diff --git a/modules/auth/module.go b/modules/auth/module.go deleted file mode 100644 index d130f31..0000000 --- a/modules/auth/module.go +++ /dev/null @@ -1,59 +0,0 @@ -package auth - -import ( - "github.com/cosmos/cosmos-sdk/codec" - "github.com/rs/zerolog" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/modules/core" - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - tb "github.com/bro-n-bro/spacebox-crawler/pkg/mapper/to_broker" - "github.com/bro-n-bro/spacebox-crawler/types" -) - -const ( - ModuleName = "auth" -) - -var ( - _ types.Module = &Module{} - _ types.GenesisHandler = &Module{} - _ types.MessageHandler = &Module{} -) - -type ( - AccountCache[K, V comparable] interface { - UpdateCacheValue(K, V) bool - } - - Module struct { - log *zerolog.Logger - client *grpcClient.Client - broker broker - tbM tb.ToBroker - cdc codec.Codec - parser core.MsgAddrParser - accCache AccountCache[string, int64] - } -) - -func New(b broker, cli *grpcClient.Client, tb tb.ToBroker, cdc codec.Codec, parser core.MsgAddrParser) *Module { - return &Module{ - log: utils.NewModuleLogger(ModuleName), - broker: b, - tbM: tb, - client: cli, - cdc: cdc, - parser: parser, - } -} - -func (m *Module) Name() string { return ModuleName } - -func (m *Module) WithAccountCache(cache AccountCache[string, int64]) *Module { - if cache != nil { - m.accCache = cache - } - - return m -} diff --git a/modules/authz/broker.go b/modules/authz/broker.go deleted file mode 100644 index 45b849c..0000000 --- a/modules/authz/broker.go +++ /dev/null @@ -1,15 +0,0 @@ -package authz - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -// Broker is an interface for publishing authz messages. -type broker interface { - PublishAuthzGrant(context.Context, model.AuthzGrant) error - PublishGrantMessage(context.Context, model.GrantMessage) error - PublishRevokeMessage(context.Context, model.RevokeMessage) error - PublishExecMessage(context.Context, model.ExecMessage) error -} diff --git a/modules/authz/message.go b/modules/authz/message.go deleted file mode 100644 index ed66c3f..0000000 --- a/modules/authz/message.go +++ /dev/null @@ -1,144 +0,0 @@ -package authz - -import ( - "context" - - codec "github.com/cosmos/cosmos-sdk/codec/types" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/query" - authztypes "github.com/cosmos/cosmos-sdk/x/authz" - - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -// HandleMessageRecursive implements types.RecursiveMessagesHandler. -// Handles authz types messages. -// For MsgExec message types returns slice of messages to be handled recursively. -func (m *Module) HandleMessageRecursive( - ctx context.Context, - index int, - cosmosMsg sdk.Msg, - tx *types.Tx, -) ([]*codec.Any, error) { - - switch msg := cosmosMsg.(type) { - case *authztypes.MsgGrant: - if err := m.broker.PublishGrantMessage(ctx, model.GrantMessage{ - Height: tx.Height, - MsgIndex: int64(index), - TxHash: tx.TxHash, - Granter: msg.Granter, - Grantee: msg.Grantee, - Expiration: utils.TimeFromPtr(msg.Grant.Expiration), - MsgType: typeUrlFromAnyPtr(msg.Grant.Authorization), - }); err != nil { - return nil, err - } - - if err := m.findAndPublishAuthzGrants(ctx, msg.Granter, msg.Grantee, tx.Height); err != nil { - return nil, err - } - case *authztypes.MsgRevoke: - if err := m.broker.PublishRevokeMessage(ctx, model.RevokeMessage{ - Height: tx.Height, - MsgIndex: int64(index), - TxHash: tx.TxHash, - Granter: msg.Granter, - Grantee: msg.Grantee, - MsgType: msg.MsgTypeUrl, - }); err != nil { - return nil, err - } - - if err := m.findAndPublishAuthzGrants(ctx, msg.Granter, msg.Grantee, tx.Height); err != nil { - return nil, err - } - case *authztypes.MsgExec: - messages := make([][]byte, 0, len(msg.Msgs)) - for _, message := range msg.Msgs { - bytes, err := m.cdc.MarshalJSON(message) - if err != nil { - return nil, err - } - messages = append(messages, bytes) - } - if err := m.broker.PublishExecMessage(ctx, model.ExecMessage{ - Height: tx.Height, - MsgIndex: int64(index), - TxHash: tx.TxHash, - Grantee: msg.Grantee, - Msgs: messages, - }); err != nil { - return nil, err - } - - return msg.Msgs, nil - } - - return nil, nil -} - -// findAndPublishAuthzGrants finds all authz grants for the given granter and grantee and publishes data to the broker. -func (m *Module) findAndPublishAuthzGrants(ctx context.Context, granter, grantee string, height int64) error { - var nextKey []byte - - for { - respPb, err := m.client.AuthzQueryClient.Grants( - ctx, - &authztypes.QueryGrantsRequest{ - Granter: granter, - Grantee: grantee, - Pagination: &query.PageRequest{ - Key: nextKey, - Limit: 150, - }, - }, - ) - if err != nil { - return err - } - - nextKey = respPb.Pagination.NextKey - if len(respPb.Grants) > 0 { - for _, grant := range respPb.Grants { - if err = m.broker.PublishAuthzGrant(ctx, model.AuthzGrant{ - Height: height, - GranterAddress: granter, - GranteeAddress: grantee, - Expiration: utils.TimeFromPtr(grant.Expiration), - MsgType: typeUrlFromAnyPtr(grant.Authorization), - }); err != nil { - m.log.Err(err).Int64("height", height).Msg("error while publishing authz grant") - return err - } - } - } else { - if err = m.broker.PublishAuthzGrant(ctx, model.AuthzGrant{ - Height: height, - GranterAddress: granter, - GranteeAddress: grantee, - }); err != nil { - m.log.Err(err).Int64("height", height).Msg("error while publishing authz grant") - return err - } - } - - if len(respPb.Pagination.NextKey) == 0 { - break - } - } - - return nil -} - -// typeUrlFromAnyPtr returns typeUrl from *codec.Any. If any is nil, returns "". -// nolint: stylecheck -func typeUrlFromAnyPtr(any *codec.Any) string { - if any == nil { - return "" - } - - return any.TypeUrl -} diff --git a/modules/authz/module.go b/modules/authz/module.go deleted file mode 100644 index 1b83f32..0000000 --- a/modules/authz/module.go +++ /dev/null @@ -1,43 +0,0 @@ -package authz - -import ( - "github.com/cosmos/cosmos-sdk/codec" - "github.com/rs/zerolog" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - tb "github.com/bro-n-bro/spacebox-crawler/pkg/mapper/to_broker" - "github.com/bro-n-bro/spacebox-crawler/types" -) - -const ( - ModuleName = "authz" -) - -var ( - _ types.Module = &Module{} - _ types.RecursiveMessagesHandler = &Module{} -) - -// Module is a module for authz. -type Module struct { - log *zerolog.Logger - client *grpcClient.Client - broker broker - tbM tb.ToBroker - cdc codec.Codec -} - -// New creates a new authz module. -func New(b broker, cli *grpcClient.Client, tb tb.ToBroker, cdc codec.Codec) *Module { - return &Module{ - log: utils.NewModuleLogger(ModuleName), - broker: b, - tbM: tb, - client: cli, - cdc: cdc, - } -} - -// Name returns the module name. -func (m *Module) Name() string { return ModuleName } diff --git a/modules/bandwidth/block.go b/modules/bandwidth/block.go deleted file mode 100644 index 32bbbce..0000000 --- a/modules/bandwidth/block.go +++ /dev/null @@ -1,39 +0,0 @@ -package bandwidth - -import ( - "context" - - bandwidthtypes "github.com/cybercongress/go-cyber/x/bandwidth/types" - "github.com/pkg/errors" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (m *Module) HandleBlock(ctx context.Context, block *types.Block) error { - paramsResp, err := m.client.BandwidthQueryClient.Params( - ctx, - &bandwidthtypes.QueryParamsRequest{}, - grpcClient.GetHeightRequestHeader(block.Height), - ) - if err != nil { - m.log.Error().Err(err).Int64("height", block.Height).Msg("error while getting params") - return err - } - - if err = m.broker.PublishBandwidthParams(ctx, model.BandwidthParams{ - Height: block.Height, - Params: model.RawBandwidthParams{ - RecoveryPeriod: paramsResp.Params.RecoveryPeriod, - AdjustPricePeriod: paramsResp.Params.AdjustPricePeriod, - BasePrice: paramsResp.Params.BasePrice.MustFloat64(), - BaseLoad: paramsResp.Params.BaseLoad.MustFloat64(), - MaxBlockBandwidth: paramsResp.Params.MaxBlockBandwidth, - }, - }); err != nil { - return errors.Wrap(err, "PublishBandwidthParams error") - } - - return nil -} diff --git a/modules/bandwidth/broker.go b/modules/bandwidth/broker.go deleted file mode 100644 index 896c2ff..0000000 --- a/modules/bandwidth/broker.go +++ /dev/null @@ -1,11 +0,0 @@ -package bandwidth - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -type broker interface { - PublishBandwidthParams(ctx context.Context, mp model.BandwidthParams) error -} diff --git a/modules/bandwidth/module.go b/modules/bandwidth/module.go deleted file mode 100644 index d6be35c..0000000 --- a/modules/bandwidth/module.go +++ /dev/null @@ -1,37 +0,0 @@ -package bandwidth - -import ( - "github.com/rs/zerolog" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - tb "github.com/bro-n-bro/spacebox-crawler/pkg/mapper/to_broker" - "github.com/bro-n-bro/spacebox-crawler/types" -) - -const ( - ModuleName = "bandwidth" -) - -var ( - _ types.Module = &Module{} - _ types.BlockHandler = &Module{} -) - -type Module struct { - log *zerolog.Logger - client *grpcClient.Client - broker broker - tbM tb.ToBroker -} - -func New(b broker, cli *grpcClient.Client, tbM tb.ToBroker) *Module { - return &Module{ - log: utils.NewModuleLogger(ModuleName), - broker: b, - client: cli, - tbM: tbM, - } -} - -func (m *Module) Name() string { return ModuleName } diff --git a/modules/bank/block.go b/modules/bank/block.go deleted file mode 100644 index de1941c..0000000 --- a/modules/bank/block.go +++ /dev/null @@ -1,50 +0,0 @@ -package bank - -import ( - "context" - - "github.com/cosmos/cosmos-sdk/types/query" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (m *Module) HandleBlock(ctx context.Context, block *types.Block) error { - supply := model.Supply{ - Height: block.Height, - } - - var nextKey []byte - - for { - respPb, err := m.client.BankQueryClient.TotalSupply( - ctx, - &banktypes.QueryTotalSupplyRequest{ - Pagination: &query.PageRequest{ - Key: nextKey, - Limit: 100, - CountTotal: true, - }, - }, - grpcClient.GetHeightRequestHeader(block.Height)) - if err != nil { - return err - } - - if cap(supply.Coins) == 0 { - supply.Coins = make(model.Coins, 0, respPb.Pagination.Total) - } - - supply.Coins = append(supply.Coins, m.tbM.MapCoins(types.NewCoinsFromSDK(respPb.Supply))...) - - nextKey = respPb.Pagination.NextKey - if len(nextKey) == 0 { - break - } - } - - // TODO: test it - return m.broker.PublishSupply(ctx, supply) -} diff --git a/modules/bank/broker.go b/modules/bank/broker.go deleted file mode 100644 index 5c18d90..0000000 --- a/modules/bank/broker.go +++ /dev/null @@ -1,14 +0,0 @@ -package bank - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -type broker interface { - PublishSupply(context.Context, model.Supply) error - PublishMultiSendMessage(ctx context.Context, msm model.MultiSendMessage) error - PublishSendMessage(context.Context, model.SendMessage) error - PublishAccountBalance(ctx context.Context, ab model.AccountBalance) error -} diff --git a/modules/bank/genesis.go b/modules/bank/genesis.go deleted file mode 100644 index 62583a7..0000000 --- a/modules/bank/genesis.go +++ /dev/null @@ -1,54 +0,0 @@ -package bank - -import ( - "context" - "encoding/json" - - cometbfttypes "github.com/cometbft/cometbft/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -// HandleGenesis handles the genesis state of the x/bank module in order to store the initial values -// of the different account balances. -func (m *Module) HandleGenesis( - ctx context.Context, - doc *cometbfttypes.GenesisDoc, - appState map[string]json.RawMessage) error { - - var bankState banktypes.GenesisState - if err := m.cdc.UnmarshalJSON(appState[banktypes.ModuleName], &bankState); err != nil { - return err - } - - // Store the balances - accounts, err := utils.GetGenesisAccounts(appState, m.cdc) - if err != nil { - return err - } - - uniqueAddresses := make(map[string]struct{}) - for _, acc := range accounts { - uniqueAddresses[acc.Address] = struct{}{} - } - - for _, balance := range bankState.Balances { - if _, ok := uniqueAddresses[balance.Address]; !ok { // skip already published - continue - } - - // TODO: test it - if err = m.broker.PublishAccountBalance(ctx, model.AccountBalance{ - Address: balance.Address, - Height: doc.InitialHeight, - Coins: m.tbM.MapCoins(types.NewCoinsFromSDK(balance.Coins)), - }); err != nil { - return err - } - } - - return nil -} diff --git a/modules/bank/helper.go b/modules/bank/helper.go deleted file mode 100644 index b124d2e..0000000 --- a/modules/bank/helper.go +++ /dev/null @@ -1,38 +0,0 @@ -package bank - -import ( - "context" - - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (m *Module) updateBalance(ctx context.Context, addresses []string, height int64) error { - header := grpcClient.GetHeightRequestHeader(height) - - for _, address := range addresses { - balRes, err := m.client.BankQueryClient.AllBalances( - ctx, - &banktypes.QueryAllBalancesRequest{Address: address}, - header, - ) - if err != nil { - return err - } - - if err = m.broker.PublishAccountBalance( - ctx, - model.AccountBalance{ - Address: address, - Height: height, - Coins: m.tbM.MapCoins(types.NewCoinsFromSDK(balRes.Balances)), - }); err != nil { - return err - } - } - - return nil -} diff --git a/modules/bank/message.go b/modules/bank/message.go deleted file mode 100644 index 75729af..0000000 --- a/modules/bank/message.go +++ /dev/null @@ -1,55 +0,0 @@ -package bank - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (m *Module) HandleMessage(ctx context.Context, index int, cosmosMsg sdk.Msg, tx *types.Tx) error { - switch msg := cosmosMsg.(type) { - case *banktypes.MsgMultiSend: - // // todo: collect input/output and coins - // // todo: think about how to collect total amount from outputs - if len(msg.Inputs) > 0 { - addressFrom := msg.Inputs[0].Address - - message := model.MultiSendMessage{ - Coins: make(model.Coins, 0, len(msg.Outputs)), - AddressFrom: addressFrom, - AddressesTo: make([]string, 0, len(msg.Outputs)), - TxHash: tx.TxHash, - Height: tx.Height, - MsgIndex: int64(index), - } - - for _, to := range msg.Outputs { - message.AddressesTo = append(message.AddressesTo, to.Address) - message.Coins = append(message.Coins, m.tbM.MapCoins(types.NewCoinsFromSDK(to.Coins))...) - } - - if err := m.broker.PublishMultiSendMessage(ctx, message); err != nil { - return err - } - } - case *banktypes.MsgSend: - // TODO: test it - if err := m.broker.PublishSendMessage(ctx, model.SendMessage{ - Coins: m.tbM.MapCoins(types.NewCoinsFromSDK(msg.Amount)), - AddressFrom: msg.FromAddress, - AddressTo: msg.ToAddress, - TxHash: tx.TxHash, - Height: tx.Height, - MsgIndex: int64(index), - }); err != nil { - return err - } - } - - return m.updateBalance(ctx, utils.FilterNonAccountAddresses(m.parser(m.cdc, cosmosMsg)), tx.Height) -} diff --git a/modules/bank/module.go b/modules/bank/module.go deleted file mode 100644 index 9a6c681..0000000 --- a/modules/bank/module.go +++ /dev/null @@ -1,47 +0,0 @@ -package bank - -import ( - "github.com/cosmos/cosmos-sdk/codec" - "github.com/rs/zerolog" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/modules/core" - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - tb "github.com/bro-n-bro/spacebox-crawler/pkg/mapper/to_broker" - "github.com/bro-n-bro/spacebox-crawler/types" -) - -const ( - ModuleName = "bank" -) - -var ( - _ types.Module = &Module{} - _ types.GenesisHandler = &Module{} - _ types.BlockHandler = &Module{} - _ types.MessageHandler = &Module{} -) - -type Module struct { - log *zerolog.Logger - client *grpcClient.Client - tbM tb.ToBroker - broker broker - cdc codec.Codec - parser core.MsgAddrParser -} - -func New(b broker, cli *grpcClient.Client, tbM tb.ToBroker, cdc codec.Codec, - parser core.MsgAddrParser) *Module { - - return &Module{ - log: utils.NewModuleLogger(ModuleName), - broker: b, - client: cli, - tbM: tbM, - cdc: cdc, - parser: parser, - } -} - -func (m *Module) Name() string { return ModuleName } diff --git a/modules/core/account_parser.go b/modules/core/account_parser.go deleted file mode 100644 index 356c350..0000000 --- a/modules/core/account_parser.go +++ /dev/null @@ -1,275 +0,0 @@ -package core - -import ( - "github.com/cosmos/cosmos-sdk/codec" - sdk "github.com/cosmos/cosmos-sdk/types" - authztypes "github.com/cosmos/cosmos-sdk/x/authz" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" - distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types" - feegranttypes "github.com/cosmos/cosmos-sdk/x/feegrant" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - graph "github.com/cybercongress/go-cyber/x/graph/types" -) - -var ( - // CosmosMessageAddressesParser represents a MsgAddrParser that parses a - // Cosmos message and returns all the involved addresses (both accounts and validators) - CosmosMessageAddressesParser = JoinMessageParsers( - BankMessagesParser, - CrisisMessagesParser, - DistributionMessagesParser, - EvidenceMessagesParser, - GovMessagesParser, - IBCTransferMessagesParser, - SlashingMessagesParser, - StakingMessagesParser, - FeeGrantMessagesParser, - AuthzMessagesParser, - GraphMessagesParser, - - DefaultMessagesParser, - ) -) - -type ( - // MsgAddrParser represents a function that extracts all the - // involved addresses from a provided message (both accounts and validators) - MsgAddrParser = func(cdc codec.Codec, msg sdk.Msg) []string -) - -// JoinMessageParsers joins together all the given parsers, calling them in order -func JoinMessageParsers(parsers ...MsgAddrParser) MsgAddrParser { - return func(cdc codec.Codec, msg sdk.Msg) []string { - // https://github.com/bro-n-bro/spacebox-crawler/issues/131 - if msg == nil { - return nil - } - - for _, parser := range parsers { - // Try getting the addresses - - // If some addresses are found, return them - if addresses := parser(cdc, msg); len(addresses) > 0 { - return addresses - } - } - - return nil - } -} - -// DefaultMessagesParser represents the default messages parser that simply returns the list -// of all the signers of a message -func DefaultMessagesParser(_ codec.Codec, incomingMsg sdk.Msg) []string { - var ( - cosmosSigners = incomingMsg.GetSigners() - signers = make([]string, len(cosmosSigners)) - ) - - for index, signer := range cosmosSigners { - signers[index] = signer.String() - } - - return signers -} - -// BankMessagesParser returns the list of all the accounts involved in the given -// message if it's related to the x/bank module -func BankMessagesParser(_ codec.Codec, incomingMsg sdk.Msg) []string { - switch msg := incomingMsg.(type) { - case *banktypes.MsgSend: - return []string{msg.ToAddress, msg.FromAddress} - case *banktypes.MsgMultiSend: - var addresses []string - - for _, i := range msg.Inputs { - addresses = append(addresses, i.Address) - } - - for _, o := range msg.Outputs { - addresses = append(addresses, o.Address) - } - - return addresses - } - - return nil -} - -// CrisisMessagesParser returns the list of all the accounts involved in the given -// message if it's related to the x/crisis module -func CrisisMessagesParser(_ codec.Codec, incomingMsg sdk.Msg) []string { - // nolint:gocritic - switch msg := incomingMsg.(type) { - case *crisistypes.MsgVerifyInvariant: - return []string{msg.Sender} - } - - return nil -} - -// DistributionMessagesParser returns the list of all the accounts involved in the given -// message if it's related to the x/distribution module -func DistributionMessagesParser(_ codec.Codec, incomingMsg sdk.Msg) []string { - switch msg := incomingMsg.(type) { - case *distrtypes.MsgSetWithdrawAddress: - return []string{msg.DelegatorAddress, msg.WithdrawAddress} - case *distrtypes.MsgWithdrawDelegatorReward: - return []string{msg.DelegatorAddress, msg.ValidatorAddress} - case *distrtypes.MsgWithdrawValidatorCommission: - return []string{msg.ValidatorAddress} - case *distrtypes.MsgFundCommunityPool: - return []string{msg.Depositor} - } - - return nil -} - -// EvidenceMessagesParser returns the list of all the accounts involved in the given -// message if it's related to the x/evidence module -func EvidenceMessagesParser(_ codec.Codec, incomingMsg sdk.Msg) []string { - // nolint:gocritic - switch msg := incomingMsg.(type) { - case *evidencetypes.MsgSubmitEvidence: - return []string{msg.Submitter} - } - - return nil -} - -// GovMessagesParser returns the list of all the accounts involved in the given -// message if it's related to the x/gov module -func GovMessagesParser(cdc codec.Codec, incomingMsg sdk.Msg) []string { - switch msg := incomingMsg.(type) { - case *govtypes.MsgSubmitProposal: - var ( - addresses = []string{msg.Proposer} - content govtypes.Content - ) - - if err := cdc.UnpackAny(msg.Content, &content); err != nil { - return nil - } - - //nolint:gocritic,staticcheck - // Get addresses from contents - switch content := content.(type) { - case *distrtypes.CommunityPoolSpendProposal: - addresses = append(addresses, content.Recipient) - } - - return addresses - case *govtypes.MsgDeposit: - return []string{msg.Depositor} - case *govtypes.MsgVote: - return []string{msg.Voter} - } - - return nil -} - -// -// // IBCTransferMessagesParser returns the list of all the accounts involved in the given -// // message if it's related to the x/iBCTransfer module -// func IBCTransferMessagesParser(_ codec.Codec, cosmosMsg sdk.Msg) ([]string, error) { -// switch msg := cosmosMsg.(type) { -// -// case *ibctransfertypes.MsgTransfer: -// return []string{msg.Sender, msg.Receiver}, nil -// -// } -// -// return nil, MessageNotSupported(cosmosMsg) -// } - -// SlashingMessagesParser returns the list of all the accounts involved in the given -// message if it's related to the x/slashing module -func SlashingMessagesParser(_ codec.Codec, incomingMsg sdk.Msg) []string { - // nolint:gocritic - switch msg := incomingMsg.(type) { - case *slashingtypes.MsgUnjail: - return []string{msg.ValidatorAddr} - } - - return nil -} - -// StakingMessagesParser returns the list of all the accounts involved in the given -// message if it's related to the x/staking module -func StakingMessagesParser(_ codec.Codec, incomingMsg sdk.Msg) []string { - switch msg := incomingMsg.(type) { - case *stakingtypes.MsgCreateValidator: - return []string{msg.ValidatorAddress, msg.DelegatorAddress} - case *stakingtypes.MsgEditValidator: - return []string{msg.ValidatorAddress} - case *stakingtypes.MsgDelegate: - return []string{msg.DelegatorAddress, msg.ValidatorAddress} - case *stakingtypes.MsgBeginRedelegate: - return []string{msg.DelegatorAddress, msg.ValidatorSrcAddress, msg.ValidatorDstAddress} - case *stakingtypes.MsgUndelegate: - return []string{msg.DelegatorAddress, msg.ValidatorAddress} - } - - return nil -} - -// IBCTransferMessagesParser returns the list of all the accounts involved in the given -// message if it's related to the x/IBCTransfer module -func IBCTransferMessagesParser(_ codec.Codec, incomingMsg sdk.Msg) []string { - // nolint:gocritic - switch msg := incomingMsg.(type) { - case *ibctransfertypes.MsgTransfer: - return []string{msg.Sender, msg.Receiver} - } - - return nil -} - -// FeeGrantMessagesParser returns the list of all the accounts involved in the given -// message if it's related to the x/feegrant module -func FeeGrantMessagesParser(_ codec.Codec, incomingMsg sdk.Msg) []string { - switch msg := incomingMsg.(type) { - case *feegranttypes.MsgGrantAllowance: - return []string{msg.Granter, msg.Grantee} - case *feegranttypes.MsgRevokeAllowance: - return []string{msg.Granter, msg.Grantee} - } - - return nil -} - -// AuthzMessagesParser returns the list of all the accounts involved in the given -// message if it's related to the x/authz module -func AuthzMessagesParser(_ codec.Codec, incomingMsg sdk.Msg) []string { - switch msg := incomingMsg.(type) { - case *authztypes.MsgGrant: - return []string{msg.Grantee, msg.Granter} - case *authztypes.MsgRevoke: - return []string{msg.Grantee, msg.Granter} - case *authztypes.MsgExec: - return []string{msg.Grantee} - } - - return nil -} - -// GraphMessagesParser returns the list of all the accounts involved in the given -// message if it's related to the x/graph module -func GraphMessagesParser(_ codec.Codec, incomingMsg sdk.Msg) []string { - switch msg := incomingMsg.(type) { //nolint:gocritic - case *graph.MsgCyberlink: - resp := make([]string, 0, len(msg.Links)*2) - for _, link := range msg.Links { - resp = append(resp, link.From, link.To) - } - - return resp - } - - return nil -} diff --git a/modules/core/block.go b/modules/core/block.go deleted file mode 100644 index 6a82691..0000000 --- a/modules/core/block.go +++ /dev/null @@ -1,37 +0,0 @@ -package core - -import ( - "context" - - "github.com/pkg/errors" - - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (m *Module) HandleBlock(ctx context.Context, block *types.Block) error { - if err := m.broker.PublishBlock(ctx, model.Block{ - Height: block.Height, - Hash: block.Hash, - ProposerAddress: block.ProposerAddress, - NumTxs: int64(block.TxNum), - TotalGas: block.TotalGas, - Timestamp: block.Timestamp, - }); err != nil { - m.log.Error().Err(err).Int64("block_height", block.Height).Msg("PublishBlock error") - return err - } - - for _, preCommit := range block.ValidatorPreCommits { - if err := m.broker.PublishValidatorPreCommit(ctx, model.ValidatorPreCommit{ - Height: block.Height, - ValidatorAddress: preCommit.ValidatorAddress, - BlockIDFlag: preCommit.BlockIDFlag, - Timestamp: preCommit.Timestamp, - }); err != nil { - return errors.Wrap(err, "PublishValidatorPreCommit error") - } - } - - return nil -} diff --git a/modules/core/broker.go b/modules/core/broker.go deleted file mode 100644 index b012d54..0000000 --- a/modules/core/broker.go +++ /dev/null @@ -1,15 +0,0 @@ -package core - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -type broker interface { - PublishBlock(context.Context, model.Block) error - PublishMessage(ctx context.Context, message model.Message) error - PublishTransaction(ctx context.Context, tx model.Transaction) error - PublishValidatorPreCommit(ctx context.Context, vp model.ValidatorPreCommit) error - PublishValidatorVotingPower(_ context.Context, vp model.ValidatorVotingPower) error -} diff --git a/modules/core/message.go b/modules/core/message.go deleted file mode 100644 index 3aa85ea..0000000 --- a/modules/core/message.go +++ /dev/null @@ -1,27 +0,0 @@ -package core - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/gogoproto/proto" - - "github.com/bro-n-bro/spacebox-crawler/types" -) - -func (m *Module) HandleMessage(ctx context.Context, index int, msg sdk.Msg, tx *types.Tx) error { - // Marshal the value properly - msgValue, err := m.cdc.MarshalJSON(msg) - if err != nil { - return err - } - - return m.broker.PublishMessage(ctx, m.tbM.MapMessage( - tx.TxHash, - proto.MessageName(msg), - tx.Signer, - index, - m.parser(m.cdc, msg), - msgValue, - )) -} diff --git a/modules/core/module.go b/modules/core/module.go deleted file mode 100644 index 9fa037a..0000000 --- a/modules/core/module.go +++ /dev/null @@ -1,41 +0,0 @@ -package core - -import ( - "github.com/cosmos/cosmos-sdk/codec" - "github.com/rs/zerolog" - - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - tb "github.com/bro-n-bro/spacebox-crawler/pkg/mapper/to_broker" - "github.com/bro-n-bro/spacebox-crawler/types" -) - -const ( - ModuleName = "core" -) - -var ( - _ types.Module = &Module{} - _ types.BlockHandler = &Module{} - _ types.MessageHandler = &Module{} - _ types.TransactionHandler = &Module{} -) - -type Module struct { - log *zerolog.Logger - tbM tb.ToBroker - broker broker - cdc codec.Codec - parser MsgAddrParser -} - -func New(b broker, tbM tb.ToBroker, cdc codec.Codec, parser MsgAddrParser) *Module { - return &Module{ - log: utils.NewModuleLogger(ModuleName), - broker: b, - tbM: tbM, - cdc: cdc, - parser: parser, - } -} - -func (m *Module) Name() string { return ModuleName } diff --git a/modules/core/transaction.go b/modules/core/transaction.go deleted file mode 100644 index 8f9406a..0000000 --- a/modules/core/transaction.go +++ /dev/null @@ -1,21 +0,0 @@ -package core - -import ( - "context" - - "github.com/bro-n-bro/spacebox-crawler/types" -) - -func (m *Module) HandleTx(ctx context.Context, tx *types.Tx) error { - mappedTx, err := m.tbM.MapTransaction(tx) - if err != nil { - return err - } - - if err = m.broker.PublishTransaction(ctx, mappedTx); err != nil { - m.log.Error().Err(err).Int64("height", tx.Height).Msg("PublishTransaction error") - return err - } - - return nil -} diff --git a/modules/core/validators.go b/modules/core/validators.go deleted file mode 100644 index 6a63b11..0000000 --- a/modules/core/validators.go +++ /dev/null @@ -1,25 +0,0 @@ -package core - -import ( - "context" - - cometbftcoretypes "github.com/cometbft/cometbft/rpc/core/types" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -// HandleValidators handles validators for each block height. -func (m *Module) HandleValidators(ctx context.Context, vals *cometbftcoretypes.ResultValidators) error { - for _, val := range vals.Validators { - if err := m.broker.PublishValidatorVotingPower(ctx, model.ValidatorVotingPower{ - Height: vals.BlockHeight, - VotingPower: val.VotingPower, - ValidatorAddress: string(val.Address), - ProposerPriority: val.ProposerPriority, - }); err != nil { - return err - } - } - - return nil -} diff --git a/modules/distribution/begin_blocker.go b/modules/distribution/begin_blocker.go deleted file mode 100644 index 9aa5ee3..0000000 --- a/modules/distribution/begin_blocker.go +++ /dev/null @@ -1,233 +0,0 @@ -package distribution - -import ( - "context" - "encoding/base64" - "fmt" - - abci "github.com/cometbft/cometbft/abci/types" - sdk "github.com/cosmos/cosmos-sdk/types" - distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -var ( - base64KeyValidator = base64.StdEncoding.EncodeToString([]byte(distrtypes.AttributeKeyValidator)) - base64KeyAmount = base64.StdEncoding.EncodeToString([]byte(sdk.AttributeKeyAmount)) -) - -func (m *Module) HandleBeginBlocker(ctx context.Context, eventsMap types.BlockerEvents, height int64) error { - if err := m.parseProposerRewardEvent(ctx, eventsMap, height); err != nil { - m.log.Error(). - Err(err). - Str("handler", "HandleBeginBlocker"). - Int64("height", height). - Msg("failed to parse proposer reward event") - return err - } - - if err := m.parseCommissionEvent(ctx, eventsMap, height); err != nil { - m.log.Error(). - Err(err). - Str("handler", "HandleBeginBlocker"). - Int64("height", height). - Msg("failed to parse distribution commission event") - return err - } - - if err := m.parseRewardsEvent(ctx, eventsMap, height); err != nil { - m.log.Error(). - Err(err). - Str("handler", "HandleBeginBlocker"). - Int64("height", height). - Msg("failed to parse distribution rewards event") - return err - } - - return nil -} - -// parseProposerRewardEvent parses proposer reward event. -func (m *Module) parseProposerRewardEvent(ctx context.Context, eventsMap types.BlockerEvents, height int64) error { - events, ok := eventsMap[distrtypes.EventTypeProposerReward] - if !ok { - return nil - } - - var ( - coin model.Coin - operatorAddress string - err error - ) - - for _, event := range events { - if len(event.Attributes) < 2 { - m.log.Warn(). - Int64("height", height). - Str("func", "parseProposerRewardEvent"). - Msg("not enough attributes in event") - continue - } - - operatorAddress, coin, err = m.parseAttributes(event) - if err != nil { - m.log.Error(). - Err(err). - Str("func", "parseProposerRewardEvent"). - Int64("height", height). - Msg("failed to parse attributes") - return err - } - - if err = m.broker.PublishProposerReward(ctx, model.ProposerReward{ - Height: height, - OperatorAddress: operatorAddress, - Reward: coin, - }); err != nil { - m.log.Error(). - Err(err). - Str("func", "parseProposerRewardEvent"). - Int64("height", height). - Msg("error while publishing proposer reward") - return err - } - } - - return nil -} - -// parseCommissionEvent parses distribution commission event. -func (m *Module) parseCommissionEvent(ctx context.Context, eventsMap types.BlockerEvents, height int64) error { - events, ok := eventsMap[distrtypes.EventTypeCommission] - if !ok { - return nil - } - - var ( - operatorAddress string - coin model.Coin - err error - ) - - for _, event := range events { - if len(event.Attributes) < 2 { - m.log.Warn(). - Str("event", distrtypes.EventTypeCommission). - Int64("height", height). - Msg("not enough attributes in event") - continue - } - - operatorAddress, coin, err = m.parseAttributes(event) - if err != nil { - m.log.Error(). - Err(err). - Str("func", "parseCommissionEvent"). - Int64("height", height). - Msg("failed to parse attributes") - return err - } - - if err = m.broker.PublishDistributionCommission(ctx, model.DistributionCommission{ - Height: height, - OperatorAddress: operatorAddress, - Amount: coin, - }); err != nil { - m.log.Error(). - Err(err). - Str("func", "parseCommissionEvent"). - Int64("height", height). - Msg("error while publishing distribution commission") - return err - } - } - - return nil -} - -// parseRewardsEvent parses rewards event. -func (m *Module) parseRewardsEvent(ctx context.Context, eventsMap types.BlockerEvents, height int64) error { - events, ok := eventsMap[distrtypes.EventTypeRewards] - if !ok { - return nil - } - - var ( - operatorAddress string - coin model.Coin - err error - ) - - for _, event := range events { - if len(event.Attributes) < 2 { - m.log.Warn(). - Int64("height", height). - Str("func", "parseRewardsEvent"). - Msg("not enough attributes in event") - continue - } - - operatorAddress, coin, err = m.parseAttributes(event) - if err != nil { - m.log.Error(). - Err(err). - Str("func", "parseCommissionEvent"). - Int64("height", height). - Msg("failed to parse attributes") - return err - } - - if err = m.broker.PublishDistributionReward(ctx, model.DistributionReward{ - Height: height, - OperatorAddress: operatorAddress, - Amount: coin, - }); err != nil { - m.log.Error(). - Err(err). - Str("func", "parseRewardsEvent"). - Int64("height", height). - Msg("error while publishing distribution reward") - return err - } - } - - return nil -} - -func (m *Module) parseAttributes(event abci.Event) (string, model.Coin, error) { - var ( - coin model.Coin - validator string - ) - - for _, attr := range event.Attributes { - // try to decode value if needed - switch attr.Key { - case base64KeyValidator, base64KeyAmount: - var err error - attr.Value, err = utils.DecodeToString(attr.Value) - if err != nil { - return "", model.Coin{}, err - } - } - - switch attr.Key { - case distrtypes.AttributeKeyValidator, base64KeyValidator: - validator = attr.Value - case sdk.AttributeKeyAmount, base64KeyAmount: - coins, err := utils.ParseCoinsFromString(attr.Value) - if err != nil { - return "", model.Coin{}, fmt.Errorf("failed to convert %q to coin: %w", attr.Value, err) - } - - if len(coins) > 0 { - coin = m.tbM.MapCoin(coins[0]) - } - } - } - - return validator, coin, nil -} diff --git a/modules/distribution/block.go b/modules/distribution/block.go deleted file mode 100644 index 66276ac..0000000 --- a/modules/distribution/block.go +++ /dev/null @@ -1,72 +0,0 @@ -package distribution - -import ( - "context" - - distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - "github.com/pkg/errors" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (m *Module) HandleBlock(ctx context.Context, block *types.Block) error { - // TODO: maybe use consensus client for get correct validators? - - // g, ctx := errgroup.WithContext(ctx) - // g.Go(func() error { - // return m.updateParams(ctx, block.Height) - // }) - - /* - TODO: - UpdateValidatorsCommissionAmounts, - UpdateDelegatorsRewardsAmounts (we need info from some storage for these actions) - */ - - // if err := g.Wait(); err != nil { - // return err - // } - - res, err := m.client.DistributionQueryClient.CommunityPool(ctx, &distrtypes.QueryCommunityPoolRequest{}) - if err != nil { - return errors.Wrap(err, "get CommunityPool error") - } - - // TODO: test it - if err := m.broker.PublishCommunityPool(ctx, model.CommunityPool{ - Height: block.Height, - Coins: m.tbM.MapCoins(types.NewCoinsFromSDKDec(res.Pool)), - }); err != nil { - return errors.Wrap(err, "publish CommunityPool error") - } - - return m.updateParams(ctx, block.Height) -} - -func (m *Module) updateParams(ctx context.Context, height int64) error { - res, err := m.client.DistributionQueryClient.Params( - ctx, - &distrtypes.QueryParamsRequest{}, - grpcClient.GetHeightRequestHeader(height), - ) - if err != nil { - return err - } - - if err := m.broker.PublishDistributionParams(ctx, model.DistributionParams{ - Height: height, - Params: model.RawDistributionParams{ - CommunityTax: res.Params.CommunityTax.MustFloat64(), - BaseProposerReward: res.Params.BaseProposerReward.MustFloat64(), //nolint:staticcheck - BonusProposerReward: res.Params.BonusProposerReward.MustFloat64(), //nolint:staticcheck - WithdrawAddrEnabled: res.Params.WithdrawAddrEnabled, - }, - }); err != nil { - m.log.Error().Int64("height", height).Err(err).Msg("PublishDistributionParams error") - return err - } - - return nil -} diff --git a/modules/distribution/broker.go b/modules/distribution/broker.go deleted file mode 100644 index 7ba2432..0000000 --- a/modules/distribution/broker.go +++ /dev/null @@ -1,19 +0,0 @@ -package distribution - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -type broker interface { - PublishDelegationReward(context.Context, model.DelegationReward) error - PublishDelegationRewardMessage(context.Context, model.DelegationRewardMessage) error - PublishCommunityPool(ctx context.Context, cp model.CommunityPool) error - PublishDistributionParams(ctx context.Context, dp model.DistributionParams) error - PublishSetWithdrawAddressMessage(ctx context.Context, message model.SetWithdrawAddressMessage) error - PublishProposerReward(ctx context.Context, pr model.ProposerReward) error - PublishDistributionCommission(ctx context.Context, commission model.DistributionCommission) error - PublishDistributionReward(ctx context.Context, reward model.DistributionReward) error - PublishWithdrawValidatorCommissionMessage(_ context.Context, wvcm model.WithdrawValidatorCommissionMessage) error -} diff --git a/modules/distribution/message.go b/modules/distribution/message.go deleted file mode 100644 index 0614170..0000000 --- a/modules/distribution/message.go +++ /dev/null @@ -1,200 +0,0 @@ -package distribution - -import ( - "context" - "encoding/base64" - "errors" - "fmt" - - sdk "github.com/cosmos/cosmos-sdk/types" - distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -var ( - errNotFoundTxResult = errors.New("not found tx result by index") -) - -func (m *Module) HandleMessage(ctx context.Context, index int, cosmosMsg sdk.Msg, tx *types.Tx) error { - if len(tx.Logs) == 0 { - return nil - } - - switch msg := cosmosMsg.(type) { - case *distrtypes.MsgWithdrawDelegatorReward: - coin, err := m.findCoinFromEventByValidator(ctx, tx, index, msg.ValidatorAddress) - if err != nil { - if !errors.Is(err, types.ErrNoEventFound) { - return err - } - // pass zero coins - } - - return m.broker.PublishDelegationRewardMessage(ctx, model.DelegationRewardMessage{ - Coins: m.tbM.MapCoins(coin), - Height: tx.Height, - DelegatorAddress: msg.DelegatorAddress, - OperatorAddress: msg.ValidatorAddress, - TxHash: tx.TxHash, - MsgIndex: int64(index), - }) - case *distrtypes.MsgSetWithdrawAddress: - return m.broker.PublishSetWithdrawAddressMessage(ctx, model.SetWithdrawAddressMessage{ - Height: tx.Height, - DelegatorAddress: msg.DelegatorAddress, - WithdrawAddress: msg.WithdrawAddress, - TxHash: tx.TxHash, - MsgIndex: int64(index), - }) - case *distrtypes.MsgWithdrawValidatorCommission: - event, err := tx.FindEventByType(index, distrtypes.EventTypeWithdrawCommission) - if err != nil { - return err - } - - value, err := tx.FindAttributeByKey(event, sdk.AttributeKeyAmount) - if err != nil { - return err - } - - coins := types.Coins{} - if value != "" { - coins, err = utils.ParseCoinsFromString(value) - if err != nil { - m.log.Error(). - Err(err). - Str("tx_hash", tx.TxHash). - Int64("height", tx.Height). - Msg("failed to convert string to coin by MsgWithdrawValidatorCommission height") - return fmt.Errorf("%w failed to convert %s string to coin height:%v", err, value, tx.Height) - } - } - return m.broker.PublishWithdrawValidatorCommissionMessage(ctx, model.WithdrawValidatorCommissionMessage{ - Height: tx.Height, - TxHash: tx.TxHash, - MsgIndex: int64(index), - WithdrawCommission: m.tbM.MapCoins(coins), - OperatorAddress: msg.ValidatorAddress, - }) - } - - return nil -} - -func (m *Module) findCoinFromEventByValidator( - ctx context.Context, - tx *types.Tx, - index int, - validatorAddress string, -) (types.Coins, error) { - - found := false - coins := types.Coins{} - -Events: - for _, ev := range tx.Logs[index].Events { - if ev.Type != distrtypes.EventTypeWithdrawRewards { - continue - } - - for _, attr := range ev.Attributes { - if attr.Key == distrtypes.AttributeKeyValidator && - compareValueInBase64(validatorAddress, attr.Value) { - - found = true - } - - if found && attr.Key == sdk.AttributeKeyAmount { - var err error - coins, err = utils.ParseCoinsFromString(attr.Value) - if err != nil { - return coins, fmt.Errorf("%w failed to convert %s string to coin", err, attr.Value) - } - - break Events - } - } - } - - if !found { - var err error - coins, err = m.findWithdrawRewardInTxEvents(ctx, validatorAddress, index, tx) - if err != nil { - m.log.Warn(). - Str("tx_hash", tx.TxHash). - Int64("height", tx.Height). - Str("event", distrtypes.EventTypeWithdrawRewards). - Msg("not found event in tx") - - return coins, fmt.Errorf("%w: %s inside tx with hash %s", types.ErrNoEventFound, - distrtypes.EventTypeWithdrawRewards, tx.TxHash) - } - } - - return coins, nil -} - -func (m *Module) findWithdrawRewardInTxEvents( - ctx context.Context, - address string, - msgIndex int, - tx *types.Tx, -) (types.Coins, error) { - - txResults, err := m.rpcCli.GetTxResults(ctx, tx.Height) - if err != nil { - return nil, err - } - - if len(txResults)-1 < msgIndex { - return nil, fmt.Errorf("%w: %d", errNotFoundTxResult, msgIndex) - } - - for _, event := range txResults[msgIndex].Events { - if event.Type != distrtypes.EventTypeWithdrawRewards { - continue - } - - for _, attr := range event.Attributes { - if (attr.Key == distrtypes.AttributeKeyValidator || attr.Key == base64KeyValidator) && - compareValueInBase64(address, attr.Value) { - - for _, attr2 := range event.Attributes { - if attr2.Key == sdk.AttributeKeyAmount || attr2.Key == base64KeyAmount { - coins, err := utils.ParseCoinsFromString(attr.Value) - if err != nil { - //nolint:lll - m.log.Error(). - Err(err). - Str("tx_hash", tx.TxHash). - Msg("failed to convert string to coin by MsgWithdrawDelegatorReward") - - //nolint:lll - return coins, fmt.Errorf("%w failed to convert %s string to coin", err, attr.Value) - } - - return coins, nil - } - } - } - } - } - - return nil, types.ErrNoEventFound -} - -func compareValueInBase64(source, target string) bool { - if source == target { - return true - } - - val, err := base64.StdEncoding.DecodeString(target) - if err != nil { - return false - } - - return source == string(val) -} diff --git a/modules/distribution/module.go b/modules/distribution/module.go deleted file mode 100644 index 4dd970b..0000000 --- a/modules/distribution/module.go +++ /dev/null @@ -1,45 +0,0 @@ -package distribution - -import ( - "github.com/cosmos/cosmos-sdk/codec" - "github.com/rs/zerolog" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/client/rpc" - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - tb "github.com/bro-n-bro/spacebox-crawler/pkg/mapper/to_broker" - "github.com/bro-n-bro/spacebox-crawler/types" -) - -const ( - ModuleName = "distribution" -) - -var ( - _ types.Module = &Module{} - _ types.BlockHandler = &Module{} - _ types.MessageHandler = &Module{} - _ types.BeginBlockerHandler = &Module{} -) - -type Module struct { - log *zerolog.Logger - client *grpcClient.Client - rpcCli *rpc.Client - broker broker - tbM tb.ToBroker - cdc codec.Codec -} - -func New(b broker, cli *grpcClient.Client, rpcCli *rpc.Client, tbM tb.ToBroker, cdc codec.Codec) *Module { - return &Module{ - log: utils.NewModuleLogger(ModuleName), - broker: b, - client: cli, - tbM: tbM, - cdc: cdc, - rpcCli: rpcCli, - } -} - -func (m *Module) Name() string { return ModuleName } diff --git a/modules/dmn/block.go b/modules/dmn/block.go deleted file mode 100644 index e7b3582..0000000 --- a/modules/dmn/block.go +++ /dev/null @@ -1,37 +0,0 @@ -package dmn - -import ( - "context" - - dmntypes "github.com/cybercongress/go-cyber/x/dmn/types" - "github.com/pkg/errors" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (m *Module) HandleBlock(ctx context.Context, block *types.Block) error { - paramsResp, err := m.client.DMNQueryClient.Params( - ctx, - &dmntypes.QueryParamsRequest{}, - grpcClient.GetHeightRequestHeader(block.Height), - ) - if err != nil { - m.log.Error().Err(err).Int64("height", block.Height).Msg("error while getting params") - return err - } - - if err = m.broker.PublishDMNParams(ctx, model.DMNParams{ - Height: block.Height, - Params: model.RawDMNParams{ - MaxSlots: int64(paramsResp.Params.MaxSlots), - MaxGas: int64(paramsResp.Params.MaxGas), - FeeTTL: int64(paramsResp.Params.FeeTtl), - }, - }); err != nil { - return errors.Wrap(err, "PublishDMNParams error") - } - - return nil -} diff --git a/modules/dmn/broker.go b/modules/dmn/broker.go deleted file mode 100644 index 6174ad9..0000000 --- a/modules/dmn/broker.go +++ /dev/null @@ -1,11 +0,0 @@ -package dmn - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -type broker interface { - PublishDMNParams(ctx context.Context, mp model.DMNParams) error -} diff --git a/modules/dmn/module.go b/modules/dmn/module.go deleted file mode 100644 index 161b118..0000000 --- a/modules/dmn/module.go +++ /dev/null @@ -1,37 +0,0 @@ -package dmn - -import ( - "github.com/rs/zerolog" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - tb "github.com/bro-n-bro/spacebox-crawler/pkg/mapper/to_broker" - "github.com/bro-n-bro/spacebox-crawler/types" -) - -const ( - ModuleName = "dmn" -) - -var ( - _ types.Module = &Module{} - _ types.BlockHandler = &Module{} -) - -type Module struct { - log *zerolog.Logger - client *grpcClient.Client - broker broker - tbM tb.ToBroker -} - -func New(b broker, cli *grpcClient.Client, tbM tb.ToBroker) *Module { - return &Module{ - log: utils.NewModuleLogger(ModuleName), - broker: b, - client: cli, - tbM: tbM, - } -} - -func (m *Module) Name() string { return ModuleName } diff --git a/modules/feegrant/broker.go b/modules/feegrant/broker.go deleted file mode 100644 index 9e34925..0000000 --- a/modules/feegrant/broker.go +++ /dev/null @@ -1,13 +0,0 @@ -package feegrant - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -type broker interface { - PublishFeeAllowance(context.Context, model.FeeAllowance) error - PublishGrantAllowanceMessage(context.Context, model.GrantAllowanceMessage) error - PublishRevokeAllowanceMessage(context.Context, model.RevokeAllowanceMessage) error -} diff --git a/modules/feegrant/message.go b/modules/feegrant/message.go deleted file mode 100644 index 2d7559f..0000000 --- a/modules/feegrant/message.go +++ /dev/null @@ -1,128 +0,0 @@ -package feegrant - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - feegranttypes "github.com/cosmos/cosmos-sdk/x/feegrant" - "github.com/pkg/errors" - - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (m *Module) HandleMessage(ctx context.Context, index int, cosmosMsg sdk.Msg, tx *types.Tx) error { - if len(tx.Logs) == 0 { - return nil - } - - switch msg := cosmosMsg.(type) { - case *feegranttypes.MsgGrantAllowance: - var allowance feegranttypes.FeeAllowanceI - if err := m.cdc.UnpackAny(msg.Allowance, &allowance); err != nil { - return err - } - - ex, err := allowance.ExpiresAt() - if err != nil { - return err - } - - data, err := m.cdc.MarshalJSON(msg.Allowance) - if err != nil { - return err - } - - if err = m.broker.PublishGrantAllowanceMessage(ctx, model.GrantAllowanceMessage{ - Height: tx.Height, - MsgIndex: int64(index), - TxHash: tx.TxHash, - Granter: msg.Granter, - Grantee: msg.Grantee, - Expiration: utils.TimeFromPtr(ex), - Allowance: data, - }); err != nil { - m.log.Err(err).Int64("height", tx.Height).Msg("error while publishing grant allowance message") - return err - } - - if err = m.publishFeeAllowance(ctx, tx.Height, msg.Granter, msg.Grantee); err != nil { - m.log.Err(err). - Int64("height", tx.Height). - Str("message", "MsgGrantAllowance"). - Msg("error while publishing fee allowance") - return err - } - - case *feegranttypes.MsgRevokeAllowance: - if err := m.broker.PublishRevokeAllowanceMessage(ctx, model.RevokeAllowanceMessage{ - Height: tx.Height, - MsgIndex: int64(index), - TxHash: tx.TxHash, - Granter: msg.Granter, - Grantee: msg.Grantee, - }); err != nil { - m.log.Err(err).Int64("height", tx.Height).Msg("error while publishing grant allowance message") - return err - } - - if err := m.publishFeeAllowance(ctx, tx.Height, msg.Granter, msg.Grantee); err != nil { - m.log.Err(err). - Int64("height", tx.Height). - Str("message", "MsgRevokeAllowance"). - Msg("error while publishing fee allowance") - return err - } - } - - return nil -} - -func (m *Module) publishFeeAllowance(ctx context.Context, height int64, granter, grantee string) error { - respPb, err := m.client.FeegrantQueryClient.Allowance(ctx, &feegranttypes.QueryAllowanceRequest{ - Granter: granter, - Grantee: grantee, - }) - if err != nil { - // set fee allowance to inactive if it was not found - if err.Error() == "rpc error: code = Internal desc = fee-grant not found: unauthorized" { //nolint:misspell - m.log.Debug(). - Str("granter", granter). - Str("grantee", grantee). - Int64("height", height). - Msg("fee allowance not found, setting to inactive") - - return m.broker.PublishFeeAllowance(ctx, model.FeeAllowance{ - Granter: granter, - Grantee: grantee, - Height: height, - }) - } - - return errors.Wrap(err, "error while querying fee allowance") - } - - allowanceBytes, err := m.cdc.MarshalJSON(respPb.Allowance) - if err != nil { - return err - } - - var allowance feegranttypes.FeeAllowanceI - if err = m.cdc.UnpackAny(respPb.Allowance.Allowance, &allowance); err != nil { - return err - } - - ex, err := allowance.ExpiresAt() - if err != nil { - return err - } - - return m.broker.PublishFeeAllowance(ctx, model.FeeAllowance{ - Granter: granter, - Grantee: grantee, - Allowance: allowanceBytes, - Expiration: utils.TimeFromPtr(ex), - Height: height, - }) -} diff --git a/modules/feegrant/module.go b/modules/feegrant/module.go deleted file mode 100644 index 6de5991..0000000 --- a/modules/feegrant/module.go +++ /dev/null @@ -1,40 +0,0 @@ -package feegrant - -import ( - "github.com/cosmos/cosmos-sdk/codec" - "github.com/rs/zerolog" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - tb "github.com/bro-n-bro/spacebox-crawler/pkg/mapper/to_broker" - "github.com/bro-n-bro/spacebox-crawler/types" -) - -const ( - ModuleName = "feegrant" -) - -var ( - _ types.Module = &Module{} - _ types.MessageHandler = &Module{} -) - -type Module struct { - log *zerolog.Logger - client *grpcClient.Client - broker broker - tbM tb.ToBroker - cdc codec.Codec -} - -func New(b broker, cli *grpcClient.Client, tbM tb.ToBroker, cdc codec.Codec) *Module { - return &Module{ - log: utils.NewModuleLogger(ModuleName), - broker: b, - client: cli, - tbM: tbM, - cdc: cdc, - } -} - -func (m *Module) Name() string { return ModuleName } diff --git a/modules/gov/block.go b/modules/gov/block.go deleted file mode 100644 index 11b9c92..0000000 --- a/modules/gov/block.go +++ /dev/null @@ -1,86 +0,0 @@ -package bank - -import ( - "context" - - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (m *Module) HandleBlock(ctx context.Context, block *types.Block) error { - header := grpcClient.GetHeightRequestHeader(block.Height) - - respDeposit, err := m.client.GovQueryClient.Params( - ctx, - &govtypes.QueryParamsRequest{ParamsType: govtypes.ParamDeposit}, - header, - ) - if err != nil { - return err - } - - respVoting, err := m.client.GovQueryClient.Params( - ctx, - &govtypes.QueryParamsRequest{ParamsType: govtypes.ParamVoting}, - header, - ) - if err != nil { - return err - } - - respTally, err := m.client.GovQueryClient.Params( - ctx, - &govtypes.QueryParamsRequest{ParamsType: govtypes.ParamTallying}, - header, - ) - if err != nil { - return err - } - - // TODO: UpdateProposal - - // TODO: test it - // TODO: maybe check diff from mongo in my side? - return m.broker.PublishGovParams(ctx, model.GovParams{ - DepositParams: model.DepositParams{ - MinDeposit: m.tbM.MapCoins(types.NewCoinsFromSDK(respDeposit.DepositParams.MinDeposit)), - MaxDepositPeriod: respDeposit.DepositParams.MaxDepositPeriod.Nanoseconds(), - }, - VotingParams: model.VotingParams{ - VotingPeriod: respVoting.VotingParams.VotingPeriod.Nanoseconds(), - }, - TallyParams: model.TallyParams{ - Quorum: respTally.TallyParams.Quorum.MustFloat64(), - Threshold: respTally.TallyParams.Threshold.MustFloat64(), - VetoThreshold: respTally.TallyParams.VetoThreshold.MustFloat64(), - }, - Height: block.Height, - }) -} - -// updateProposals updates the proposals -// TODO: how to update it? -// func (m *Module) updateProposals(ctx context.Context, height int64, blockVals *tmctypes.ResultValidators) error { -// var ids []uint64 -// // ids, err := GetOpenProposalsIds() -// // if err != nil { -// // return err -// // } -// -// if len(ids) > 0 { -// clients := govutils.NewUpdateProposalClients(m.client.GovQueryClient, m.client.BankQueryClient, -// m.client.StakingQueryClient) -// -// for _, id := range ids { -// err := govutils.UpdateProposal(ctx, height, blockVals, id, clients, m.cdc, m.tbM, m.broker) -// if err != nil { -// return err -// } -// } -// } -// -// return nil -// } diff --git a/modules/gov/broker.go b/modules/gov/broker.go deleted file mode 100644 index c0d8bb7..0000000 --- a/modules/gov/broker.go +++ /dev/null @@ -1,18 +0,0 @@ -package bank - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -type broker interface { - PublishProposal(ctx context.Context, proposal model.Proposal) error - PublishGovParams(ctx context.Context, params model.GovParams) error - PublishProposalDeposit(ctx context.Context, pvm model.ProposalDeposit) error - PublishProposalDepositMessage(ctx context.Context, pvm model.ProposalDepositMessage) error - PublishProposalVoteMessage(context.Context, model.ProposalVoteMessage) error - PublishProposalTallyResult(ctx context.Context, ptr model.ProposalTallyResult) error - PublishSubmitProposalMessage(ctx context.Context, spm model.SubmitProposalMessage) error - PublishVoteWeightedMessage(ctx context.Context, vwm model.VoteWeightedMessage) error -} diff --git a/modules/gov/end_blocker.go b/modules/gov/end_blocker.go deleted file mode 100644 index c1c1746..0000000 --- a/modules/gov/end_blocker.go +++ /dev/null @@ -1,67 +0,0 @@ -package bank - -import ( - "context" - "encoding/base64" - "strconv" - - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - "github.com/bro-n-bro/spacebox-crawler/types" -) - -var ( - base64KeyProposalID = base64.StdEncoding.EncodeToString([]byte(govtypes.AttributeKeyProposalID)) -) - -func (m *Module) HandleEndBlocker(ctx context.Context, eventsMap types.BlockerEvents, height int64) error { - events, ok := eventsMap[govtypes.EventTypeActiveProposal] - if !ok { - return nil - } - - for _, event := range events { - if len(event.Attributes) < 1 { - m.log.Warn(). - Int64("height", height). - Str("handler", "HandleEndBlocker"). - Msg("not enough attributes in event") - continue - } - - for _, attr := range event.Attributes { - if attr.Key == govtypes.AttributeKeyProposalID && attr.Key != base64KeyProposalID { - continue - } - - // try to decode value if needed - if attr.Key == base64KeyProposalID { - var err error - attr.Value, err = utils.DecodeToString(attr.Value) - if err != nil { - return err - } - } - - pID, err := strconv.ParseUint(attr.Value, 10, 64) - if err != nil { - m.log.Error().Err(err).Str("handler", "HandleEndBlocker").Msg("parse uint error") - return err - } - - if err = m.getAndPublishProposal(ctx, pID, ""); err != nil { - m.log.Error(). - Err(err). - Int64("height", height). - Str("handler", "HandleEndBlocker"). - Msg("get and publish proposal error") - return err - } - - return m.getAndPublishTallyResult(ctx, pID, height) - } - } - - return nil -} diff --git a/modules/gov/genesis.go b/modules/gov/genesis.go deleted file mode 100644 index a5b94a9..0000000 --- a/modules/gov/genesis.go +++ /dev/null @@ -1,84 +0,0 @@ -package bank - -import ( - "context" - "encoding/json" - "fmt" - - cometbfttypes "github.com/cometbft/cometbft/types" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - govtypesv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (m *Module) HandleGenesis(ctx context.Context, _ *cometbfttypes.GenesisDoc, appState map[string]json.RawMessage) error { - // Read the genesis state - var genState govtypesv1beta1.GenesisState - if err := m.cdc.UnmarshalJSON(appState[govtypes.ModuleName], &genState); err != nil { - return fmt.Errorf("error while reading gov genesis data: %w", err) - } - - if err := m.publishProposals(ctx, genState.Proposals); err != nil { - return fmt.Errorf("error while saving genesis proposal data: %w", err) - } - - return nil -} - -// publishProposals publishes proposals from genesis state to the broker. -func (m *Module) publishProposals(ctx context.Context, proposals govtypesv1beta1.Proposals) error { - for _, proposal := range proposals { - // Since it's not possible to get the proposer, set it to nil - content := proposal.GetContent() - - contentBytes, err := getProposalContentBytes(content, m.cdc) - if err != nil { - return err - } - - // TODO: test it - if err = m.broker.PublishProposal(ctx, model.Proposal{ - ID: proposal.ProposalId, - Title: content.GetTitle(), - Description: content.GetDescription(), - ProposalRoute: content.ProposalRoute(), - ProposalType: content.ProposalType(), - ProposerAddress: "", - Status: proposal.Status.String(), - Content: contentBytes, - SubmitTime: proposal.SubmitTime, - DepositEndTime: proposal.DepositEndTime, - VotingStartTime: proposal.VotingStartTime, - VotingEndTime: proposal.VotingEndTime, - }); err != nil { - return err - } - - // TODO: test it - // Publish tally results - if err := m.broker.PublishProposalTallyResult(ctx, model.ProposalTallyResult{ - ProposalID: proposal.ProposalId, - Height: 1, - Yes: proposal.FinalTallyResult.Yes.Int64(), - Abstain: proposal.FinalTallyResult.Abstain.Int64(), - No: proposal.FinalTallyResult.No.Int64(), - NoWithVeto: proposal.FinalTallyResult.NoWithVeto.Int64(), - }); err != nil { - return err - } - - // Publish proposal deposits - if err := m.broker.PublishProposalDeposit(ctx, model.ProposalDeposit{ - ProposalID: proposal.ProposalId, - Height: 1, - DepositorAddress: "", - Coins: m.tbM.MapCoins(types.NewCoinsFromSDK(proposal.TotalDeposit)), - }); err != nil { - return err - } - } - - return nil -} diff --git a/modules/gov/message.go b/modules/gov/message.go deleted file mode 100644 index 0008d47..0000000 --- a/modules/gov/message.go +++ /dev/null @@ -1,245 +0,0 @@ -package bank - -import ( - "context" - "fmt" - "strconv" - - sdk "github.com/cosmos/cosmos-sdk/types" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - govtypesv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -const ( - errDepositerNotFoundForProposal = `rpc error: code = %s desc = depositer: %s not found for proposal: %d` -) - -func (m *Module) HandleMessage(ctx context.Context, index int, cosmosMsg sdk.Msg, tx *types.Tx) error { - if len(tx.Logs) == 0 { - return nil - } - - switch msg := cosmosMsg.(type) { - case *govtypesv1beta1.MsgSubmitProposal: - return m.handleMsgSubmitProposal(ctx, tx, index, msg) - case *govtypesv1beta1.MsgDeposit: - return m.handleMsgDeposit(ctx, tx, index, msg) - case *govtypesv1beta1.MsgVote: - return m.handleMsgVote(ctx, tx, index, msg) - case *govtypesv1beta1.MsgVoteWeighted: - return m.handlerMsgVoteWeighted(ctx, tx, index, msg) - } - - return nil -} - -// handleMsgSubmitProposal handles a handleMsgSubmitProposal -// publishes proposal, proposalDeposit and proposalDepositMessage to the broker. -func (m *Module) handleMsgSubmitProposal(ctx context.Context, tx *types.Tx, index int, - msg *govtypesv1beta1.MsgSubmitProposal) error { - // Get the proposal id - event, err := tx.FindEventByType(index, govtypes.EventTypeSubmitProposal) - if err != nil { - return err - } - - id, err := tx.FindAttributeByKey(event, govtypes.AttributeKeyProposalID) - if err != nil { - return err - } - - proposalID, err := strconv.ParseUint(id, 10, 64) - if err != nil { - m.log.Error().Err(err).Str("handler", "handleMsgSubmitProposal").Msg("parse uint error") - return err - } - var content govtypesv1beta1.Content - if err = m.cdc.UnpackAny(msg.Content, &content); err != nil { - return err - } - - if err = m.broker.PublishSubmitProposalMessage(ctx, model.SubmitProposalMessage{ - Height: tx.Height, - TxHash: tx.TxHash, - MsgIndex: int64(index), - Proposer: msg.Proposer, - InitialDeposit: m.tbM.MapCoins(types.NewCoinsFromSDK(msg.InitialDeposit)), - Title: content.GetTitle(), - Description: content.GetDescription(), - Type: content.ProposalType(), - ProposalID: proposalID, - }); err != nil { - return err - } - - if err = m.getAndPublishProposal(ctx, proposalID, msg.Proposer); err != nil { - return err - } - - // publish the deposit - // TODO: test it - if err = m.broker.PublishProposalDeposit(ctx, model.ProposalDeposit{ - ProposalID: proposalID, - Height: tx.Height, - DepositorAddress: msg.Proposer, - Coins: m.tbM.MapCoins(types.NewCoinsFromSDK(msg.InitialDeposit)), - }); err != nil { - return err - } - - // TODO: test it - if err = m.broker.PublishProposalDepositMessage(ctx, model.ProposalDepositMessage{ - ProposalDeposit: model.ProposalDeposit{ - ProposalID: proposalID, - Height: tx.Height, - DepositorAddress: msg.Proposer, - Coins: m.tbM.MapCoins(types.NewCoinsFromSDK(msg.InitialDeposit)), - }, - TxHash: tx.TxHash, - MsgIndex: int64(index), - }); err != nil { - return err - } - - return nil -} - -// handleMsgDeposit handles a MsgDeposit message. -// Publishes proposalDeposit and proposalDepositMessage data to the broker. -func (m *Module) handleMsgDeposit(ctx context.Context, tx *types.Tx, index int, msg *govtypesv1beta1.MsgDeposit) error { - if err := m.getAndPublishProposal(ctx, msg.ProposalId, ""); err != nil { - return err - } - - if err := m.broker.PublishProposalDepositMessage(ctx, model.ProposalDepositMessage{ - ProposalDeposit: model.ProposalDeposit{ - ProposalID: msg.ProposalId, - DepositorAddress: msg.Depositor, - Height: tx.Height, - Coins: m.tbM.MapCoins(types.NewCoinsFromSDK(msg.Amount)), - }, - TxHash: tx.TxHash, - MsgIndex: int64(index), - }); err != nil { - return err - } - - res, err := m.client.GovQueryClient.Deposit( - ctx, - &govtypesv1beta1.QueryDepositRequest{ProposalId: msg.ProposalId, Depositor: msg.Depositor}, - grpcClient.GetHeightRequestHeader(tx.Height), - ) - if err != nil { - var code string - if _, err = fmt.Sscanf( - err.Error(), - errDepositerNotFoundForProposal, - &code, &msg.Depositor, &msg.ProposalId, - ); err != nil { - return err - } - - if code == codes.InvalidArgument.String() { - return nil - } - - return fmt.Errorf("error while getting proposal deposit: %w", err) - } - - if err = m.broker.PublishProposalDeposit(ctx, model.ProposalDeposit{ - ProposalID: msg.ProposalId, - DepositorAddress: msg.Depositor, - Height: tx.Height, - Coins: m.tbM.MapCoins(types.NewCoinsFromSDK(res.Deposit.Amount)), - }); err != nil { - return err - } - - return nil -} - -// handleMsgVote handles a MsgVote message. -// Publishes proposalVoteMessage and proposalTallyResult data to the broker. -func (m *Module) handleMsgVote(ctx context.Context, tx *types.Tx, index int, msg *govtypesv1beta1.MsgVote) error { - // TODO: TEST IT - if err := m.broker.PublishProposalVoteMessage(ctx, model.ProposalVoteMessage{ - ProposalID: msg.ProposalId, - Height: tx.Height, - VoterAddress: msg.Voter, - Option: msg.Option.String(), - TxHash: tx.TxHash, - MsgIndex: int64(index), - }); err != nil { - m.log.Error().Err(err).Msg("error while publishing proposal vote message") - return err - } - - return m.getAndPublishTallyResult(ctx, msg.ProposalId, tx.Height) -} - -// handlerMsgVoteWeighted handles MsgVoteWeighted message. -// Gets tallyResult data from node and publishes it to the broker. -func (m *Module) handlerMsgVoteWeighted( - ctx context.Context, - tx *types.Tx, - index int, - msg *govtypesv1beta1.MsgVoteWeighted) error { - - weightedVoteOptions := make([]model.WeightedVoteOption, 0, len(msg.Options)) - for _, v := range msg.Options { - w, err := v.Weight.Float64() - if err != nil { - m.log.Error().Err(err).Int64("height", tx.Height).Str( - "function", "handlerMsgVoteWeighted").Msg( - "cannot convert weight to float64", - ) - return err - } - weightedVoteOptions = append(weightedVoteOptions, model.WeightedVoteOption{ - Option: int32(v.Option), - Weight: w, - }) - } - if err := m.broker.PublishVoteWeightedMessage(ctx, model.VoteWeightedMessage{ - Height: tx.Height, - TxHash: tx.TxHash, - MsgIndex: int64(index), - ProposalId: msg.ProposalId, - Voter: msg.Voter, - WeightedVoteOption: weightedVoteOptions, - }); err != nil { - m.log.Error().Err(err).Int64("height", tx.Height).Msg("error while publishing vote weighted message") - return err - } - - if m.tallyCache != nil && !m.tallyCache.UpdateCacheValue(msg.ProposalId, tx.Height) { - return nil - } - - respPb, err := m.client.GovQueryClient.TallyResult( - ctx, - &govtypesv1beta1.QueryTallyResultRequest{ProposalId: msg.ProposalId}, - ) - - if err != nil { - status, ok := status.FromError(err) - if ok && status.Code() == codes.NotFound { - return nil - } - return err - } - return m.broker.PublishProposalTallyResult(ctx, model.ProposalTallyResult{ - ProposalID: msg.ProposalId, - Yes: respPb.Tally.Yes.Int64(), - No: respPb.Tally.No.Int64(), - Abstain: respPb.Tally.Abstain.Int64(), - NoWithVeto: respPb.Tally.NoWithVeto.Int64(), - Height: tx.Height, - }) -} diff --git a/modules/gov/module.go b/modules/gov/module.go deleted file mode 100644 index a440eff..0000000 --- a/modules/gov/module.go +++ /dev/null @@ -1,61 +0,0 @@ -package bank - -import ( - "github.com/cosmos/cosmos-sdk/codec" - "github.com/rs/zerolog" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - tb "github.com/bro-n-bro/spacebox-crawler/pkg/mapper/to_broker" - "github.com/bro-n-bro/spacebox-crawler/types" -) - -const ( - ModuleName = "gov" -) - -var ( - _ types.Module = &Module{} - _ types.GenesisHandler = &Module{} - _ types.BlockHandler = &Module{} - _ types.MessageHandler = &Module{} - _ types.EndBlockerHandler = &Module{} -) - -type ( - TallyCache[K, V comparable] interface { - UpdateCacheValue(K, V) bool - } - - Module struct { - log *zerolog.Logger - client *grpcClient.Client - broker broker - tbM tb.ToBroker - cdc codec.Codec - - tallyCache TallyCache[uint64, int64] - } -) - -func New(b broker, cli *grpcClient.Client, tbM tb.ToBroker, cdc codec.Codec) *Module { - m := &Module{ - log: utils.NewModuleLogger(ModuleName), - broker: b, - client: cli, - tbM: tbM, - cdc: cdc, - } - - return m -} - -func (m *Module) Name() string { return ModuleName } - -func (m *Module) WithTallyCache(cache TallyCache[uint64, int64]) *Module { - if cache != nil { - m.tallyCache = cache - } - - return m -} diff --git a/modules/gov/utils.go b/modules/gov/utils.go deleted file mode 100644 index 505d965..0000000 --- a/modules/gov/utils.go +++ /dev/null @@ -1,114 +0,0 @@ -package bank - -import ( - "context" - "errors" - "fmt" - - "github.com/cosmos/cosmos-sdk/codec" - codectypes "github.com/cosmos/cosmos-sdk/codec/types" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - "github.com/cosmos/gogoproto/proto" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -var ( - errInvalidProposalContent = errors.New("invalid proposal content type") -) - -func (m *Module) getAndPublishProposal(ctx context.Context, proposalID uint64, proposer string) error { - proposalResp, err := m.client.GovQueryClient.Proposal(ctx, &govtypes.QueryProposalRequest{ProposalId: proposalID}) - if err != nil { - status, ok := status.FromError(err) - if ok && status.Code() == codes.NotFound { - m.log.Warn().Uint64("proposal_id", proposalID).Msg("proposal not found") - return nil - } - return err - } - - proposal := proposalResp.Proposal - - // Unpack the content - var content govtypes.Content - if err = m.cdc.UnpackAny(proposal.Content, &content); err != nil { - return err - } - - contentBytes, err := getProposalContentBytes(content, m.cdc) - if err != nil { - return err - } - - return m.broker.PublishProposal(ctx, model.Proposal{ - ID: proposal.ProposalId, - Title: content.GetTitle(), - Description: content.GetDescription(), - ProposalRoute: proposal.ProposalRoute(), - ProposalType: proposal.ProposalType(), - ProposerAddress: proposer, - Status: proposal.Status.String(), - Content: contentBytes, - SubmitTime: proposal.SubmitTime, - DepositEndTime: proposal.DepositEndTime, - VotingStartTime: proposal.VotingStartTime, - VotingEndTime: proposal.VotingEndTime, - }) -} - -func getProposalContentBytes(content govtypes.Content, cdc codec.Codec) ([]byte, error) { - // Encode the content properly - protoContent, ok := content.(proto.Message) - if !ok { - return nil, fmt.Errorf("%w: %T", errInvalidProposalContent, content) - } - - anyContent, err := codectypes.NewAnyWithValue(protoContent) - if err != nil { - return nil, err - } - - return cdc.MarshalJSON(anyContent) -} - -func (m *Module) getAndPublishTallyResult(ctx context.Context, proposalID uint64, height int64) error { - // publish only newest heights - if m.tallyCache != nil && !m.tallyCache.UpdateCacheValue(proposalID, height) { - return nil - } - - respPb, err := m.client.GovQueryClient.TallyResult( - ctx, - &govtypes.QueryTallyResultRequest{ProposalId: proposalID}, - ) - - if err != nil { - status, ok := status.FromError(err) - if ok && status.Code() == codes.NotFound { - m.log.Warn().Uint64("proposal_id", proposalID).Msg("tally result not found") - return nil - } - m.log.Error().Err(err). - Str("handler", "HandleEndBlocker"). - Msg("failed to get proposal tally result") - - return err - } - - if err := m.broker.PublishProposalTallyResult(ctx, model.ProposalTallyResult{ - ProposalID: proposalID, - Yes: respPb.Tally.Yes.Int64(), - No: respPb.Tally.No.Int64(), - Abstain: respPb.Tally.Abstain.Int64(), - NoWithVeto: respPb.Tally.NoWithVeto.Int64(), - Height: height, - }); err != nil { - m.log.Error().Err(err).Msg("error while publishing proposal tally result") - return err - } - - return nil -} diff --git a/modules/graph/broker.go b/modules/graph/broker.go deleted file mode 100644 index 6f36e35..0000000 --- a/modules/graph/broker.go +++ /dev/null @@ -1,13 +0,0 @@ -package graph - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -type broker interface { - PublishCyberlink(context.Context, model.Cyberlink) error - PublishCyberlinkMessage(context.Context, model.CyberlinkMessage) error - PublishParticle(context.Context, model.Particle) error -} diff --git a/modules/graph/message.go b/modules/graph/message.go deleted file mode 100644 index 7359c87..0000000 --- a/modules/graph/message.go +++ /dev/null @@ -1,66 +0,0 @@ -package graph - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - graph "github.com/cybercongress/go-cyber/x/graph/types" - "github.com/pkg/errors" - - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -const ( - msgErrorPublishingCyberLinkMessage = "error while publishing cyber_link message" - msgErrorPublishingCyberLink = "error while publishing cyber_link" - msgErrorPublishingParticle = "error while publishing particle" -) - -func (m *Module) HandleMessage(ctx context.Context, index int, bostromMsg sdk.Msg, tx *types.Tx) error { - if len(tx.Logs) == 0 { - return nil - } - - switch msg := bostromMsg.(type) { //nolint:gocritic - case *graph.MsgCyberlink: - for i, link := range msg.Links { - if err := m.broker.PublishCyberlinkMessage(ctx, model.CyberlinkMessage{ - ParticleFrom: link.From, // - ParticleTo: link.To, // - Neuron: msg.Neuron, // - TxHash: tx.TxHash, // - Height: tx.Height, // - MsgIndex: int64(index), // - LinkIndex: int64(i), // - }); err != nil { - return errors.Wrap(err, msgErrorPublishingCyberLinkMessage) - } - - if err := m.broker.PublishCyberlink(ctx, model.Cyberlink{ - ParticleFrom: link.From, // - ParticleTo: link.To, // - Neuron: msg.Neuron, // - TxHash: tx.TxHash, // - Height: tx.Height, // - Timestamp: tx.Timestamp, // - }); err != nil { - return errors.Wrap(err, msgErrorPublishingCyberLink) - } - - for _, particle := range []string{link.From, link.To} { - if err := m.broker.PublishParticle(ctx, model.Particle{ - Particle: particle, // - Neuron: msg.Neuron, // - Timestamp: tx.Timestamp, // - TxHash: tx.TxHash, // - Height: tx.Height, // - }); err != nil { - return errors.Wrap(err, msgErrorPublishingParticle) - } - } - } - } - - return nil -} diff --git a/modules/graph/module.go b/modules/graph/module.go deleted file mode 100644 index 773cf51..0000000 --- a/modules/graph/module.go +++ /dev/null @@ -1,42 +0,0 @@ -package graph - -import ( - "github.com/cosmos/cosmos-sdk/codec" - "github.com/rs/zerolog" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - tb "github.com/bro-n-bro/spacebox-crawler/pkg/mapper/to_broker" - "github.com/bro-n-bro/spacebox-crawler/types" -) - -const ( - ModuleName = "graph" -) - -var ( - _ types.Module = &Module{} - _ types.MessageHandler = &Module{} -) - -type ( - Module struct { - log *zerolog.Logger - broker broker - tbM tb.ToBroker - cdc codec.Codec - cli *grpcClient.Client - } -) - -func New(b broker, tbM tb.ToBroker, cdc codec.Codec, cli *grpcClient.Client) *Module { - return &Module{ - log: utils.NewModuleLogger(ModuleName), - broker: b, - tbM: tbM, - cdc: cdc, - cli: cli, - } -} - -func (m *Module) Name() string { return ModuleName } diff --git a/modules/grid/block.go b/modules/grid/block.go deleted file mode 100644 index 4d2b3d6..0000000 --- a/modules/grid/block.go +++ /dev/null @@ -1,35 +0,0 @@ -package grid - -import ( - "context" - - gridtypes "github.com/cybercongress/go-cyber/x/grid/types" - "github.com/pkg/errors" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (m *Module) HandleBlock(ctx context.Context, block *types.Block) error { - paramsResp, err := m.client.GridQueryClient.Params( - ctx, - &gridtypes.QueryParamsRequest{}, - grpcClient.GetHeightRequestHeader(block.Height), - ) - if err != nil { - m.log.Error().Err(err).Int64("height", block.Height).Msg("error while getting params") - return err - } - - if err = m.broker.PublishGridParams(ctx, model.GridParams{ - Height: block.Height, - Params: model.RawGridParams{ - MaxRoutes: int64(paramsResp.Params.MaxRoutes), - }, - }); err != nil { - return errors.Wrap(err, "PublishGridParams error") - } - - return nil -} diff --git a/modules/grid/broker.go b/modules/grid/broker.go deleted file mode 100644 index 616b5ec..0000000 --- a/modules/grid/broker.go +++ /dev/null @@ -1,16 +0,0 @@ -package grid - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -type broker interface { - PublishGridParams(context.Context, model.GridParams) error - PublishRoute(context.Context, model.Route) error - PublishCreateRouteMessage(context.Context, model.CreateRouteMessage) error - PublishEditRouteMessage(context.Context, model.EditRouteMessage) error - PublishEditRouteNameMessage(context.Context, model.EditRouteNameMessage) error - PublishDeleteRouteMessage(context.Context, model.DeleteRouteMessage) error -} diff --git a/modules/grid/message.go b/modules/grid/message.go deleted file mode 100644 index 78745c5..0000000 --- a/modules/grid/message.go +++ /dev/null @@ -1,135 +0,0 @@ -package grid - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - grid "github.com/cybercongress/go-cyber/x/grid/types" - "github.com/pkg/errors" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -const ( - msgErrorPublishingCreateRouteMessage = "error while publishing create_route message" - msgErrorPublishingEditRouteMessage = "error while publishing edit_route message" - msgErrorPublishingEditRouteNameMessage = "error while publishing edit_route_name message" - msgErrorPublishingDeleteRouteMessage = "error while publishing delete_route message" -) - -func (m *Module) HandleMessage(ctx context.Context, index int, bostromMsg sdk.Msg, tx *types.Tx) error { - if len(tx.Logs) == 0 { - return nil - } - - switch msg := bostromMsg.(type) { - case *grid.MsgCreateRoute: - if err := m.broker.PublishCreateRouteMessage(ctx, model.CreateRouteMessage{ - Source: msg.Source, - Destination: msg.Destination, - Name: msg.Name, - TxHash: tx.TxHash, - Height: tx.Height, - MsgIndex: int64(index), - }); err != nil { - return errors.Wrap(err, msgErrorPublishingCreateRouteMessage) - } - - return m.getAndPublishRoute(ctx, tx.TxHash, msg.Source, msg.Destination, tx.Timestamp, tx.Height) - - case *grid.MsgEditRoute: - if err := m.broker.PublishEditRouteMessage(ctx, model.EditRouteMessage{ - Value: m.tbM.MapCoin(types.NewCoinFromSDK(msg.Value)), - Source: msg.Source, - Destination: msg.Destination, - TxHash: tx.TxHash, - Height: tx.Height, - MsgIndex: int64(index), - }); err != nil { - return errors.Wrap(err, msgErrorPublishingEditRouteMessage) - } - - return m.getAndPublishRoute(ctx, tx.TxHash, msg.Source, msg.Destination, tx.Timestamp, tx.Height) - - case *grid.MsgEditRouteName: - if err := m.broker.PublishEditRouteNameMessage(ctx, model.EditRouteNameMessage{ - Source: msg.Source, - Destination: msg.Destination, - Name: msg.Name, - TxHash: tx.TxHash, - Height: tx.Height, - MsgIndex: int64(index), - }); err != nil { - return errors.Wrap(err, msgErrorPublishingEditRouteNameMessage) - } - - return m.getAndPublishRoute(ctx, tx.TxHash, msg.Source, msg.Destination, tx.Timestamp, tx.Height) - - case *grid.MsgDeleteRoute: - if err := m.broker.PublishDeleteRouteMessage(ctx, model.DeleteRouteMessage{ - Source: msg.Source, - Destination: msg.Destination, - TxHash: tx.TxHash, - Height: tx.Height, - MsgIndex: int64(index), - }); err != nil { - return errors.Wrap(err, msgErrorPublishingDeleteRouteMessage) - } - - return m.getAndPublishRoute(ctx, tx.TxHash, msg.Source, msg.Destination, tx.Timestamp, tx.Height) - } - - return nil -} - -func (m *Module) getAndPublishRoute(ctx context.Context, tx, source, destination, ts string, height int64) error { - var ( - key = source + "-" + destination - isActive = true - value model.Coins - alias string - ) - - // publish only newest heights - if m.routeCache != nil && !m.routeCache.UpdateCacheValue(key, height) { - return nil - } - - route, err := m.client.GridQueryClient.Route(ctx, &grid.QueryRouteRequest{ - Source: source, - Destination: destination, - }) - - if err != nil { - if s, ok := status.FromError(err); !ok || s.Code() != codes.NotFound { - m.log.Error().Err(err). - Str("source", source). - Str("destination", destination). - Msg("error while getting route") - - return err - } - - isActive = false - } - - // case when route is not found - if route != nil { - value = m.tbM.MapCoins(types.NewCoinsFromSDK(route.Route.Value)) - alias = route.Route.Name - } - - return m.broker.PublishRoute(ctx, model.Route{ - Value: value, - Source: source, - Destination: destination, - Alias: alias, - Timestamp: ts, - TxHash: tx, - Height: height, - IsActive: isActive, - }) -} diff --git a/modules/grid/module.go b/modules/grid/module.go deleted file mode 100644 index e1048f2..0000000 --- a/modules/grid/module.go +++ /dev/null @@ -1,51 +0,0 @@ -package grid - -import ( - "github.com/rs/zerolog" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - tb "github.com/bro-n-bro/spacebox-crawler/pkg/mapper/to_broker" - "github.com/bro-n-bro/spacebox-crawler/types" -) - -const ( - ModuleName = "grid" -) - -var ( - _ types.Module = &Module{} - _ types.BlockHandler = &Module{} - _ types.MessageHandler = &Module{} -) - -type ( - RouteCache[K, V comparable] interface{ UpdateCacheValue(K, V) bool } - - Module struct { - log *zerolog.Logger - client *grpcClient.Client - broker broker - tbM tb.ToBroker - routeCache RouteCache[string, int64] - } -) - -func New(b broker, cli *grpcClient.Client, tbM tb.ToBroker) *Module { - return &Module{ - log: utils.NewModuleLogger(ModuleName), - broker: b, - client: cli, - tbM: tbM, - } -} - -func (m *Module) Name() string { return ModuleName } - -func (m *Module) WithCache(cache RouteCache[string, int64]) *Module { - if cache != nil { - m.routeCache = cache - } - - return m -} diff --git a/modules/ibc/block.go b/modules/ibc/block.go deleted file mode 100644 index b2863d1..0000000 --- a/modules/ibc/block.go +++ /dev/null @@ -1,110 +0,0 @@ -package ibc - -import ( - "context" - "strings" - "sync" - - "github.com/cosmos/cosmos-sdk/types/query" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -const ( - denomPrefix = "ibc/" -) - -// TODO: make better -var ( - lastHeight int64 - lastHeightMu sync.RWMutex -) - -func (m *Module) HandleBlock(ctx context.Context, block *types.Block) error { - lastHeightMu.RLock() - if lastHeight > block.Height { - lastHeightMu.RUnlock() - return nil - } - lastHeightMu.RUnlock() - - lastHeightMu.Lock() - lastHeight = block.Height - lastHeightMu.Unlock() - - var ( - nextKey []byte - denomHashes = make([]string, 0) - ) - for { - respPb, err := m.client.BankQueryClient.TotalSupply( - ctx, - &banktypes.QueryTotalSupplyRequest{ - Pagination: &query.PageRequest{ - Key: nextKey, - Limit: 100, - CountTotal: true, - }, - }, - grpcClient.GetHeightRequestHeader(block.Height)) - if err != nil { - return err - } - - for _, coin := range respPb.Supply { - if strings.HasPrefix(coin.Denom, denomPrefix) { - hash := strings.TrimPrefix(coin.Denom, denomPrefix) - m.denomCache.mu.RLock() - if _, ok := m.denomCache.denomHashes[hash]; ok { - m.denomCache.mu.RUnlock() - continue - } - m.denomCache.mu.RUnlock() - - m.denomCache.mu.Lock() - m.denomCache.denomHashes[hash] = struct{}{} - m.denomCache.mu.Unlock() - - denomHashes = append(denomHashes, hash) - } - } - - nextKey = respPb.Pagination.NextKey - if len(nextKey) == 0 { - break - } - } - - return m.getAndPublishDenomTraces(ctx, denomHashes) -} - -func (m *Module) getAndPublishDenomTraces(ctx context.Context, denomHashes []string) error { - for _, hash := range denomHashes { - resp, err := m.client.IbcTransferQueryClient.DenomTrace( - ctx, &ibctransfertypes.QueryDenomTraceRequest{ - Hash: hash, - }, - ) - if err != nil { - return err - } - - if resp.DenomTrace == nil { - continue - } - - if err = m.broker.PublishDenomTrace(ctx, model.DenomTrace{ - DenomHash: hash, - Path: resp.DenomTrace.Path, - BaseDenom: resp.DenomTrace.BaseDenom, - }); err != nil { - return err - } - } - - return nil -} diff --git a/modules/ibc/broker.go b/modules/ibc/broker.go deleted file mode 100644 index f117ac7..0000000 --- a/modules/ibc/broker.go +++ /dev/null @@ -1,14 +0,0 @@ -package ibc - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -type broker interface { - PublishTransferMessage(context.Context, model.TransferMessage) error - PublishAcknowledgementMessage(context.Context, model.AcknowledgementMessage) error - PublishReceivePacketMessage(context.Context, model.RecvPacketMessage) error - PublishDenomTrace(context.Context, model.DenomTrace) error -} diff --git a/modules/ibc/message.go b/modules/ibc/message.go deleted file mode 100644 index 0e5f4a8..0000000 --- a/modules/ibc/message.go +++ /dev/null @@ -1,94 +0,0 @@ -package ibc - -import ( - "context" - "strings" - - codec "github.com/cosmos/cosmos-sdk/codec/types" - sdk "github.com/cosmos/cosmos-sdk/types" - icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - ibcchanneltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - jsoniter "github.com/json-iterator/go" - - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -type icaHostData struct { - Data []byte `json:"data"` -} - -// HandleMessageRecursive implements types.RecursiveMessagesHandler. -// Handles ibc types messages. -// For MsgTransfer message types returns slice of messages to be handled recursively. -func (m *Module) HandleMessageRecursive( - ctx context.Context, - index int, - cosmosMsg sdk.Msg, - tx *types.Tx, -) ([]*codec.Any, error) { - - switch msg := cosmosMsg.(type) { - case *ibctransfertypes.MsgTransfer: - return nil, m.broker.PublishTransferMessage(ctx, model.TransferMessage{ - SourceChannel: msg.SourceChannel, - Coin: m.tbM.MapCoin(types.NewCoinFromSDK(msg.Token)), - Sender: msg.Sender, - Receiver: msg.Receiver, - Height: tx.Height, - MsgIndex: int64(index), - TxHash: tx.TxHash, - }) - case *ibcchanneltypes.MsgAcknowledgement: - return nil, m.broker.PublishAcknowledgementMessage(ctx, model.AcknowledgementMessage{ - SourcePort: msg.Packet.SourcePort, - SourceChannel: msg.Packet.SourceChannel, - DestinationPort: msg.Packet.DestinationPort, - DestinationChannel: msg.Packet.DestinationChannel, - Data: msg.Packet.Data, - TimeoutTimestamp: msg.Packet.TimeoutTimestamp, - Signer: msg.Signer, - Height: tx.Height, - MsgIndex: int64(index), - TxHash: tx.TxHash, - }) - case *ibcchanneltypes.MsgRecvPacket: - if err := m.broker.PublishReceivePacketMessage(ctx, model.RecvPacketMessage{ - SourcePort: msg.Packet.SourcePort, - SourceChannel: msg.Packet.SourceChannel, - DestinationPort: msg.Packet.DestinationPort, - DestinationChannel: msg.Packet.DestinationChannel, - Signer: msg.Signer, - Data: msg.Packet.Data, - TimeoutTimestamp: msg.Packet.TimeoutTimestamp, - Height: tx.Height, - MsgIndex: int64(index), - TxHash: tx.TxHash, - }); err != nil { - return nil, err - } - - if msg.Packet.DestinationPort == "icahost" { - hostData := icaHostData{} - if err := jsoniter.Unmarshal(msg.Packet.Data, &hostData); err != nil { - return nil, err - } - - cosmosTx := icatypes.CosmosTx{} - if err := m.cdc.Unmarshal(hostData.Data, &cosmosTx); err != nil { - // skip unsupported messages - if strings.HasPrefix(err.Error(), "no concrete type registered for type URL") { - m.log.Warn().Err(err).Msg("error while unpacking message") - return nil, nil - } - - return nil, err - } - - return cosmosTx.Messages, nil - } - } - - return nil, nil -} diff --git a/modules/ibc/module.go b/modules/ibc/module.go deleted file mode 100644 index 286fc2e..0000000 --- a/modules/ibc/module.go +++ /dev/null @@ -1,52 +0,0 @@ -package ibc - -import ( - "sync" - - "github.com/cosmos/cosmos-sdk/codec" - "github.com/rs/zerolog" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - tb "github.com/bro-n-bro/spacebox-crawler/pkg/mapper/to_broker" - "github.com/bro-n-bro/spacebox-crawler/types" -) - -const ( - ModuleName = "ibc" -) - -var ( - _ types.Module = &Module{} - _ types.RecursiveMessagesHandler = &Module{} - _ types.BlockHandler = &Module{} -) - -type ( - denomCache struct { - denomHashes map[string]struct{} - mu sync.RWMutex - } - - Module struct { - log *zerolog.Logger - client *grpcClient.Client - broker broker - tbM tb.ToBroker - cdc codec.Codec - denomCache *denomCache - } -) - -func New(b broker, tbM tb.ToBroker, client *grpcClient.Client, cdc codec.Codec) *Module { - return &Module{ - log: utils.NewModuleLogger(ModuleName), - broker: b, - tbM: tbM, - client: client, - cdc: cdc, - denomCache: &denomCache{denomHashes: make(map[string]struct{})}, - } -} - -func (m *Module) Name() string { return ModuleName } diff --git a/modules/liquidity/broker.go b/modules/liquidity/broker.go deleted file mode 100644 index c6b1e9e..0000000 --- a/modules/liquidity/broker.go +++ /dev/null @@ -1,12 +0,0 @@ -package liquidity - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -type broker interface { - PublishSwap(context.Context, model.Swap) error - PublishLiquidityPool(context.Context, model.LiquidityPool) error -} diff --git a/modules/liquidity/end_blocker.go b/modules/liquidity/end_blocker.go deleted file mode 100644 index 4dfe049..0000000 --- a/modules/liquidity/end_blocker.go +++ /dev/null @@ -1,151 +0,0 @@ -package liquidity - -import ( - "context" - "encoding/base64" - "strconv" - - "github.com/pkg/errors" - - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox-crawler/types/liquidity" - "github.com/bro-n-bro/spacebox/broker/model" -) - -//nolint:lll -var ( - base64KeyPoolID = base64.StdEncoding.EncodeToString([]byte(liquidity.AttributeValuePoolID)) - base64KeyBatchIndex = base64.StdEncoding.EncodeToString([]byte(liquidity.AttributeValueBatchIndex)) - base64KeyMsgIndex = base64.StdEncoding.EncodeToString([]byte(liquidity.AttributeValueMsgIndex)) - base64KeySwapRequester = base64.StdEncoding.EncodeToString([]byte(liquidity.AttributeValueSwapRequester)) - base64KeyOfferCoinDenom = base64.StdEncoding.EncodeToString([]byte(liquidity.AttributeValueOfferCoinDenom)) - base64KeyOfferCoinAmount = base64.StdEncoding.EncodeToString([]byte(liquidity.AttributeValueOfferCoinAmount)) - base64KeyExchangedOfferCoinAmount = base64.StdEncoding.EncodeToString([]byte(liquidity.AttributeValueExchangedOfferCoinAmount)) - base64KeyDemandCoinDenom = base64.StdEncoding.EncodeToString([]byte(liquidity.AttributeValueDemandCoinDenom)) - base64KeyOrderPrice = base64.StdEncoding.EncodeToString([]byte(liquidity.AttributeValueOrderPrice)) - base64KeySwapPrice = base64.StdEncoding.EncodeToString([]byte(liquidity.AttributeValueSwapPrice)) - base64KeyTransactedCoinAmount = base64.StdEncoding.EncodeToString([]byte(liquidity.AttributeValueTransactedCoinAmount)) - base64KeyRemainingOfferCoinAmount = base64.StdEncoding.EncodeToString([]byte(liquidity.AttributeValueRemainingOfferCoinAmount)) - base64KeyExchangedDemandCoinAmount = base64.StdEncoding.EncodeToString([]byte(liquidity.AttributeValueExchangedDemandCoinAmount)) - base64KeyOfferCoinFeeAmount = base64.StdEncoding.EncodeToString([]byte(liquidity.AttributeValueOfferCoinFeeAmount)) - base64KeyExchangedCoinFeeAmount = base64.StdEncoding.EncodeToString([]byte(liquidity.AttributeValueExchangedCoinFeeAmount)) - base64KeyOrderExpiryHeight = base64.StdEncoding.EncodeToString([]byte(liquidity.AttributeValueOrderExpiryHeight)) - base64KeySuccess = base64.StdEncoding.EncodeToString([]byte(liquidity.AttributeValueSuccess)) -) - -//nolint:gocyclo -func (m *Module) HandleEndBlocker(ctx context.Context, eventsMap types.BlockerEvents, height int64) error { - events, ok := eventsMap[liquidity.EventTypeSwapTransacted] - if !ok { - return nil - } - - var err error - for _, event := range events { - if len(event.Attributes) < 13 { - m.log.Warn(). - Int64("height", height). - Str("handler", "HandleEndBlocker"). - Msg("not enough attributes in event") - continue - } - - var ( - msgIndex, batchIndex, poolID uint32 - swapRequester, offerCoinDenom, demandCoinDenom string - success bool - orderExpiryHeight int64 - exchangedCoinFeeAmount, orderPrice, swapPrice, offerCoinAmount, exchangedDemandCoinAmount, - transactedCoinAmount, offerCoinFeeAmount, remainingOfferCoinAmount float64 - ) - - for _, attr := range event.Attributes { - // try to decode value if needed - switch attr.Key { - case base64KeyPoolID, base64KeyBatchIndex, base64KeyMsgIndex, base64KeySwapRequester, - base64KeyOfferCoinDenom, base64KeyExchangedOfferCoinAmount, base64KeyDemandCoinDenom, - base64KeyOrderPrice, base64KeySwapPrice, base64KeyTransactedCoinAmount, - base64KeyRemainingOfferCoinAmount, base64KeyExchangedDemandCoinAmount, - base64KeyOfferCoinFeeAmount, base64KeyExchangedCoinFeeAmount, base64KeyOrderExpiryHeight, - base64KeySuccess, base64KeyOfferCoinAmount: - - attr.Value, err = utils.DecodeToString(attr.Value) - if err != nil { - return err - } - } - - switch attr.Key { - case liquidity.AttributeValuePoolID, base64KeyPoolID: - var id uint64 - id, err = strconv.ParseUint(attr.Value, 10, 32) - poolID = uint32(id) - case liquidity.AttributeValueBatchIndex, base64KeyBatchIndex: - var index uint64 - index, err = strconv.ParseUint(attr.Value, 10, 32) - batchIndex = uint32(index) - case liquidity.AttributeValueMsgIndex, base64KeyMsgIndex: - var index uint64 - index, err = strconv.ParseUint(attr.Value, 10, 32) - msgIndex = uint32(index) - case liquidity.AttributeValueSwapRequester, base64KeySwapRequester: - swapRequester = attr.Value - // case liquidity.AttributeValueSwapTypeId: - case liquidity.AttributeValueOfferCoinDenom, base64KeyOfferCoinDenom: - offerCoinDenom = attr.Value - case liquidity.AttributeValueOfferCoinAmount, base64KeyOfferCoinAmount: - offerCoinAmount, err = strconv.ParseFloat(attr.Value, 64) - case liquidity.AttributeValueDemandCoinDenom, base64KeyDemandCoinDenom: - demandCoinDenom = attr.Value - case liquidity.AttributeValueOrderPrice, base64KeyOrderPrice: - orderPrice, err = strconv.ParseFloat(attr.Value, 64) - case liquidity.AttributeValueSwapPrice, base64KeySwapPrice: - swapPrice, err = strconv.ParseFloat(attr.Value, 64) - case liquidity.AttributeValueTransactedCoinAmount, base64KeyTransactedCoinAmount: - transactedCoinAmount, err = strconv.ParseFloat(attr.Value, 64) - case liquidity.AttributeValueRemainingOfferCoinAmount, base64KeyRemainingOfferCoinAmount: - remainingOfferCoinAmount, err = strconv.ParseFloat(attr.Value, 64) - case liquidity.AttributeValueExchangedDemandCoinAmount, base64KeyExchangedDemandCoinAmount: - exchangedDemandCoinAmount, err = strconv.ParseFloat(attr.Value, 64) - case liquidity.AttributeValueOfferCoinFeeAmount, base64KeyOfferCoinFeeAmount: - offerCoinFeeAmount, err = strconv.ParseFloat(attr.Value, 64) - case liquidity.AttributeValueExchangedCoinFeeAmount, base64KeyExchangedCoinFeeAmount: - exchangedCoinFeeAmount, err = strconv.ParseFloat(attr.Value, 64) - // case liquidity.AttributeValueReservedOfferCoinFeeAmount: - case liquidity.AttributeValueOrderExpiryHeight, base64KeyOrderExpiryHeight: - orderExpiryHeight, err = strconv.ParseInt(attr.Value, 10, 64) - case liquidity.AttributeValueSuccess, base64KeySuccess: - success = attr.Value == liquidity.Success - } - - if err != nil { - return errors.Wrap(err, "liquidity: failed to parse event attributes") - } - } - - if err = m.broker.PublishSwap(ctx, model.Swap{ - Height: height, - MsgIndex: msgIndex, - BatchIndex: batchIndex, - PoolID: poolID, - SwapRequester: swapRequester, - OfferCoinDenom: offerCoinDenom, - OfferCoinAmount: offerCoinAmount, - DemandCoinDenom: demandCoinDenom, - ExchangedDemandCoinAmount: exchangedDemandCoinAmount, - TransactedCoinAmount: transactedCoinAmount, - RemainingOfferCoinAmount: remainingOfferCoinAmount, - OfferCoinFeeAmount: offerCoinFeeAmount, - OrderExpiryHeight: orderExpiryHeight, - ExchangedCoinFeeAmount: exchangedCoinFeeAmount, - OrderPrice: orderPrice, - SwapPrice: swapPrice, - Success: success, - }); err != nil { - return err - } - } - - return nil -} diff --git a/modules/liquidity/message.go b/modules/liquidity/message.go deleted file mode 100644 index c084342..0000000 --- a/modules/liquidity/message.go +++ /dev/null @@ -1,99 +0,0 @@ -package liquidity - -import ( - "context" - "errors" - "strconv" - - sdk "github.com/cosmos/cosmos-sdk/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox-crawler/types/liquidity" - "github.com/bro-n-bro/spacebox/broker/model" -) - -var ( - errWrongDenomsLength = errors.New("wrong denoms length") -) - -func (m *Module) HandleMessage(ctx context.Context, index int, cosmosMsg sdk.Msg, tx *types.Tx) error { - var poolID uint64 - switch msg := cosmosMsg.(type) { - case *liquidity.MsgCreatePool: - event, err := tx.FindEventByType(index, liquidity.TypeMsgCreatePool) - if err != nil { - return err - } - poolIDStr, err := tx.FindAttributeByKey(event, liquidity.AttributeValuePoolID) - if err != nil { - return err - } - - poolID, err = strconv.ParseUint(poolIDStr, 10, 64) - if err != nil { - return err - } - case *liquidity.MsgDepositWithinBatch: - poolID = msg.PoolId - case *liquidity.MsgWithdrawWithinBatch: - poolID = msg.PoolId - case *liquidity.MsgSwapWithinBatch: - poolID = msg.PoolId - default: - return nil - } - - return m.updateLiquidityPool(ctx, poolID) -} - -func (m *Module) updateLiquidityPool(ctx context.Context, poolID uint64) error { - resp, err := m.client.LiquidityQueryClient.LiquidityPool(ctx, &liquidity.QueryLiquidityPoolRequest{PoolId: poolID}) - if err != nil { - return err - } - - coinA, coinB, err := m.parseReverseCoins(ctx, resp.Pool.ReserveAccountAddress, resp.Pool.ReserveCoinDenoms) - if err != nil { - return err - } - - return m.broker.PublishLiquidityPool(ctx, model.LiquidityPool{ - PoolID: poolID, - ReserveAccountAddress: resp.Pool.ReserveAccountAddress, - ADenom: coinA.Denom, - BDenom: coinB.Denom, - PoolCoinDenom: resp.Pool.PoolCoinDenom, - LiquidityA: coinA, - LiquidityB: coinB, - }) -} - -func (m *Module) parseReverseCoins( - ctx context.Context, - address string, - denoms []string, -) (coinA model.Coin, coinB model.Coin, err error) { - - if len(denoms) != 2 { - err = errWrongDenomsLength - return - } - - resp, err := m.client.BankQueryClient.AllBalances(ctx, &banktypes.QueryAllBalancesRequest{Address: address}) - if err != nil { - return - } - - var coins model.Coins - if len(resp.Balances) != 2 { // not found balances for this address - coins = model.Coins{{Denom: denoms[0]}, {Denom: denoms[1]}} //nolint:typecheck - } else { - coins = m.tbM.MapCoins(types.NewCoinsFromSDK(resp.Balances)) - } - - coinA = coins[0] - coinB = coins[1] - - return -} diff --git a/modules/liquidity/module.go b/modules/liquidity/module.go deleted file mode 100644 index 0efa95b..0000000 --- a/modules/liquidity/module.go +++ /dev/null @@ -1,41 +0,0 @@ -package liquidity - -import ( - "github.com/rs/zerolog" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - tb "github.com/bro-n-bro/spacebox-crawler/pkg/mapper/to_broker" - "github.com/bro-n-bro/spacebox-crawler/types" -) - -const ( - ModuleName = "liquidity" -) - -var ( - _ types.Module = &Module{} - _ types.EndBlockerHandler = &Module{} -) - -type ( - Module struct { - log *zerolog.Logger - client *grpcClient.Client - broker broker - tbM tb.ToBroker - } -) - -func New(b broker, cli *grpcClient.Client, tbM tb.ToBroker) *Module { - m := &Module{ - log: utils.NewModuleLogger(ModuleName), - broker: b, - client: cli, - tbM: tbM, - } - - return m -} - -func (m *Module) Name() string { return ModuleName } diff --git a/modules/loader.go b/modules/loader.go index 05dc005..7ac589c 100644 --- a/modules/loader.go +++ b/modules/loader.go @@ -3,7 +3,7 @@ package modules import ( "github.com/rs/zerolog" - "github.com/bro-n-bro/spacebox-crawler/types" + "github.com/bro-n-bro/spacebox-crawler/v2/types" ) type ( @@ -26,6 +26,13 @@ func (m *ModuleLoader) WithLogger(log *zerolog.Logger) *ModuleLoader { return m } +func (m *ModuleLoader) WithModules(mods ...types.Module) *ModuleLoader { + for _, mod := range mods { + m.Add(mod) + } + return m +} + func (m *ModuleLoader) Add(mod types.Module) { m.modules = append(m.modules, mod) if m.logger != nil { diff --git a/modules/mint/begin_blocker.go b/modules/mint/begin_blocker.go deleted file mode 100644 index 2ef5d4f..0000000 --- a/modules/mint/begin_blocker.go +++ /dev/null @@ -1,116 +0,0 @@ -package mint - -import ( - "context" - "encoding/base64" - "strconv" - - sdk "github.com/cosmos/cosmos-sdk/types" - minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" - - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -var ( - base64KeyBondedRatio = base64.StdEncoding.EncodeToString([]byte(minttypes.AttributeKeyBondedRatio)) - base64KeyInflation = base64.StdEncoding.EncodeToString([]byte(minttypes.AttributeKeyInflation)) - base64KeyAnnualProvisions = base64.StdEncoding.EncodeToString([]byte(minttypes.AttributeKeyAnnualProvisions)) - base64KeyAmount = base64.StdEncoding.EncodeToString([]byte(sdk.AttributeKeyAmount)) -) - -//nolint:gocognit -func (m *Module) HandleBeginBlocker(ctx context.Context, eventsMap types.BlockerEvents, height int64) error { - events, ok := eventsMap[minttypes.EventTypeMint] - if !ok { - return nil - } - - var ( - bondedRatio, inflation, annualProvisions float64 - amount int64 - err error - ) - - for _, event := range events { - if len(event.Attributes) < 4 { - m.log.Warn(). - Int64("height", height). - Str("handler", "HandleBeginBlocker"). - Msg("not enough attributes in event") - continue - } - - for _, attr := range event.Attributes { - // try to decode value if needed - switch attr.Key { - case base64KeyBondedRatio, base64KeyInflation, base64KeyAnnualProvisions, base64KeyAmount: - attr.Value, err = utils.DecodeToString(attr.Value) - if err != nil { - return err - } - } - - switch attr.Key { - case minttypes.AttributeKeyBondedRatio, base64KeyBondedRatio: - bondedRatio, err = strconv.ParseFloat(attr.Value, 64) - if err != nil { - m.log.Error(). - Err(err). - Str("handler", "HandleBeginBlocker"). - Int64("height", height). - Msg("failed to convert string to float64 for AttributeKeyBondedRatio") - return err - } - case minttypes.AttributeKeyInflation, base64KeyInflation: - inflation, err = strconv.ParseFloat(attr.Value, 64) - if err != nil { - m.log.Error(). - Err(err). - Str("handler", "HandleBeginBlocker"). - Int64("height", height). - Msg("failed to convert string to float64 for AttributeKeyBondedRatio") - return err - } - case minttypes.AttributeKeyAnnualProvisions, base64KeyAnnualProvisions: - annualProvisions, err = strconv.ParseFloat(attr.Value, 64) - if err != nil { - m.log.Error(). - Err(err). - Str("handler", "HandleBeginBlocker"). - Int64("height", height). - Msg("failed to convert string to float64 for AttributeKeyBondedRatio") - return err - } - case sdk.AttributeKeyAmount, base64KeyAmount: - amount, err = strconv.ParseInt(attr.Value, 10, 64) - if err != nil { - m.log.Error(). - Err(err). - Str("handler", "HandleBeginBlocker"). - Int64("height", height). - Msg("failed to convert string to int64 for AttributeKeyAmount") - return err - } - } - } - - if err = m.broker.PublishAnnualProvision(ctx, model.AnnualProvision{ - Height: height, - Amount: amount, - AnnualProvisions: annualProvisions, - BondedRatio: bondedRatio, - Inflation: inflation, - }); err != nil { - m.log.Error(). - Err(err). - Str("handler", "HandleBeginBlocker"). - Int64("height", height). - Msg("failed to publish annual provision") - continue - } - } - - return nil -} diff --git a/modules/mint/block.go b/modules/mint/block.go deleted file mode 100644 index b133e2b..0000000 --- a/modules/mint/block.go +++ /dev/null @@ -1,79 +0,0 @@ -package mint - -import ( - "context" - - minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" - "github.com/pkg/errors" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (m *Module) HandleBlock(ctx context.Context, block *types.Block) error { - paramsResp, err := m.client.MintQueryClient.Params( - ctx, - &minttypes.QueryParamsRequest{}, - grpcClient.GetHeightRequestHeader(block.Height), - ) - if err != nil { - m.log.Error().Err(err).Int64("height", block.Height).Msg("error while getting params") - return err - } - - // todo: call panic: invalid Go type types.Dec for field cosmos.mint.v1beta1.QueryInflationResponse.inflation - // inflationResp, err := m.client.MintQueryClient.Inflation( - // ctx, - // &minttypes.QueryInflationRequest{}, - // grpcClient.GetHeightRequestHeader(block.Height), - // ) - // if err != nil { - // m.log.Error().Err(err).Int64("height", block.Height).Msg("error while getting inflation") - // return err - // } - // _ = inflationResp - - // m.client.MintQueryClient.AnnualProvisions() - - // TODO: maybe check diff from mongo in my side? - // TODO: test it - if err = m.broker.PublishMintParams(ctx, model.MintParams{ - Height: block.Height, - Params: model.RawMintParams{ - MintDenom: paramsResp.Params.MintDenom, - InflationRateChange: paramsResp.Params.InflationRateChange.MustFloat64(), - InflationMax: paramsResp.Params.InflationMax.MustFloat64(), - InflationMin: paramsResp.Params.InflationMin.MustFloat64(), - GoalBonded: paramsResp.Params.GoalBonded.MustFloat64(), - BlocksPerYear: paramsResp.Params.BlocksPerYear, - }, - }); err != nil { - return errors.Wrap(err, "PublishMintParams error") - } - - // TODO: got a panic: invalid Go type types.Dec for field - // cosmos.mint.v1beta1.QueryAnnualProvisionsResponse.annual_provisions - - // annualProvResp, err := m.client.MintQueryClient.AnnualProvisions( - // ctx, - // &minttypes.QueryAnnualProvisionsRequest{}, - // grpcClient.GetHeightRequestHeader(block.Height), - // ) - // if err != nil { - // m.log.Error().Err(err).Int64("height", block.Height).Msg("error while annual provision") - // return err - // } - - // var annualProvision float64 - // if !annualProvResp.AnnualProvisions.IsNil() { - // annualProvision = annualProvResp.AnnualProvisions.MustFloat64() - // } - - // if err := m.broker.PublishAnnualProvision(ctx, - // m.tbM.MapAnnualProvision(block.Height, annualProvision)); err != nil { - // return errors.Wrap(err, "PublishAnnualProvision error") - // } - - return nil -} diff --git a/modules/mint/broker.go b/modules/mint/broker.go deleted file mode 100644 index 22f71dd..0000000 --- a/modules/mint/broker.go +++ /dev/null @@ -1,12 +0,0 @@ -package mint - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -type broker interface { - PublishMintParams(ctx context.Context, mp model.MintParams) error - PublishAnnualProvision(ctx context.Context, ap model.AnnualProvision) error -} diff --git a/modules/mint/module.go b/modules/mint/module.go deleted file mode 100644 index c99d3e8..0000000 --- a/modules/mint/module.go +++ /dev/null @@ -1,37 +0,0 @@ -package mint - -import ( - "github.com/rs/zerolog" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - tb "github.com/bro-n-bro/spacebox-crawler/pkg/mapper/to_broker" - "github.com/bro-n-bro/spacebox-crawler/types" -) - -const ( - ModuleName = "mint" -) - -var ( - _ types.Module = &Module{} - _ types.BlockHandler = &Module{} -) - -type Module struct { - log *zerolog.Logger - client *grpcClient.Client - broker broker - tbM tb.ToBroker -} - -func New(b broker, cli *grpcClient.Client, tbM tb.ToBroker) *Module { - return &Module{ - log: utils.NewModuleLogger(ModuleName), - broker: b, - client: cli, - tbM: tbM, - } -} - -func (m *Module) Name() string { return ModuleName } diff --git a/modules/module.go b/modules/module.go deleted file mode 100644 index 53a006b..0000000 --- a/modules/module.go +++ /dev/null @@ -1,129 +0,0 @@ -package modules - -import ( - "github.com/cosmos/cosmos-sdk/codec" - "github.com/rs/zerolog" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/client/rpc" - "github.com/bro-n-bro/spacebox-crawler/internal/rep" - authModule "github.com/bro-n-bro/spacebox-crawler/modules/auth" - authzModule "github.com/bro-n-bro/spacebox-crawler/modules/authz" - bandwidthModule "github.com/bro-n-bro/spacebox-crawler/modules/bandwidth" - bankModule "github.com/bro-n-bro/spacebox-crawler/modules/bank" - coreModule "github.com/bro-n-bro/spacebox-crawler/modules/core" - distributionModule "github.com/bro-n-bro/spacebox-crawler/modules/distribution" - dmnModule "github.com/bro-n-bro/spacebox-crawler/modules/dmn" - feeGrantModule "github.com/bro-n-bro/spacebox-crawler/modules/feegrant" - govModule "github.com/bro-n-bro/spacebox-crawler/modules/gov" - graphModule "github.com/bro-n-bro/spacebox-crawler/modules/graph" - gridModule "github.com/bro-n-bro/spacebox-crawler/modules/grid" - ibcModule "github.com/bro-n-bro/spacebox-crawler/modules/ibc" - liquidityModule "github.com/bro-n-bro/spacebox-crawler/modules/liquidity" - mintModule "github.com/bro-n-bro/spacebox-crawler/modules/mint" - rankModule "github.com/bro-n-bro/spacebox-crawler/modules/rank" - rawModule "github.com/bro-n-bro/spacebox-crawler/modules/raw" - resourcesModule "github.com/bro-n-bro/spacebox-crawler/modules/resources" - slashingModule "github.com/bro-n-bro/spacebox-crawler/modules/slashing" - stakingModule "github.com/bro-n-bro/spacebox-crawler/modules/staking" - wasmModule "github.com/bro-n-bro/spacebox-crawler/modules/wasm" - tb "github.com/bro-n-bro/spacebox-crawler/pkg/mapper/to_broker" - "github.com/bro-n-bro/spacebox-crawler/types" -) - -type ( - Cache[K, V comparable] interface{ UpdateCacheValue(K, V) bool } - - tallyCache Cache[uint64, int64] - accountCache Cache[string, int64] - routeCache Cache[string, int64] -) - -//nolint:gocyclo -func BuildModules( - log *zerolog.Logger, - mds []string, - den string, - cli *grpcClient.Client, - rpc *rpc.Client, - brk rep.Broker, - cdc codec.Codec, - tbm tb.ToBroker, - aParse coreModule.MsgAddrParser, - tCache tallyCache, - aCache accountCache, - rCache routeCache, -) []types.Module { - - mods := NewModuleLoader().WithLogger(log) - - for _, mod := range mds { - switch mod { - case authModule.ModuleName: - auth := authModule.New(brk, cli, tbm, cdc, aParse).WithAccountCache(aCache) - mods.Add(auth) - case bankModule.ModuleName: - bank := bankModule.New(brk, cli, tbm, cdc, aParse) - mods.Add(bank) - case govModule.ModuleName: - gov := govModule.New(brk, cli, tbm, cdc).WithTallyCache(tCache) - mods.Add(gov) - case mintModule.ModuleName: - mint := mintModule.New(brk, cli, tbm) - mods.Add(mint) - case stakingModule.ModuleName: - staking := stakingModule.New(brk, cli, tbm, cdc, mds, den).WithAccountCache(aCache) - mods.Add(staking) - case distributionModule.ModuleName: - distribution := distributionModule.New(brk, cli, rpc, tbm, cdc) - mods.Add(distribution) - case coreModule.ModuleName: - core := coreModule.New(brk, tbm, cdc, aParse) - mods.Add(core) - case authzModule.ModuleName: - authz := authzModule.New(brk, cli, tbm, cdc) - mods.Add(authz) - case feeGrantModule.ModuleName: - feeGrant := feeGrantModule.New(brk, cli, tbm, cdc) - mods.Add(feeGrant) - case slashingModule.ModuleName: - slashing := slashingModule.New(brk, cli, tbm) - mods.Add(slashing) - case ibcModule.ModuleName: - ibc := ibcModule.New(brk, tbm, cli, cdc) - mods.Add(ibc) - case liquidityModule.ModuleName: - liquidity := liquidityModule.New(brk, cli, tbm) - mods.Add(liquidity) - case graphModule.ModuleName: - graph := graphModule.New(brk, tbm, cdc, cli) - mods.Add(graph) - case bandwidthModule.ModuleName: - bandwidth := bandwidthModule.New(brk, cli, tbm) - mods.Add(bandwidth) - case dmnModule.ModuleName: - dmn := dmnModule.New(brk, cli, tbm) - mods.Add(dmn) - case gridModule.ModuleName: - grid := gridModule.New(brk, cli, tbm).WithCache(rCache) - mods.Add(grid) - case rankModule.ModuleName: - rank := rankModule.New(brk, cli, tbm) - mods.Add(rank) - case resourcesModule.ModuleName: - resources := resourcesModule.New(brk, cli, tbm) - mods.Add(resources) - case wasmModule.ModuleName: - wasm := wasmModule.New(brk, cdc) - mods.Add(wasm) - case rawModule.ModuleName: - raw := rawModule.New(brk, rpc, tbm) - mods.Add(raw) - default: - log.Warn().Str("name", mod).Msg("unknown module") - continue - } - } - - return mods.Build() -} diff --git a/modules/rank/block.go b/modules/rank/block.go deleted file mode 100644 index b54f9a5..0000000 --- a/modules/rank/block.go +++ /dev/null @@ -1,37 +0,0 @@ -package rank - -import ( - "context" - - ranktypes "github.com/cybercongress/go-cyber/x/rank/types" - "github.com/pkg/errors" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (m *Module) HandleBlock(ctx context.Context, block *types.Block) error { - paramsResp, err := m.client.RankQueryClient.Params( - ctx, - &ranktypes.QueryParamsRequest{}, - grpcClient.GetHeightRequestHeader(block.Height), - ) - if err != nil { - m.log.Error().Err(err).Int64("height", block.Height).Msg("error while getting params") - return err - } - - if err = m.broker.PublishRankParams(ctx, model.RankParams{ - Height: block.Height, - Params: model.RawRankParams{ - CalculationPeriod: paramsResp.Params.CalculationPeriod, - DampingFactor: paramsResp.Params.DampingFactor.MustFloat64(), - Tolerance: paramsResp.Params.Tolerance.MustFloat64(), - }, - }); err != nil { - return errors.Wrap(err, "PublishRankParams error") - } - - return nil -} diff --git a/modules/rank/broker.go b/modules/rank/broker.go deleted file mode 100644 index 4d74fc1..0000000 --- a/modules/rank/broker.go +++ /dev/null @@ -1,11 +0,0 @@ -package rank - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -type broker interface { - PublishRankParams(ctx context.Context, mp model.RankParams) error -} diff --git a/modules/rank/module.go b/modules/rank/module.go deleted file mode 100644 index d8fb6d8..0000000 --- a/modules/rank/module.go +++ /dev/null @@ -1,37 +0,0 @@ -package rank - -import ( - "github.com/rs/zerolog" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - tb "github.com/bro-n-bro/spacebox-crawler/pkg/mapper/to_broker" - "github.com/bro-n-bro/spacebox-crawler/types" -) - -const ( - ModuleName = "rank" -) - -var ( - _ types.Module = &Module{} - _ types.BlockHandler = &Module{} -) - -type Module struct { - log *zerolog.Logger - client *grpcClient.Client - broker broker - tbM tb.ToBroker -} - -func New(b broker, cli *grpcClient.Client, tbM tb.ToBroker) *Module { - return &Module{ - log: utils.NewModuleLogger(ModuleName), - broker: b, - client: cli, - tbM: tbM, - } -} - -func (m *Module) Name() string { return ModuleName } diff --git a/modules/raw/block.go b/modules/raw/block.go index fab872e..03f45d4 100644 --- a/modules/raw/block.go +++ b/modules/raw/block.go @@ -9,7 +9,7 @@ import ( coretypes "github.com/cometbft/cometbft/rpc/core/types" jsoniter "github.com/json-iterator/go" - "github.com/bro-n-bro/spacebox-crawler/types" + "github.com/bro-n-bro/spacebox-crawler/v2/types" ) func (m *Module) HandleBlock(ctx context.Context, block *types.Block) error { diff --git a/modules/raw/module.go b/modules/raw/module.go index 2efe476..6aba9a1 100644 --- a/modules/raw/module.go +++ b/modules/raw/module.go @@ -3,10 +3,9 @@ package raw import ( "github.com/rs/zerolog" - rpcClient "github.com/bro-n-bro/spacebox-crawler/client/rpc" - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - tb "github.com/bro-n-bro/spacebox-crawler/pkg/mapper/to_broker" - "github.com/bro-n-bro/spacebox-crawler/types" + rpcClient "github.com/bro-n-bro/spacebox-crawler/v2/client/rpc" + "github.com/bro-n-bro/spacebox-crawler/v2/modules/utils" + "github.com/bro-n-bro/spacebox-crawler/v2/types" ) const ( @@ -22,15 +21,13 @@ type Module struct { log *zerolog.Logger rpcClient *rpcClient.Client broker broker - tbM tb.ToBroker } -func New(b broker, cli *rpcClient.Client, tbM tb.ToBroker) *Module { +func New(b broker, cli *rpcClient.Client) *Module { return &Module{ log: utils.NewModuleLogger(ModuleName), broker: b, rpcClient: cli, - tbM: tbM, } } diff --git a/modules/raw/transaction.go b/modules/raw/transaction.go index ad0ce9c..6a802e1 100644 --- a/modules/raw/transaction.go +++ b/modules/raw/transaction.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/gogoproto/jsonpb" - "github.com/bro-n-bro/spacebox-crawler/types" + "github.com/bro-n-bro/spacebox-crawler/v2/types" ) var ( diff --git a/modules/resources/broker.go b/modules/resources/broker.go deleted file mode 100644 index f217644..0000000 --- a/modules/resources/broker.go +++ /dev/null @@ -1,11 +0,0 @@ -package resources - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -type broker interface { - PublishInvestmintMessage(ctx context.Context, mp model.InvestmintMessage) error -} diff --git a/modules/resources/message.go b/modules/resources/message.go deleted file mode 100644 index 369815a..0000000 --- a/modules/resources/message.go +++ /dev/null @@ -1,39 +0,0 @@ -package resources - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - resources "github.com/cybercongress/go-cyber/x/resources/types" - "github.com/pkg/errors" - - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -const ( - msgErrorPublishingInvestmintMessage = "error while publishing investmint_message message" -) - -func (m *Module) HandleMessage(ctx context.Context, index int, bostromMsg sdk.Msg, tx *types.Tx) error { - if len(tx.Logs) == 0 { - return nil - } - - switch msg := bostromMsg.(type) { //nolint:gocritic - case *resources.MsgInvestmint: - if err := m.broker.PublishInvestmintMessage(ctx, model.InvestmintMessage{ - Amount: m.tbM.MapCoin(types.NewCoinFromSDK(msg.Amount)), - Neuron: msg.Neuron, - Resource: msg.Resource, - Length: msg.Length, - TxHash: tx.TxHash, - Height: tx.Height, - MsgIndex: int64(index), - }); err != nil { - return errors.Wrap(err, msgErrorPublishingInvestmintMessage) - } - } - - return nil -} diff --git a/modules/resources/module.go b/modules/resources/module.go deleted file mode 100644 index b40f186..0000000 --- a/modules/resources/module.go +++ /dev/null @@ -1,37 +0,0 @@ -package resources - -import ( - "github.com/rs/zerolog" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - tb "github.com/bro-n-bro/spacebox-crawler/pkg/mapper/to_broker" - "github.com/bro-n-bro/spacebox-crawler/types" -) - -const ( - ModuleName = "resources" -) - -var ( - _ types.Module = &Module{} - _ types.MessageHandler = &Module{} -) - -type Module struct { - log *zerolog.Logger - client *grpcClient.Client - broker broker - tbM tb.ToBroker -} - -func New(b broker, cli *grpcClient.Client, tbM tb.ToBroker) *Module { - return &Module{ - log: utils.NewModuleLogger(ModuleName), - broker: b, - client: cli, - tbM: tbM, - } -} - -func (m *Module) Name() string { return ModuleName } diff --git a/modules/slashing/begin_blocker.go b/modules/slashing/begin_blocker.go deleted file mode 100644 index fe57cac..0000000 --- a/modules/slashing/begin_blocker.go +++ /dev/null @@ -1,162 +0,0 @@ -package slashing - -import ( - "context" - "encoding/base64" - "errors" - "fmt" - - sdk "github.com/cosmos/cosmos-sdk/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" - - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - tb "github.com/bro-n-bro/spacebox-crawler/pkg/mapper/to_broker" - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -var ( - errCantFindBurnedCoin = errors.New("can't find burned tokens") - - base64KeyAddress = base64.StdEncoding.EncodeToString([]byte(slashingtypes.AttributeKeyAddress)) - base64KeyPower = base64.StdEncoding.EncodeToString([]byte(slashingtypes.AttributeKeyPower)) - base64KeyReason = base64.StdEncoding.EncodeToString([]byte(slashingtypes.AttributeKeyReason)) - base64KeyJailed = base64.StdEncoding.EncodeToString([]byte(slashingtypes.AttributeKeyJailed)) - base64KeyBurnedCoins = base64.StdEncoding.EncodeToString([]byte(slashingtypes.AttributeKeyBurnedCoins)) - base64KeyAmount = base64.StdEncoding.EncodeToString([]byte(sdk.AttributeKeyAmount)) -) - -func (m *Module) HandleBeginBlocker(ctx context.Context, eventsMap types.BlockerEvents, height int64) error { - return m.handleSlashEvent(ctx, eventsMap, height) -} - -// nolint:gocognit -func (m *Module) handleSlashEvent(ctx context.Context, eventsMap types.BlockerEvents, height int64) error { - events, ok := eventsMap[slashingtypes.EventTypeSlash] - if !ok { - return nil - } - - var operatorAddress, power, reason, jailed string - for _, e := range events { - if len(e.Attributes) < 4 { - m.log.Warn(). - Str("event", slashingtypes.EventTypeSlash). - Int64("height", height). - Msg("not enough attributes in event") - continue - } - - var burnedCoin *model.Coin - for _, attr := range e.Attributes { - // try to decode value if needed - switch attr.Key { - case base64KeyAddress, base64KeyPower, base64KeyReason, base64KeyJailed, base64KeyBurnedCoins: - var err error - attr.Value, err = utils.DecodeToString(attr.Value) - if err != nil { - return err - } - } - - switch attr.Key { - case slashingtypes.AttributeKeyAddress, base64KeyAddress: // required - operatorAddress = attr.Value - case slashingtypes.AttributeKeyPower, base64KeyPower: // required - power = attr.Value - case slashingtypes.AttributeKeyReason, base64KeyReason: // required - reason = attr.Value - case slashingtypes.AttributeKeyJailed, base64KeyJailed: // required - jailed = attr.Value - case slashingtypes.AttributeKeyBurnedCoins, base64KeyBurnedCoins: // not required - coins, err := utils.ParseCoinsFromString(attr.Value) - if err != nil { - m.log.Error(). - Err(err). - Str("func", "parseProposerRewardEvent"). - Int64("height", height). - Msg("failed to convert string to coins by commissionEvent") - - return fmt.Errorf("failed to convert %q to coin: %w", attr.Value, err) - } - if len(coins) > 0 { - coin := m.tbM.MapCoin(coins[0]) - burnedCoin = &coin - } - } - } - - var burned model.Coin - if burnedCoin == nil { - var err error - burned, err = getCoin(eventsMap, m.tbM) - if err != nil { - if errors.Is(err, errCantFindBurnedCoin) { - m.log.Warn(). - Str("event", banktypes.EventTypeCoinBurn). - Int64("height", height). - Msg(err.Error()) - continue - } - - m.log.Error(). - Str("event", banktypes.EventTypeCoinBurn). - Int64("height", height). - Msg(err.Error()) - return err - } - } else { - burned = *burnedCoin - } - - if err := m.broker.PublishHandleValidatorSignature(ctx, model.HandleValidatorSignature{ - OperatorAddress: operatorAddress, - Power: power, - Reason: reason, - Jailed: jailed, - Burned: burned, - Height: height, - }); err != nil { - return err - } - } - - return nil -} - -func getCoin(eventsMap types.BlockerEvents, mapper tb.ToBroker) (model.Coin, error) { - bankEvents, ok := eventsMap[banktypes.EventTypeCoinBurn] - if !ok || len(bankEvents) == 0 || len(bankEvents[0].Attributes) < 2 { - // burned tokens not found in any events - return model.Coin{}, errCantFindBurnedCoin - } - - var res model.Coin - for _, bankAttr := range bankEvents[0].Attributes { - if bankAttr.Key != sdk.AttributeKeyAmount && bankAttr.Key != base64KeyAmount { - continue - } - - if bankAttr.Key == base64KeyAmount { - var err error - bankAttr.Value, err = utils.DecodeToString(bankAttr.Value) - if err != nil { - return model.Coin{}, err - } - } - - coins, err := utils.ParseCoinsFromString(bankAttr.Value) - if err != nil { - err = fmt.Errorf("failed to convert %q to coin: %w", bankAttr.Value, err) - return model.Coin{}, err - } - - if len(coins) > 0 { - res = mapper.MapCoin(coins[0]) - break - } - } - - return res, nil -} diff --git a/modules/slashing/block.go b/modules/slashing/block.go deleted file mode 100644 index 9b15f8c..0000000 --- a/modules/slashing/block.go +++ /dev/null @@ -1,38 +0,0 @@ -package slashing - -import ( - "context" - - slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (m *Module) HandleBlock(ctx context.Context, block *types.Block) error { - paramsResp, err := m.client.SlashingQueryClient.Params( - ctx, - &slashingtypes.QueryParamsRequest{}, - grpcClient.GetHeightRequestHeader(block.Height), - ) - if err != nil { - m.log.Error().Err(err).Int64("height", block.Height).Msg("error while getting params") - return err - } - - if err = m.broker.PublishSlashingParams(ctx, model.SlashingParams{ - Height: block.Height, - Params: model.RawSlashingParams{ - DowntimeJailDuration: paramsResp.Params.DowntimeJailDuration, - SignedBlocksWindow: paramsResp.Params.SignedBlocksWindow, - MinSignedPerWindow: paramsResp.Params.MinSignedPerWindow.MustFloat64(), - SlashFractionDoubleSign: paramsResp.Params.SlashFractionDoubleSign.MustFloat64(), - SlashFractionDowntime: paramsResp.Params.SlashFractionDowntime.MustFloat64(), - }, - }); err != nil { - return err - } - - return nil -} diff --git a/modules/slashing/broker.go b/modules/slashing/broker.go deleted file mode 100644 index ba78030..0000000 --- a/modules/slashing/broker.go +++ /dev/null @@ -1,13 +0,0 @@ -package slashing - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -type broker interface { - PublishSlashingParams(ctx context.Context, params model.SlashingParams) error - PublishUnjailMessage(ctx context.Context, msg model.UnjailMessage) error - PublishHandleValidatorSignature(ctx context.Context, msg model.HandleValidatorSignature) error -} diff --git a/modules/slashing/message.go b/modules/slashing/message.go deleted file mode 100644 index 2ff5a32..0000000 --- a/modules/slashing/message.go +++ /dev/null @@ -1,33 +0,0 @@ -package slashing - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - slashtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" - - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (m *Module) HandleMessage(ctx context.Context, index int, cosmosMsg sdk.Msg, tx *types.Tx) error { - if len(tx.Logs) == 0 { - return nil - } - - switch msg := cosmosMsg.(type) { - case *slashtypes.MsgUnjail: - return m.handleMsgUnjail(ctx, tx, index, msg) - default: - return nil - } -} - -func (m *Module) handleMsgUnjail(ctx context.Context, tx *types.Tx, index int, msg *slashtypes.MsgUnjail) error { - return m.broker.PublishUnjailMessage(ctx, model.UnjailMessage{ - Height: tx.Height, - Hash: tx.TxHash, - Index: int64(index), - OperatorAddress: msg.ValidatorAddr, - }) -} diff --git a/modules/slashing/module.go b/modules/slashing/module.go deleted file mode 100644 index 9712ac0..0000000 --- a/modules/slashing/module.go +++ /dev/null @@ -1,39 +0,0 @@ -package slashing - -import ( - "github.com/rs/zerolog" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - tb "github.com/bro-n-bro/spacebox-crawler/pkg/mapper/to_broker" - "github.com/bro-n-bro/spacebox-crawler/types" -) - -const ( - ModuleName = "slashing" -) - -var ( - _ types.Module = &Module{} - _ types.BlockHandler = &Module{} - _ types.MessageHandler = &Module{} - _ types.BeginBlockerHandler = &Module{} -) - -type Module struct { - log *zerolog.Logger - client *grpcClient.Client - tbM tb.ToBroker - broker broker -} - -func New(b broker, cli *grpcClient.Client, tbM tb.ToBroker) *Module { - return &Module{ - log: utils.NewModuleLogger(ModuleName), - client: cli, - tbM: tbM, - broker: b, - } -} - -func (m *Module) Name() string { return ModuleName } diff --git a/modules/staking/block.go b/modules/staking/block.go deleted file mode 100644 index b18e25c..0000000 --- a/modules/staking/block.go +++ /dev/null @@ -1,118 +0,0 @@ -package staking - -import ( - "context" - "fmt" - - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "golang.org/x/sync/errgroup" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (m *Module) HandleBlock(ctx context.Context, block *types.Block) error { - g, ctx2 := errgroup.WithContext(ctx) - - g.Go(func() error { - // Update the params - return m.updateParams(ctx2, block.Height) - }) - - g.Go(func() error { - // Update the staking pool - return m.updateStakingPool(ctx2, block.Height, m.client.StakingQueryClient) - }) - - // FIXME: does it needed? - // Updated the double sign evidences - // go updateDoubleSignEvidence(block.Height, block.Evidence.Evidence) - - // TODO: does it needed? - // g.Go(func() error { - // Update redelegations and unbonding delegations - // return m.updateElapsedDelegations(_ctx, block.Height, block.Timestamp, m.enabledModules) - // }) - - return g.Wait() -} - -// updateParams gets the updated params and stores them inside the database -func (m *Module) updateParams(ctx context.Context, height int64) error { - res, err := m.client.StakingQueryClient.Params( - ctx, - &stakingtypes.QueryParamsRequest{}, - grpcClient.GetHeightRequestHeader(height), - ) - if err != nil { - return err - } - - // TODO: to mapper? - var commissionRate float64 - if !res.Params.MinCommissionRate.IsNil() { - commissionRate = res.Params.MinCommissionRate.MustFloat64() - } - - // TODO: test it - // TODO: maybe check diff from mongo in my side? - if err = m.broker.PublishStakingParams(ctx, model.StakingParams{ - Height: height, - Params: model.RawStakingParams{ - UnbondingTime: res.Params.UnbondingTime, - MaxValidators: uint64(res.Params.MaxValidators), - MaxEntries: uint64(res.Params.MaxEntries), - HistoricalEntries: uint64(res.Params.HistoricalEntries), - BondDenom: res.Params.BondDenom, - MinCommissionRate: commissionRate, - }, - }); err != nil { - return err - } - - // TODO: - // err = db.SaveStakingParams(types.NewStakingParams(res.Params, height)) - // if err != nil { - // log.Error().Str("module", "staking").Err(err). - // Int64("height", height). - // Msg("error while saving params") - // return - // } - - return nil -} - -// updateStakingPool reads from the LCD the current staking pool and stores its value inside the database -func (m *Module) updateStakingPool(ctx context.Context, height int64, stakingClient stakingtypes.QueryClient) error { - respPb, err := stakingClient.Pool( - ctx, - &stakingtypes.QueryPoolRequest{}, - grpcClient.GetHeightRequestHeader(height), - ) - if err != nil { - return err - } - - // TODO: to mapper? - var bondedTokens, notBondedTokens int64 - - if !respPb.Pool.BondedTokens.IsNil() { - bondedTokens = respPb.Pool.BondedTokens.Int64() - } - - if !respPb.Pool.NotBondedTokens.IsNil() { - notBondedTokens = respPb.Pool.NotBondedTokens.Int64() - } - - // TODO: test IT - if err = m.broker.PublishStakingPool(ctx, model.StakingPool{ - Height: height, - NotBondedTokens: notBondedTokens, - BondedTokens: bondedTokens, - }); err != nil { - return fmt.Errorf("PublishStakingPool error: %w", err) - } - - return nil -} diff --git a/modules/staking/broker.go b/modules/staking/broker.go deleted file mode 100644 index ae26134..0000000 --- a/modules/staking/broker.go +++ /dev/null @@ -1,29 +0,0 @@ -package staking - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -type broker interface { - PublishAccount(context.Context, model.Account) error // FIXME: method from auth module - - PublishUnbondingDelegation(context.Context, model.UnbondingDelegation) error - PublishUnbondingDelegationMessage(context.Context, model.UnbondingDelegationMessage) error - PublishStakingParams(ctx context.Context, sp model.StakingParams) error - PublishDelegation(ctx context.Context, d model.Delegation) error - PublishDisabledDelegation(ctx context.Context, d model.Delegation) error - PublishDelegationMessage(ctx context.Context, dm model.DelegationMessage) error - PublishStakingPool(ctx context.Context, sp model.StakingPool) error - PublishValidator(ctx context.Context, val model.Validator) error - PublishValidatorInfo(ctx context.Context, infos model.ValidatorInfo) error - PublishValidatorStatus(ctx context.Context, statuses model.ValidatorStatus) error - PublishValidatorDescription(ctx context.Context, description model.ValidatorDescription) error - PublishValidatorCommission(ctx context.Context, commission model.ValidatorCommission) error - PublishRedelegation(context.Context, model.Redelegation) error - PublishRedelegationMessage(context.Context, model.RedelegationMessage) error - PublishCreateValidatorMessage(ctx context.Context, cvm model.CreateValidatorMessage) error - PublishEditValidatorMessage(ctx context.Context, message model.EditValidatorMessage) error - PublishCancelUnbondingDelegationMessage(_ context.Context, description model.CancelUnbondingDelegationMessage) error -} diff --git a/modules/staking/genesis.go b/modules/staking/genesis.go deleted file mode 100644 index 88e2b66..0000000 --- a/modules/staking/genesis.go +++ /dev/null @@ -1,267 +0,0 @@ -package staking - -import ( - "context" - "encoding/json" - "fmt" - - cometbfttypes "github.com/cometbft/cometbft/types" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/tx" - genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (m *Module) HandleGenesis( - ctx context.Context, - doc *cometbfttypes.GenesisDoc, - appState map[string]json.RawMessage, -) error { - - // Read the genesis state - var genState stakingtypes.GenesisState - if err := m.cdc.UnmarshalJSON(appState[stakingtypes.ModuleName], &genState); err != nil { - return err - } - - // Save the params - if err := m.publishParams(ctx, doc.InitialHeight, genState.Params); err != nil { - return fmt.Errorf("error while storing staking genesis params: %w", err) - } - - // Parse genesis transactions - if err := m.parseGenesisTransactions(ctx, doc, appState); err != nil { - return fmt.Errorf("error while storing genesis transactions: %w", err) - } - - // Save the validators - if err := m.publishValidators(ctx, doc, genState.Validators); err != nil { - return fmt.Errorf("error while storing staking genesis validators: %w", err) - } - - // Save the delegations - if err := m.publishDelegations(ctx, doc, genState); err != nil { - return fmt.Errorf("error while storing staking genesis delegations: %w", err) - } - - // Save the unbonding delegations - if err := m.publishUnbondingDelegations(ctx, doc, genState); err != nil { - return fmt.Errorf("error while storing staking genesis unbonding delegations: %w", err) - } - - // Save the re-delegations - if err := m.publishRedelegations(ctx, doc, genState); err != nil { - return fmt.Errorf("error while storing staking genesis redelegations: %w", err) - } - - // Publish the description - if err := m.publishValidatorDescriptions(ctx, genState.Validators, doc.InitialHeight); err != nil { - return fmt.Errorf("error while storing staking genesis validator descriptions: %w", err) - } - - // FIXME: does it needed? - // if err := publishValidatorsCommissions(doc.InitialHeight, genState.Validators); err != nil { - // return fmt.Errorf("error while storing staking genesis validators commissions: %s", err) - // } - - return nil -} - -func (m *Module) parseGenesisTransactions( - ctx context.Context, - doc *cometbfttypes.GenesisDoc, - appState map[string]json.RawMessage, -) error { - - var genUtilState genutiltypes.GenesisState - if err := m.cdc.UnmarshalJSON(appState[genutiltypes.ModuleName], &genUtilState); err != nil { - return err - } - - for _, genTxBz := range genUtilState.GetGenTxs() { - // Unmarshal the transaction - var genTx tx.Tx - if err := m.cdc.UnmarshalJSON(genTxBz, &genTx); err != nil { - return err - } - - for _, msg := range genTx.GetMsgs() { - // Handle the message properly - createValMsg, ok := msg.(*stakingtypes.MsgCreateValidator) - if !ok { - continue - } - - if err := m.handleMsgCreateValidator(ctx, doc.InitialHeight, "", 0, createValMsg); err != nil { - return err - } - } - } - - return nil -} - -// publishParams saves the given params to the broker. -func (m *Module) publishParams(ctx context.Context, height int64, params stakingtypes.Params) error { - var commissionRate float64 - if !params.MinCommissionRate.IsNil() { - commissionRate = params.MinCommissionRate.MustFloat64() - } - - // TODO: test it - return m.broker.PublishStakingParams(ctx, model.StakingParams{ - Height: height, - Params: model.RawStakingParams{ - UnbondingTime: params.UnbondingTime, - MaxValidators: uint64(params.MaxValidators), - MaxEntries: uint64(params.MaxEntries), - HistoricalEntries: uint64(params.HistoricalEntries), - BondDenom: params.BondDenom, - MinCommissionRate: commissionRate, - }, - }) -} - -// publishValidators publishes the validators data present inside the given genesis state to the broker. -func (m *Module) publishValidators( - ctx context.Context, - doc *cometbfttypes.GenesisDoc, - validators stakingtypes.Validators, -) error { - - vals := make([]types.StakingValidator, len(validators)) - - for i, val := range validators { - validator, err := convertValidator(m.cdc, val, doc.InitialHeight) - if err != nil { - return err - } - - vals[i] = validator - } - - // TODO: save to mongo? - // TODO test it - return m.PublishValidatorsData(ctx, vals) -} - -// publishDelegations publishes the delegations and account data present inside the given genesis state to the broker. -func (m *Module) publishDelegations( - ctx context.Context, - doc *cometbfttypes.GenesisDoc, - genState stakingtypes.GenesisState, -) error { - - for _, validator := range genState.Validators { - tokens := validator.Tokens - delShares := validator.DelegatorShares - - typesDelegations := findDelegations(genState.Delegations, validator.OperatorAddress) - - for _, del := range typesDelegations { - if err := utils.GetAndPublishAccount(ctx, del.DelegatorAddress, doc.InitialHeight, m.accCache, - m.broker, m.client.AuthQueryClient); err != nil { - return err - } - - delegationAmount := sdk.NewDecFromBigInt(tokens.BigInt()).Mul(del.Shares).Quo(delShares).TruncateInt() - // TODO: save to mongo? - if err := m.broker.PublishDelegation(ctx, model.Delegation{ - OperatorAddress: validator.OperatorAddress, - DelegatorAddress: del.DelegatorAddress, - Height: doc.InitialHeight, - Coin: m.tbM.MapCoin( - types.NewCoinFromSDK(sdk.NewCoin(genState.Params.BondDenom, delegationAmount))), - }); err != nil { - return err - } - } - } - - return nil -} - -// publishUnbondingDelegations publishes the unbonding delegations data present inside the given genesis state to the broker. -func (m *Module) publishUnbondingDelegations(ctx context.Context, doc *cometbfttypes.GenesisDoc, - genState stakingtypes.GenesisState) error { - - var coin types.Coin - - for _, validator := range genState.Validators { - valUD := findUnbondingDelegations(genState.UnbondingDelegations, validator.OperatorAddress) - for _, ud := range valUD { - for _, entry := range ud.Entries { - coin = types.NewCoinFromSDK(sdk.NewCoin(genState.Params.BondDenom, entry.InitialBalance)) - // TODO: test it - if err := m.broker.PublishUnbondingDelegation(ctx, model.UnbondingDelegation{ - Height: doc.InitialHeight, - DelegatorAddress: ud.DelegatorAddress, - OperatorAddress: validator.OperatorAddress, - Coin: m.tbM.MapCoin(coin), - CompletionTime: entry.CompletionTime, - }); err != nil { - return err - } - } - } - } - - return nil -} - -// publishRedelegations publishes the redelegations data present inside the given genesis state to the broker. -func (m *Module) publishRedelegations(ctx context.Context, doc *cometbfttypes.GenesisDoc, - genState stakingtypes.GenesisState) error { - - for _, genRedelegation := range genState.Redelegations { - for _, entry := range genRedelegation.Entries { - // TODO: save to mongo? - // TODO: test it - if err := m.broker.PublishRedelegation(ctx, model.Redelegation{ - Height: doc.InitialHeight, - DelegatorAddress: genRedelegation.DelegatorAddress, - SrcValidatorAddress: genRedelegation.ValidatorSrcAddress, - DstValidatorAddress: genRedelegation.ValidatorDstAddress, - Coin: m.tbM.MapCoin( - types.NewCoinFromSDK(sdk.NewCoin(genState.Params.BondDenom, entry.InitialBalance))), - CompletionTime: entry.CompletionTime, - }); err != nil { - return err - } - } - } - - return nil -} - -// findDelegations returns the list of all the delegations that are -// related to the validator having the given validator address -func findDelegations(genData stakingtypes.Delegations, valAddr string) stakingtypes.Delegations { - var delegations stakingtypes.Delegations - - for _, delegation := range genData { - if delegation.ValidatorAddress == valAddr { - delegations = append(delegations, delegation) - } - } - - return delegations -} - -// findUnbondingDelegations returns the list of all the unbonding delegations -// that are related to the validator having the given validator address -func findUnbondingDelegations(genData stakingtypes.UnbondingDelegations, valAddr string) stakingtypes.UnbondingDelegations { - unbondingDelegations := make(stakingtypes.UnbondingDelegations, 0) - - for _, unbondingDelegation := range genData { - if unbondingDelegation.ValidatorAddress == valAddr { - unbondingDelegations = append(unbondingDelegations, unbondingDelegation) - } - } - - return unbondingDelegations -} diff --git a/modules/staking/message.go b/modules/staking/message.go deleted file mode 100644 index 078710b..0000000 --- a/modules/staking/message.go +++ /dev/null @@ -1,462 +0,0 @@ -package staking - -import ( - "context" - - cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/query" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/pkg/errors" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (m *Module) HandleMessage(ctx context.Context, index int, cosmosMsg sdk.Msg, tx *types.Tx) error { - if len(tx.Logs) == 0 { - return nil - } - - switch msg := cosmosMsg.(type) { - case *stakingtypes.MsgCreateValidator: - return m.handleMsgCreateValidator(ctx, tx.Height, tx.TxHash, index, msg) - case *stakingtypes.MsgEditValidator: - return m.handleEditValidator(ctx, tx.Height, tx.TxHash, index, msg) - case *stakingtypes.MsgDelegate: - return m.handleMsgDelegate(ctx, tx, msg, index) - case *stakingtypes.MsgBeginRedelegate: - return m.handleMsgBeginRedelegate(ctx, tx, index, msg) - case *stakingtypes.MsgUndelegate: - return m.handleMsgUndelegate(ctx, tx, index, msg) - case *stakingtypes.MsgCancelUnbondingDelegation: - return m.handleMsgCancelUnbondingDelegation(ctx, tx, index, msg) - } - - return nil -} - -// handleMsgCreateValidator handles MsgCreateValidator and publishes model.Validator, model.ValidatorDescription, -// model.Account, model.ValidatorInfo and model.Delegation messages to broker. -func (m *Module) handleMsgCreateValidator( - ctx context.Context, - height int64, - hash string, - index int, - msg *stakingtypes.MsgCreateValidator, -) error { - - var pubKey cryptotypes.PubKey - if err := m.cdc.UnpackAny(msg.Pubkey, &pubKey); err != nil { - return err - } - - operatorAddr, err := sdk.ValAddressFromBech32(msg.ValidatorAddress) - if err != nil { - return err - } - - stakingValidator, err := stakingtypes.NewValidator(operatorAddr, pubKey, msg.Description) - if err != nil { - return err - } - - validator, err := convertValidator(m.cdc, stakingValidator, height) - if err != nil { - return err - } - - commissionRate, err := stakingValidator.Commission.Rate.Float64() - if err != nil { - return err - } - - if err = m.broker.PublishCreateValidatorMessage(ctx, model.CreateValidatorMessage{ - Height: height, - TxHash: hash, - MsgIndex: int64(index), - DelegatorAddress: msg.DelegatorAddress, - ValidatorAddress: msg.ValidatorAddress, - Description: model.ValidatorMessageDescription{ - Moniker: msg.Description.Moniker, - Identity: msg.Description.Identity, - Website: msg.Description.Website, - SecurityContact: msg.Description.SecurityContact, - Details: msg.Description.Details, - }, - CommissionRates: commissionRate, - MinSelfDelegation: stakingValidator.GetMinSelfDelegation().Int64(), - Pubkey: pubKey.String(), - }); err != nil { - return err - } - - if err = m.broker.PublishValidatorDescription(ctx, model.ValidatorDescription{ - OperatorAddress: msg.ValidatorAddress, - Moniker: msg.Description.Moniker, - Identity: msg.Description.Identity, - Website: msg.Description.Website, - SecurityContact: msg.Description.SecurityContact, - Details: msg.Description.Details, - Height: height, - }); err != nil { - return err - } - - // TODO: save to mongo? - if err = m.PublishValidatorsData(ctx, []types.StakingValidator{validator}); err != nil { - return err - } - - // TODO: save to mongo? - // Save the first self-delegation - if err = m.broker.PublishDelegation(ctx, model.Delegation{ - OperatorAddress: msg.ValidatorAddress, - DelegatorAddress: msg.DelegatorAddress, - Height: height, - Coin: m.tbM.MapCoin(types.NewCoinFromSDK(msg.Value)), - }); err != nil { - return err - } - - // FIXME: does it needed? - // Save the description - // err = broker.PublishValidatorDescription(desc) - // if err != nil { - // return err - // } - // - - // Save the commission - // err = broker.publishValidatorCommission(types.NewValidatorCommission( - // msg.ValidatorAddress, - // &msg.Commission.Rate, - // &msg.MinSelfDelegation, - // height, - // )) - return err -} - -// handleMsgBeginRedelegate handles and publishes a MsgBeginRedelegate data to broker. -func (m *Module) handleMsgBeginRedelegate(ctx context.Context, tx *types.Tx, index int, - msg *stakingtypes.MsgBeginRedelegate) error { - - // try to find the completion time in event. It does not exist in IBC transactions - completionTime := findCompletionTimeInEventOrZero(tx, index, stakingtypes.EventTypeRedelegate) - - var ( - redelegationsResp []stakingtypes.RedelegationResponse - nextKey []byte - ) - - for { - respPb, err := m.client.StakingQueryClient.Redelegations(ctx, &stakingtypes.QueryRedelegationsRequest{ - DelegatorAddr: msg.DelegatorAddress, - Pagination: &query.PageRequest{ - Key: nextKey, - Limit: 100, - CountTotal: true, - }, - }) - if err != nil { - s, ok := status.FromError(err) - if !ok { - return err - } - - if s.Code() != codes.NotFound { - return err - } - - goto Publish - } - - // first iteration - if len(nextKey) == 0 { - redelegationsResp = make([]stakingtypes.RedelegationResponse, 0, respPb.Pagination.Total) - } - - nextKey = respPb.Pagination.NextKey - redelegationsResp = append(redelegationsResp, respPb.RedelegationResponses...) - - if len(respPb.Pagination.NextKey) == 0 { - break - } - } - - for _, resp := range redelegationsResp { - for _, entry := range resp.Entries { - if entry.RedelegationEntry.CreationHeight == tx.Height { - completionTime = entry.RedelegationEntry.CompletionTime - continue // we will publish it in the publish section - } - - if err := m.broker.PublishRedelegation(ctx, model.Redelegation{ - Height: entry.RedelegationEntry.CreationHeight, - DelegatorAddress: resp.Redelegation.DelegatorAddress, - SrcValidatorAddress: resp.Redelegation.ValidatorSrcAddress, - DstValidatorAddress: resp.Redelegation.ValidatorDstAddress, - Coin: m.tbM.MapCoin(types.NewCoin(m.defaultDenom, float64(entry.Balance.BigInt().Int64()))), // nolint: lll - CompletionTime: entry.RedelegationEntry.CompletionTime, - }); err != nil { - return err - } - } - } - -Publish: - // TODO: save to mongo? - if err := m.broker.PublishRedelegation(ctx, model.Redelegation{ - Height: tx.Height, - DelegatorAddress: msg.DelegatorAddress, - SrcValidatorAddress: msg.ValidatorSrcAddress, - DstValidatorAddress: msg.ValidatorDstAddress, - Coin: m.tbM.MapCoin(types.NewCoinFromSDK(msg.Amount)), - CompletionTime: completionTime, - }); err != nil { - return err - } - - if err := m.broker.PublishRedelegationMessage(ctx, model.RedelegationMessage{ - Redelegation: model.Redelegation{ - Height: tx.Height, - DelegatorAddress: msg.DelegatorAddress, - SrcValidatorAddress: msg.ValidatorSrcAddress, - DstValidatorAddress: msg.ValidatorDstAddress, - Coin: m.tbM.MapCoin(types.NewCoinFromSDK(msg.Amount)), - CompletionTime: completionTime, - }, - TxHash: tx.TxHash, - MsgIndex: int64(index), - }); err != nil { - return err - } - - // Update the current delegations - if err := m.updateDelegations(ctx, tx.Height, msg.DelegatorAddress, msg.ValidatorSrcAddress); err != nil { - return errors.Wrap(err, "update delegations") - } - - // check the delegations for the current validator - return m.updateOrDisableDelegation(ctx, msg.DelegatorAddress, msg.ValidatorDstAddress, tx.Height) -} - -// handleMsgUndelegate handles MsgUndelegate and publishes data to broker. -func (m *Module) handleMsgUndelegate(ctx context.Context, tx *types.Tx, index int, - msg *stakingtypes.MsgUndelegate) error { - - // try to find the completion time in event. It does not exist in IBC transactions - completionTime := findCompletionTimeInEventOrZero(tx, index, stakingtypes.EventTypeUnbond) - - respPb, err := m.client.StakingQueryClient.UnbondingDelegation(ctx, &stakingtypes.QueryUnbondingDelegationRequest{ - DelegatorAddr: msg.DelegatorAddress, - ValidatorAddr: msg.ValidatorAddress, - }) - if err != nil { - s, ok := status.FromError(err) - if !ok { - return err - } - - if s.Code() != codes.NotFound { - return err - } - - goto PublishMessage - } - - for _, entry := range respPb.Unbond.Entries { - if entry.CreationHeight == tx.Height { - completionTime = entry.CompletionTime - } - - if err = m.broker.PublishUnbondingDelegation(ctx, model.UnbondingDelegation{ - Height: entry.CreationHeight, - DelegatorAddress: respPb.Unbond.DelegatorAddress, - OperatorAddress: respPb.Unbond.ValidatorAddress, - Coin: m.tbM.MapCoin(types.NewCoin(m.defaultDenom, float64(entry.Balance.BigInt().Int64()))), //nolint:lll - CompletionTime: entry.CompletionTime, - }); err != nil { - return err - } - } - -PublishMessage: - if err = m.broker.PublishUnbondingDelegationMessage(ctx, model.UnbondingDelegationMessage{ - UnbondingDelegation: model.UnbondingDelegation{ - Height: tx.Height, - DelegatorAddress: msg.DelegatorAddress, - OperatorAddress: msg.ValidatorAddress, - Coin: m.tbM.MapCoin(types.NewCoinFromSDK(msg.Amount)), - CompletionTime: completionTime, - }, - TxHash: tx.TxHash, - MsgIndex: int64(index), - }); err != nil { - return err - } - - // Update the current delegations - return m.updateDelegations(ctx, tx.Height, msg.DelegatorAddress, msg.ValidatorAddress) -} - -// handleMsgDelegate handles a MsgDelegate and publish the delegation to broker. -func (m *Module) handleMsgDelegate(ctx context.Context, tx *types.Tx, msg *stakingtypes.MsgDelegate, index int) error { - if err := m.broker.PublishDelegationMessage(ctx, model.DelegationMessage{ - Delegation: model.Delegation{ - OperatorAddress: msg.ValidatorAddress, - DelegatorAddress: msg.DelegatorAddress, - Coin: m.tbM.MapCoin(types.NewCoinFromSDK(msg.Amount)), - Height: tx.Height, - }, - TxHash: tx.TxHash, - MsgIndex: int64(index), - }); err != nil { - return err - } - - if err := m.updateOrDisableDelegation(ctx, msg.DelegatorAddress, msg.ValidatorAddress, tx.Height); err != nil { - return errors.Wrap(err, "update or disable delegation") - } - - return nil -} - -// handleEditValidator handles MsgEditValidator and publishes model.ValidatorDescription to broker. -func (m *Module) handleEditValidator( - ctx context.Context, - height int64, - hash string, - index int, - msg *stakingtypes.MsgEditValidator, -) error { - - if err := m.broker.PublishEditValidatorMessage(ctx, model.EditValidatorMessage{ - Height: height, - Hash: hash, - Index: int64(index), - Description: model.ValidatorMessageDescription{ - Moniker: msg.Description.Moniker, - Identity: msg.Description.Identity, - Website: msg.Description.Website, - SecurityContact: msg.Description.SecurityContact, - Details: msg.Description.Details, - }, - }); err != nil { - return err - } - - if err := m.broker.PublishValidatorDescription(ctx, model.ValidatorDescription{ - OperatorAddress: msg.ValidatorAddress, - Moniker: msg.Description.Moniker, - Identity: msg.Description.Identity, - Website: msg.Description.Website, - SecurityContact: msg.Description.SecurityContact, - Details: msg.Description.Details, - Height: height, - }); err != nil { - return err - } - - return nil -} - -// updateDelegations updates the delegations of the given delegator by querying them at the -// required height, and then publishes them to the broker by replacing all existing ones. -// -// also checks the delegation with the current validator address, -// and publishes disabled delegation to the broker if it doesn't exist. -func (m *Module) updateDelegations(ctx context.Context, height int64, delegator, validator string) error { - // Get the delegations - respPb, err := m.client.StakingQueryClient.DelegatorDelegations( - ctx, - &stakingtypes.QueryDelegatorDelegationsRequest{ - DelegatorAddr: delegator, - }, - ) - if err != nil { - return err - } - - var delegationWithCurValidatorExists bool - - for _, delegation := range respPb.DelegationResponses { - if delegation.Delegation.ValidatorAddress == validator { - delegationWithCurValidatorExists = true - } - - if err = m.broker.PublishDelegation(ctx, model.Delegation{ - OperatorAddress: delegation.Delegation.ValidatorAddress, - DelegatorAddress: delegation.Delegation.DelegatorAddress, - Height: height, - Coin: m.tbM.MapCoin(types.NewCoinFromSDK(delegation.Balance)), - }); err != nil { - return err - } - } - - if !delegationWithCurValidatorExists { - if err = m.updateOrDisableDelegation(ctx, delegator, validator, height); err != nil { - return errors.Wrap(err, "disable delegation") - } - } - - return nil -} - -// updateOrDisableDelegation checks the delegation with the given validator address -// if it exists, publishes updated delegation to the broker, otherwise publishes disabled delegation. -func (m *Module) updateOrDisableDelegation(ctx context.Context, delegatorAddr, operatorAddr string, height int64) error { - respPb, err := m.client.StakingQueryClient.Delegation(ctx, - &stakingtypes.QueryDelegationRequest{ - DelegatorAddr: delegatorAddr, - ValidatorAddr: operatorAddr, - }, - grpcClient.GetHeightRequestHeader(height), - ) - if err != nil { - s, ok := status.FromError(err) - if !ok || s.Code() != codes.NotFound { - return err - } - - return m.broker.PublishDisabledDelegation(ctx, model.Delegation{ - OperatorAddress: operatorAddr, - DelegatorAddress: delegatorAddr, - Coin: model.Coin{}, // zero coin - Height: height, - }) - } - - if err = m.broker.PublishDelegation(ctx, model.Delegation{ - OperatorAddress: operatorAddr, - DelegatorAddress: delegatorAddr, - Height: height, - Coin: m.tbM.MapCoin(types.NewCoinFromSDK(respPb.DelegationResponse.Balance)), - }); err != nil { - return err - } - - return nil -} - -// handleMsgCancelUnbondingDelegation handles MsgCancelUnbondingDelegation -// and publishes model.CancelUnbondingDelegationMessage to broker. -func (m *Module) handleMsgCancelUnbondingDelegation( - ctx context.Context, - tx *types.Tx, - index int, - msg *stakingtypes.MsgCancelUnbondingDelegation, -) error { - - return m.broker.PublishCancelUnbondingDelegationMessage(ctx, model.CancelUnbondingDelegationMessage{ - Height: tx.Height, - TxHash: tx.TxHash, - MsgIndex: int64(index), - ValidatorAddress: msg.ValidatorAddress, - DelegatorAddress: msg.DelegatorAddress, - }) -} diff --git a/modules/staking/module.go b/modules/staking/module.go deleted file mode 100644 index 590f6dc..0000000 --- a/modules/staking/module.go +++ /dev/null @@ -1,62 +0,0 @@ -package staking - -import ( - "github.com/cosmos/cosmos-sdk/codec" - "github.com/rs/zerolog" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - tb "github.com/bro-n-bro/spacebox-crawler/pkg/mapper/to_broker" - "github.com/bro-n-bro/spacebox-crawler/types" -) - -const ( - ModuleName = "staking" -) - -var ( - _ types.Module = &Module{} - _ types.GenesisHandler = &Module{} - _ types.BlockHandler = &Module{} - _ types.MessageHandler = &Module{} - _ types.ValidatorsHandler = &Module{} -) - -type ( - AccountCache[K, V comparable] interface { - UpdateCacheValue(K, V) bool - } - - Module struct { - log *zerolog.Logger - client *grpcClient.Client - broker broker - tbM tb.ToBroker - cdc codec.Codec - defaultDenom string - accCache AccountCache[string, int64] - enabledModules []string // xxx fixme - } -) - -func New(b broker, cli *grpcClient.Client, tbM tb.ToBroker, cdc codec.Codec, modules []string, defaultDenom string) *Module { - return &Module{ - log: utils.NewModuleLogger(ModuleName), - broker: b, - client: cli, - tbM: tbM, - cdc: cdc, - enabledModules: modules, - defaultDenom: defaultDenom, - } -} - -func (m *Module) Name() string { return ModuleName } - -func (m *Module) WithAccountCache(cache AccountCache[string, int64]) *Module { - if cache != nil { - m.accCache = cache - } - - return m -} diff --git a/modules/staking/utils.go b/modules/staking/utils.go deleted file mode 100644 index b37f0da..0000000 --- a/modules/staking/utils.go +++ /dev/null @@ -1,138 +0,0 @@ -package staking - -import ( - "context" - "time" - - "github.com/cosmos/cosmos-sdk/codec" - cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/query" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - - grpcClient "github.com/bro-n-bro/spacebox-crawler/client/grpc" - "github.com/bro-n-bro/spacebox-crawler/types" -) - -// GetValidators returns the validators list at the given height. -func GetValidators(ctx context.Context, height int64, stakingClient stakingtypes.QueryClient, - cdc codec.Codec) ([]stakingtypes.Validator, []types.StakingValidator, error) { - - return GetStakingValidators(ctx, height, "", stakingClient, cdc) -} - -// GetStakingValidators returns the list of all the validators having the given status at the given height. -func GetStakingValidators(ctx context.Context, height int64, status string, stakingClient stakingtypes.QueryClient, - cdc codec.Codec) ([]stakingtypes.Validator, []types.StakingValidator, error) { - - header := grpcClient.GetHeightRequestHeader(height) - - var ( - validators []stakingtypes.Validator - nextKey []byte - ) - - for { - respPb, err := stakingClient.Validators( - ctx, - &stakingtypes.QueryValidatorsRequest{ - Status: status, - Pagination: &query.PageRequest{ - Key: nextKey, - Limit: defaultLimit, - }, - }, - header, - ) - if err != nil { - return nil, nil, err - } - - if len(nextKey) == 0 { // first iteration - validators = make([]stakingtypes.Validator, 0, respPb.Pagination.Total) - } - - nextKey = respPb.Pagination.NextKey - validators = append(validators, respPb.Validators...) - - if len(respPb.Pagination.NextKey) == 0 { - break - } - } - - // mapping by pubkey - // tm validator address == consensus address - // staking validator pubkey == tm validator pubkey - - var vals = make([]types.StakingValidator, len(validators)) - - for index, val := range validators { - validator, err := convertValidator(cdc, val, height) - if err != nil { - return nil, nil, err - } - - vals[index] = validator - } - - return validators, vals, nil -} - -// getValidatorConsPubKey returns the consensus public key of the given validator. -func getValidatorConsPubKey(cdc codec.Codec, validator stakingtypes.Validator) (cryptotypes.PubKey, error) { - var pubKey cryptotypes.PubKey - err := cdc.UnpackAny(validator.ConsensusPubkey, &pubKey) - - return pubKey, err -} - -// getValidatorConsAddr returns the consensus address of the given validator. -func getValidatorConsAddr(cdc codec.Codec, validator stakingtypes.Validator) (sdk.ConsAddress, error) { - pubKey, err := getValidatorConsPubKey(cdc, validator) - if err != nil { - return nil, err - } - - return sdk.ConsAddress(pubKey.Address()), err -} - -// convertValidator converts the given staking validator in types.StakingValidator instance. -func convertValidator(cdc codec.Codec, validator stakingtypes.Validator, height int64) (types.StakingValidator, error) { - consAddr, err := getValidatorConsAddr(cdc, validator) - if err != nil { - return nil, err - } - - consPubKey, err := getValidatorConsPubKey(cdc, validator) - if err != nil { - return nil, err - } - - var minSelfDelegation int64 - //nolint:staticcheck - if !validator.MinSelfDelegation.IsNil() { - minSelfDelegation = validator.MinSelfDelegation.Int64() - } - - return types.NewStakingValidator( - consAddr.String(), - validator.OperatorAddress, - consPubKey.String(), - sdk.AccAddress(validator.GetOperator()).String(), - &validator.Commission.MaxChangeRate, - &validator.Commission.MaxRate, - validator.Description, - height, - minSelfDelegation, - ), nil -} - -func findCompletionTimeInEventOrZero(tx *types.Tx, index int, eventName string) (t time.Time) { - if event, err := tx.FindEventByType(index, eventName); err == nil { - if ctStr, err := tx.FindAttributeByKey(event, stakingtypes.AttributeKeyCompletionTime); err == nil { - t, _ = time.Parse(time.RFC3339, ctStr) - } - } - - return -} diff --git a/modules/staking/validators.go b/modules/staking/validators.go deleted file mode 100644 index 565b1e5..0000000 --- a/modules/staking/validators.go +++ /dev/null @@ -1,136 +0,0 @@ -package staking - -import ( - "context" - "fmt" - - cometbftcoretypes "github.com/cometbft/cometbft/rpc/core/types" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -const ( - defaultLimit = 150 -) - -// HandleValidators handles validators for each block height. -func (m *Module) HandleValidators(ctx context.Context, tmValidators *cometbftcoretypes.ResultValidators) error { - vals, validators, err := GetValidators(ctx, tmValidators.BlockHeight, m.client.StakingQueryClient, m.cdc) - if err != nil { - return err - } - - if err = m.PublishValidatorsData(ctx, validators); err != nil { - return err - } - - if err = m.publishValidatorDescriptions(ctx, vals, tmValidators.BlockHeight); err != nil { - return err - } - - for _, val := range vals { - consAddr, err := getValidatorConsAddr(m.cdc, val) - if err != nil { - return fmt.Errorf("error while getting validator consensus address: %w", err) - } - - if err = m.broker.PublishValidatorStatus(ctx, model.ValidatorStatus{ - Height: tmValidators.BlockHeight, - ConsensusAddress: consAddr.String(), - Status: int64(val.GetStatus()), - Jailed: val.IsJailed(), - }); err != nil { - return err - } - - if err := m.broker.PublishValidatorCommission(ctx, model.ValidatorCommission{ - Height: tmValidators.BlockHeight, - OperatorAddress: val.OperatorAddress, - Commission: val.Commission.Rate.MustFloat64(), - MaxChangeRate: val.Commission.MaxChangeRate.MustFloat64(), - MaxRate: val.Commission.MaxRate.MustFloat64(), - }); err != nil { - return err - } - } - - // FIXME: does it needed? - // Update the voting powers - // go updateValidatorVotingPower(block.Height, vals) - - return nil -} - -// PublishValidatorsData produces a message about validator, account and validator info to the broker. -func (m *Module) PublishValidatorsData(ctx context.Context, sVals []types.StakingValidator) error { - for _, val := range sVals { - if err := m.broker.PublishValidator(ctx, model.Validator{ - ConsensusAddress: val.GetConsAddr(), - ConsensusPubkey: val.GetConsPubKey(), - OperatorAddress: val.GetOperator(), - Height: val.GetHeight(), - }); err != nil { - return err - } - - if err := utils.GetAndPublishAccount(ctx, val.GetSelfDelegateAddress(), val.GetHeight(), m.accCache, - m.broker, m.client.AuthQueryClient); err != nil { - return err - } - - if err := m.broker.PublishValidatorInfo(ctx, model.ValidatorInfo{ - ConsensusAddress: val.GetConsAddr(), - OperatorAddress: val.GetOperator(), - SelfDelegateAddress: val.GetSelfDelegateAddress(), - MinSelfDelegation: val.GetMinSelfDelegation(), - Height: val.GetHeight(), - }); err != nil { - return err - } - } - - return nil -} - -// asyncPublishValidatorDescriptions process validator descriptions and publish them to the broker. -func (m *Module) publishValidatorDescriptions(ctx context.Context, vals stakingtypes.Validators, height int64) error { - for _, val := range vals { - if err := m.publishValidatorDescription(ctx, val, height); err != nil { - return err - } - } - - return nil -} - -// publishValidatorDescription process validator description and publish it to the broker. -// It also gets avatar url from the keybase. -// Contains the cache for validator identity to skip the keybase API call as it might be stopped due to rate limits. -func (m *Module) publishValidatorDescription( - ctx context.Context, - val stakingtypes.Validator, - height int64, -) error { - - if err := m.broker.PublishValidatorDescription(ctx, model.ValidatorDescription{ - OperatorAddress: val.OperatorAddress, - Moniker: val.Description.Moniker, - Identity: val.Description.Identity, - Website: val.Description.Website, - SecurityContact: val.Description.SecurityContact, - Details: val.Description.Details, - Height: height, - }); err != nil { - m.log.Error().Err(err). - Str("operator_address", val.OperatorAddress). - Str("identity", val.Description.Identity). - Int64("height", height). - Msg("failed to publish validator description") - return err - } - - return nil -} diff --git a/modules/utils/account.go b/modules/utils/account.go deleted file mode 100644 index 58341e0..0000000 --- a/modules/utils/account.go +++ /dev/null @@ -1,95 +0,0 @@ -package utils - -import ( - "context" - "encoding/json" - "strings" - - "github.com/cosmos/cosmos-sdk/codec" - sdk "github.com/cosmos/cosmos-sdk/types" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/pkg/errors" - - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -type ( - AccountCache[K, V comparable] interface { - UpdateCacheValue(K, V) bool - } - - AccountPublisher interface { - PublishAccount(ctx context.Context, account model.Account) error - } -) - -// GetGenesisAccounts parses the given appState and returns the genesis accounts -func GetGenesisAccounts(appState map[string]json.RawMessage, cdc codec.Codec) ([]types.Account, error) { - var authState authtypes.GenesisState - if err := cdc.UnmarshalJSON(appState[authtypes.ModuleName], &authState); err != nil { - return nil, err - } - - // Store the accounts - accounts := make([]types.Account, 0) - - for _, account := range authState.Accounts { - var accountI authtypes.AccountI - if err := cdc.UnpackAny(account, &accountI); err != nil { - return nil, err - } - - accounts = append(accounts, types.NewAccount(accountI.GetAddress().String(), account.TypeUrl, 0)) - } - - return accounts, nil -} - -// FilterNonAccountAddresses returns a slice containing only account addresses. -func FilterNonAccountAddresses(addresses []string) []string { - // Filter using only the account addresses as the MessageAddressesParser might return also validator addresses - accountAddresses := make([]string, 0) - - for _, address := range addresses { - if _, err := sdk.AccAddressFromBech32(address); err == nil { // needs correct addresses only - accountAddresses = append(accountAddresses, address) - } - } - - return accountAddresses -} - -// GetAndPublishAccount retrieves the account from the given address and publishes it. -func GetAndPublishAccount( - ctx context.Context, - address string, - height int64, - cache AccountCache[string, int64], - publisher AccountPublisher, - client authtypes.QueryClient, -) error { - - // allow only for account addresses - if !strings.HasPrefix(address, sdk.GetConfig().GetBech32AccountAddrPrefix()) || - strings.HasPrefix(address, sdk.GetConfig().GetBech32ValidatorAddrPrefix()) || - strings.HasPrefix(address, sdk.GetConfig().GetBech32ConsensusAddrPrefix()) { - - return nil - } - - if !cache.UpdateCacheValue(address, height) { - return nil - } - - respPb, err := client.Account(ctx, &authtypes.QueryAccountRequest{Address: address}) - if err != nil { - return errors.Wrap(err, "fail to get account") - } - - return publisher.PublishAccount(ctx, model.Account{ - Address: address, - Type: respPb.Account.TypeUrl, - Height: height, - }) -} diff --git a/modules/utils/coin.go b/modules/utils/coin.go deleted file mode 100644 index ccd539b..0000000 --- a/modules/utils/coin.go +++ /dev/null @@ -1,36 +0,0 @@ -package utils - -import ( - "regexp" - "strconv" - "strings" - - "github.com/pkg/errors" - - "github.com/bro-n-bro/spacebox-crawler/types" -) - -var ( - withdrawDelegationRewardRegex = regexp.MustCompile(`^(\-?[0-9]+(\.[0-9]+)?)([0-9a-zA-Z/]+)$`) -) - -// ParseCoinsFromString converts string to coin type -func ParseCoinsFromString(value string) (types.Coins, error) { - rows := strings.Split(value, ",") - res := make(types.Coins, len(rows)) - for i, row := range rows { - bits := withdrawDelegationRewardRegex.FindStringSubmatch(row) - if len(bits) < 4 { - continue - } - amount, err := strconv.ParseFloat(bits[1], 64) - if err != nil { - return types.Coins{}, errors.Wrap(err, "failed to parse float") - } - res[i] = types.Coin{ - Denom: bits[3], - Amount: amount, - } - } - return res, nil -} diff --git a/modules/utils/coin_test.go b/modules/utils/coin_test.go deleted file mode 100644 index 7045118..0000000 --- a/modules/utils/coin_test.go +++ /dev/null @@ -1,65 +0,0 @@ -package utils - -import ( - "testing" - - "github.com/stretchr/testify/require" - - "github.com/bro-n-bro/spacebox-crawler/types" -) - -func TestCoinFromBytes(t *testing.T) { - testCases := []struct { - value string - want types.Coins - }{ - { - value: "12345uatom", - want: types.Coins{ - types.Coin{ - Denom: "uatom", - Amount: 12345, - }, - }, - }, - { - value: "123456789uatom", - want: types.Coins{ - types.Coin{ - Denom: "uatom", - Amount: 123456789, - }, - }, - }, - { - value: "1uatom", - want: types.Coins{ - types.Coin{ - Denom: "uatom", - Amount: 1, - }, - }, - }, - { - value: "1ibc/B05539B66B72E2739B986B86391E5D08F12B8D5D2C2A7F8F8CF9ADF674DFA231,4146906uatom", - want: types.Coins{ - types.Coin{ - Denom: "ibc/B05539B66B72E2739B986B86391E5D08F12B8D5D2C2A7F8F8CF9ADF674DFA231", - Amount: 1, - }, - types.Coin{ - Denom: "uatom", - Amount: 4146906, - }, - }, - }, - } - - for _, tt := range testCases { - t.Run(tt.value, func(t *testing.T) { - got, err := ParseCoinsFromString(tt.value) - require.NoError(t, err) - require.Equal(t, tt.want, got) - }) - } -} diff --git a/modules/utils/ptr.go b/modules/utils/ptr.go deleted file mode 100644 index 47225a9..0000000 --- a/modules/utils/ptr.go +++ /dev/null @@ -1,12 +0,0 @@ -package utils - -import "time" - -// TimeFromPtr returns time.Time from *time.Time. If t is nil, returns time.Time{}. -func TimeFromPtr(t *time.Time) time.Time { - if t == nil { - return time.Time{} - } - - return *t -} diff --git a/modules/utils/utils.go b/modules/utils/utils.go index 619d6fa..6b21597 100644 --- a/modules/utils/utils.go +++ b/modules/utils/utils.go @@ -1,31 +1,11 @@ package utils import ( - "encoding/base64" "os" "github.com/rs/zerolog" - "golang.org/x/exp/constraints" ) -func ContainAny[T constraints.Ordered](src []T, trg T) bool { - for _, v := range src { - if v == trg { - return true - } - } - - return false -} - -func DecodeToString(v string) (string, error) { - val, err := base64.StdEncoding.DecodeString(v) - if err != nil { - return "", err - } - - return string(val), nil -} func NewModuleLogger(name string) *zerolog.Logger { logger := zerolog. New(os.Stderr). diff --git a/modules/wasm/broker.go b/modules/wasm/broker.go deleted file mode 100644 index 26363c5..0000000 --- a/modules/wasm/broker.go +++ /dev/null @@ -1,12 +0,0 @@ -package wasm - -import ( - "context" - - "github.com/bro-n-bro/spacebox/broker/model" -) - -type broker interface { - PublishCyberlink(context.Context, model.Cyberlink) error - PublishParticle(context.Context, model.Particle) error -} diff --git a/modules/wasm/message.go b/modules/wasm/message.go deleted file mode 100644 index 113fd4b..0000000 --- a/modules/wasm/message.go +++ /dev/null @@ -1,270 +0,0 @@ -package wasm - -import ( - "context" - "slices" - - wasm "github.com/CosmWasm/wasmd/x/wasm/types" - sdk "github.com/cosmos/cosmos-sdk/types" - graph "github.com/cybercongress/go-cyber/x/graph/types" - jsoniter "github.com/json-iterator/go" - "github.com/pkg/errors" - - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -const ( - msgErrorPublishingCyberLink = "error while publishing cyber_link" - msgErrorPublishingParticle = "error while publishing particle" -) - -type clMessage struct { - CyberLink graph.MsgCyberlink `json:"cyberlink"` -} - -func (m *Module) HandleMessage(ctx context.Context, index int, bostromMsg sdk.Msg, tx *types.Tx) error { - if len(tx.Logs) == 0 { - return nil - } - - msg, ok := bostromMsg.(*wasm.MsgExecuteContract) - if !ok { - return nil - } - - // try to find links if we were able to unmarshal the message - clMsg := clMessage{} - if err := jsoniter.Unmarshal(msg.Msg, &clMsg); err == nil { - if clMsg.CyberLink.Neuron == "" { - clMsg.CyberLink.Neuron = msg.Contract - } - - if clMsg.CyberLink.Neuron != "" && len(clMsg.CyberLink.Links) > 0 { - for _, link := range clMsg.CyberLink.Links { - if err = m.broker.PublishCyberlink(ctx, model.Cyberlink{ - ParticleFrom: link.From, - ParticleTo: link.To, - Neuron: clMsg.CyberLink.Neuron, - Timestamp: tx.Timestamp, - TxHash: tx.TxHash, - Height: tx.Height, - }); err != nil { - return errors.Wrap(err, msgErrorPublishingCyberLink) - } - - for _, particle := range []string{link.From, link.To} { - if err = m.broker.PublishParticle(ctx, model.Particle{ - Particle: particle, - Neuron: clMsg.CyberLink.Neuron, - Timestamp: tx.Timestamp, - TxHash: tx.TxHash, - Height: tx.Height, - }); err != nil { - return errors.Wrap(err, msgErrorPublishingParticle) - } - } - } - - return nil - } - } - - if err := m.findAndPublishCyberLinks(ctx, tx, index); err != nil { - if errors.Is(err, types.ErrNoEventFound) || errors.Is(err, types.ErrNoAttributeFound) { - return nil - } - - return err - } - - return nil -} - -func (m *Module) findAndPublishCyberLinks(ctx context.Context, tx *types.Tx, index int) error { - event, err := tx.FindEventByType(index, graph.EventTypeCyberlink) - if err != nil { - return err - } - - links := make([]model.Cyberlink, 0, 1) - - switch { - case len(event.Attributes) <= 3: - links = append(links, m.findOneLink(event, tx)) - case event.Attributes[2].Key == graph.AttributeKeyNeuron: - slices.Grow(links, len(event.Attributes)/3) - links = append(links, m.findWithSequence(event, tx)...) - case event.Attributes[len(event.Attributes)-1].Key == graph.AttributeKeyNeuron: - slices.Grow(links, len(event.Attributes)/2) - links = append(links, m.findWithCommonNeuron(event, tx)...) - } - - for _, link := range links { - if err = m.broker.PublishCyberlink(ctx, link); err != nil { - return errors.Wrap(err, msgErrorPublishingCyberLink) - } - - for _, particle := range []string{link.ParticleFrom, link.ParticleTo} { - if err = m.broker.PublishParticle(ctx, model.Particle{ - Particle: particle, - Neuron: link.Neuron, - Timestamp: tx.Timestamp, - TxHash: tx.TxHash, - Height: tx.Height, - }); err != nil { - return errors.Wrap(err, msgErrorPublishingParticle) - } - } - } - - return nil -} - -func (m *Module) findOneLink(event sdk.StringEvent, tx *types.Tx) model.Cyberlink { - from, _ := tx.FindAttributeByKey(event, graph.AttributeKeyParticleFrom) - to, _ := tx.FindAttributeByKey(event, graph.AttributeKeyParticleTo) - neuron, _ := tx.FindAttributeByKey(event, graph.AttributeKeyNeuron) - - return model.Cyberlink{ - ParticleFrom: from, - ParticleTo: to, - Neuron: neuron, - Timestamp: tx.Timestamp, - TxHash: tx.TxHash, - Height: tx.Height, - } -} - -// { -// key: "particleFrom", -// value: "QmR8xA9EyCQhGWu9cUs4fmsZnsVGGFLfY8z1eHrbqNRQUB" -// }, -// -// { -// key: "particleTo", -// value: "QmW5GREog52duzpQbHQ2da8NCQSkL218TWW9hQzsR11bGM" -// }, -// -// { -// key: "particleFrom", -// value: "QmaoRBnpjnjcqfYyUDvQx2s7ZBtHJbycU8bEw9AWWLaQVd" -// }, -// -// { -// key: "particleTo", -// value: "QmW5GREog52duzpQbHQ2da8NCQSkL218TWW9hQzsR11bGM" -// }, -// -// { -// key: "neuron", -// value: "bostrom1jkte0pytr85qg0whmgux3vmz9ehmh82w40h8gaqeg435fnkyfxqq9qaku3" -// } -func (m *Module) findWithCommonNeuron(event sdk.StringEvent, tx *types.Tx) []model.Cyberlink { - links := make([]model.Cyberlink, 0) - - // common neuron - neuron := event.Attributes[len(event.Attributes)-1].Value - - for i := 0; i < len(event.Attributes)-1; i += 2 { - var from, to string - switch event.Attributes[i].Key { - case graph.AttributeKeyParticleFrom: - from = event.Attributes[i].Value - case graph.AttributeKeyParticleTo: - to = event.Attributes[i].Value - } - - switch event.Attributes[i+1].Key { - case graph.AttributeKeyParticleFrom: - from = event.Attributes[i+1].Value - case graph.AttributeKeyParticleTo: - to = event.Attributes[i+1].Value - } - - links = append(links, model.Cyberlink{ - ParticleFrom: from, - ParticleTo: to, - Neuron: neuron, - Timestamp: tx.Timestamp, - TxHash: tx.TxHash, - Height: tx.Height, - }) - } - - return links -} - -// { -// key: "particleFrom", -// value: "QmTEv3kLMPNkX3yv92ixzr17t5ayVi99Nkso3QDtKs7qta" -// }, -// -// { -// key: "particleTo", -// value: "QmQ8XsZSdNWNbu1FZpJyua8CXMQTq6dLnsHaqLtpEw8GXL" -// }, -// -// { -// key: "neuron", -// value: "bostrom1jkte0pytr85qg0whmgux3vmz9ehmh82w40h8gaqeg435fnkyfxqq9qaku3" -// }, -// -// { -// key: "particleFrom", -// value: "QmTEv3kLMPNkX3yv92ixzr17t5ayVi99Nkso3QDtKs7qta" -// }, -// -// { -// key: "particleTo", -// value: "QmQ8XsZSdNWNbu1FZpJyua8CXMQTq6dLnsHaqLtpEw8GXL" -// }, -// -// { -// key: "neuron", -// value: "bostrom1jkte0pytr85qg0whmgux3vmz9ehmh82w40h8gaqeg435fnkyfxqq9qaku3" -// } -func (m *Module) findWithSequence(event sdk.StringEvent, tx *types.Tx) []model.Cyberlink { - links := make([]model.Cyberlink, 0) - - for i := 0; i < len(event.Attributes); i += 3 { - var from, to, neuron string - switch event.Attributes[i].Key { - case graph.AttributeKeyParticleFrom: - from = event.Attributes[i].Value - case graph.AttributeKeyParticleTo: - to = event.Attributes[i].Value - case graph.AttributeKeyNeuron: - neuron = event.Attributes[i].Value - } - - switch event.Attributes[i+1].Key { - case graph.AttributeKeyParticleFrom: - from = event.Attributes[i+1].Value - case graph.AttributeKeyParticleTo: - to = event.Attributes[i+1].Value - case graph.AttributeKeyNeuron: - neuron = event.Attributes[i+1].Value - } - - switch event.Attributes[i+2].Key { - case graph.AttributeKeyParticleFrom: - from = event.Attributes[i+2].Value - case graph.AttributeKeyParticleTo: - to = event.Attributes[i+2].Value - case graph.AttributeKeyNeuron: - neuron = event.Attributes[i+2].Value - } - - links = append(links, model.Cyberlink{ - ParticleFrom: from, - ParticleTo: to, - Neuron: neuron, - Timestamp: tx.Timestamp, - TxHash: tx.TxHash, - Height: tx.Height, - }) - } - - return links -} diff --git a/modules/wasm/module.go b/modules/wasm/module.go deleted file mode 100644 index b9b05d3..0000000 --- a/modules/wasm/module.go +++ /dev/null @@ -1,36 +0,0 @@ -package wasm - -import ( - "github.com/cosmos/cosmos-sdk/codec" - "github.com/rs/zerolog" - - "github.com/bro-n-bro/spacebox-crawler/modules/utils" - "github.com/bro-n-bro/spacebox-crawler/types" -) - -const ( - ModuleName = "wasm" -) - -var ( - _ types.Module = &Module{} - _ types.MessageHandler = &Module{} -) - -type ( - Module struct { - log *zerolog.Logger - broker broker - cdc codec.Codec - } -) - -func New(b broker, cdc codec.Codec) *Module { - return &Module{ - log: utils.NewModuleLogger(ModuleName), - broker: b, - cdc: cdc, - } -} - -func (m *Module) Name() string { return ModuleName } diff --git a/pkg/cache/cache.go b/pkg/cache/cache.go deleted file mode 100644 index 929fed9..0000000 --- a/pkg/cache/cache.go +++ /dev/null @@ -1,82 +0,0 @@ -package cache - -import ( - lru "github.com/hashicorp/golang-lru/v2" - "github.com/prometheus/client_golang/prometheus" -) - -type ( - CompareFn[V comparable] func(cacheVal, newVal V) bool - - Cache[K, V comparable] struct { - cache *lru.Cache[K, V] - - globalMetric *prometheus.CounterVec - lengthMetric *prometheus.GaugeVec - specialMetric *prometheus.CounterVec - - compareFn CompareFn[V] - instance string - } -) - -// New creates the new Cache instance -func New[K, V comparable](size int, opts ...Option[K, V]) (*Cache[K, V], error) { - c, err := lru.New[K, V](size) - if err != nil { - return nil, err - } - - cache := &Cache[K, V]{cache: c} - - for _, opt := range opts { - opt(cache) - } - - return cache, nil -} - -func (c *Cache[K, V]) Patch(opt Option[K, V]) { - opt(c) -} - -// UpdateCacheValue returns true if nev value updated in cache. -func (c *Cache[K, V]) UpdateCacheValue(key K, newVal V) (updated bool) { - cacheVal, ok := c.cache.Get(key) - if !ok { - c.cache.Add(key, newVal) - c.miss() - return true - } - - if c.compareFn != nil && c.compareFn(cacheVal, newVal) { - c.cache.Add(key, newVal) - c.miss() - return true - } - - c.hit() - return -} - -func (c *Cache[K, V]) hit() { - if c.globalMetric != nil { - c.globalMetric.WithLabelValues("hit").Inc() - } - - if c.specialMetric != nil { - c.specialMetric.With(prometheus.Labels{"instance": c.instance, "action": "hit"}).Inc() - } -} - -func (c *Cache[K, V]) miss() { - if c.globalMetric != nil { - c.globalMetric.WithLabelValues("miss").Inc() - } - if c.specialMetric != nil { - c.specialMetric.With(prometheus.Labels{"instance": c.instance, "action": "miss"}).Inc() - } - if c.lengthMetric != nil { - c.lengthMetric.With(prometheus.Labels{"instance": c.instance}).Set(float64(c.cache.Len())) - } -} diff --git a/pkg/cache/metrics.go b/pkg/cache/metrics.go deleted file mode 100644 index d491627..0000000 --- a/pkg/cache/metrics.go +++ /dev/null @@ -1,38 +0,0 @@ -package cache - -import ( - "sync" - - "github.com/prometheus/client_golang/prometheus" - "github.com/prometheus/client_golang/prometheus/promauto" -) - -var ( - instanceHitMissMetric *prometheus.CounterVec - cacheLengthMetric *prometheus.GaugeVec - hitMissMetric *prometheus.CounterVec - - once sync.Once -) - -func RegisterMetrics(namespace string) { - once.Do(func() { - instanceHitMissMetric = promauto.NewCounterVec(prometheus.CounterOpts{ - Namespace: namespace, - Name: "special_cache", - Help: "Hit miss cache metric by instance", - }, []string{"instance", "action"}) - - cacheLengthMetric = promauto.NewGaugeVec(prometheus.GaugeOpts{ - Namespace: namespace, - Name: "cache_length", - Help: "Items in cache by instance", - }, []string{"instance"}) - - hitMissMetric = promauto.NewCounterVec(prometheus.CounterOpts{ - Namespace: namespace, - Name: "global_cache", - Help: "Hit miss cache metrics", - }, []string{"action"}) - }) -} diff --git a/pkg/cache/options.go b/pkg/cache/options.go deleted file mode 100644 index 8a135f5..0000000 --- a/pkg/cache/options.go +++ /dev/null @@ -1,18 +0,0 @@ -package cache - -type Option[K, V comparable] func(*Cache[K, V]) - -func WithMetrics[K, V comparable](instanceName string) Option[K, V] { - return func(c *Cache[K, V]) { - c.specialMetric = instanceHitMissMetric - c.globalMetric = hitMissMetric - c.lengthMetric = cacheLengthMetric - c.instance = instanceName - } -} - -func WithCompareFunc[K, V comparable](compareFn CompareFn[V]) Option[K, V] { - return func(c *Cache[K, V]) { - c.compareFn = compareFn - } -} diff --git a/pkg/keybase/client.go b/pkg/keybase/client.go deleted file mode 100644 index c29ae2f..0000000 --- a/pkg/keybase/client.go +++ /dev/null @@ -1,38 +0,0 @@ -package keybase - -import ( - "context" - "net/http" - "time" - - "golang.org/x/time/rate" -) - -var ( - // DefaultHTTPClient is the default rate limited HTTP client - DefaultHTTPClient = &RLHTTPClient{ - client: http.DefaultClient, - Ratelimiter: rate.NewLimiter(rate.Every(1*time.Second), 25), // 25 request per 1 second - } -) - -type ( - // RLHTTPClient Rate Limited HTTP Client - RLHTTPClient struct { - client *http.Client - Ratelimiter *rate.Limiter - } -) - -// Do dispatches the HTTP request to the network -func (c *RLHTTPClient) Do(ctx context.Context, req *http.Request) (*http.Response, error) { - // Comment out the below 3 lines to turn off rate limiting - if err := c.Ratelimiter.Wait(ctx); err != nil { // This is a blocking call. Honours the rate limit - return nil, err - } - resp, err := c.client.Do(req) - if err != nil { - return nil, err - } - return resp, nil -} diff --git a/pkg/keybase/keybase.go b/pkg/keybase/keybase.go deleted file mode 100644 index 85476ee..0000000 --- a/pkg/keybase/keybase.go +++ /dev/null @@ -1,85 +0,0 @@ -package keybase - -import ( - "context" - "errors" - "fmt" - "io" - "net/http" - - jsoniter "github.com/json-iterator/go" -) - -const ( - fmtKeyBaseEndpoint = "https://keybase.io/_/api/1.0/user/lookup.json?key_suffix=%[1]s&fields=basics&fields=pictures" -) - -var ( - errInvalidStatusCode = errors.New("invalid status code") -) - -// GetAvatarURL returns the avatar URL from the given identity. -// If no identity is found, it returns an empty string instead. -func GetAvatarURL(ctx context.Context, identity string) (string, error) { - if len(identity) != 16 { - return "", nil - } - - var response IdentityQueryResponse - if err := queryKeyBase(ctx, identity, &response); err != nil { - return "", err - } - - // The server responded with an error - if response.Status.Code != 0 { - return "", fmt.Errorf("%w: %s", errInvalidStatusCode, response.Status.ErrDesc) - } - - // No images found - if len(response.Objects) == 0 { - return "", nil - } - - // Either the pictures do not exist, or the primary one does not exist, or the URL is empty - data := response.Objects[0] - if data.Pictures == nil || data.Pictures.Primary == nil || len(data.Pictures.Primary.URL) == 0 { - return "", nil - } - - // The picture URL is found - return data.Pictures.Primary.URL, nil -} - -// queryKeyBase queries the KeyBase APIs for the given endpoint, and deserializes -// the response as a JSON object inside the given data. -// Uses custom HTTP client to rate limit the requests to avoid 429 error code from API. -func queryKeyBase(ctx context.Context, identity string, data interface{}) error { - req, err := http.NewRequest(http.MethodGet, fmt.Sprintf(fmtKeyBaseEndpoint, identity), nil) - if err != nil { - return err - } - - // call the API - resp, err := DefaultHTTPClient.Do(ctx, req) - if err != nil { - return err - } - - defer resp.Body.Close() - - // check status code - if resp.StatusCode != http.StatusOK { - return fmt.Errorf("%w: %v", errInvalidStatusCode, resp.Status) - } - - bz, err := io.ReadAll(resp.Body) - if err != nil { - return err - } - - if err = jsoniter.Unmarshal(bz, &data); err != nil { - return err - } - - return nil -} diff --git a/pkg/keybase/models.go b/pkg/keybase/models.go deleted file mode 100644 index 43ce56a..0000000 --- a/pkg/keybase/models.go +++ /dev/null @@ -1,30 +0,0 @@ -package keybase - -type ( - // IdentityQueryResponse represents the response to an identity query - IdentityQueryResponse struct { - Status QueryStatus `json:"status"` - Objects []AccountDetails `json:"them"` - } - - // QueryStatus contains the details of the status of a request - QueryStatus struct { - ErrDesc string `json:"desc"` - Code int64 `json:"code"` - } - - // AccountDetails contains the data of a single account details - AccountDetails struct { - Pictures *AccountPictures `json:"pictures"` - } - - // AccountPictures contains the info of an account's pictures - AccountPictures struct { - Primary *Picture `json:"primary"` - } - - // Picture contains the info of a single picture - Picture struct { - URL string `json:"url"` - } -) diff --git a/pkg/mapper/to_broker/map_coins.go b/pkg/mapper/to_broker/map_coins.go deleted file mode 100644 index b833f83..0000000 --- a/pkg/mapper/to_broker/map_coins.go +++ /dev/null @@ -1,22 +0,0 @@ -package tobroker - -import ( - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (tb *ToBroker) MapCoin(coin types.Coin) model.Coin { - return model.Coin{ - Denom: coin.Denom, - Amount: coin.Amount, - } -} - -func (tb *ToBroker) MapCoins(coins types.Coins) model.Coins { - res := make(model.Coins, len(coins)) - for i, c := range coins { - res[i] = tb.MapCoin(c) - } - - return res -} diff --git a/pkg/mapper/to_broker/map_message.go b/pkg/mapper/to_broker/map_message.go deleted file mode 100644 index 9f672a3..0000000 --- a/pkg/mapper/to_broker/map_message.go +++ /dev/null @@ -1,16 +0,0 @@ -package tobroker - -import ( - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (tb *ToBroker) MapMessage(txHash, msgType, signer string, index int, accounts []string, value []byte) model.Message { - return model.Message{ - TransactionHash: txHash, - MsgIndex: int64(index), - Type: msgType, - InvolvedAccountsAddresses: accounts, - Signer: signer, - Value: value, - } -} diff --git a/pkg/mapper/to_broker/map_transaction.go b/pkg/mapper/to_broker/map_transaction.go deleted file mode 100644 index a657275..0000000 --- a/pkg/mapper/to_broker/map_transaction.go +++ /dev/null @@ -1,94 +0,0 @@ -package tobroker - -import ( - "strings" - - sdk "github.com/cosmos/cosmos-sdk/types" - - "github.com/bro-n-bro/spacebox-crawler/types" - "github.com/bro-n-bro/spacebox/broker/model" -) - -func (tb *ToBroker) MapTransaction(tx *types.Tx) (model.Transaction, error) { - var ( - signatures = make([]string, 0, len(tx.Signatures)) - messages = make([][]byte, len(tx.Body.Messages)) - ) - - for _, s := range tx.Signatures { - signer, err := types.ConvertAddressToBech32String(types.BytesToAddress(s)) - if err == nil { - signatures = append(signatures, signer) - } - } - - for i, msg := range tx.Body.Messages { - msgBytes, err := tb.cdc.MarshalJSON(msg) - if err != nil { - if strings.HasPrefix(err.Error(), "unable to resolve type URL") { - msgBytes = msg.Value - } else { - return model.Transaction{}, err - } - } - - messages[i] = msgBytes - } - - logs, err := tb.amino.MarshalJSON(tx.Logs) - if err != nil { - return model.Transaction{}, err - } - - t := model.Transaction{ - Hash: tx.TxHash, - Height: tx.Height, - Success: tx.Successful(), - Messages: messages, - Memo: tx.Body.Memo, - Signatures: signatures, - Signer: tx.Signer, - GasWanted: tx.GasWanted, - GasUsed: tx.GasUsed, - RawLog: tx.RawLog, - Logs: logs, - } - - if tx.AuthInfo != nil { - if tx.AuthInfo.SignerInfos != nil { - infos := make([]model.SignersInfo, len(tx.AuthInfo.SignerInfos)) - for i, info := range tx.AuthInfo.SignerInfos { - // info.ModeInfo // TODO: add it - infos[i] = model.SignersInfo{ - PublicKey: info.PublicKey.String(), - Sequence: info.Sequence, - } - } - - t.SignerInfos = infos - } - - if tx.AuthInfo.Fee != nil { - var payer string - if tx.AuthInfo.Fee.Payer == "" && len(tx.Body.Messages) > 0 { - // XXX - // without this we will get a panic if transaction cannot contain a feePayer - var stdMsg sdk.Msg - if err = tb.cdc.UnpackAny(tx.Body.Messages[0], &stdMsg); err == nil { - payer = stdMsg.GetSigners()[0].String() - } - } else { - payer = tx.FeePayer().String() - } - - t.Fee = &model.Fee{ - Coins: tb.MapCoins(types.NewCoinsFromSDK(tx.GetFee())), - GasLimit: tx.GetGas(), - Granter: tx.FeeGranter().String(), - Payer: payer, - } - } - } - - return t, nil -} diff --git a/pkg/mapper/to_broker/to_broker.go b/pkg/mapper/to_broker/to_broker.go deleted file mode 100644 index 850c2aa..0000000 --- a/pkg/mapper/to_broker/to_broker.go +++ /dev/null @@ -1,18 +0,0 @@ -package tobroker - -import "github.com/cosmos/cosmos-sdk/codec" - -type ( - // ToBroker mapper - ToBroker struct { - cdc codec.Codec - amino *codec.LegacyAmino - } -) - -func NewToBroker(cdc codec.Codec, amino *codec.LegacyAmino) *ToBroker { - return &ToBroker{ - cdc: cdc, - amino: amino, - } -} diff --git a/pkg/mapper/to_storage/block.go b/pkg/mapper/to_storage/block.go index 94c27bd..407ff96 100644 --- a/pkg/mapper/to_storage/block.go +++ b/pkg/mapper/to_storage/block.go @@ -3,7 +3,7 @@ package tostorage import ( "time" - "github.com/bro-n-bro/spacebox-crawler/adapter/storage/model" + "github.com/bro-n-bro/spacebox-crawler/v2/adapter/storage/model" ) func (ts *ToStorage) NewBlock(height int64) *model.Block { diff --git a/pkg/mapper/to_storage/error_message.go b/pkg/mapper/to_storage/error_message.go index c4fd46c..307e29f 100644 --- a/pkg/mapper/to_storage/error_message.go +++ b/pkg/mapper/to_storage/error_message.go @@ -3,7 +3,7 @@ package tostorage import ( "time" - "github.com/bro-n-bro/spacebox-crawler/adapter/storage/model" + "github.com/bro-n-bro/spacebox-crawler/v2/adapter/storage/model" ) func (ts *ToStorage) NewErrorMessage(height int64, errMsg string) model.Message { diff --git a/pkg/worker/modules.go b/pkg/worker/modules.go index 602bed9..8e4549c 100644 --- a/pkg/worker/modules.go +++ b/pkg/worker/modules.go @@ -1,6 +1,6 @@ package worker -import "github.com/bro-n-bro/spacebox-crawler/types" +import "github.com/bro-n-bro/spacebox-crawler/v2/types" var ( transactionHandlers []types.TransactionHandler diff --git a/pkg/worker/process.go b/pkg/worker/process.go index 6977808..6803b58 100644 --- a/pkg/worker/process.go +++ b/pkg/worker/process.go @@ -14,7 +14,7 @@ import ( jsoniter "github.com/json-iterator/go" "golang.org/x/sync/errgroup" - "github.com/bro-n-bro/spacebox-crawler/types" + "github.com/bro-n-bro/spacebox-crawler/v2/types" ) const ( @@ -117,7 +117,7 @@ func (w *Worker) processHeight(ctx context.Context, workerIndex int, height int6 _blockDur := time.Now() if block, err = w.grpcClient.Block(ctx2, height); err != nil { - return err + return fmt.Errorf("failed to get block: %w", err) } w.log.Debug(). Int("worker_number", workerIndex). @@ -131,7 +131,7 @@ func (w *Worker) processHeight(ctx context.Context, workerIndex int, height int6 var err error _validatorsDur := time.Now() if vals, err = w.grpcClient.Validators(ctx2, height); err != nil { - return err + return fmt.Errorf("failed to get validators: %w", err) } w.log.Debug(). Int("worker_number", workerIndex). @@ -147,7 +147,7 @@ func (w *Worker) processHeight(ctx context.Context, workerIndex int, height int6 _blockEventsDur := time.Now() beginBlockEvents, endBlockEvents, err = w.rpcClient.GetBlockEvents(ctx2, height) if err != nil { - return err + return fmt.Errorf("failed to get block events: %w", err) } w.log.Debug(). @@ -160,7 +160,7 @@ func (w *Worker) processHeight(ctx context.Context, workerIndex int, height int6 }) if err := g.Wait(); err != nil { - w.log.Error().Int64(keyHeight, height).Err(err).Msg("processHeight block got error") + w.log.Error().Int64(keyHeight, height).Err(err).Msg("processHeight error") w.setErrorStatusWithLogging(ctx, height, err.Error()) return } @@ -243,7 +243,12 @@ func (w *Worker) processGenesis(ctx context.Context, genesis *cometbfttypes.Gene func (w *Worker) processBlock(ctx context.Context, block *types.Block) error { for _, m := range blockHandlers { if err := m.HandleBlock(ctx, block); err != nil { - w.log.Error().Err(err).Str(keyModule, m.Name()).Msg("HandleBlock error") + w.log.Error(). + Err(err). + Int64(keyHeight, block.Height). + Str(keyModule, m.Name()). + Msg("HandleBlock error") + return err } } @@ -254,7 +259,12 @@ func (w *Worker) processBlock(ctx context.Context, block *types.Block) error { func (w *Worker) processValidators(ctx context.Context, height int64, vals *cometbftcoreypes.ResultValidators) error { for _, m := range validatorsHandlers { if err := m.HandleValidators(ctx, vals); err != nil { - w.log.Error().Err(err).Int64(keyHeight, height).Str(keyModule, m.Name()).Msg("HandleValidators error") + w.log.Error(). + Err(err). + Int64(keyHeight, height). + Str(keyModule, m.Name()). + Msg("HandleValidators error") + return err } } @@ -266,7 +276,12 @@ func (w *Worker) processTxs(ctx context.Context, txs []*types.Tx) error { for _, tx := range txs { for _, m := range transactionHandlers { if err := m.HandleTx(ctx, tx); err != nil { - w.log.Error().Err(err).Str(keyModule, m.Name()).Msg("HandleTX error") + w.log.Error(). + Err(err). + Int64(keyHeight, tx.Height). + Str(keyModule, m.Name()). + Msg("HandleTX error") + return err } } diff --git a/pkg/worker/utils.go b/pkg/worker/utils.go index 9fbeb5a..baeabbc 100644 --- a/pkg/worker/utils.go +++ b/pkg/worker/utils.go @@ -8,8 +8,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/pkg/errors" - "github.com/bro-n-bro/spacebox-crawler/adapter/storage/model" - "github.com/bro-n-bro/spacebox-crawler/types" + "github.com/bro-n-bro/spacebox-crawler/v2/adapter/storage/model" + "github.com/bro-n-bro/spacebox-crawler/v2/types" ) var ( diff --git a/pkg/worker/worker.go b/pkg/worker/worker.go index 71e891c..7b110a2 100644 --- a/pkg/worker/worker.go +++ b/pkg/worker/worker.go @@ -11,10 +11,9 @@ import ( "github.com/prometheus/client_golang/prometheus/promauto" "github.com/rs/zerolog" - "github.com/bro-n-bro/spacebox-crawler/internal/rep" - tb "github.com/bro-n-bro/spacebox-crawler/pkg/mapper/to_broker" - ts "github.com/bro-n-bro/spacebox-crawler/pkg/mapper/to_storage" - "github.com/bro-n-bro/spacebox-crawler/types" + "github.com/bro-n-bro/spacebox-crawler/v2/internal/rep" + ts "github.com/bro-n-bro/spacebox-crawler/v2/pkg/mapper/to_storage" + "github.com/bro-n-bro/spacebox-crawler/v2/types" ) type ( @@ -25,7 +24,6 @@ type ( tsM ts.ToStorage storage rep.Storage cdc codec.Codec - tbM tb.ToBroker broker rep.Broker rpcClient rep.RPCClient grpcClient rep.GrpcClient @@ -49,7 +47,7 @@ type ( ) func New(cfg Config, l zerolog.Logger, b rep.Broker, rpcCli rep.RPCClient, grpcCli rep.GrpcClient, - modules []types.Module, s rep.Storage, marshaler codec.Codec, tbM tb.ToBroker, tsM ts.ToStorage) *Worker { + modules []types.Module, s rep.Storage, marshaler codec.Codec, tsM ts.ToStorage) *Worker { l = l.With().Str("cmp", "worker").Logger() @@ -62,7 +60,6 @@ func New(cfg Config, l zerolog.Logger, b rep.Broker, rpcCli rep.RPCClient, grpcC storage: s, modules: modules, cdc: marshaler, - tbM: tbM, tsM: tsM, wg: &sync.WaitGroup{}, } @@ -143,7 +140,7 @@ func (w *Worker) Start(_ context.Context) error { } // subscribe to process new blocks by websocket - if w.cfg.ProcessNewBlocks && w.rpcClient.WsEnabled() { + if w.cfg.ProcessNewBlocks { eventCh, err := w.rpcClient.SubscribeNewBlocks(ctx) if err != nil { return fmt.Errorf("failed to subscribe to new blocks: %w", err) @@ -165,7 +162,7 @@ func (w *Worker) Start(_ context.Context) error { // graceful shutdown the application if processing is done go func(wg *sync.WaitGroup) { - if w.cfg.ProcessNewBlocks && w.rpcClient.WsEnabled() { // we want to process new blocks + if w.cfg.ProcessNewBlocks { // we want to process new blocks w.log.Info().Msg("exit not needed") return } @@ -183,7 +180,7 @@ func (w *Worker) Stop(_ context.Context) error { w.stopEnqueueHeight() w.stopEnqueueErrorBlocks() - if w.cfg.ProcessNewBlocks && w.rpcClient.WsEnabled() { + if w.cfg.ProcessNewBlocks { w.stopWsListener() } diff --git a/types/auth.go b/types/auth.go deleted file mode 100644 index 9e2d8e3..0000000 --- a/types/auth.go +++ /dev/null @@ -1,17 +0,0 @@ -package types - -// Account represents a chain account -type Account struct { - Address string - Type string - Height int64 -} - -// NewAccount builds a new Account instance -func NewAccount(address, typeURL string, height int64) Account { - return Account{ - Address: address, - Type: typeURL, - Height: height, - } -} diff --git a/types/bostrom/dmn.go b/types/bostrom/dmn.go deleted file mode 100644 index 1e48851..0000000 --- a/types/bostrom/dmn.go +++ /dev/null @@ -1,51 +0,0 @@ -package bostrom - -import ( - dmntypes "github.com/cybercongress/go-cyber/x/dmn/types" -) - -func init() { - registerTypes([]protoType{ - {(*dmntypes.MsgCreateThought)(nil), "cyber.dmn.v1beta1.MsgCreateThought"}, - {(*dmntypes.MsgForgetThought)(nil), "cyber.dmn.v1beta1.MsgForgetThought"}, - {(*dmntypes.MsgChangeThoughtParticle)(nil), "cyber.dmn.v1beta1.MsgChangeThoughtParticle"}, - {(*dmntypes.MsgChangeThoughtInput)(nil), "cyber.dmn.v1beta1.MsgChangeThoughtInput"}, - {(*dmntypes.MsgChangeThoughtName)(nil), "cyber.dmn.v1beta1.MsgChangeThoughtName"}, - {(*dmntypes.MsgChangeThoughtGasPrice)(nil), "cyber.dmn.v1beta1.MsgChangeThoughtGasPrice"}, - {(*dmntypes.MsgChangeThoughtPeriod)(nil), "cyber.dmn.v1beta1.MsgChangeThoughtPeriod"}, - {(*dmntypes.MsgChangeThoughtBlock)(nil), "cyber.dmn.v1beta1.MsgChangeThoughtBlock"}, - {(*dmntypes.MsgCreateThoughtResponse)(nil), "cyber.dmn.v1beta1.MsgCreateThoughtResponse"}, - {(*dmntypes.MsgForgetThoughtResponse)(nil), "cyber.dmn.v1beta1.MsgForgetThoughtResponse"}, - {(*dmntypes.MsgChangeThoughtParticleResponse)(nil), "cyber.dmn.v1beta1.MsgChangeThoughtParticleResponse"}, - {(*dmntypes.MsgChangeThoughtNameResponse)(nil), "cyber.dmn.v1beta1.MsgChangeThoughtNameResponse"}, - {(*dmntypes.MsgChangeThoughtInputResponse)(nil), "cyber.dmn.v1beta1.MsgChangeThoughtInputResponse"}, - {(*dmntypes.MsgChangeThoughtGasPriceResponse)(nil), "cyber.dmn.v1beta1.MsgChangeThoughtGasPriceResponse"}, - {(*dmntypes.MsgChangeThoughtPeriodResponse)(nil), "cyber.dmn.v1beta1.MsgChangeThoughtPeriodResponse"}, - {(*dmntypes.MsgChangeThoughtBlockResponse)(nil), "cyber.dmn.v1beta1.MsgChangeThoughtBlockResponse"}, - - {(*dmntypes.Params)(nil), "cyber.dmn.v1beta1.Params"}, - {(*dmntypes.Thought)(nil), "cyber.dmn.v1beta1.Thought"}, - {(*dmntypes.Trigger)(nil), "cyber.dmn.v1beta1.Trigger"}, - {(*dmntypes.Load)(nil), "cyber.dmn.v1beta1.Load"}, - {(*dmntypes.ThoughtStats)(nil), "cyber.dmn.v1beta1.ThoughtStats"}, - - {(*dmntypes.QueryParamsRequest)(nil), "cyber.dmn.v1beta1.QueryParamsRequest"}, - {(*dmntypes.QueryParamsResponse)(nil), "cyber.dmn.v1beta1.QueryParamsResponse"}, - {(*dmntypes.QueryThoughtParamsRequest)(nil), "cyber.dmn.v1beta1.QueryThoughtParamsRequest"}, - {(*dmntypes.QueryThoughtResponse)(nil), "cyber.dmn.v1beta1.QueryThoughtResponse"}, - {(*dmntypes.QueryThoughtStatsResponse)(nil), "cyber.dmn.v1beta1.QueryThoughtStatsResponse"}, - {(*dmntypes.QueryThoughtsRequest)(nil), "cyber.dmn.v1beta1.QueryThoughtsRequest"}, - {(*dmntypes.QueryThoughtsResponse)(nil), "cyber.dmn.v1beta1.QueryThoughtsResponse"}, - {(*dmntypes.QueryThoughtsStatsRequest)(nil), "cyber.dmn.v1beta1.QueryThoughtsStatsRequest"}, - {(*dmntypes.QueryThoughtsStatsResponse)(nil), "cyber.dmn.v1beta1.QueryThoughtsStatsResponse"}, - - {(*dmntypes.GenesisState)(nil), "cyber.dmn.v1beta1.GenesisState"}, - }) - - registerFiles([]protoFile{ - {"cyber/dmn/v1beta1/tx.proto", descriptor((*dmntypes.MsgCreateThought)(nil))}, - {"cyber/dmn/v1beta1/types.proto", descriptor((*dmntypes.Params)(nil))}, - {"cyber/dmn/v1beta1/query.proto", descriptor((*dmntypes.QueryParamsRequest)(nil))}, - {"cyber/dmn/v1beta1/genesis.proto", descriptor((*dmntypes.GenesisState)(nil))}, - }) -} diff --git a/types/bostrom/graph.go b/types/bostrom/graph.go deleted file mode 100644 index 9e2747e..0000000 --- a/types/bostrom/graph.go +++ /dev/null @@ -1,21 +0,0 @@ -package bostrom - -import ( - graph "github.com/cybercongress/go-cyber/x/graph/types" -) - -func init() { - registerTypes([]protoType{ - {(*graph.QueryGraphStatsRequest)(nil), "cyber.graph.v1beta1.QueryGraphStatsRequest"}, - {(*graph.QueryGraphStatsResponse)(nil), "cyber.graph.v1beta1.QueryGraphStatsResponse"}, - {(*graph.MsgCyberlink)(nil), "cyber.graph.v1beta1.MsgCyberlink"}, - {(*graph.MsgCyberlinkResponse)(nil), "cyber.graph.v1beta1.MsgCyberlinkResponse"}, - {(*graph.Link)(nil), "cyber.graph.v1beta1.Link"}, - }) - - registerFiles([]protoFile{ - {"cyber/graph/v1beta1/tx.proto", descriptor((*graph.MsgCyberlink)(nil))}, - {"cyber/graph/v1beta1/query.proto", descriptor((*graph.QueryGraphStatsRequest)(nil))}, - {"cyber/graph/v1beta1/types.proto", descriptor((*graph.Link)(nil))}, - }) -} diff --git a/types/bostrom/grid.go b/types/bostrom/grid.go deleted file mode 100644 index 841c123..0000000 --- a/types/bostrom/grid.go +++ /dev/null @@ -1,41 +0,0 @@ -package bostrom - -import ( - gridtypes "github.com/cybercongress/go-cyber/x/grid/types" -) - -func init() { - registerTypes([]protoType{ - {(*gridtypes.Params)(nil), "cyber.grid.v1beta1.Params"}, - {(*gridtypes.Route)(nil), "cyber.grid.v1beta1.Route"}, - {(*gridtypes.Value)(nil), "cyber.grid.v1beta1.Value"}, - - {(*gridtypes.MsgCreateRoute)(nil), "cyber.grid.v1beta1.MsgCreateRoute"}, - {(*gridtypes.MsgEditRoute)(nil), "cyber.grid.v1beta1.MsgEditRoute"}, - {(*gridtypes.MsgDeleteRoute)(nil), "cyber.grid.v1beta1.MsgDeleteRoute"}, - {(*gridtypes.MsgEditRouteName)(nil), "cyber.grid.v1beta1.MsgEditRouteName"}, - {(*gridtypes.MsgCreateRouteResponse)(nil), "cyber.grid.v1beta1.MsgCreateRouteResponse"}, - {(*gridtypes.MsgEditRouteResponse)(nil), "cyber.grid.v1beta1.MsgEditRouteResponse"}, - {(*gridtypes.MsgDeleteRouteResponse)(nil), "cyber.grid.v1beta1.MsgDeleteRouteResponse"}, - {(*gridtypes.MsgEditRouteNameResponse)(nil), "cyber.grid.v1beta1.MsgEditRouteNameResponse"}, - - {(*gridtypes.QueryParamsRequest)(nil), "cyber.grid.v1beta1.QueryParamsRequest"}, - {(*gridtypes.QueryParamsResponse)(nil), "cyber.grid.v1beta1.QueryParamsResponse"}, - {(*gridtypes.QuerySourceRequest)(nil), "cyber.grid.v1beta1.QuerySourceRequest"}, - {(*gridtypes.QueryDestinationRequest)(nil), "cyber.grid.v1beta1.QueryDestinationRequest"}, - {(*gridtypes.QueryRoutedEnergyResponse)(nil), "cyber.grid.v1beta1.QueryRoutedEnergyResponse"}, - {(*gridtypes.QueryRouteRequest)(nil), "cyber.grid.v1beta1.QueryRouteRequest"}, - {(*gridtypes.QueryRouteResponse)(nil), "cyber.grid.v1beta1.QueryRouteResponse"}, - {(*gridtypes.QueryRoutesRequest)(nil), "cyber.grid.v1beta1.QueryRoutesRequest"}, - {(*gridtypes.QueryRoutesResponse)(nil), "cyber.grid.v1beta1.QueryRoutesResponse"}, - - {(*gridtypes.GenesisState)(nil), "cyber.grid.v1beta1.GenesisState"}, - }) - - registerFiles([]protoFile{ - {"cyber/grid/v1beta1/types.proto", descriptor((*gridtypes.Params)(nil))}, - {"cyber/grid/v1beta1/tx.proto", descriptor((*gridtypes.MsgCreateRoute)(nil))}, - {"cyber/grid/v1beta1/query.proto", descriptor((*gridtypes.QueryParamsRequest)(nil))}, - {"cyber/grid/v1beta1/genesis.proto", descriptor((*gridtypes.GenesisState)(nil))}, - }) -} diff --git a/types/bostrom/rank.go b/types/bostrom/rank.go deleted file mode 100644 index ef72a77..0000000 --- a/types/bostrom/rank.go +++ /dev/null @@ -1,37 +0,0 @@ -package bostrom - -import ( - ranktypes "github.com/cybercongress/go-cyber/x/rank/types" -) - -func init() { - registerTypes([]protoType{ - {(*ranktypes.Params)(nil), "cyber.rank.v1beta1.Params"}, - {(*ranktypes.RankedParticle)(nil), "cyber.rank.v1beta1.RankedParticle"}, - - {(*ranktypes.QueryParamsRequest)(nil), "cyber.rank.v1beta1.QueryParamsRequest"}, - {(*ranktypes.QueryParamsResponse)(nil), "cyber.rank.v1beta1.QueryParamsResponse"}, - {(*ranktypes.QueryRankRequest)(nil), "cyber.rank.v1beta1.QueryRankRequest"}, - {(*ranktypes.QueryRankResponse)(nil), "cyber.rank.v1beta1.QueryRankResponse"}, - {(*ranktypes.QuerySearchRequest)(nil), "cyber.rank.v1beta1.QuerySearchRequest"}, - {(*ranktypes.QuerySearchResponse)(nil), "cyber.rank.v1beta1.QuerySearchResponse"}, - {(*ranktypes.QueryTopRequest)(nil), "cyber.rank.v1beta1.QueryTopRequest"}, - {(*ranktypes.QueryIsLinkExistRequest)(nil), "cyber.rank.v1beta1.QueryIsLinkExistRequest"}, - {(*ranktypes.QueryIsAnyLinkExistRequest)(nil), "cyber.rank.v1beta1.QueryIsAnyLinkExistRequest"}, - {(*ranktypes.QueryLinkExistResponse)(nil), "cyber.rank.v1beta1.QueryLinkExistResponse"}, - {(*ranktypes.QueryNegentropyPartilceRequest)(nil), "cyber.rank.v1beta1.QueryNegentropyPartilceRequest"}, - {(*ranktypes.QueryNegentropyParticleResponse)(nil), "cyber.rank.v1beta1.QueryNegentropyParticleResponse"}, - {(*ranktypes.QueryNegentropyRequest)(nil), "cyber.rank.v1beta1.QueryNegentropyRequest"}, - {(*ranktypes.QueryNegentropyResponse)(nil), "cyber.rank.v1beta1.QueryNegentropyResponse"}, - {(*ranktypes.QueryKarmaRequest)(nil), "cyber.rank.v1beta1.QueryKarmaRequest"}, - {(*ranktypes.QueryKarmaResponse)(nil), "cyber.rank.v1beta1.QueryKarmaResponse"}, - - {(*ranktypes.GenesisState)(nil), "cyber.rank.v1beta1.GenesisState"}, - }) - - registerFiles([]protoFile{ - {"cyber/rank/v1beta1/types.proto", descriptor((*ranktypes.Params)(nil))}, - {"cyber/rank/v1beta1/query.proto", descriptor((*ranktypes.QueryParamsRequest)(nil))}, - {"cyber/rank/v1beta1/genesis.proto", descriptor((*ranktypes.GenesisState)(nil))}, - }) -} diff --git a/types/bostrom/resources.go b/types/bostrom/resources.go deleted file mode 100644 index 2466ddc..0000000 --- a/types/bostrom/resources.go +++ /dev/null @@ -1,28 +0,0 @@ -package bostrom - -import ( - resourcestypes "github.com/cybercongress/go-cyber/x/resources/types" -) - -func init() { - registerTypes([]protoType{ - {(*resourcestypes.Params)(nil), "cyber.resources.v1beta1.Params"}, - - {(*resourcestypes.MsgInvestmint)(nil), "cyber.resources.v1beta1.MsgInvestmint"}, - {(*resourcestypes.MsgInvestmintResponse)(nil), "cyber.resources.v1beta1.MsgInvestmintResponse"}, - - {(*resourcestypes.QueryParamsRequest)(nil), "cyber.resources.v1beta1.QueryParamsRequest"}, - {(*resourcestypes.QueryParamsResponse)(nil), "cyber.resources.v1beta1.QueryParamsResponse"}, - {(*resourcestypes.QueryInvestmintRequest)(nil), "cyber.resources.v1beta1.QueryInvestmintRequest"}, - {(*resourcestypes.QueryInvestmintResponse)(nil), "cyber.resources.v1beta1.QueryInvestmintResponse"}, - - {(*resourcestypes.GenesisState)(nil), "cyber.resources.v1beta1.GenesisState"}, - }) - - registerFiles([]protoFile{ - {"cyber/resources/v1beta1/types.proto", descriptor((*resourcestypes.Params)(nil))}, - {"cyber/resources/v1beta1/tx.proto", descriptor((*resourcestypes.MsgInvestmint)(nil))}, - {"cyber/resources/v1beta1/query.proto", descriptor((*resourcestypes.QueryParamsRequest)(nil))}, - {"cyber/resources/v1beta1/genesis.proto", descriptor((*resourcestypes.GenesisState)(nil))}, - }) -} diff --git a/types/bostrom/utils.go b/types/bostrom/utils.go deleted file mode 100644 index 426831d..0000000 --- a/types/bostrom/utils.go +++ /dev/null @@ -1,32 +0,0 @@ -package bostrom - -import "github.com/cosmos/gogoproto/proto" - -type ( - protoType struct { - t proto.Message - name string - } - - protoFile struct { - filename string - descriptor []byte - } -) - -func descriptor(t interface{ Descriptor() ([]byte, []int) }) []byte { - desc, _ := t.Descriptor() - return desc -} - -func registerTypes(types []protoType) { - for _, t := range types { - proto.RegisterType(t.t, t.name) - } -} - -func registerFiles(files []protoFile) { - for _, f := range files { - proto.RegisterFile(f.filename, f.descriptor) - } -} diff --git a/types/coin.go b/types/coin.go deleted file mode 100644 index d93d232..0000000 --- a/types/coin.go +++ /dev/null @@ -1,55 +0,0 @@ -package types - -import ( - "math" - - sdk "github.com/cosmos/cosmos-sdk/types" -) - -type ( - Coins []Coin - - Coin struct { - Denom string `json:"denom"` - Amount float64 `json:"amount"` - } -) - -func NewCoin(denom string, amount float64) Coin { - return Coin{ - Denom: denom, - Amount: amount, - } -} - -func NewCoinFromSDK(coin sdk.Coin) Coin { - return Coin{ - Denom: coin.Denom, - Amount: float64(coin.Amount.BigInt().Int64()), - } -} - -func NewCoinsFromSDK(coins sdk.Coins) Coins { - res := make(Coins, len(coins)) - for i, c := range coins { - res[i] = NewCoinFromSDK(c) - } - - return res -} - -func NewCoinsFromSDKDec(coins sdk.DecCoins) Coins { - res := make(Coins, len(coins)) - for i, c := range coins { - res[i] = Coin{ - Denom: c.Denom, - Amount: c.Amount.MustFloat64(), - } - } - - return res -} - -func (c Coin) IsEqual(o Coin) bool { - return c.Denom == o.Denom && math.Nextafter(c.Amount, o.Amount) == o.Amount -} diff --git a/types/staking_validator.go b/types/staking_validator.go deleted file mode 100644 index a87411a..0000000 --- a/types/staking_validator.go +++ /dev/null @@ -1,69 +0,0 @@ -package types - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" -) - -type ( - StakingValidator interface { - GetConsAddr() string - GetConsPubKey() string - GetOperator() string - GetSelfDelegateAddress() string - GetMaxChangeRate() *sdk.Dec - GetMaxRate() *sdk.Dec - GetHeight() int64 - GetMinSelfDelegation() int64 - GetDescription() stakingtypes.Description - } - - // validator allows to easily implement the Validator interface - stakingValidator struct { - MaxChangeRate *sdk.Dec - MaxRate *sdk.Dec - Description stakingtypes.Description - ConsPubKey string - OperatorAddr string - SelfDelegateAddress string - ConsensusAddr string - Height int64 - MinSelfDelegation int64 - } -) - -// NewStakingValidator allows to build a new Validator implementation having the given data -func NewStakingValidator( - consensusAddr, - operatorAddr, - consensusPubKey, - selfDelegateAddress string, - maxChangeRate, - maxRate *sdk.Dec, - description stakingtypes.Description, - height, - minSelfDelegation int64, -) StakingValidator { - - return stakingValidator{ - ConsensusAddr: consensusAddr, - ConsPubKey: consensusPubKey, - OperatorAddr: operatorAddr, - SelfDelegateAddress: selfDelegateAddress, - MaxChangeRate: maxChangeRate, - MaxRate: maxRate, - Description: description, - Height: height, - MinSelfDelegation: minSelfDelegation, - } -} - -func (v stakingValidator) GetSelfDelegateAddress() string { return v.SelfDelegateAddress } -func (v stakingValidator) GetMinSelfDelegation() int64 { return v.MinSelfDelegation } -func (v stakingValidator) GetMaxChangeRate() *sdk.Dec { return v.MaxChangeRate } -func (v stakingValidator) GetDescription() stakingtypes.Description { return v.Description } -func (v stakingValidator) GetConsPubKey() string { return v.ConsPubKey } -func (v stakingValidator) GetOperator() string { return v.OperatorAddr } -func (v stakingValidator) GetConsAddr() string { return v.ConsensusAddr } -func (v stakingValidator) GetMaxRate() *sdk.Dec { return v.MaxRate } -func (v stakingValidator) GetHeight() int64 { return v.Height }