diff --git a/deploy/tx-tracker/env/production.env b/deploy/tx-tracker/env/production.env index 668bc67e..4924513f 100644 --- a/deploy/tx-tracker/env/production.env +++ b/deploy/tx-tracker/env/production.env @@ -12,66 +12,66 @@ SQS_AWS_REGION= AWS_IAM_ROLE= ACALA_BASE_URL=https://eth-rpc-acala.aca-api.network -ACALA_REQUESTS_PER_MINUTE=4 +ACALA_REQUESTS_PER_MINUTE=12 ALGORAND_BASE_URL=https://mainnet-idx.algonode.cloud -ALGORAND_REQUESTS_PER_MINUTE=4 +ALGORAND_REQUESTS_PER_MINUTE=12 APTOS_BASE_URL=https://fullnode.mainnet.aptoslabs.com/v1 -APTOS_REQUESTS_PER_MINUTE=8 +APTOS_REQUESTS_PER_MINUTE=12 ARBITRUM_BASE_URL=https://rpc.ankr.com/arbitrum -ARBITRUM_REQUESTS_PER_MINUTE=4 +ARBITRUM_REQUESTS_PER_MINUTE=12 AVALANCHE_BASE_URL=https://api.avax.network/ext/bc/C/rpc -AVALANCHE_REQUESTS_PER_MINUTE=6 +AVALANCHE_REQUESTS_PER_MINUTE=12 BSC_BASE_URL=https://bsc-dataseed2.defibit.io -BSC_REQUESTS_PER_MINUTE=6 +BSC_REQUESTS_PER_MINUTE=12 CELO_BASE_URL=https://forno.celo.org -CELO_REQUESTS_PER_MINUTE=4 +CELO_REQUESTS_PER_MINUTE=12 ETHEREUM_BASE_URL=https://rpc.ankr.com/eth -ETHEREUM_REQUESTS_PER_MINUTE=6 +ETHEREUM_REQUESTS_PER_MINUTE=12 FANTOM_BASE_URL=https://rpc.ankr.com/fantom -FANTOM_REQUESTS_PER_MINUTE=4 +FANTOM_REQUESTS_PER_MINUTE=12 # Currently, the main URL for injective RPC (https://k8s.mainnet.lcd.injective.network) is down. # We're temporally using a different one. INJECTIVE_BASE_URL=http://sentry2.injective.network:10337/ -INJECTIVE_REQUESTS_PER_MINUTE=4 +INJECTIVE_REQUESTS_PER_MINUTE=12 KARURA_BASE_URL=https://eth-rpc-karura.aca-api.network -KARURA_REQUESTS_PER_MINUTE=4 +KARURA_REQUESTS_PER_MINUTE=12 KLAYTN_BASE_URL=https://klaytn-mainnet-rpc.allthatnode.com:8551 -KLAYTN_REQUESTS_PER_MINUTE=4 +KLAYTN_REQUESTS_PER_MINUTE=12 MOONBEAM_BASE_URL=https://rpc.api.moonbeam.network -MOONBEAM_REQUESTS_PER_MINUTE=4 +MOONBEAM_REQUESTS_PER_MINUTE=12 OASIS_BASE_URL=https://emerald.oasis.dev -OASIS_REQUESTS_PER_MINUTE=4 +OASIS_REQUESTS_PER_MINUTE=12 OPTIMISM_BASE_URL=https://rpc.ankr.com/optimism -OPTIMISM_REQUESTS_PER_MINUTE=4 +OPTIMISM_REQUESTS_PER_MINUTE=12 POLYGON_BASE_URL=https://rpc.ankr.com/polygon -POLYGON_REQUESTS_PER_MINUTE=6 +POLYGON_REQUESTS_PER_MINUTE=12 SOLANA_BASE_URL=https://api.mainnet-beta.solana.com -SOLANA_REQUESTS_PER_MINUTE=8 +SOLANA_REQUESTS_PER_MINUTE=12 SUI_BASE_URL=https://fullnode.mainnet.sui.io:443 -SUI_REQUESTS_PER_MINUTE=4 +SUI_REQUESTS_PER_MINUTE=12 TERRA_BASE_URL=https://columbus-fcd.terra.dev -TERRA_REQUESTS_PER_MINUTE=4 +TERRA_REQUESTS_PER_MINUTE=12 TERRA2_BASE_URL=https://phoenix-lcd.terra.dev -TERRA2_REQUESTS_PER_MINUTE=4 +TERRA2_REQUESTS_PER_MINUTE=12 XPLA_BASE_URL=https://dimension-lcd.xpla.dev -XPLA_REQUESTS_PER_MINUTE=4 \ No newline at end of file +XPLA_REQUESTS_PER_MINUTE=12 \ No newline at end of file diff --git a/deploy/tx-tracker/env/staging.env b/deploy/tx-tracker/env/staging.env index 85850c36..441855da 100644 --- a/deploy/tx-tracker/env/staging.env +++ b/deploy/tx-tracker/env/staging.env @@ -12,66 +12,66 @@ SQS_AWS_REGION= AWS_IAM_ROLE= ACALA_BASE_URL=https://eth-rpc-acala.aca-api.network -ACALA_REQUESTS_PER_MINUTE=2 +ACALA_REQUESTS_PER_MINUTE=12 ALGORAND_BASE_URL=https://mainnet-idx.algonode.cloud -ALGORAND_REQUESTS_PER_MINUTE=2 +ALGORAND_REQUESTS_PER_MINUTE=12 APTOS_BASE_URL=https://fullnode.mainnet.aptoslabs.com/v1 APTOS_REQUESTS_PER_MINUTE=12 ARBITRUM_BASE_URL=https://rpc.ankr.com/arbitrum -ARBITRUM_REQUESTS_PER_MINUTE=2 +ARBITRUM_REQUESTS_PER_MINUTE=12 AVALANCHE_BASE_URL=https://api.avax.network/ext/bc/C/rpc -AVALANCHE_REQUESTS_PER_MINUTE=8 +AVALANCHE_REQUESTS_PER_MINUTE=12 BSC_BASE_URL=https://bsc-dataseed2.defibit.io -BSC_REQUESTS_PER_MINUTE=8 +BSC_REQUESTS_PER_MINUTE=12 CELO_BASE_URL=https://forno.celo.org -CELO_REQUESTS_PER_MINUTE=2 +CELO_REQUESTS_PER_MINUTE=12 ETHEREUM_BASE_URL=https://rpc.ankr.com/eth -ETHEREUM_REQUESTS_PER_MINUTE=8 +ETHEREUM_REQUESTS_PER_MINUTE=12 FANTOM_BASE_URL=https://rpc.ankr.com/fantom -FANTOM_REQUESTS_PER_MINUTE=2 +FANTOM_REQUESTS_PER_MINUTE=12 # Currently, the main URL for injective RPC (https://k8s.mainnet.lcd.injective.network) is down. # We're temporally using a different one. INJECTIVE_BASE_URL=http://sentry2.injective.network:10337/ -INJECTIVE_REQUESTS_PER_MINUTE=2 +INJECTIVE_REQUESTS_PER_MINUTE=12 KARURA_BASE_URL=https://eth-rpc-karura.aca-api.network -KARURA_REQUESTS_PER_MINUTE=2 +KARURA_REQUESTS_PER_MINUTE=12 KLAYTN_BASE_URL=https://klaytn-mainnet-rpc.allthatnode.com:8551 -KLAYTN_REQUESTS_PER_MINUTE=2 +KLAYTN_REQUESTS_PER_MINUTE=12 MOONBEAM_BASE_URL=https://rpc.api.moonbeam.network -MOONBEAM_REQUESTS_PER_MINUTE=2 +MOONBEAM_REQUESTS_PER_MINUTE=12 OASIS_BASE_URL=https://emerald.oasis.dev -OASIS_REQUESTS_PER_MINUTE=2 +OASIS_REQUESTS_PER_MINUTE=12 OPTIMISM_BASE_URL=https://rpc.ankr.com/optimism -OPTIMISM_REQUESTS_PER_MINUTE=2 +OPTIMISM_REQUESTS_PER_MINUTE=12 POLYGON_BASE_URL=https://rpc.ankr.com/polygon -POLYGON_REQUESTS_PER_MINUTE=8 +POLYGON_REQUESTS_PER_MINUTE=12 SOLANA_BASE_URL=https://api.mainnet-beta.solana.com SOLANA_REQUESTS_PER_MINUTE=12 SUI_BASE_URL=https://fullnode.mainnet.sui.io:443 -SUI_REQUESTS_PER_MINUTE=2 +SUI_REQUESTS_PER_MINUTE=12 TERRA_BASE_URL=https://columbus-fcd.terra.dev -TERRA_REQUESTS_PER_MINUTE=2 +TERRA_REQUESTS_PER_MINUTE=12 TERRA2_BASE_URL=https://phoenix-lcd.terra.dev -TERRA2_REQUESTS_PER_MINUTE=2 +TERRA2_REQUESTS_PER_MINUTE=12 XPLA_BASE_URL=https://dimension-lcd.xpla.dev -XPLA_REQUESTS_PER_MINUTE=2 \ No newline at end of file +XPLA_REQUESTS_PER_MINUTE=12 \ No newline at end of file diff --git a/deploy/tx-tracker/env/test.env b/deploy/tx-tracker/env/test.env index 394b1fd3..ab802d90 100644 --- a/deploy/tx-tracker/env/test.env +++ b/deploy/tx-tracker/env/test.env @@ -12,64 +12,64 @@ SQS_AWS_REGION= AWS_IAM_ROLE= ACALA_BASE_URL=https://acala-dev.aca-dev.network/eth/http -ACALA_REQUESTS_PER_MINUTE=2 +ACALA_REQUESTS_PER_MINUTE=12 ALGORAND_BASE_URL=https://testnet-idx.algonode.cloud -ALGORAND_REQUESTS_PER_MINUTE=2 +ALGORAND_REQUESTS_PER_MINUTE=12 APTOS_BASE_URL=https://fullnode.testnet.aptoslabs.com/v1 -APTOS_REQUESTS_PER_MINUTE=2 +APTOS_REQUESTS_PER_MINUTE=12 ARBITRUM_BASE_URL=https://goerli-rollup.arbitrum.io/rpc -ARBITRUM_REQUESTS_PER_MINUTE=2 +ARBITRUM_REQUESTS_PER_MINUTE=12 AVALANCHE_BASE_URL=https://rpc.ankr.com/avalanche_fuji -AVALANCHE_REQUESTS_PER_MINUTE=2 +AVALANCHE_REQUESTS_PER_MINUTE=12 BSC_BASE_URL=https://data-seed-prebsc-1-s1.binance.org:8545 -BSC_REQUESTS_PER_MINUTE=2 +BSC_REQUESTS_PER_MINUTE=12 CELO_BASE_URL=https://alfajores-forno.celo-testnet.org -CELO_REQUESTS_PER_MINUTE=2 +CELO_REQUESTS_PER_MINUTE=12 ETHEREUM_BASE_URL=https://rpc.ankr.com/eth_goerli -ETHEREUM_REQUESTS_PER_MINUTE=2 +ETHEREUM_REQUESTS_PER_MINUTE=12 FANTOM_BASE_URL=https://rpc.testnet.fantom.network -FANTOM_REQUESTS_PER_MINUTE=2 +FANTOM_REQUESTS_PER_MINUTE=12 INJECTIVE_BASE_URL=https://k8s.testnet.tm.injective.network:443 -INJECTIVE_REQUESTS_PER_MINUTE=2 +INJECTIVE_REQUESTS_PER_MINUTE=12 KARURA_BASE_URL=https://karura-dev.aca-dev.network/eth/http -KARURA_REQUESTS_PER_MINUTE=2 +KARURA_REQUESTS_PER_MINUTE=12 KLAYTN_BASE_URL=https://api.baobab.klaytn.net:8651 -KLAYTN_REQUESTS_PER_MINUTE=2 +KLAYTN_REQUESTS_PER_MINUTE=12 MOONBEAM_BASE_URL=https://rpc.api.moonbase.moonbeam.network -MOONBEAM_REQUESTS_PER_MINUTE=2 +MOONBEAM_REQUESTS_PER_MINUTE=12 OASIS_BASE_URL=https://testnet.emerald.oasis.dev -OASIS_REQUESTS_PER_MINUTE=2 +OASIS_REQUESTS_PER_MINUTE=12 OPTIMISM_BASE_URL=https://goerli.optimism.io -OPTIMISM_REQUESTS_PER_MINUTE=2 +OPTIMISM_REQUESTS_PER_MINUTE=12 POLYGON_BASE_URL=https://rpc.ankr.com/polygon_mumbai -POLYGON_REQUESTS_PER_MINUTE=2 +POLYGON_REQUESTS_PER_MINUTE=12 SOLANA_BASE_URL=https://api.devnet.solana.com -SOLANA_REQUESTS_PER_MINUTE=2 +SOLANA_REQUESTS_PER_MINUTE=12 SUI_BASE_URL=https://fullnode.testnet.sui.io:443 -SUI_REQUESTS_PER_MINUTE=2 +SUI_REQUESTS_PER_MINUTE=12 TERRA_BASE_URL=https://bombay-lcd.terra.dev -TERRA_REQUESTS_PER_MINUTE=4 +TERRA_REQUESTS_PER_MINUTE=12 TERRA2_BASE_URL=https://pisco-lcd.terra.dev -TERRA2_REQUESTS_PER_MINUTE=2 +TERRA2_REQUESTS_PER_MINUTE=12 XPLA_BASE_URL=https://cube-lcd.xpla.dev:443 -XPLA_REQUESTS_PER_MINUTE=2 \ No newline at end of file +XPLA_REQUESTS_PER_MINUTE=12 \ No newline at end of file diff --git a/tx-tracker/chains/api_cosmos.go b/tx-tracker/chains/api_cosmos.go index 9e350f55..7946ffd7 100644 --- a/tx-tracker/chains/api_cosmos.go +++ b/tx-tracker/chains/api_cosmos.go @@ -42,9 +42,10 @@ func fetchCosmosTx( // Perform the HTTP request uri := fmt.Sprintf("%s/cosmos/tx/v1beta1/txs/%s", baseUrl, txHash) body, err := httpGet(ctx, rateLimiter, uri) - if strings.Contains(err.Error(), "404") { - return nil, ErrTransactionNotFound - } else if err != nil { + if err != nil { + if strings.Contains(err.Error(), "404") { + return nil, ErrTransactionNotFound + } return nil, fmt.Errorf("failed to query cosmos tx endpoint: %w", err) } diff --git a/tx-tracker/chains/api_sui.go b/tx-tracker/chains/api_sui.go index 1c680b57..fa709f7a 100644 --- a/tx-tracker/chains/api_sui.go +++ b/tx-tracker/chains/api_sui.go @@ -53,9 +53,10 @@ func fetchSuiTx( // Execute the remote procedure call opts := suiGetTransactionBlockOpts{ShowInput: true} err = client.CallContext(ctx, &reply, "sui_getTransactionBlock", txHash, opts) - if strings.Contains(err.Error(), "Could not find the referenced transaction") { - return nil, ErrTransactionNotFound - } else if err != nil { + if err != nil { + if strings.Contains(err.Error(), "Could not find the referenced transaction") { + return nil, ErrTransactionNotFound + } return nil, fmt.Errorf("failed to get tx by hash: %w", err) } } diff --git a/tx-tracker/consumer/consumer.go b/tx-tracker/consumer/consumer.go index a0d60ac5..d638874a 100644 --- a/tx-tracker/consumer/consumer.go +++ b/tx-tracker/consumer/consumer.go @@ -55,30 +55,19 @@ func (c *Consumer) producerLoop(ctx context.Context) { func (c *Consumer) process(ctx context.Context, msg queue.ConsumerMessage) { + defer msg.Done() + event := msg.Data() // Do not process messages from PythNet if event.ChainID == sdk.ChainIDPythNet { - if !msg.IsExpired() { - c.logger.Debug("Deleting PythNet message", zap.String("vaaId", event.ID)) - msg.Done() - } else { - c.logger.Debug("Skipping expired PythNet message", zap.String("vaaId", event.ID)) - } - return - } - - // Skip non-processed, expired messages - if msg.IsExpired() { - c.logger.Warn("Message expired - skipping", - zap.String("vaaId", event.ID), - zap.Bool("isExpired", msg.IsExpired()), - ) + c.logger.Debug("Skipping expired PythNet message", zap.String("vaaId", event.ID)) return } // Process the VAA p := ProcessSourceTxParams{ + Timestamp: event.Timestamp, VaaId: event.ID, ChainId: event.ChainID, Emitter: event.EmitterAddress, @@ -97,27 +86,14 @@ func (c *Consumer) process(ctx context.Context, msg queue.ConsumerMessage) { c.logger.Warn("Message already processed - skipping", zap.String("vaaId", event.ID), ) - } else if errors.Is(err, chains.ErrTransactionNotFound) { - c.logger.Warn("Transaction not found - will retry after SQS visibilityTimeout", - zap.String("vaaId", event.ID), - ) - return } else if err != nil { - c.logger.Error("Failed to process originTx - will retry after SQS visibilityTimeout", + c.logger.Error("Failed to process originTx", zap.String("vaaId", event.ID), zap.Error(err), ) - return } else { c.logger.Info("Transaction processed successfully", zap.String("id", event.ID), ) } - - // Mark the message as done - // - // If the message is expired, it will be put back into the queue. - if !msg.IsExpired() { - msg.Done() - } } diff --git a/tx-tracker/consumer/processor.go b/tx-tracker/consumer/processor.go index ef19f655..519868dd 100644 --- a/tx-tracker/consumer/processor.go +++ b/tx-tracker/consumer/processor.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "time" "github.com/wormhole-foundation/wormhole-explorer/common/domain" "github.com/wormhole-foundation/wormhole-explorer/txtracker/chains" @@ -14,13 +15,20 @@ import ( var ErrAlreadyProcessed = errors.New("VAA was already processed") +const ( + minRetries = 3 + retryDelay = 1 * time.Minute + retryDeadline = 10 * time.Minute +) + // ProcessSourceTxParams is a struct that contains the parameters for the ProcessSourceTx method. type ProcessSourceTxParams struct { - ChainId sdk.ChainID - VaaId string - Emitter string - Sequence string - TxHash string + Timestamp *time.Time + ChainId sdk.ChainID + VaaId string + Emitter string + Sequence string + TxHash string // Overwrite indicates whether to reprocess a VAA that has already been processed. // // In the context of backfilling, sometimes you want to overwrite old data (e.g.: because @@ -53,10 +61,38 @@ func ProcessSourceTx( } } - // Get transaction details from the emitter blockchain - txDetail, err := chains.FetchTx(ctx, rpcServiceProviderSettings, params.ChainId, params.TxHash) - if err != nil { - return fmt.Errorf("failed to process transaction: %w", err) + // The loop below tries to fetch transaction details from an external API / RPC node. + // + // It keeps retrying until both of these conditions are met: + // 1. A fixed amount of time has passed since the VAA was emitted (this is because + // some chains have awful finality times). + // 2. A minimum number of attempts have been made. + var txDetail *chains.TxDetail + var err error + for retries := 0; ; retries++ { + + // Get transaction details from the emitter blockchain + txDetail, err = chains.FetchTx(ctx, rpcServiceProviderSettings, params.ChainId, params.TxHash) + if err == nil { + break + } + + // Keep retrying? + if params.Timestamp == nil && retries > minRetries { + return fmt.Errorf("failed to process transaction: %w", err) + } else if time.Since(*params.Timestamp) > retryDeadline && retries >= minRetries { + return fmt.Errorf("failed to process transaction: %w", err) + } else { + logger.Warn("failed to process transaction", + zap.String("vaaId", params.VaaId), + zap.Any("vaaTimestamp", params.Timestamp), + zap.Int("retries", retries), + zap.Error(err), + ) + if params.Timestamp != nil && time.Since(*params.Timestamp) < retryDeadline { + time.Sleep(retryDelay) + } + } } // Store source transaction details in the database diff --git a/tx-tracker/go.mod b/tx-tracker/go.mod index 81e85be5..984645b3 100644 --- a/tx-tracker/go.mod +++ b/tx-tracker/go.mod @@ -15,7 +15,9 @@ require ( ) require ( - github.com/andybalholm/brotli v1.0.4 // indirect + github.com/algorand/go-algorand-sdk v1.23.0 // indirect + github.com/algorand/go-codec/codec v1.1.8 // indirect + github.com/andybalholm/brotli v1.0.5 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.23 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.29 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.23 // indirect @@ -27,8 +29,10 @@ require ( github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.4 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.18.5 // indirect github.com/aws/smithy-go v1.13.5 // indirect + github.com/benbjohnson/clock v1.3.0 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/cosmos/btcutil v1.0.5 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect github.com/deepmap/oapi-codegen v1.8.2 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect @@ -40,38 +44,40 @@ require ( github.com/holiman/uint256 v1.2.1 // indirect github.com/influxdata/influxdb-client-go/v2 v2.12.2 // indirect github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097 // indirect - github.com/klauspost/compress v1.15.15 // indirect + github.com/klauspost/compress v1.16.3 // indirect github.com/magiconair/properties v1.8.6 // indirect github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.17 // indirect + github.com/mattn/go-isatty v0.0.19 // indirect github.com/mattn/go-runewidth v0.0.14 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.0.5 // indirect - github.com/philhofer/fwd v1.1.1 // indirect + github.com/philhofer/fwd v1.1.2 // indirect github.com/rivo/uniseg v0.4.2 // indirect github.com/savsgio/dictpool v0.0.0-20221023140959-7bf2e61cea94 // indirect - github.com/savsgio/gotils v0.0.0-20220530130905-52f3993e8d6d // indirect + github.com/savsgio/gotils v0.0.0-20230208104028-c358bd845dee // indirect github.com/spf13/afero v1.9.2 // indirect github.com/spf13/cast v1.5.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.14.0 // indirect github.com/subosito/gotenv v1.4.1 // indirect - github.com/tinylib/msgp v1.1.6 // indirect + github.com/tidwall/pretty v1.2.1 // indirect + github.com/tinylib/msgp v1.1.8 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect - github.com/valyala/fasthttp v1.44.0 // indirect + github.com/valyala/fasthttp v1.47.0 // indirect github.com/valyala/tcplisten v1.0.0 // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect github.com/xdg-go/scram v1.1.1 // indirect github.com/xdg-go/stringprep v1.0.3 // indirect github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect go.uber.org/atomic v1.10.0 // indirect + go.uber.org/goleak v1.1.12 // indirect go.uber.org/multierr v1.8.0 // indirect - golang.org/x/net v0.4.0 // indirect + golang.org/x/net v0.8.0 // indirect golang.org/x/sync v0.1.0 // indirect - golang.org/x/text v0.7.0 // indirect + golang.org/x/text v0.8.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect ) @@ -82,18 +88,17 @@ require ( github.com/deckarep/golang-set/v2 v2.1.0 // indirect github.com/go-ole/go-ole v1.2.1 // indirect github.com/go-stack/stack v1.8.1 // indirect - github.com/gofiber/fiber/v2 v2.42.0 + github.com/gofiber/fiber/v2 v2.47.0 github.com/gorilla/websocket v1.4.2 // indirect github.com/ipfs/go-log/v2 v2.5.1 // indirect github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect github.com/tklauser/go-sysconf v0.3.5 // indirect github.com/tklauser/numcpus v0.2.2 // indirect github.com/wormhole-foundation/wormhole-explorer/common v0.0.0-20230301134427-b3ec0bcc9eda - github.com/wormhole-foundation/wormhole-explorer/parser v0.0.0-20230307192542-867f1c29626a github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230426150516-e695fad0bed8 go.uber.org/zap v1.24.0 - golang.org/x/crypto v0.2.0 // indirect - golang.org/x/sys v0.5.0 // indirect + golang.org/x/crypto v0.7.0 // indirect + golang.org/x/sys v0.9.0 // indirect gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/tx-tracker/go.sum b/tx-tracker/go.sum index 2a37800f..d1aae830 100644 --- a/tx-tracker/go.sum +++ b/tx-tracker/go.sum @@ -40,8 +40,13 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 h1:fLjPD/aNc3UIOA6tDi6QXUemppXK3P9BI7mr2hd6gx8= github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= -github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY= -github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= +github.com/algorand/go-algorand-sdk v1.23.0 h1:wlEV6OgDVc/sLeF2y41bwNG/Lr8EoMnN87Ur8N2Gyyo= +github.com/algorand/go-algorand-sdk v1.23.0/go.mod h1:7i2peZBcE48kfoxNZnLA+mklKh812jBKvQ+t4bn0KBQ= +github.com/algorand/go-codec v1.1.8/go.mod h1:XhzVs6VVyWMLu6cApb9/192gBjGRVGm5cX5j203Heg4= +github.com/algorand/go-codec/codec v1.1.8 h1:lsFuhcOH2LiEhpBH3BVUUkdevVmwCRyvb7FCAAPeY6U= +github.com/algorand/go-codec/codec v1.1.8/go.mod h1:tQ3zAJ6ijTps6V+wp8KsGDnPC2uhHVC7ANyrtkIY0bA= +github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs= +github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/aws/aws-sdk-go-v2 v1.17.4/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= github.com/aws/aws-sdk-go-v2 v1.17.5 h1:TzCUW1Nq4H8Xscph5M/skINUitxM5UBAyvm2s7XBzL4= github.com/aws/aws-sdk-go-v2 v1.17.5/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= @@ -75,6 +80,7 @@ github.com/aws/smithy-go v1.13.5 h1:hgz0X/DX0dGqTYpGALqXJoRKRj5oQ7150i5FdTePzO8= github.com/aws/smithy-go v1.13.5/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= +github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= 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/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= @@ -88,6 +94,8 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= +github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -127,8 +135,8 @@ github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= -github.com/gofiber/fiber/v2 v2.42.0 h1:Fnp7ybWvS+sjNQsFvkhf4G8OhXswvB6Vee8hM/LyS+8= -github.com/gofiber/fiber/v2 v2.42.0/go.mod h1:3+SGNjqMh5VQH5Vz2Wdi43zTIV16ktlFd3x3R6O1Zlc= +github.com/gofiber/fiber/v2 v2.47.0 h1:EN5lHVCc+Pyqh5OEsk8fzRiifgwpbrP0rulQ4iNf3fs= +github.com/gofiber/fiber/v2 v2.47.0/go.mod h1:mbFMVN1lQuzziTkkakgtKKdjfsXSw9BKR5lmcNksUoU= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= 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= @@ -219,9 +227,8 @@ github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dv github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= -github.com/klauspost/compress v1.15.15 h1:EF27CXIuDsYJ6mmvtBRlEuB2UVOqHG1tAXgZ7yIO+lw= -github.com/klauspost/compress v1.15.15/go.mod h1:ZcK2JAFqKOpnBlxcLsJzYfrS9X1akm9fHZNnD9+Vo/4= +github.com/klauspost/compress v1.16.3 h1:XuJt9zzcnaz6a16/OU53ZjWp/v7/42WcR5t2a0PcNQY= +github.com/klauspost/compress v1.16.3/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -245,8 +252,8 @@ github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2y 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.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= -github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -262,8 +269,9 @@ github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3v github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml/v2 v2.0.5 h1:ipoSadvV8oGUjnUbMub59IDPPwfxF694nG/jwbMiyQg= github.com/pelletier/go-toml/v2 v2.0.5/go.mod h1:OMHamSCAODeSsVrwwvcJOaoN0LIUIaFVNZzmWyNfXas= -github.com/philhofer/fwd v1.1.1 h1:GdGcTjf5RNAxwS4QLsiMzJYj5KEvPJD3Abr261yRQXQ= github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= +github.com/philhofer/fwd v1.1.2 h1:bnDivRJ1EWPjUIRXV5KfORO897HTbpFAQddBdE8t7Gw= +github.com/philhofer/fwd v1.1.2/go.mod h1:qkPdfjR2SIEbspLqpe1tO4n5yICnr2DY7mqEx2tUTP0= 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= @@ -278,8 +286,9 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/savsgio/dictpool v0.0.0-20221023140959-7bf2e61cea94 h1:rmMl4fXJhKMNWl+K+r/fq4FbbKI+Ia2m9hYBLm2h4G4= github.com/savsgio/dictpool v0.0.0-20221023140959-7bf2e61cea94/go.mod h1:90zrgN3D/WJsDd1iXHT96alCoN2KJo6/4x1DZC3wZs8= -github.com/savsgio/gotils v0.0.0-20220530130905-52f3993e8d6d h1:Q+gqLBOPkFGHyCJxXMRqtUgUbTjI8/Ze8vu8GGyNFwo= github.com/savsgio/gotils v0.0.0-20220530130905-52f3993e8d6d/go.mod h1:Gy+0tqhJvgGlqnTF8CVGP0AaGRjwBtXs/a5PA0Y3+A4= +github.com/savsgio/gotils v0.0.0-20230208104028-c358bd845dee h1:8Iv5m6xEo1NR1AvpV+7XmhI4r39LGNzwUL4YpMuL5vk= +github.com/savsgio/gotils v0.0.0-20230208104028-c358bd845dee/go.mod h1:qwtSXrKuJh/zsFQ12yEE89xfCrGKK63Rr7ctU/uCo4g= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/spf13/afero v1.9.2 h1:j49Hj62F0n+DaZ1dDCvhABaPNSGNkt32oRFxI33IEMw= @@ -305,26 +314,27 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/test-go/testify v1.1.4 h1:Tf9lntrKUMHiXQ07qBScBTSA0dhYQlu83hswqelv1iE= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= -github.com/tinylib/msgp v1.1.6 h1:i+SbKraHhnrf9M5MYmvQhFnbLhAXSDWF8WWsuyRdocw= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tinylib/msgp v1.1.6/go.mod h1:75BAfg2hauQhs3qedfdDZmWAPcFMAvJE5b9rGOMufyw= +github.com/tinylib/msgp v1.1.8 h1:FCXC1xanKO4I8plpHGH2P7koL/RzZs12l/+r7vakfm0= +github.com/tinylib/msgp v1.1.8/go.mod h1:qkpG+2ldGg4xRFmx+jfTvZPxfGFhi64BcnL9vkCm/Tw= github.com/tklauser/go-sysconf v0.3.5 h1:uu3Xl4nkLzQfXNsWn15rPc/HQCJKObbt1dKJeWp3vU4= github.com/tklauser/go-sysconf v0.3.5/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI= github.com/tklauser/numcpus v0.2.2 h1:oyhllyrScuYI6g+h/zUvNXNp1wy7x8qQy3t/piefldA= github.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.44.0 h1:R+gLUhldIsfg1HokMuQjdQ5bh9nuXHPIfvkYUu9eR5Q= -github.com/valyala/fasthttp v1.44.0/go.mod h1:f6VbjjoI3z1NDOZOv17o6RvtRSWxC77seBFc2uWtgiY= +github.com/valyala/fasthttp v1.47.0 h1:y7moDoxYzMooFpT5aHgNgVOQDrS3qlkfiP9mDtGGK9c= +github.com/valyala/fasthttp v1.47.0/go.mod h1:k2zXd82h/7UZc3VOdJ2WaUqt1uZ/XpXAfE9i+HBC3lA= github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8= github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= github.com/wormhole-foundation/wormhole-explorer/api v0.0.0-20230316184234-db3a54270a77 h1:jkNKRDIq7pWP/jBU4KxxArScHFpBqBCXeMakgN7W3zg= github.com/wormhole-foundation/wormhole-explorer/api v0.0.0-20230316184234-db3a54270a77/go.mod h1:SX//TXHIIc+QMHco3wxphC5Jk6wO/lk3r9J+SZnYip8= -github.com/wormhole-foundation/wormhole-explorer/parser v0.0.0-20230307192542-867f1c29626a h1:v/QDra5nOCyqSrwYIxJpNEjZqVJlCpqdN5mykcR1WOg= -github.com/wormhole-foundation/wormhole-explorer/parser v0.0.0-20230307192542-867f1c29626a/go.mod h1:rFM/Krfaz8gP63CrAwQxZ9Lzk+nSsD76fW1w/e1y6L4= github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230426150516-e695fad0bed8 h1:rrOyHd+H9a6Op1iUyZNCaI5v9D1syq8jDAYyX/2Q4L8= github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230426150516-e695fad0bed8/go.mod h1:dE12DOucCq23gjGGGhtbyx41FBxuHxjpPvG+ArO+8t0= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= @@ -340,6 +350,8 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.mongodb.org/mongo-driver v1.11.2 h1:+1v2rDQUWNcGW7/7E0Jvdz51V38XXxJfhzbV17aNHCw= go.mongodb.org/mongo-driver v1.11.2/go.mod h1:s7p5vEtfbeR1gYi6pnj3c3/urpbLv2T5Sfd6Rp2HBB8= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= @@ -353,6 +365,7 @@ go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= +go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= @@ -367,11 +380,11 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.2.0 h1:BRXPfhNivWL5Yq0BGQ39a2sW6t44aODpfxkWjYdzewE= -golang.org/x/crypto v0.2.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -406,6 +419,9 @@ 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.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= 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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -439,10 +455,12 @@ golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v 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-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220906165146-f3363e06e74c/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.4.0 h1:Q5QPcMlvfxFTAPV0+07Xz/MpK9NTXu2VDUuy0FeMfaU= -golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= 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= @@ -463,6 +481,7 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -510,14 +529,19 @@ golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/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-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/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-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= +golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= 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.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= 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= @@ -527,8 +551,9 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= 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= @@ -583,6 +608,9 @@ golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=