From 2ed900d4eb49bc7390ee8bf33d68abefa6ff102d Mon Sep 17 00:00:00 2001 From: Charles Billette Date: Thu, 21 Nov 2024 10:09:25 -0500 Subject: [PATCH 1/8] Remove all retry and return errors since poller will retry. Remove cmd/firesol/rpc/check.go and update dependencies. --- block/fetcher/rpc.go | 86 +++++++++++++------------------------- cmd/firesol/rpc/check.go | 77 ---------------------------------- cmd/firesol/rpc/fetcher.go | 19 +++++---- go.mod | 10 ++--- go.sum | 21 +++++----- 5 files changed, 56 insertions(+), 157 deletions(-) delete mode 100644 cmd/firesol/rpc/check.go diff --git a/block/fetcher/rpc.go b/block/fetcher/rpc.go index ba9fa11..298d283 100644 --- a/block/fetcher/rpc.go +++ b/block/fetcher/rpc.go @@ -15,7 +15,6 @@ import ( "github.com/gagliardetto/solana-go/rpc/jsonrpc" bin "github.com/streamingfast/binary" pbbstream "github.com/streamingfast/bstream/pb/sf/bstream/v1" - firecoreRPC "github.com/streamingfast/firehose-core/rpc" pbsol "github.com/streamingfast/firehose-solana/pb/sf/solana/type/v1" sfsol "github.com/streamingfast/solana-go" "go.uber.org/zap" @@ -35,7 +34,6 @@ var GetBlockOpts = &rpc.GetBlockOpts{ type fetchBlock func(ctx context.Context, requestedSlot uint64) (slot uint64, out *rpc.GetBlockResult, err error) type RPCFetcher struct { - rpcClients *firecoreRPC.Clients[*rpc.Client] latestConfirmedSlot uint64 latestFinalizedSlot uint64 latestBlockRetryInterval time.Duration @@ -44,9 +42,8 @@ type RPCFetcher struct { logger *zap.Logger } -func NewRPC(rpcClients *firecoreRPC.Clients[*rpc.Client], fetchInterval time.Duration, latestBlockRetryInterval time.Duration, logger *zap.Logger) *RPCFetcher { +func NewRPC(fetchInterval time.Duration, latestBlockRetryInterval time.Duration, logger *zap.Logger) *RPCFetcher { f := &RPCFetcher{ - rpcClients: rpcClients, fetchInterval: fetchInterval, latestBlockRetryInterval: latestBlockRetryInterval, logger: logger, @@ -59,48 +56,40 @@ func (f *RPCFetcher) IsBlockAvailable(requestedSlot uint64) bool { return requestedSlot <= f.latestConfirmedSlot } -func (f *RPCFetcher) Fetch(ctx context.Context, requestedSlot uint64) (out *pbbstream.Block, skip bool, err error) { +func (f *RPCFetcher) Fetch(ctx context.Context, client *rpc.Client, requestedSlot uint64) (b *pbbstream.Block, skipped bool, err error) { //THIS IS A FKG Ugly hack! if requestedSlot >= 13334464 && requestedSlot <= 13334475 { return nil, true, nil } sleepDuration := time.Duration(0) - _, err = firecoreRPC.WithClients(f.rpcClients, func(client *rpc.Client) (na interface{}, err error) { - for f.latestConfirmedSlot < requestedSlot { - time.Sleep(sleepDuration) - f.latestConfirmedSlot, err = client.GetSlot(ctx, rpc.CommitmentConfirmed) - if err != nil { - return nil, fmt.Errorf("fetching latestConfirmedSlot block num: %w", err) - } - - f.logger.Info("got latest confirmed slot block", zap.Uint64("latest_confirmed_slot", f.latestConfirmedSlot), zap.Uint64("requested_block_num", requestedSlot)) - // - if f.latestConfirmedSlot >= requestedSlot { - break - } - sleepDuration = f.latestBlockRetryInterval + for f.latestConfirmedSlot < requestedSlot { + time.Sleep(sleepDuration) + f.latestConfirmedSlot, err = client.GetSlot(ctx, rpc.CommitmentConfirmed) + if err != nil { + return nil, false, fmt.Errorf("fetching latestConfirmedSlot block num: %w", err) } - if f.latestFinalizedSlot < requestedSlot { - f.latestFinalizedSlot, err = client.GetSlot(ctx, rpc.CommitmentFinalized) - if err != nil { - return nil, fmt.Errorf("fetching latest finalized Slot block num: %w", err) - } - f.logger.Info("got latest finalized slot block", zap.Uint64("latest_finalized_slot", f.latestFinalizedSlot), zap.Uint64("requested_block_num", requestedSlot)) + f.logger.Info("got latest confirmed slot block", zap.Uint64("latest_confirmed_slot", f.latestConfirmedSlot), zap.Uint64("requested_block_num", requestedSlot)) + // + if f.latestConfirmedSlot >= requestedSlot { + break } + sleepDuration = f.latestBlockRetryInterval + } - return nil, nil - }) - - if err != nil { - return nil, false, err + if f.latestFinalizedSlot < requestedSlot { + f.latestFinalizedSlot, err = client.GetSlot(ctx, rpc.CommitmentFinalized) + if err != nil { + return nil, false, fmt.Errorf("fetching latest finalized Slot block num: %w", err) + } + f.logger.Info("got latest finalized slot block", zap.Uint64("latest_finalized_slot", f.latestFinalizedSlot), zap.Uint64("requested_block_num", requestedSlot)) } f.logger.Info("fetcher fetching block", zap.Uint64("block_num", requestedSlot), zap.Uint64("latest_finalized_slot", f.latestFinalizedSlot), zap.Uint64("latest_confirmed_slot", f.latestConfirmedSlot)) - blockResult, skip, err := f.fetch(ctx, requestedSlot, f.latestConfirmedSlot) + blockResult, skip, err := f.fetch(ctx, client, requestedSlot, f.latestConfirmedSlot) if err != nil { return nil, false, fmt.Errorf("fetching block %d: %w", requestedSlot, err) } @@ -122,47 +111,32 @@ func (f *RPCFetcher) Fetch(ctx context.Context, requestedSlot uint64) (out *pbbs return block, false, nil } -func (f *RPCFetcher) fetch(ctx context.Context, requestedSlot uint64, lastConfirmBlockNum uint64) (*rpc.GetBlockResult, bool, error) { - currentSlot := requestedSlot - var lastErrorPrintedAt time.Time - +func (f *RPCFetcher) fetch(ctx context.Context, client *rpc.Client, requestedSlot uint64, lastConfirmBlockNum uint64) (*rpc.GetBlockResult, bool, error) { for { - out, err := firecoreRPC.WithClients(f.rpcClients, func(client *rpc.Client) (*rpc.GetBlockResult, error) { - f.logger.Info("calling GetBlockWithOptions", zap.String("endpoints", fmt.Sprintf("%s", client))) - blockResult, err := client.GetBlockWithOpts(ctx, currentSlot, GetBlockOpts) - return blockResult, err - }) + f.logger.Info("calling GetBlockWithOptions", zap.String("endpoints", fmt.Sprintf("%s", client))) + blockResult, err := client.GetBlockWithOpts(ctx, requestedSlot, GetBlockOpts) + if err != nil { + return nil, false, fmt.Errorf("getting block %d: %w", requestedSlot, err) + } if err != nil { var rpcErr *jsonrpc.RPCError if errors.As(err, &rpcErr) { if rpcErr.Code == -32009 || rpcErr.Code == -32007 { - f.logger.Info("fetcher block was skipped", zap.Uint64("block_num", currentSlot)) + f.logger.Info("fetcher block was skipped", zap.Uint64("block_num", requestedSlot)) return nil, true, nil } if rpcErr.Code == -32004 { - //if currentSlot < lastConfirmBlockNum { - // f.logger.Info("fetcher block was supposedly skipped", zap.Uint64("block_num", currentSlot)) - // return nil, true, nil - //} - - f.logger.Warn("block not available. trying same block", zap.Uint64("block_num", currentSlot)) - continue + return nil, false, fmt.Errorf("block not available %d", requestedSlot) } } - if lastErrorPrintedAt.IsZero() || time.Since(lastErrorPrintedAt) > 30*time.Second { - f.logger.Warn("error getting block", zap.Uint64("block_num", currentSlot), zap.Error(err)) - lastErrorPrintedAt = time.Now() - } - - //we retry forever! - continue + return nil, false, fmt.Errorf("getting block %d: %w", requestedSlot, err) } - return out, false, nil + return blockResult, false, nil } } diff --git a/cmd/firesol/rpc/check.go b/cmd/firesol/rpc/check.go deleted file mode 100644 index ccc0b31..0000000 --- a/cmd/firesol/rpc/check.go +++ /dev/null @@ -1,77 +0,0 @@ -// cmd/firesol/rpc/check_block.go -package rpc - -import ( - "context" - "fmt" - "strconv" - "time" - - "github.com/streamingfast/firehose-solana/block/fetcher" - - firecoreRPC "github.com/streamingfast/firehose-core/rpc" - - "github.com/gagliardetto/solana-go/rpc" - "github.com/spf13/cobra" - "github.com/streamingfast/cli/sflags" - firecore "github.com/streamingfast/firehose-core" - "github.com/streamingfast/logging" - "go.uber.org/zap" -) - -func NewNextBlockCmd(logger *zap.Logger, tracer logging.Tracer) *cobra.Command { - cmd := &cobra.Command{ - Use: "next ", - Short: "Check if a block exists and return the next available block", - Args: cobra.ExactArgs(1), - RunE: nextBlockRunE(logger, tracer), - } - - cmd.Flags().StringArray("endpoints", []string{}, "List of endpoints to use to fetch different method calls") - - return cmd -} - -func nextBlockRunE(logger *zap.Logger, _ logging.Tracer) firecore.CommandExecutor { - return func(cmd *cobra.Command, args []string) (err error) { - ctx := cmd.Context() - - startBlock, err := strconv.ParseUint(args[0], 10, 64) - if err != nil { - return fmt.Errorf("unable to parse block number %d: %w", startBlock, err) - } - - rpcEndpoints := sflags.MustGetStringArray(cmd, "endpoints") - rpcClients := firecoreRPC.NewClients[*rpc.Client]() - for _, rpcEndpoint := range rpcEndpoints { - client := rpc.New(rpcEndpoint) - rpcClients.Add(client) - } - - rpcFetcher := fetcher.NewRPC(rpcClients, 1*time.Second, 1*time.Second, logger) - - var blockExists bool - for !blockExists { - select { - case <-ctx.Done(): - break - default: - - } - - blockExists = checkBlockExists(ctx, rpcFetcher, startBlock) - if blockExists { - break - } - startBlock++ - } - - _, _ = fmt.Fprintf(cmd.OutOrStdout(), fmt.Sprintf("%d", startBlock)) - return nil - } -} - -func checkBlockExists(ctx context.Context, rpcFetcher *fetcher.RPCFetcher, blockNumber uint64) bool { - _, skip, err := rpcFetcher.Fetch(ctx, blockNumber) - return !skip && err == nil -} diff --git a/cmd/firesol/rpc/fetcher.go b/cmd/firesol/rpc/fetcher.go index add7918..76593a1 100644 --- a/cmd/firesol/rpc/fetcher.go +++ b/cmd/firesol/rpc/fetcher.go @@ -2,7 +2,6 @@ package rpc import ( "fmt" - firecoreRPC "github.com/streamingfast/firehose-core/rpc" "strconv" "time" @@ -11,6 +10,7 @@ import ( "github.com/streamingfast/cli/sflags" firecore "github.com/streamingfast/firehose-core" "github.com/streamingfast/firehose-core/blockpoller" + firecoreRPC "github.com/streamingfast/firehose-core/rpc" "github.com/streamingfast/firehose-solana/block/fetcher" "github.com/streamingfast/logging" "go.uber.org/zap" @@ -28,6 +28,7 @@ func NewFetchCmd(logger *zap.Logger, tracer logging.Tracer) *cobra.Command { cmd.Flags().String("state-dir", "/data/poller", "interval between fetch") cmd.Flags().Duration("interval-between-fetch", 0, "interval between fetch") cmd.Flags().Duration("latest-block-retry-interval", time.Second, "interval between fetch") + cmd.Flags().Duration("max-block-fetch-duration", 3*time.Second, "interval between fetch") cmd.Flags().Int("block-fetch-batch-size", 10, "Number of blocks to fetch in a single batch") return cmd @@ -35,8 +36,6 @@ func NewFetchCmd(logger *zap.Logger, tracer logging.Tracer) *cobra.Command { func fetchRunE(logger *zap.Logger, tracer logging.Tracer) firecore.CommandExecutor { return func(cmd *cobra.Command, args []string) (err error) { - ctx := cmd.Context() - stateDir := sflags.MustGetString(cmd, "state-dir") startBlock, err := strconv.ParseUint(args[0], 10, 64) @@ -45,6 +44,7 @@ func fetchRunE(logger *zap.Logger, tracer logging.Tracer) firecore.CommandExecut } fetchInterval := sflags.MustGetDuration(cmd, "interval-between-fetch") + maxBlockFetchDuration := sflags.MustGetDuration(cmd, "max-block-fetch-duration") logger.Info( "launching firehose-solana poller", @@ -55,7 +55,7 @@ func fetchRunE(logger *zap.Logger, tracer logging.Tracer) firecore.CommandExecut ) rpcEndpoints := sflags.MustGetStringArray(cmd, "endpoints") - rpcClients := firecoreRPC.NewClients[*rpc.Client]() + rpcClients := firecoreRPC.NewClients[*rpc.Client](maxBlockFetchDuration, firecoreRPC.NewRollingStrategyRoundRobin[*rpc.Client]()) for _, rpcEndpoint := range rpcEndpoints { client := rpc.New(rpcEndpoint) rpcClients.Add(client) @@ -63,14 +63,15 @@ func fetchRunE(logger *zap.Logger, tracer logging.Tracer) firecore.CommandExecut latestBlockRetryInterval := sflags.MustGetDuration(cmd, "latest-block-retry-interval") - poller := blockpoller.New( - fetcher.NewRPC(rpcClients, fetchInterval, latestBlockRetryInterval, logger), + poller := blockpoller.New[*rpc.Client]( + fetcher.NewRPC(fetchInterval, latestBlockRetryInterval, logger), blockpoller.NewFireBlockHandler("type.googleapis.com/sf.solana.type.v1.Block"), - blockpoller.WithStoringState(stateDir), - blockpoller.WithLogger(logger), + rpcClients, + blockpoller.WithLogger[*rpc.Client](logger), + blockpoller.WithStoringState[*rpc.Client](stateDir), ) - err = poller.Run(ctx, startBlock, sflags.MustGetInt(cmd, "block-fetch-batch-size")) + err = poller.Run(startBlock, blockpoller.MaxStopBlock, sflags.MustGetInt(cmd, "block-fetch-batch-size")) if err != nil { return fmt.Errorf("running poller: %w", err) } diff --git a/go.mod b/go.mod index 755ddd5..ca49383 100644 --- a/go.mod +++ b/go.mod @@ -14,14 +14,14 @@ replace ( require ( cloud.google.com/go/bigtable v1.13.0 github.com/gagliardetto/solana-go v1.8.4 - github.com/klauspost/compress v1.16.6 + github.com/klauspost/compress v1.17.11 github.com/mr-tron/base58 v1.2.0 github.com/spf13/cobra v1.7.0 github.com/streamingfast/binary v0.0.0-20240116152459-ebe30de95370 - github.com/streamingfast/bstream v0.0.2-0.20240916154503-c9c5c8bbeca0 + github.com/streamingfast/bstream v0.0.2-0.20241108153156-a5c6bc006f41 github.com/streamingfast/cli v0.0.4-0.20240412191021-5f81842cb71d github.com/streamingfast/dstore v0.1.1-0.20241011152904-9acd6205dc14 - github.com/streamingfast/firehose-core v1.6.5 + github.com/streamingfast/firehose-core v1.6.7-0.20241121145805-0f91a0021712 github.com/streamingfast/logging v0.0.0-20230608130331-f22c91403091 github.com/streamingfast/solana-go v0.5.1-0.20230622180848-8faf68a7cb1d github.com/test-go/testify v1.1.4 @@ -146,7 +146,7 @@ require ( github.com/streamingfast/derr v0.0.0-20230515163924-8570aaa43fe1 // indirect github.com/streamingfast/dgrpc v0.0.0-20240423143010-f36784700c9a // indirect github.com/streamingfast/dhammer v0.0.0-20230125192823-c34bbd561bd4 // indirect - github.com/streamingfast/dmetering v0.0.0-20241007182823-f92200a54cdb // indirect + github.com/streamingfast/dmetering v0.0.0-20241101155221-489f5a9d9139 // indirect github.com/streamingfast/dmetrics v0.0.0-20230919161904-206fa8ebd545 // indirect github.com/streamingfast/dtracing v0.0.0-20220305214756-b5c0e8699839 // indirect github.com/streamingfast/jsonpb v0.0.0-20210811021341-3670f0aa02d0 // indirect @@ -154,7 +154,7 @@ require ( github.com/streamingfast/pbgo v0.0.6-0.20240823134334-812f6a16c5cb // indirect github.com/streamingfast/sf-tracing v0.0.0-20240430173521-888827872b90 // indirect github.com/streamingfast/shutter v1.5.0 // indirect - github.com/streamingfast/substreams v1.10.8 // indirect + github.com/streamingfast/substreams v1.10.10-0.20241101155333-ea3d19ccd4ea // indirect github.com/stretchr/testify v1.8.4 // indirect github.com/subosito/gotenv v1.4.2 // indirect github.com/teris-io/shortid v0.0.0-20201117134242-e59966efd125 // indirect diff --git a/go.sum b/go.sum index d6bfed6..5a1ccb3 100644 --- a/go.sum +++ b/go.sum @@ -462,8 +462,8 @@ github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYs github.com/klauspost/compress v1.11.4/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= 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.16.6 h1:91SKEy4K37vkp255cJ8QesJhjyRO0hn9i9G0GoUwLsk= -github.com/klauspost/compress v1.16.6/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= +github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= github.com/konsorten/go-windows-terminal-sequences v1.0.1/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= @@ -649,8 +649,8 @@ github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jH github.com/streamingfast/binary v0.0.0-20210928223119-44fc44e4a0b5/go.mod h1:LEQhe6qUvAQSYBJu7MZvDU1kx4JrZzxru3Ga1rRCCuo= github.com/streamingfast/binary v0.0.0-20240116152459-ebe30de95370 h1:/7j4mKpSJgGPYD4de7AA3nPzy3UeObvjUqidayw+dh8= github.com/streamingfast/binary v0.0.0-20240116152459-ebe30de95370/go.mod h1:LEQhe6qUvAQSYBJu7MZvDU1kx4JrZzxru3Ga1rRCCuo= -github.com/streamingfast/bstream v0.0.2-0.20240916154503-c9c5c8bbeca0 h1:7qWlxoUY8r/RUOYEH48ZJC1lwIRLiXyOIp2Xwp2TKoE= -github.com/streamingfast/bstream v0.0.2-0.20240916154503-c9c5c8bbeca0/go.mod h1:n5wy+Vmwp4xbjXO7B81MAkAgjnf1vJ/lI2y6hWWyFbg= +github.com/streamingfast/bstream v0.0.2-0.20241108153156-a5c6bc006f41 h1:Y9bB+Wsd5q6DZsLnOMdsgN/BjonRXrbPeQjqDLihFoM= +github.com/streamingfast/bstream v0.0.2-0.20241108153156-a5c6bc006f41/go.mod h1:n5wy+Vmwp4xbjXO7B81MAkAgjnf1vJ/lI2y6hWWyFbg= github.com/streamingfast/cli v0.0.4-0.20240412191021-5f81842cb71d h1:9tsEt2tLCp94CW6MyJZY+Rw6+t0WH2kioBR6ucO6P/E= github.com/streamingfast/cli v0.0.4-0.20240412191021-5f81842cb71d/go.mod h1:og+6lDBPLZ24lbF/YISmVsSduZUZwXSmJGD3pZ/sW2Y= github.com/streamingfast/dauth v0.0.0-20240222213226-519afc16cf84 h1:yCvuNcwQ21J4Ua6YrAmHDBx3bjK04y+ssEYBe65BXRU= @@ -663,16 +663,17 @@ github.com/streamingfast/dgrpc v0.0.0-20240423143010-f36784700c9a h1:JwAGZ7f5vkB github.com/streamingfast/dgrpc v0.0.0-20240423143010-f36784700c9a/go.mod h1:EPtUX/vhRphE37Zo6sDcgD/S3sm5YqXHhxAgzS6Ebwo= github.com/streamingfast/dhammer v0.0.0-20230125192823-c34bbd561bd4 h1:HKi8AIkLBzxZWmbCRUo1RxoOLK33iXO6gZprfsE9rf4= github.com/streamingfast/dhammer v0.0.0-20230125192823-c34bbd561bd4/go.mod h1:ehPytv7E4rI65iLcrwTes4rNGGqPPiugnH+20nDQyp4= -github.com/streamingfast/dmetering v0.0.0-20241007182823-f92200a54cdb h1:SooWpzSSU04Z321lLWS6OkTAgoXH0qQEv5mVUi4b+q8= -github.com/streamingfast/dmetering v0.0.0-20241007182823-f92200a54cdb/go.mod h1:UqWuX3REU/IInBUaymFN2eLjuvz+/0SsoUFjeQlLNyI= +github.com/streamingfast/dmetering v0.0.0-20241101155221-489f5a9d9139 h1:a22XzjeY7n9Xv+0yJMV2pzuPptALtOu6jdg69pOwuO4= +github.com/streamingfast/dmetering v0.0.0-20241101155221-489f5a9d9139/go.mod h1:UqWuX3REU/IInBUaymFN2eLjuvz+/0SsoUFjeQlLNyI= github.com/streamingfast/dmetrics v0.0.0-20230919161904-206fa8ebd545 h1:SUl04bZKGAv207lp7/6CHOJIRpjUKunwItrno3K463Y= github.com/streamingfast/dmetrics v0.0.0-20230919161904-206fa8ebd545/go.mod h1:JbxEDbzWRG1dHdNIPrYfuPllEkktZMgm40AwVIBENcw= github.com/streamingfast/dstore v0.1.1-0.20241011152904-9acd6205dc14 h1:/2HxIOzAgUBKyxjDO4IJPzBBaEAtzwipb/2/JGsOArA= github.com/streamingfast/dstore v0.1.1-0.20241011152904-9acd6205dc14/go.mod h1:kNzxgv2MzYFn2T4kelBVpGp/yP/1njtr3+csWuqxK3w= github.com/streamingfast/dtracing v0.0.0-20220305214756-b5c0e8699839 h1:K6mJPvh1jAL+/gBS7Bh9jyzWaTib6N47m06gZOTUPwQ= github.com/streamingfast/dtracing v0.0.0-20220305214756-b5c0e8699839/go.mod h1:huOJyjMYS6K8upTuxDxaNd+emD65RrXoVBvh8f1/7Ns= -github.com/streamingfast/firehose-core v1.6.5 h1:Z9LoNRdLxt5oxFi5nY//ioXI1tF/UtWSsrFfL4cDJck= -github.com/streamingfast/firehose-core v1.6.5/go.mod h1:r0kfEYe/iUylIfz8DWz5Drzinz2KF84KMzYkF4FE65Y= +github.com/streamingfast/firehose-core v1.6.7-0.20241118204335-cf7a94ae8688 h1:Davv0iOmZkBK/rOm78qRl5ZnDcMmSP3jaOStOYlpBxs= +github.com/streamingfast/firehose-core v1.6.7-0.20241118204335-cf7a94ae8688/go.mod h1:IqqgMJIi9RIaaxfY7o+vXEioLU0Iu5sQ1LNF7ygCOv8= +github.com/streamingfast/firehose-core v1.6.7-0.20241121145805-0f91a0021712/go.mod h1:IqqgMJIi9RIaaxfY7o+vXEioLU0Iu5sQ1LNF7ygCOv8= github.com/streamingfast/gagliardetto-solana-go v0.0.0-20240115191424-05c37cd0760d h1:Db3yKJeN5DWPz8pesR9tuFXdbs0MnpRLmov+ttsHoTU= github.com/streamingfast/gagliardetto-solana-go v0.0.0-20240115191424-05c37cd0760d/go.mod h1:i+7aAyNDTHG0jK8GZIBSI4OVvDqkt2Qx+LklYclRNG8= github.com/streamingfast/jsonpb v0.0.0-20210811021341-3670f0aa02d0 h1:g8eEYbFSykyzIyuxNMmHEUGGUvJE0ivmqZagLDK42gw= @@ -695,8 +696,8 @@ github.com/streamingfast/shutter v1.5.0 h1:NpzDYzj0HVpSiDJVO/FFSL6QIK/YKOxY0gJAt github.com/streamingfast/shutter v1.5.0/go.mod h1:B/T6efqdeMGbGwjzPS1ToXzYZI4kDzI5/u4I+7qbjY8= github.com/streamingfast/solana-go v0.5.1-0.20230622180848-8faf68a7cb1d h1:6wV8O4hUxYZ6IiJ/odsDBzeU8y/zAWMttUm0reG+r3Y= github.com/streamingfast/solana-go v0.5.1-0.20230622180848-8faf68a7cb1d/go.mod h1:9NfZWSK0zqA+M1YU2pTI8sr1BfijCpqBFceLQARQiNw= -github.com/streamingfast/substreams v1.10.8 h1:akiuCAtPox9drLhT02DplcwBVE2pO+yumAZ8yYsspXM= -github.com/streamingfast/substreams v1.10.8/go.mod h1:QQvg/atkJzW4dknRrD9lCo7apGKq8vYqMW1Z57B4xL8= +github.com/streamingfast/substreams v1.10.10-0.20241101155333-ea3d19ccd4ea h1:bj71y2WVLpL6TCSOPO2YcRzYbL2Li0rO/qY4QBS6onA= +github.com/streamingfast/substreams v1.10.10-0.20241101155333-ea3d19ccd4ea/go.mod h1:AQCTVQAf8sBP8r5hcel1tOZ8FthEPdxnjaBLlJ8Fmy4= 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= From cd1d95fc46088df012daabaab3c722903589f239 Mon Sep 17 00:00:00 2001 From: Charles Billette Date: Mon, 25 Nov 2024 07:54:24 -0500 Subject: [PATCH 2/8] Refactor fetch method and cleanup commands Simplified the fetch method by removing an unnecessary loop. Removed redundant commands and dependencies to streamline the codebase. --- block/fetcher/rpc.go | 33 ++++++++++++++------------------- cmd/firesol/main.go | 3 --- go.sum | 3 +-- 3 files changed, 15 insertions(+), 24 deletions(-) diff --git a/block/fetcher/rpc.go b/block/fetcher/rpc.go index 298d283..2a487d8 100644 --- a/block/fetcher/rpc.go +++ b/block/fetcher/rpc.go @@ -112,32 +112,27 @@ func (f *RPCFetcher) Fetch(ctx context.Context, client *rpc.Client, requestedSlo } func (f *RPCFetcher) fetch(ctx context.Context, client *rpc.Client, requestedSlot uint64, lastConfirmBlockNum uint64) (*rpc.GetBlockResult, bool, error) { - for { - f.logger.Info("calling GetBlockWithOptions", zap.String("endpoints", fmt.Sprintf("%s", client))) - blockResult, err := client.GetBlockWithOpts(ctx, requestedSlot, GetBlockOpts) - if err != nil { - return nil, false, fmt.Errorf("getting block %d: %w", requestedSlot, err) - } - - if err != nil { - var rpcErr *jsonrpc.RPCError - if errors.As(err, &rpcErr) { + f.logger.Info("calling GetBlockWithOptions", zap.String("endpoints", fmt.Sprintf("%s", client))) + blockResult, err := client.GetBlockWithOpts(ctx, requestedSlot, GetBlockOpts) - if rpcErr.Code == -32009 || rpcErr.Code == -32007 { - f.logger.Info("fetcher block was skipped", zap.Uint64("block_num", requestedSlot)) - return nil, true, nil - } + if err != nil { + var rpcErr *jsonrpc.RPCError + if errors.As(err, &rpcErr) { - if rpcErr.Code == -32004 { - return nil, false, fmt.Errorf("block not available %d", requestedSlot) - } + if rpcErr.Code == -32009 || rpcErr.Code == -32007 { + f.logger.Info("fetcher block was skipped", zap.Uint64("block_num", requestedSlot)) + return nil, true, nil } - return nil, false, fmt.Errorf("getting block %d: %w", requestedSlot, err) + if rpcErr.Code == -32004 { + return nil, false, fmt.Errorf("block not available %d", requestedSlot) + } } - return blockResult, false, nil + return nil, false, fmt.Errorf("getting block %d: %w", requestedSlot, err) } + + return blockResult, false, nil } func blockFromBlockResult(slot uint64, finalizedSlot uint64, result *rpc.GetBlockResult, logger *zap.Logger) (*pbbstream.Block, error) { diff --git a/cmd/firesol/main.go b/cmd/firesol/main.go index 39a2bd4..18463aa 100644 --- a/cmd/firesol/main.go +++ b/cmd/firesol/main.go @@ -3,7 +3,6 @@ package main import ( "fmt" "os" - "time" "github.com/spf13/cobra" "github.com/streamingfast/firehose-core/cmd/tools" @@ -39,8 +38,6 @@ func newFetchCmd(logger *zap.Logger, tracer logging.Tracer) *cobra.Command { Short: "fetch blocks from different sources", Args: cobra.ExactArgs(2), } - time.Now().UnixMilli() cmd.AddCommand(rpc.NewFetchCmd(logger, tracer)) - cmd.AddCommand(rpc.NewNextBlockCmd(logger, tracer)) return cmd } diff --git a/go.sum b/go.sum index 5a1ccb3..0752dea 100644 --- a/go.sum +++ b/go.sum @@ -671,8 +671,7 @@ github.com/streamingfast/dstore v0.1.1-0.20241011152904-9acd6205dc14 h1:/2HxIOzA github.com/streamingfast/dstore v0.1.1-0.20241011152904-9acd6205dc14/go.mod h1:kNzxgv2MzYFn2T4kelBVpGp/yP/1njtr3+csWuqxK3w= github.com/streamingfast/dtracing v0.0.0-20220305214756-b5c0e8699839 h1:K6mJPvh1jAL+/gBS7Bh9jyzWaTib6N47m06gZOTUPwQ= github.com/streamingfast/dtracing v0.0.0-20220305214756-b5c0e8699839/go.mod h1:huOJyjMYS6K8upTuxDxaNd+emD65RrXoVBvh8f1/7Ns= -github.com/streamingfast/firehose-core v1.6.7-0.20241118204335-cf7a94ae8688 h1:Davv0iOmZkBK/rOm78qRl5ZnDcMmSP3jaOStOYlpBxs= -github.com/streamingfast/firehose-core v1.6.7-0.20241118204335-cf7a94ae8688/go.mod h1:IqqgMJIi9RIaaxfY7o+vXEioLU0Iu5sQ1LNF7ygCOv8= +github.com/streamingfast/firehose-core v1.6.7-0.20241121145805-0f91a0021712 h1:CswUjGoQ24rvfdn/Oaw1Y4ApAFNVWL7rWMMiTJqYoAY= github.com/streamingfast/firehose-core v1.6.7-0.20241121145805-0f91a0021712/go.mod h1:IqqgMJIi9RIaaxfY7o+vXEioLU0Iu5sQ1LNF7ygCOv8= github.com/streamingfast/gagliardetto-solana-go v0.0.0-20240115191424-05c37cd0760d h1:Db3yKJeN5DWPz8pesR9tuFXdbs0MnpRLmov+ttsHoTU= github.com/streamingfast/gagliardetto-solana-go v0.0.0-20240115191424-05c37cd0760d/go.mod h1:i+7aAyNDTHG0jK8GZIBSI4OVvDqkt2Qx+LklYclRNG8= From 152abc282585a847cd4dcd2a40a3e05da3fdf174 Mon Sep 17 00:00:00 2001 From: Charles Billette Date: Mon, 25 Nov 2024 14:15:11 -0500 Subject: [PATCH 3/8] merge develop --- block/fetcher/rpc.go | 14 +++++++++++--- cmd/firesol/rpc/check.go | 0 cmd/firesol/rpc/fetcher.go | 5 +---- go.sum | 1 + 4 files changed, 13 insertions(+), 7 deletions(-) delete mode 100644 cmd/firesol/rpc/check.go diff --git a/block/fetcher/rpc.go b/block/fetcher/rpc.go index 967f1f8..3bbaffc 100644 --- a/block/fetcher/rpc.go +++ b/block/fetcher/rpc.go @@ -15,6 +15,7 @@ import ( "github.com/gagliardetto/solana-go/rpc/jsonrpc" bin "github.com/streamingfast/binary" pbbstream "github.com/streamingfast/bstream/pb/sf/bstream/v1" + firecoreRPC "github.com/streamingfast/firehose-core/rpc" pbsol "github.com/streamingfast/firehose-solana/pb/sf/solana/type/v1" sfsol "github.com/streamingfast/solana-go" "go.uber.org/zap" @@ -35,7 +36,6 @@ type fetchBlock func(ctx context.Context, requestedSlot uint64) (slot uint64, ou type RPCFetcher struct { rpcClients *firecoreRPC.Clients[*rpc.Client] - optimizeForSingleTarget bool latestConfirmedSlot uint64 latestFinalizedSlot uint64 latestBlockRetryInterval time.Duration @@ -45,10 +45,9 @@ type RPCFetcher struct { logger *zap.Logger } -func NewRPC(fetchInterval time.Duration, latestBlockRetryInterval time.Duration, optimizeForSingleTarget bool, isMainnet bool, logger *zap.Logger) *RPCFetcher { +func NewRPC(fetchInterval time.Duration, latestBlockRetryInterval time.Duration, isMainnet bool, logger *zap.Logger) *RPCFetcher { f := &RPCFetcher{ fetchInterval: fetchInterval, - optimizeForSingleTarget: optimizeForSingleTarget, latestBlockRetryInterval: latestBlockRetryInterval, isMainnet: isMainnet, logger: logger, @@ -61,6 +60,15 @@ func (f *RPCFetcher) IsBlockAvailable(requestedSlot uint64) bool { return requestedSlot <= f.latestConfirmedSlot } +func FetchHeadBlockNumber(ctx context.Context, client *rpc.Client) (uint64, error) { + num, err := client.GetSlot(ctx, rpc.CommitmentConfirmed) + if err != nil { + return 0, fmt.Errorf("fetching head block num: %w", err) + } + return num, nil + +} + func (f *RPCFetcher) Fetch(ctx context.Context, client *rpc.Client, requestedSlot uint64) (b *pbbstream.Block, skipped bool, err error) { if f.isMainnet && requestedSlot >= 13334464 && requestedSlot <= 13334475 { // know issue fetching these blocks on mainnet, ugly but works diff --git a/cmd/firesol/rpc/check.go b/cmd/firesol/rpc/check.go deleted file mode 100644 index e69de29..0000000 diff --git a/cmd/firesol/rpc/fetcher.go b/cmd/firesol/rpc/fetcher.go index 417bdc7..6b2ceb9 100644 --- a/cmd/firesol/rpc/fetcher.go +++ b/cmd/firesol/rpc/fetcher.go @@ -12,7 +12,6 @@ import ( "github.com/streamingfast/cli/sflags" firecore "github.com/streamingfast/firehose-core" "github.com/streamingfast/firehose-core/blockpoller" - firecoreRPC "github.com/streamingfast/firehose-core/rpc" "github.com/streamingfast/firehose-solana/block/fetcher" "github.com/streamingfast/logging" "go.uber.org/zap" @@ -32,7 +31,6 @@ func NewFetchCmd(logger *zap.Logger, tracer logging.Tracer) *cobra.Command { cmd.Flags().Duration("latest-block-retry-interval", time.Second, "interval between fetch") cmd.Flags().Duration("max-block-fetch-duration", 3*time.Second, "interval between fetch") cmd.Flags().Int("block-fetch-batch-size", 10, "Number of blocks to fetch in a single batch") - cmd.Flags().Bool("optimize-single-target", false, "Only set this if every endpoint is pointing to a single node (not a cluster). It allows reducing the number of RPC calls by making assumptions about the last block") cmd.Flags().String("network", "mainnet", "network to fetch from (mainnet, devnet, testnet) -- only used to patch a known issue on some slots") return cmd @@ -66,7 +64,6 @@ func fetchRunE(logger *zap.Logger, tracer logging.Tracer) firecore.CommandExecut } latestBlockRetryInterval := sflags.MustGetDuration(cmd, "latest-block-retry-interval") - optimizeSingleTarget := sflags.MustGetBool(cmd, "optimize-single-target") var isMainnet bool switch sflags.MustGetString(cmd, "network") { case "mainnet", "mainnet-beta": @@ -74,7 +71,7 @@ func fetchRunE(logger *zap.Logger, tracer logging.Tracer) firecore.CommandExecut } poller := blockpoller.New[*rpc.Client]( - fetcher.NewRPC(fetchInterval, latestBlockRetryInterval, optimizeSingleTarget, isMainnet, logger), + fetcher.NewRPC(fetchInterval, latestBlockRetryInterval, isMainnet, logger), blockpoller.NewFireBlockHandler("type.googleapis.com/sf.solana.type.v1.Block"), rpcClients, blockpoller.WithLogger[*rpc.Client](logger), diff --git a/go.sum b/go.sum index 0752dea..b3fa875 100644 --- a/go.sum +++ b/go.sum @@ -725,6 +725,7 @@ github.com/tidwall/gjson v1.9.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlf github.com/tidwall/gjson v1.11.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.14.1 h1:iymTbGkQBhveq21bEvAQ81I0LEBork8BFe1CUZXdyuo= github.com/tidwall/gjson v1.14.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.0.1/go.mod h1:LujAq0jyVjBy028G1WhWfIzbpQfMO8bBZ6Tyb0+pL9E= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= From 0057dbd1cc445377bf13b8e376eb740880d58e8e Mon Sep 17 00:00:00 2001 From: Charles Billette Date: Wed, 27 Nov 2024 09:07:56 -0500 Subject: [PATCH 4/8] Update fetcher options and improve logging. Added new flag `interval-between-clients-sort`. Updated the RPC client strategy, and switched to a sticky rolling strategy. Enhanced logging by iterating over all flags. --- block/fetcher/rpc.go | 3 +-- cmd/firesol/rpc/fetcher.go | 27 +++++++++++++++------------ go.mod | 2 +- go.sum | 9 +++++---- 4 files changed, 22 insertions(+), 19 deletions(-) diff --git a/block/fetcher/rpc.go b/block/fetcher/rpc.go index 3bbaffc..c71dc41 100644 --- a/block/fetcher/rpc.go +++ b/block/fetcher/rpc.go @@ -60,13 +60,12 @@ func (f *RPCFetcher) IsBlockAvailable(requestedSlot uint64) bool { return requestedSlot <= f.latestConfirmedSlot } -func FetchHeadBlockNumber(ctx context.Context, client *rpc.Client) (uint64, error) { +func (f *RPCFetcher) FetchSortValue(ctx context.Context, client *rpc.Client) (sortValue uint64, err error) { num, err := client.GetSlot(ctx, rpc.CommitmentConfirmed) if err != nil { return 0, fmt.Errorf("fetching head block num: %w", err) } return num, nil - } func (f *RPCFetcher) Fetch(ctx context.Context, client *rpc.Client, requestedSlot uint64) (b *pbbstream.Block, skipped bool, err error) { diff --git a/cmd/firesol/rpc/fetcher.go b/cmd/firesol/rpc/fetcher.go index 6b2ceb9..c11c1ce 100644 --- a/cmd/firesol/rpc/fetcher.go +++ b/cmd/firesol/rpc/fetcher.go @@ -5,13 +5,14 @@ import ( "strconv" "time" - firecoreRPC "github.com/streamingfast/firehose-core/rpc" + "github.com/spf13/pflag" "github.com/gagliardetto/solana-go/rpc" "github.com/spf13/cobra" "github.com/streamingfast/cli/sflags" firecore "github.com/streamingfast/firehose-core" "github.com/streamingfast/firehose-core/blockpoller" + firecoreRPC "github.com/streamingfast/firehose-core/rpc" "github.com/streamingfast/firehose-solana/block/fetcher" "github.com/streamingfast/logging" "go.uber.org/zap" @@ -29,7 +30,8 @@ func NewFetchCmd(logger *zap.Logger, tracer logging.Tracer) *cobra.Command { cmd.Flags().String("state-dir", "/data/poller", "interval between fetch") cmd.Flags().Duration("interval-between-fetch", 0, "interval between fetch") cmd.Flags().Duration("latest-block-retry-interval", time.Second, "interval between fetch") - cmd.Flags().Duration("max-block-fetch-duration", 3*time.Second, "interval between fetch") + cmd.Flags().Duration("max-block-fetch-duration", 3*time.Second, "maximum delay before considering a block fetch as failed") + cmd.Flags().Duration("interval-between-clients-sort", 10*time.Minute, "interval between sorting clients base on their head block") cmd.Flags().Int("block-fetch-batch-size", 10, "Number of blocks to fetch in a single batch") cmd.Flags().String("network", "mainnet", "network to fetch from (mainnet, devnet, testnet) -- only used to patch a known issue on some slots") @@ -47,17 +49,15 @@ func fetchRunE(logger *zap.Logger, tracer logging.Tracer) firecore.CommandExecut fetchInterval := sflags.MustGetDuration(cmd, "interval-between-fetch") maxBlockFetchDuration := sflags.MustGetDuration(cmd, "max-block-fetch-duration") + intervalBetweenClientsSort := sflags.MustGetDuration(cmd, "interval-between-clients-sort") - logger.Info( - "launching firehose-solana poller", - zap.String("state_dir", stateDir), - zap.Uint64("first_streamable_block", startBlock), - zap.Duration("interval_between_fetch", fetchInterval), - zap.Duration("latest_block_retry_interval", sflags.MustGetDuration(cmd, "latest-block-retry-interval")), - ) + logger.Info("launching firehose-solana poller") + cmd.Flags().VisitAll(func(flag *pflag.Flag) { + logger.Info("flag", zap.String("name", flag.Name), zap.String("value", flag.Value.String())) + }) rpcEndpoints := sflags.MustGetStringArray(cmd, "endpoints") - rpcClients := firecoreRPC.NewClients[*rpc.Client](maxBlockFetchDuration, firecoreRPC.NewRollingStrategyRoundRobin[*rpc.Client]()) + rpcClients := firecoreRPC.NewClients[*rpc.Client](maxBlockFetchDuration, firecoreRPC.NewStickyRollingStrategy[*rpc.Client](), logger) for _, rpcEndpoint := range rpcEndpoints { client := rpc.New(rpcEndpoint) rpcClients.Add(client) @@ -70,15 +70,18 @@ func fetchRunE(logger *zap.Logger, tracer logging.Tracer) firecore.CommandExecut isMainnet = true } + blockFetcher := fetcher.NewRPC(fetchInterval, latestBlockRetryInterval, isMainnet, logger) + rpcClients.StartSorting(cmd.Context(), firecoreRPC.SortDirectionDescending, blockFetcher, intervalBetweenClientsSort) + poller := blockpoller.New[*rpc.Client]( - fetcher.NewRPC(fetchInterval, latestBlockRetryInterval, isMainnet, logger), + blockFetcher, blockpoller.NewFireBlockHandler("type.googleapis.com/sf.solana.type.v1.Block"), rpcClients, blockpoller.WithLogger[*rpc.Client](logger), blockpoller.WithStoringState[*rpc.Client](stateDir), ) - err = poller.Run(startBlock, blockpoller.MaxStopBlock, sflags.MustGetInt(cmd, "block-fetch-batch-size")) + err = poller.Run(startBlock, nil, sflags.MustGetInt(cmd, "block-fetch-batch-size")) if err != nil { return fmt.Errorf("running poller: %w", err) } diff --git a/go.mod b/go.mod index 5df0139..4803383 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/streamingfast/bstream v0.0.2-0.20241108153156-a5c6bc006f41 github.com/streamingfast/cli v0.0.4-0.20240412191021-5f81842cb71d github.com/streamingfast/dstore v0.1.1-0.20241011152904-9acd6205dc14 - github.com/streamingfast/firehose-core v1.6.7-0.20241121145805-0f91a0021712 + github.com/streamingfast/firehose-core v1.6.7-0.20241127135923-41deda86306f github.com/streamingfast/logging v0.0.0-20230608130331-f22c91403091 github.com/streamingfast/solana-go v0.5.1-0.20230622180848-8faf68a7cb1d github.com/test-go/testify v1.1.4 diff --git a/go.sum b/go.sum index b3fa875..2df9fd4 100644 --- a/go.sum +++ b/go.sum @@ -671,8 +671,10 @@ github.com/streamingfast/dstore v0.1.1-0.20241011152904-9acd6205dc14 h1:/2HxIOzA github.com/streamingfast/dstore v0.1.1-0.20241011152904-9acd6205dc14/go.mod h1:kNzxgv2MzYFn2T4kelBVpGp/yP/1njtr3+csWuqxK3w= github.com/streamingfast/dtracing v0.0.0-20220305214756-b5c0e8699839 h1:K6mJPvh1jAL+/gBS7Bh9jyzWaTib6N47m06gZOTUPwQ= github.com/streamingfast/dtracing v0.0.0-20220305214756-b5c0e8699839/go.mod h1:huOJyjMYS6K8upTuxDxaNd+emD65RrXoVBvh8f1/7Ns= -github.com/streamingfast/firehose-core v1.6.7-0.20241121145805-0f91a0021712 h1:CswUjGoQ24rvfdn/Oaw1Y4ApAFNVWL7rWMMiTJqYoAY= -github.com/streamingfast/firehose-core v1.6.7-0.20241121145805-0f91a0021712/go.mod h1:IqqgMJIi9RIaaxfY7o+vXEioLU0Iu5sQ1LNF7ygCOv8= +github.com/streamingfast/firehose-core v1.6.7-0.20241126143606-51f831a2d2e8 h1:HqxVjj6pPn5X0244lJ/VHvgfgNrnrt7fFxlYkDk/gtY= +github.com/streamingfast/firehose-core v1.6.7-0.20241126143606-51f831a2d2e8/go.mod h1:IqqgMJIi9RIaaxfY7o+vXEioLU0Iu5sQ1LNF7ygCOv8= +github.com/streamingfast/firehose-core v1.6.7-0.20241126143726-2d88fb9912a9/go.mod h1:IqqgMJIi9RIaaxfY7o+vXEioLU0Iu5sQ1LNF7ygCOv8= +github.com/streamingfast/firehose-core v1.6.7-0.20241127135923-41deda86306f/go.mod h1:IqqgMJIi9RIaaxfY7o+vXEioLU0Iu5sQ1LNF7ygCOv8= github.com/streamingfast/gagliardetto-solana-go v0.0.0-20240115191424-05c37cd0760d h1:Db3yKJeN5DWPz8pesR9tuFXdbs0MnpRLmov+ttsHoTU= github.com/streamingfast/gagliardetto-solana-go v0.0.0-20240115191424-05c37cd0760d/go.mod h1:i+7aAyNDTHG0jK8GZIBSI4OVvDqkt2Qx+LklYclRNG8= github.com/streamingfast/jsonpb v0.0.0-20210811021341-3670f0aa02d0 h1:g8eEYbFSykyzIyuxNMmHEUGGUvJE0ivmqZagLDK42gw= @@ -723,8 +725,7 @@ github.com/test-go/testify v1.1.4/go.mod h1:rH7cfJo/47vWGdi4GPj16x3/t1xGOj2YxzmN github.com/tidwall/gjson v1.6.3/go.mod h1:BaHyNc5bjzYkPqgLq7mdVzeiRtULKULXLgZFKsxEHI0= github.com/tidwall/gjson v1.9.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.11.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.14.1 h1:iymTbGkQBhveq21bEvAQ81I0LEBork8BFe1CUZXdyuo= -github.com/tidwall/gjson v1.14.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.0.1/go.mod h1:LujAq0jyVjBy028G1WhWfIzbpQfMO8bBZ6Tyb0+pL9E= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= From c5d5d272c8db06c790d9bb51f714eae32a9bbc5c Mon Sep 17 00:00:00 2001 From: Charles Billette Date: Wed, 27 Nov 2024 09:20:16 -0500 Subject: [PATCH 5/8] Update dependencies in go.mod and go.sum --- go.mod | 5 ++--- go.sum | 6 ++---- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 4803383..76861f5 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,6 @@ replace ( github.com/gagliardetto/solana-go => github.com/streamingfast/gagliardetto-solana-go v0.0.0-20240115191424-05c37cd0760d github.com/graph-gophers/graphql-go => github.com/streamingfast/graphql-go v0.0.0-20210204202750-0e485a040a3c github.com/jhump/protoreflect => github.com/streamingfast/protoreflect v0.0.0-20231205191344-4b629d20ce8d -//github.com/streamingfast/firehose-core => ../firehose-core ) require ( @@ -17,11 +16,12 @@ require ( github.com/klauspost/compress v1.17.11 github.com/mr-tron/base58 v1.2.0 github.com/spf13/cobra v1.7.0 + github.com/spf13/pflag v1.0.5 github.com/streamingfast/binary v0.0.0-20240116152459-ebe30de95370 github.com/streamingfast/bstream v0.0.2-0.20241108153156-a5c6bc006f41 github.com/streamingfast/cli v0.0.4-0.20240412191021-5f81842cb71d github.com/streamingfast/dstore v0.1.1-0.20241011152904-9acd6205dc14 - github.com/streamingfast/firehose-core v1.6.7-0.20241127135923-41deda86306f + github.com/streamingfast/firehose-core v1.6.7-0.20241127141805-5fb676a6b73f github.com/streamingfast/logging v0.0.0-20230608130331-f22c91403091 github.com/streamingfast/solana-go v0.5.1-0.20230622180848-8faf68a7cb1d github.com/test-go/testify v1.1.4 @@ -139,7 +139,6 @@ require ( github.com/spf13/afero v1.10.0 // 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.15.0 // indirect github.com/streamingfast/dauth v0.0.0-20240222213226-519afc16cf84 // indirect github.com/streamingfast/dbin v0.9.1-0.20231117225723-59790c798e2c // indirect diff --git a/go.sum b/go.sum index 2df9fd4..f2cdc09 100644 --- a/go.sum +++ b/go.sum @@ -671,10 +671,8 @@ github.com/streamingfast/dstore v0.1.1-0.20241011152904-9acd6205dc14 h1:/2HxIOzA github.com/streamingfast/dstore v0.1.1-0.20241011152904-9acd6205dc14/go.mod h1:kNzxgv2MzYFn2T4kelBVpGp/yP/1njtr3+csWuqxK3w= github.com/streamingfast/dtracing v0.0.0-20220305214756-b5c0e8699839 h1:K6mJPvh1jAL+/gBS7Bh9jyzWaTib6N47m06gZOTUPwQ= github.com/streamingfast/dtracing v0.0.0-20220305214756-b5c0e8699839/go.mod h1:huOJyjMYS6K8upTuxDxaNd+emD65RrXoVBvh8f1/7Ns= -github.com/streamingfast/firehose-core v1.6.7-0.20241126143606-51f831a2d2e8 h1:HqxVjj6pPn5X0244lJ/VHvgfgNrnrt7fFxlYkDk/gtY= -github.com/streamingfast/firehose-core v1.6.7-0.20241126143606-51f831a2d2e8/go.mod h1:IqqgMJIi9RIaaxfY7o+vXEioLU0Iu5sQ1LNF7ygCOv8= -github.com/streamingfast/firehose-core v1.6.7-0.20241126143726-2d88fb9912a9/go.mod h1:IqqgMJIi9RIaaxfY7o+vXEioLU0Iu5sQ1LNF7ygCOv8= -github.com/streamingfast/firehose-core v1.6.7-0.20241127135923-41deda86306f/go.mod h1:IqqgMJIi9RIaaxfY7o+vXEioLU0Iu5sQ1LNF7ygCOv8= +github.com/streamingfast/firehose-core v1.6.7-0.20241127141805-5fb676a6b73f h1:c+3mP1wJyop7nlfbb5M8Ioh/g67Nx/zuPcO0yZ2DbUs= +github.com/streamingfast/firehose-core v1.6.7-0.20241127141805-5fb676a6b73f/go.mod h1:IqqgMJIi9RIaaxfY7o+vXEioLU0Iu5sQ1LNF7ygCOv8= github.com/streamingfast/gagliardetto-solana-go v0.0.0-20240115191424-05c37cd0760d h1:Db3yKJeN5DWPz8pesR9tuFXdbs0MnpRLmov+ttsHoTU= github.com/streamingfast/gagliardetto-solana-go v0.0.0-20240115191424-05c37cd0760d/go.mod h1:i+7aAyNDTHG0jK8GZIBSI4OVvDqkt2Qx+LklYclRNG8= github.com/streamingfast/jsonpb v0.0.0-20210811021341-3670f0aa02d0 h1:g8eEYbFSykyzIyuxNMmHEUGGUvJE0ivmqZagLDK42gw= From 7c560cc622d8fd29d62b4dcad942572e1f118c91 Mon Sep 17 00:00:00 2001 From: Charles Billette Date: Tue, 3 Dec 2024 07:02:51 -0500 Subject: [PATCH 6/8] Add AccountBlock message to Solana proto definitions --- block/fetcher/rpc.go | 2 ++ proto/sf/solana/type/v1/type.proto | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/block/fetcher/rpc.go b/block/fetcher/rpc.go index c71dc41..00a26c3 100644 --- a/block/fetcher/rpc.go +++ b/block/fetcher/rpc.go @@ -137,6 +137,8 @@ func (f *RPCFetcher) fetch(ctx context.Context, client *rpc.Client, requestedSlo } if rpcErr.Code == -32004 { + 640 + 641 642 643 644(639) head return nil, false, fmt.Errorf("block not available %d", requestedSlot) } } diff --git a/proto/sf/solana/type/v1/type.proto b/proto/sf/solana/type/v1/type.proto index 0c430b3..b4b7c2e 100644 --- a/proto/sf/solana/type/v1/type.proto +++ b/proto/sf/solana/type/v1/type.proto @@ -1,5 +1,7 @@ syntax = "proto3"; +import "google/protobuf/timestamp.proto"; + option go_package = "github.com/streamingfast/firehose-solana/pb/sf/solana/type/v1;pbsol"; package sf.solana.type.v1; @@ -152,3 +154,20 @@ message UnixTimestamp { message BlockHeight { uint64 block_height = 1; } + +message AccountBlock { + uint64 slot = 1; + string hash = 2; + uint64 parent_slot = 3; + string parent_hash = 4; + google.protobuf.Timestamp timestamp = 6; + repeated Account accounts = 7; +} + +message Account { + bytes address = 1; + bytes owner = 2; + bytes data = 3; + bool deleted = 7; +} + From a28955b6ece248f23e581dfd95c4997eff544c56 Mon Sep 17 00:00:00 2001 From: Charles Billette Date: Mon, 9 Dec 2024 14:04:25 -0500 Subject: [PATCH 7/8] remove junk --- block/fetcher/rpc.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/block/fetcher/rpc.go b/block/fetcher/rpc.go index 00a26c3..c71dc41 100644 --- a/block/fetcher/rpc.go +++ b/block/fetcher/rpc.go @@ -137,8 +137,6 @@ func (f *RPCFetcher) fetch(ctx context.Context, client *rpc.Client, requestedSlo } if rpcErr.Code == -32004 { - 640 - 641 642 643 644(639) head return nil, false, fmt.Errorf("block not available %d", requestedSlot) } } From f9e8183e8f16da1d59ab6f2264dd6f4945290b24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Duchesneau?= Date: Mon, 16 Dec 2024 10:35:10 -0500 Subject: [PATCH 8/8] bump firehose-core to develop --- go.mod | 58 ++++++++++++++------------ go.sum | 128 +++++++++++++++++++++++++++++++-------------------------- 2 files changed, 102 insertions(+), 84 deletions(-) diff --git a/go.mod b/go.mod index 76861f5..3cf5f05 100644 --- a/go.mod +++ b/go.mod @@ -19,28 +19,29 @@ require ( github.com/spf13/pflag v1.0.5 github.com/streamingfast/binary v0.0.0-20240116152459-ebe30de95370 github.com/streamingfast/bstream v0.0.2-0.20241108153156-a5c6bc006f41 - github.com/streamingfast/cli v0.0.4-0.20240412191021-5f81842cb71d + github.com/streamingfast/cli v0.0.4-0.20241119021815-815afa473375 github.com/streamingfast/dstore v0.1.1-0.20241011152904-9acd6205dc14 - github.com/streamingfast/firehose-core v1.6.7-0.20241127141805-5fb676a6b73f + github.com/streamingfast/firehose-core v1.6.8-0.20241211161419-841201cf050e github.com/streamingfast/logging v0.0.0-20230608130331-f22c91403091 github.com/streamingfast/solana-go v0.5.1-0.20230622180848-8faf68a7cb1d github.com/test-go/testify v1.1.4 go.uber.org/zap v1.26.0 golang.org/x/exp v0.0.0-20231006140011-7918f672742d - google.golang.org/protobuf v1.33.0 + google.golang.org/protobuf v1.34.2 ) require ( buf.build/gen/go/bufbuild/reflect/connectrpc/go v1.16.1-20240117202343-bf8f65e8876c.1 // indirect buf.build/gen/go/bufbuild/reflect/protocolbuffers/go v1.33.0-20240117202343-bf8f65e8876c.1 // indirect - cloud.google.com/go v0.112.1 // indirect - cloud.google.com/go/compute v1.25.1 // indirect - cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v1.1.6 // indirect - cloud.google.com/go/longrunning v0.5.5 // indirect - cloud.google.com/go/monitoring v1.18.0 // indirect - cloud.google.com/go/storage v1.38.0 // indirect - cloud.google.com/go/trace v1.10.5 // indirect + cloud.google.com/go v0.115.0 // indirect + cloud.google.com/go/auth v0.6.1 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect + cloud.google.com/go/compute/metadata v0.3.0 // indirect + cloud.google.com/go/iam v1.1.8 // indirect + cloud.google.com/go/longrunning v0.5.7 // indirect + cloud.google.com/go/monitoring v1.19.0 // indirect + cloud.google.com/go/storage v1.42.0 // indirect + cloud.google.com/go/trace v1.10.7 // indirect connectrpc.com/connect v1.16.1 // indirect contrib.go.opencensus.io/exporter/stackdriver v0.13.10 // indirect contrib.go.opencensus.io/exporter/zipkin v0.1.1 // indirect @@ -57,6 +58,7 @@ require ( github.com/alecthomas/participle v0.7.1 // indirect github.com/andres-erbsen/clock v0.0.0-20160526145045-9e14626cd129 // indirect github.com/aws/aws-sdk-go v1.44.325 // indirect + github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bits-and-blooms/bitset v1.12.0 // indirect github.com/blendle/zapdriver v1.3.2-0.20200203083823-9200777f8a3d // indirect @@ -64,6 +66,8 @@ require ( github.com/bufbuild/protocompile v0.4.0 // indirect github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/charmbracelet/lipgloss v1.0.0 // indirect + github.com/charmbracelet/x/ansi v0.4.2 // indirect github.com/chzyer/readline v1.5.0 // indirect github.com/cilium/ebpf v0.4.0 // indirect github.com/cncf/xds/go v0.0.0-20240318125728-8a4994d93e50 // indirect @@ -93,7 +97,7 @@ require ( github.com/google/s2a-go v0.1.7 // 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.3 // indirect + github.com/googleapis/gax-go/v2 v2.12.5 // indirect github.com/gorilla/mux v1.8.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect @@ -106,6 +110,7 @@ require ( github.com/json-iterator/go v1.1.12 // indirect github.com/lithammer/dedent v1.1.0 // indirect github.com/logrusorgru/aurora v2.0.3+incompatible // indirect + github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/manifoldco/promptui v0.9.0 // indirect @@ -120,6 +125,7 @@ require ( github.com/mostynb/go-grpc-compression v1.1.17 // indirect github.com/mostynb/zstdpool-freelist v0.0.0-20201229113212-927304c0c3b1 // indirect github.com/mschoch/smat v0.2.0 // indirect + github.com/muesli/termenv v0.15.3-0.20240618155329-98d742f6907a // indirect github.com/opencontainers/runtime-spec v1.0.2 // indirect github.com/openzipkin/zipkin-go v0.4.2 // indirect github.com/paulbellamy/ratecounter v0.2.0 // indirect @@ -130,6 +136,7 @@ require ( github.com/prometheus/common v0.44.0 // indirect github.com/prometheus/procfs v0.11.0 // indirect github.com/protocolbuffers/protoscope v0.0.0-20221109213918-8e7a6aafa2c9 // indirect + github.com/rivo/uniseg v0.4.7 // indirect github.com/rs/cors v1.10.0 // indirect github.com/schollz/closestmatch v2.1.0+incompatible // indirect github.com/sercand/kuberesolver/v5 v5.1.1 // indirect @@ -153,8 +160,8 @@ require ( github.com/streamingfast/pbgo v0.0.6-0.20240823134334-812f6a16c5cb // indirect github.com/streamingfast/sf-tracing v0.0.0-20240430173521-888827872b90 // indirect github.com/streamingfast/shutter v1.5.0 // indirect - github.com/streamingfast/substreams v1.10.10-0.20241101155333-ea3d19ccd4ea // indirect - github.com/stretchr/testify v1.8.4 // indirect + github.com/streamingfast/substreams v1.11.2-0.20241202193558-30d991758e7c // indirect + github.com/stretchr/testify v1.9.0 // indirect github.com/subosito/gotenv v1.4.2 // indirect github.com/teris-io/shortid v0.0.0-20201117134242-e59966efd125 // indirect github.com/tidwall/gjson v1.18.0 // indirect @@ -170,26 +177,25 @@ require ( go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.23.1 // indirect go.opentelemetry.io/otel/exporters/zipkin v1.23.1 // indirect go.opentelemetry.io/otel/metric v1.24.0 // indirect - go.opentelemetry.io/otel/sdk v1.23.1 // indirect + go.opentelemetry.io/otel/sdk v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect go.uber.org/atomic v1.10.0 // indirect go.uber.org/automaxprocs v1.5.1 // indirect go.uber.org/multierr v1.10.0 // indirect go.uber.org/ratelimit v0.2.0 // indirect - golang.org/x/crypto v0.23.0 // indirect + golang.org/x/crypto v0.24.0 // indirect golang.org/x/mod v0.17.0 // indirect - golang.org/x/net v0.23.0 // indirect - golang.org/x/oauth2 v0.18.0 // indirect + golang.org/x/net v0.26.0 // indirect + golang.org/x/oauth2 v0.21.0 // indirect golang.org/x/sync v0.8.0 // indirect - golang.org/x/sys v0.24.0 // indirect - golang.org/x/term v0.20.0 // indirect - golang.org/x/text v0.16.0 // indirect + golang.org/x/sys v0.25.0 // indirect + golang.org/x/term v0.21.0 // indirect + golang.org/x/text v0.18.0 // indirect golang.org/x/time v0.5.0 // indirect - google.golang.org/api v0.172.0 // indirect - google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect + google.golang.org/api v0.187.0 // indirect + google.golang.org/genproto v0.0.0-20240624140628-dc46fd24d27d // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d // indirect google.golang.org/grpc v1.64.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/go.sum b/go.sum index f2cdc09..833d682 100644 --- a/go.sum +++ b/go.sum @@ -35,8 +35,12 @@ cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Ud cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= -cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= -cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= +cloud.google.com/go v0.115.0 h1:CnFSK6Xo3lDYRoBKEcAtia6VSC837/ZkJuRduSFnr14= +cloud.google.com/go v0.115.0/go.mod h1:8jIM5vVgoAEoiVxQ/O4BFTfHqulPZgs/ufEzMcFMdWU= +cloud.google.com/go/auth v0.6.1 h1:T0Zw1XM5c1GlpN2HYr2s+m3vr1p2wy+8VN+Z1FKxW38= +cloud.google.com/go/auth v0.6.1/go.mod h1:eFHG7zDzbXHKmjJddFG/rBlcGp6t25SwRUiEQSlO4x4= +cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4= +cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= @@ -46,23 +50,21 @@ cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM7 cloud.google.com/go/bigtable v1.13.0 h1:ay8BM3Am2aIH95swAO/hjdE1UwzxVzLxRJ5cEdXN/LY= cloud.google.com/go/bigtable v1.13.0/go.mod h1:26n+Af4kb+O8sUWehsIbsEMLb/X0cK2tVgAasJwSj20= cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= -cloud.google.com/go/compute v1.25.1 h1:ZRpHJedLtTpKgr3RV1Fx23NuaAEN1Zfx9hw1u4aJdjU= -cloud.google.com/go/compute v1.25.1/go.mod h1:oopOIR53ly6viBYxaDhBfJwzUAxf1zE//uf3IB011ls= -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/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= +cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/iam v0.1.1/go.mod h1:CKqrcnI/suGpybEHxZ7BMehL0oA4LpdyJdUlTl9jVMw= -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/logging v1.9.0 h1:iEIOXFO9EmSiTjDmfpbRjOxECO7R8C7b8IXUGOj7xZw= -cloud.google.com/go/logging v1.9.0/go.mod h1:1Io0vnZv4onoUnsVUQY3HZ3Igb1nBchky0A0y7BBBhE= -cloud.google.com/go/longrunning v0.5.5 h1:GOE6pZFdSrTb4KAiKnXsJBtlE6mEyaW44oKyMILWnOg= -cloud.google.com/go/longrunning v0.5.5/go.mod h1:WV2LAxD8/rg5Z1cNW6FJ/ZpX4E4VnDnoTk0yawPBB7s= +cloud.google.com/go/iam v1.1.8 h1:r7umDwhj+BQyz0ScZMp4QrGXjSTI3ZINnpgU2nlB/K0= +cloud.google.com/go/iam v1.1.8/go.mod h1:GvE6lyMmfxXauzNq8NbgJbeVQNspG+tcdL/W8QO1+zE= +cloud.google.com/go/logging v1.10.0 h1:f+ZXMqyrSJ5vZ5pE/zr0xC8y/M9BLNzQeLBwfeZ+wY4= +cloud.google.com/go/logging v1.10.0/go.mod h1:EHOwcxlltJrYGqMGfghSet736KR3hX1MAj614mrMk9I= +cloud.google.com/go/longrunning v0.5.7 h1:WLbHekDbjK1fVFD3ibpFFVoyizlLRl73I7YKuAKilhU= +cloud.google.com/go/longrunning v0.5.7/go.mod h1:8GClkudohy1Fxm3owmBGid8W0pSgodEMwEAztp38Xng= cloud.google.com/go/monitoring v1.1.0/go.mod h1:L81pzz7HKn14QCMaCs6NTQkdBnE87TElyanS95vIcl4= -cloud.google.com/go/monitoring v1.18.0 h1:NfkDLQDG2UR3WYZVQE8kwSbUIEyIqJUPl+aOQdFH1T4= -cloud.google.com/go/monitoring v1.18.0/go.mod h1:c92vVBCeq/OB4Ioyo+NbN2U7tlg5ZH41PZcdvfc+Lcg= +cloud.google.com/go/monitoring v1.19.0 h1:NCXf8hfQi+Kmr56QJezXRZ6GPb80ZI7El1XztyUuLQI= +cloud.google.com/go/monitoring v1.19.0/go.mod h1:25IeMR5cQ5BoZ8j1eogHE5VPJLlReQ7zFp5OiLgiGZw= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -73,11 +75,11 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -cloud.google.com/go/storage v1.38.0 h1:Az68ZRGlnNTpIBbLjSMIV2BDcwwXYlRlQzis0llkpJg= -cloud.google.com/go/storage v1.38.0/go.mod h1:tlUADB0mAb9BgYls9lq+8MGkfzOXuLrnHXlpHmvFJoY= +cloud.google.com/go/storage v1.42.0 h1:4QtGpplCVt1wz6g5o1ifXd656P5z+yNgzdw1tVfp0cU= +cloud.google.com/go/storage v1.42.0/go.mod h1:HjMXRFq65pGKFn6hxj6x3HCyR41uSB72Z0SO/Vn6JFQ= cloud.google.com/go/trace v1.0.0/go.mod h1:4iErSByzxkyHWzzlAj63/Gmjz0NH1ASqhJguHpGcr6A= -cloud.google.com/go/trace v1.10.5 h1:0pr4lIKJ5XZFYD9GtxXEWr0KkVeigc3wlGpZco0X1oA= -cloud.google.com/go/trace v1.10.5/go.mod h1:9hjCV1nGBCtXbAE4YK7OqJ8pmPYSxPA0I67JwRd5s3M= +cloud.google.com/go/trace v1.10.7 h1:gK8z2BIJQ3KIYGddw9RJLne5Fx0FEXkrEQzPaeEYVvk= +cloud.google.com/go/trace v1.10.7/go.mod h1:qk3eiKmZX0ar2dzIJN/3QhY2PIFh1eqcIdaN5uEjQPM= connectrpc.com/connect v1.16.1 h1:rOdrK/RTI/7TVnn3JsVxt3n028MlTRwmK5Q4heSpjis= connectrpc.com/connect v1.16.1/go.mod h1:XpZAduBQUySsb4/KO5JffORVkDI4B6/EYPi7N8xpNZw= contrib.go.opencensus.io/exporter/stackdriver v0.12.6/go.mod h1:8x999/OcIPy5ivx/wDiV7Gx4D+VUPODf0mWRGRc5kSk= @@ -148,6 +150,8 @@ github.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpi github.com/aws/aws-sdk-go v1.37.0/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go v1.44.325 h1:jF/L99fJSq/BfiLmUOflO/aM+LwcqBm0Fe/qTK5xxuI= github.com/aws/aws-sdk-go v1.44.325/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= +github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= 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= @@ -173,6 +177,10 @@ github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghf github.com/cespare/xxhash/v2 v2.1.1/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/charmbracelet/lipgloss v1.0.0 h1:O7VkGDvqEdGi93X+DeqsQ7PKHDgtQfF8j8/O2qFMQNg= +github.com/charmbracelet/lipgloss v1.0.0/go.mod h1:U5fy9Z+C38obMs+T+tJqst9VGzlOYGj4ri9reL3qUlo= +github.com/charmbracelet/x/ansi v0.4.2 h1:0JM6Aj/g/KC154/gOP4vfxun0ff6itogDYk41kof+qk= +github.com/charmbracelet/x/ansi v0.4.2/go.mod h1:dk73KoMTT5AX5BsX0KrqhsTqAnhZZoCBjs7dGWp4Ktw= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/logex v1.2.0 h1:+eqR0HfOetur4tgnC8ftU5imRnhi4te+BadWS95c5AM= github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY= @@ -351,8 +359,8 @@ github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXi github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= -github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc= +github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -382,8 +390,8 @@ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA= -github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= +github.com/googleapis/gax-go/v2 v2.12.5 h1:8gw9KZK8TiVKB6q3zHY3SBzLnrGp6HQjyfYBYGmXdxA= +github.com/googleapis/gax-go/v2 v2.12.5/go.mod h1:BUDKcWo+RaKq5SC9vVYL0wLADa3VcfswbOMMRmB9H3E= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gordonklaus/ineffassign v0.0.0-20180909121442-1003c8bd00dc/go.mod h1:cuNKsD1zp2v6XfE/orVX2QE1LC+i254ceGcVeDT3pTU= @@ -480,6 +488,8 @@ github.com/lithammer/dedent v1.1.0 h1:VNzHMVCBNG1j0fh3OrsFRkVUwStdDArbgBWoPAffkt github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8= github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= +github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= +github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= @@ -508,8 +518,8 @@ github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Ky github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= 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-sqlite3 v1.14.12 h1:TJ1bhYJPV44phC+IMu1u2K/i5RriLTPe+yc68XDJ1Z0= -github.com/mattn/go-sqlite3 v1.14.12/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/mattn/go-sqlite3 v1.14.17 h1:mCRHCLDUBXgpKAqIKsaAaAsrAlbkeomtRFKXh2L6YIM= +github.com/mattn/go-sqlite3 v1.14.17/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= 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= @@ -541,6 +551,8 @@ github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/mschoch/smat v0.2.0 h1:8imxQsjDm8yFEAVBe7azKmKSgzSkZXDuKkSq9374khM= github.com/mschoch/smat v0.2.0/go.mod h1:kc9mz7DoBKqDyiRL7VZN8KvXQMWeTaVnttLRXOlotKw= +github.com/muesli/termenv v0.15.3-0.20240618155329-98d742f6907a h1:2MaM6YC3mGu54x+RKAA6JiFFHlHDY1UbkxqppT7wYOg= +github.com/muesli/termenv v0.15.3-0.20240618155329-98d742f6907a/go.mod h1:hxSnBBYLK21Vtq/PHd0S2FYCxBXzBua8ov5s1RobyRQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/near/borsh-go v0.3.1-0.20210831082424-4377deff6791/go.mod h1:NeMochZp7jN/pYFuxLkrZtmLqbADmnp/y1+/dL+AsyQ= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= @@ -599,6 +611,8 @@ github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40T github.com/protocolbuffers/protoscope v0.0.0-20221109213918-8e7a6aafa2c9 h1:arwj11zP0yJIxIRiDn22E0H8PxfF7TsTrc2wIPFIsf4= github.com/protocolbuffers/protoscope v0.0.0-20221109213918-8e7a6aafa2c9/go.mod h1:SKZx6stCn03JN3BOWTwvVIO2ajMkb/zQdTceXYhKw/4= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= +github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= 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.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= @@ -651,8 +665,8 @@ github.com/streamingfast/binary v0.0.0-20240116152459-ebe30de95370 h1:/7j4mKpSJg github.com/streamingfast/binary v0.0.0-20240116152459-ebe30de95370/go.mod h1:LEQhe6qUvAQSYBJu7MZvDU1kx4JrZzxru3Ga1rRCCuo= github.com/streamingfast/bstream v0.0.2-0.20241108153156-a5c6bc006f41 h1:Y9bB+Wsd5q6DZsLnOMdsgN/BjonRXrbPeQjqDLihFoM= github.com/streamingfast/bstream v0.0.2-0.20241108153156-a5c6bc006f41/go.mod h1:n5wy+Vmwp4xbjXO7B81MAkAgjnf1vJ/lI2y6hWWyFbg= -github.com/streamingfast/cli v0.0.4-0.20240412191021-5f81842cb71d h1:9tsEt2tLCp94CW6MyJZY+Rw6+t0WH2kioBR6ucO6P/E= -github.com/streamingfast/cli v0.0.4-0.20240412191021-5f81842cb71d/go.mod h1:og+6lDBPLZ24lbF/YISmVsSduZUZwXSmJGD3pZ/sW2Y= +github.com/streamingfast/cli v0.0.4-0.20241119021815-815afa473375 h1:nwuFSEJtQfqTuN62WvysfAtDT4qqwQ6ghFX0i2VY1fY= +github.com/streamingfast/cli v0.0.4-0.20241119021815-815afa473375/go.mod h1:qOksW3DPhHVYBo8dcYxS7K3Q09wlcOChSdopeOjLWng= github.com/streamingfast/dauth v0.0.0-20240222213226-519afc16cf84 h1:yCvuNcwQ21J4Ua6YrAmHDBx3bjK04y+ssEYBe65BXRU= github.com/streamingfast/dauth v0.0.0-20240222213226-519afc16cf84/go.mod h1:cwfI5vaMd+CiwZIL0H0JdP5UDWCZOVFz/ex3L0+o/j4= github.com/streamingfast/dbin v0.9.1-0.20231117225723-59790c798e2c h1:6WjE2yInE+5jnI7cmCcxOiGZiEs2FQm9Zsg2a9Ivp0Q= @@ -671,8 +685,8 @@ github.com/streamingfast/dstore v0.1.1-0.20241011152904-9acd6205dc14 h1:/2HxIOzA github.com/streamingfast/dstore v0.1.1-0.20241011152904-9acd6205dc14/go.mod h1:kNzxgv2MzYFn2T4kelBVpGp/yP/1njtr3+csWuqxK3w= github.com/streamingfast/dtracing v0.0.0-20220305214756-b5c0e8699839 h1:K6mJPvh1jAL+/gBS7Bh9jyzWaTib6N47m06gZOTUPwQ= github.com/streamingfast/dtracing v0.0.0-20220305214756-b5c0e8699839/go.mod h1:huOJyjMYS6K8upTuxDxaNd+emD65RrXoVBvh8f1/7Ns= -github.com/streamingfast/firehose-core v1.6.7-0.20241127141805-5fb676a6b73f h1:c+3mP1wJyop7nlfbb5M8Ioh/g67Nx/zuPcO0yZ2DbUs= -github.com/streamingfast/firehose-core v1.6.7-0.20241127141805-5fb676a6b73f/go.mod h1:IqqgMJIi9RIaaxfY7o+vXEioLU0Iu5sQ1LNF7ygCOv8= +github.com/streamingfast/firehose-core v1.6.8-0.20241211161419-841201cf050e h1:KhBBWSbsHP+pgIoUZcE0UQJe7L5hw3DDfQTp3iHLRiU= +github.com/streamingfast/firehose-core v1.6.8-0.20241211161419-841201cf050e/go.mod h1:mT4PYf9GusqSwSPKe1dc94Ij8pgJCJvcvT9fsm0nHqw= github.com/streamingfast/gagliardetto-solana-go v0.0.0-20240115191424-05c37cd0760d h1:Db3yKJeN5DWPz8pesR9tuFXdbs0MnpRLmov+ttsHoTU= github.com/streamingfast/gagliardetto-solana-go v0.0.0-20240115191424-05c37cd0760d/go.mod h1:i+7aAyNDTHG0jK8GZIBSI4OVvDqkt2Qx+LklYclRNG8= github.com/streamingfast/jsonpb v0.0.0-20210811021341-3670f0aa02d0 h1:g8eEYbFSykyzIyuxNMmHEUGGUvJE0ivmqZagLDK42gw= @@ -695,8 +709,8 @@ github.com/streamingfast/shutter v1.5.0 h1:NpzDYzj0HVpSiDJVO/FFSL6QIK/YKOxY0gJAt github.com/streamingfast/shutter v1.5.0/go.mod h1:B/T6efqdeMGbGwjzPS1ToXzYZI4kDzI5/u4I+7qbjY8= github.com/streamingfast/solana-go v0.5.1-0.20230622180848-8faf68a7cb1d h1:6wV8O4hUxYZ6IiJ/odsDBzeU8y/zAWMttUm0reG+r3Y= github.com/streamingfast/solana-go v0.5.1-0.20230622180848-8faf68a7cb1d/go.mod h1:9NfZWSK0zqA+M1YU2pTI8sr1BfijCpqBFceLQARQiNw= -github.com/streamingfast/substreams v1.10.10-0.20241101155333-ea3d19ccd4ea h1:bj71y2WVLpL6TCSOPO2YcRzYbL2Li0rO/qY4QBS6onA= -github.com/streamingfast/substreams v1.10.10-0.20241101155333-ea3d19ccd4ea/go.mod h1:AQCTVQAf8sBP8r5hcel1tOZ8FthEPdxnjaBLlJ8Fmy4= +github.com/streamingfast/substreams v1.11.2-0.20241202193558-30d991758e7c h1:nMc8fGRXc97t4vBsNMCDGQrG1o9nc5Yf+LO+Dc4orcA= +github.com/streamingfast/substreams v1.11.2-0.20241202193558-30d991758e7c/go.mod h1:6qjmyNq0INxC/3EXF4M2QEf1Su7X8Lq2FCKfGIFXupU= 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= @@ -710,8 +724,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 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/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.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= @@ -779,8 +793,8 @@ go.opentelemetry.io/otel/exporters/zipkin v1.23.1 h1:goka4KdsPPpHHQnzp1/XE1wVpk2 go.opentelemetry.io/otel/exporters/zipkin v1.23.1/go.mod h1:KXTI1fJdTqRrQlIYgdmF4MnyAbHFWg1z320eOpL53qA= go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= -go.opentelemetry.io/otel/sdk v1.23.1 h1:O7JmZw0h76if63LQdsBMKQDWNb5oEcOThG9IrxscV+E= -go.opentelemetry.io/otel/sdk v1.23.1/go.mod h1:LzdEVR5am1uKOOwfBWFef2DCi1nu3SA8XQxx2IerWFk= +go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= +go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= @@ -825,8 +839,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y 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.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= -golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= 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= @@ -915,8 +929,8 @@ golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= -golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= 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= @@ -934,8 +948,8 @@ golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ 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.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= -golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= +golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= +golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= 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= @@ -1028,14 +1042,14 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 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.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= -golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.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-20201210144234-2321bbc49cbf/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.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= -golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= 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= @@ -1045,10 +1059,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.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= 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= @@ -1160,8 +1173,8 @@ google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3h google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= google.golang.org/api v0.64.0/go.mod h1:931CdxA8Rm4t6zqTFGSsgwbAEZ2+GMYurbndwSimebM= google.golang.org/api v0.65.0/go.mod h1:ArYhxgGadlWmqO1IqVujw6Cs8IdD33bTmzKo2Sh+cbg= -google.golang.org/api v0.172.0 h1:/1OcMZGPmW1rX2LCu2CmGUD1KXK1+pfzxotxyRUCCdk= -google.golang.org/api v0.172.0/go.mod h1:+fJZq6QXWfa9pXhnIzsjx4yI22d4aI9ZpLb58gvXjis= +google.golang.org/api v0.187.0 h1:Mxs7VATVC2v7CY+7Xwm4ndkX71hpElcvx0D1Ji/p1eo= +google.golang.org/api v0.187.0/go.mod h1:KIHlTc4x7N7gKKuVsdmfBXN13yEEWXWFURWY6SBp2gk= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1170,8 +1183,6 @@ google.golang.org/appengine v1.6.2/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= -google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -1242,12 +1253,12 @@ google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ6 google.golang.org/genproto v0.0.0-20211223182754-3ac035c7e7cb/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220111164026-67b88f271998/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -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-20240318140521-94a12d6c2237 h1:RFiFrvy37/mpSpdySBDrUdipW/dHwsRwh3J3+A9VgT4= -google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto v0.0.0-20240624140628-dc46fd24d27d h1:PksQg4dV6Sem3/HkBX+Ltq8T0ke0PKIRBNBatoDTVls= +google.golang.org/genproto v0.0.0-20240624140628-dc46fd24d27d/go.mod h1:s7iA721uChleev562UJO2OYB0PPT9CMFjV+Ce7VJH5M= +google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 h1:MuYw1wJzT+ZkybKfaOXKp5hJiZDn2iHaXRw0mRYdHSc= +google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4/go.mod h1:px9SlOOZBg1wM1zdnr8jEL4CNGUBZ+ZKYtNPApNQc4c= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d h1:k3zyW3BYYR30e8v3x0bTDdE9vpYFjZHK+HcyqkrppWk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= 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.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -1294,8 +1305,9 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= 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=