diff --git a/FUNDING.json b/FUNDING.json deleted file mode 100644 index c6cbfb1..0000000 --- a/FUNDING.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "drips": { - "filecoin": { - "ownedBy": "0xFb90943018928cBF18e6355629A250928Ca6Be02" - } - } -} diff --git a/cmd/hermes/cmd_eth.go b/cmd/hermes/cmd_eth.go index 4f84329..31b308d 100644 --- a/cmd/hermes/cmd_eth.go +++ b/cmd/hermes/cmd_eth.go @@ -1,6 +1,7 @@ package main import ( + "context" "encoding/hex" "encoding/json" "fmt" @@ -423,18 +424,56 @@ func cmdEthAction(c *cli.Context) error { genesisRoot := config.Genesis.GenesisValidatorRoot genesisTime := config.Genesis.GenesisTime - // compute fork version and fork digest - currentSlot := slots.Since(genesisTime) - currentEpoch := slots.ToEpoch(currentSlot) + // For devnets, we need to query Prysm for the actual fork version + // instead of calculating it from the config + var currentForkVersion [4]byte + var forkDigest [4]byte + + if ethConfig.Chain == params.DevnetName { + // Create a temporary Prysm client to query the fork version + tempPryClient, err := eth.NewPrysmClientWithTLS(ethConfig.PrysmHost, ethConfig.PrysmPortHTTP, ethConfig.PrysmPortGRPC, ethConfig.PrysmUseTLS, ethConfig.DialTimeout, config.Genesis) + if err != nil { + return fmt.Errorf("create temporary prysm client: %w", err) + } + + ctx, cancel := context.WithTimeout(c.Context, 10*time.Second) + defer cancel() + + nodeFork, err := tempPryClient.GetFork(ctx) + if err != nil { + return fmt.Errorf("get fork from prysm: %w", err) + } + + copy(currentForkVersion[:], nodeFork.CurrentVersion) + + forkDigest, err = signing.ComputeForkDigest(currentForkVersion[:], genesisRoot) + if err != nil { + return fmt.Errorf("create fork digest: %w", err) + } + + slog.Info("Using fork version from Prysm for devnet", + "fork_version", hex.EncodeToString(currentForkVersion[:]), + "fork_digest", hex.EncodeToString(forkDigest[:])) + } else { + // For known networks, calculate from config + currentSlot := slots.Since(genesisTime) + currentEpoch := slots.ToEpoch(currentSlot) - currentForkVersion, err := eth.GetCurrentForkVersion(currentEpoch, config.Beacon) - if err != nil { - return fmt.Errorf("compute fork version for epoch %d: %w", currentEpoch, err) - } + var err error + currentForkVersion, err = eth.GetCurrentForkVersion(currentEpoch, config.Beacon) + if err != nil { + return fmt.Errorf("compute fork version for epoch %d: %w", currentEpoch, err) + } - forkDigest, err := signing.ComputeForkDigest(currentForkVersion[:], genesisRoot) - if err != nil { - return fmt.Errorf("create fork digest (%s, %x): %w", genesisTime, genesisRoot, err) + slog.Debug("Computing fork digest", + "current_epoch", currentEpoch, + "fork_version", hex.EncodeToString(currentForkVersion[:]), + "genesis_root", hex.EncodeToString(genesisRoot)) + + forkDigest, err = signing.ComputeForkDigest(currentForkVersion[:], genesisRoot) + if err != nil { + return fmt.Errorf("create fork digest (%s, %x): %w", genesisTime, genesisRoot, err) + } } // Overriding configuration so that functions like ComputForkDigest take the diff --git a/eth/node_config.go b/eth/node_config.go index 06c9040..ded1722 100644 --- a/eth/node_config.go +++ b/eth/node_config.go @@ -440,6 +440,7 @@ func desiredPubSubBaseTopics() []string { p2p.GossipSyncCommitteeMessage, p2p.GossipBlsToExecutionChangeMessage, p2p.GossipBlobSidecarMessage, + p2p.GossipDataColumnSidecarMessage, } } @@ -475,6 +476,9 @@ func topicFormatFromBase(topicBase string) (string, error) { case p2p.GossipBlobSidecarMessage: return p2p.BlobSubnetTopicFormat, nil + case p2p.GossipDataColumnSidecarMessage: + return p2p.DataColumnSubnetTopicFormat, nil + default: return "", fmt.Errorf("unrecognized gossip topic base: %s", topicBase) } diff --git a/eth/prysm.go b/eth/prysm.go index 82c50c5..9239460 100644 --- a/eth/prysm.go +++ b/eth/prysm.go @@ -8,6 +8,7 @@ import ( "errors" "fmt" "io" + "log/slog" "net/http" "net/url" "strconv" @@ -297,6 +298,22 @@ func (p *PrysmClient) ChainHead(ctx context.Context) (chainHead *eth.ChainHead, return p.beaconClient.GetChainHead(ctx, &emptypb.Empty{}) //lint:ignore SA1019 I don't see an alternative } +func (p *PrysmClient) GetFork(ctx context.Context) (fork *eth.Fork, err error) { + ctx, span := p.tracer.Start(ctx, "prysm_client.get_fork") + defer func() { + if err != nil { + span.SetStatus(codes.Error, err.Error()) + span.RecordError(err) + } + span.End() + }() + + ctx, cancel := context.WithTimeout(ctx, p.timeout) + defer cancel() + + return p.beaconApiClient.GetFork(ctx, apiCli.StateOrBlockId("head")) +} + func (p *PrysmClient) Identity(ctx context.Context) (addrInfo *peer.AddrInfo, err error) { ctx, span := p.tracer.Start(ctx, "prysm_client.identity") defer func() { @@ -383,6 +400,13 @@ func (p *PrysmClient) isOnNetwork(ctx context.Context, hermesForkDigest [4]byte) if forkDigest == hermesForkDigest { return true, nil } + + // Log the mismatch for debugging + slog.Debug("Fork digest mismatch", + "hermes_fork_digest", hex.EncodeToString(hermesForkDigest[:]), + "prysm_fork_digest", hex.EncodeToString(forkDigest[:]), + "prysm_fork_version", hex.EncodeToString(nodeFork.CurrentVersion)) + return false, nil } diff --git a/eth/pubsub.go b/eth/pubsub.go index 9d4d648..753ed6e 100644 --- a/eth/pubsub.go +++ b/eth/pubsub.go @@ -2,6 +2,7 @@ package eth import ( "context" + "encoding/hex" "fmt" "log/slog" "strings" @@ -117,12 +118,17 @@ func (p *PubSub) Serve(ctx context.Context) error { func (p *PubSub) mapPubSubTopicWithHandlers(topic string) host.TopicHandler { switch { - case strings.Contains(topic, p2p.GossipBlockMessage): - return p.handleBeaconBlock - case strings.Contains(topic, p2p.GossipAggregateAndProofMessage): - return p.handleAggregateAndProof + // Ensure hotter topics are at the top of the switch statement. case strings.Contains(topic, p2p.GossipAttestationMessage): return p.handleAttestation + case strings.Contains(topic, p2p.GossipDataColumnSidecarMessage): + return p.handleBeaconDataColumnSidecar + case strings.Contains(topic, p2p.GossipAggregateAndProofMessage): + return p.handleAggregateAndProof + case strings.Contains(topic, p2p.GossipBlockMessage): + return p.handleBeaconBlock + case strings.Contains(topic, p2p.GossipBlobSidecarMessage): + return p.handleBlobSidecar case strings.Contains(topic, p2p.GossipExitMessage): return p.handleExitMessage case strings.Contains(topic, p2p.GossipAttesterSlashingMessage): @@ -135,8 +141,6 @@ func (p *PubSub) mapPubSubTopicWithHandlers(topic string) host.TopicHandler { return p.handleSyncCommitteeMessage case strings.Contains(topic, p2p.GossipBlsToExecutionChangeMessage): return p.handleBlsToExecutionChangeMessage - case strings.Contains(topic, p2p.GossipBlobSidecarMessage): - return p.handleBlobSidecar default: return p.host.TracedTopicHandler(host.NoopHandler) } @@ -156,9 +160,41 @@ func (n *Node) FilterIncomingSubscriptions(id peer.ID, subs []*pubsubpb.RPC_SubO if len(subs) > n.cfg.PubSubSubscriptionRequestLimit { return nil, pubsub.ErrTooManySubscriptions } + return pubsub.FilterSubscriptions(subs, n.CanSubscribe), nil } +func (p *PubSub) handleBeaconDataColumnSidecar(ctx context.Context, msg *pubsub.Message) error { + now := time.Now() + + sidecar := ðtypes.DataColumnSidecar{} + if err := p.cfg.Encoder.DecodeGossip(msg.Data, sidecar); err != nil { + return fmt.Errorf("error decoding electra data column sidecar gossip message: %w", err) + } + + evt := &host.TraceEvent{ + Type: "HANDLE_MESSAGE", + PeerID: p.host.ID(), + Timestamp: now, + Payload: map[string]any{ + "PeerID": msg.ReceivedFrom.String(), + "MsgID": hex.EncodeToString([]byte(msg.ID)), + "MsgSize": len(msg.Data), + "Topic": msg.GetTopic(), + "Seq": msg.GetSeqno(), + "Sidecar": sidecar, + "Timestamp": now, + }, + } + + if err := p.cfg.DataStream.PutRecord(ctx, evt); err != nil { + slog.Warn("failed putting topic handler event", tele.LogAttrError(err)) + } + + return nil + +} + func (p *PubSub) handleBeaconBlock(ctx context.Context, msg *pubsub.Message) error { var ( err error diff --git a/eth/topic_score_params.go b/eth/topic_score_params.go index 658d305..4e3eace 100644 --- a/eth/topic_score_params.go +++ b/eth/topic_score_params.go @@ -25,6 +25,8 @@ const ( proposerSlashingWeight = 0.05 voluntaryExitWeight = 0.05 blsToExecutionChangeWeight = 0.05 + attestationWeight = 0.05 + dataColumnSidecarWeight = 0.05 // mesh-related params maxInMeshScore = 10 @@ -43,10 +45,13 @@ func topicToScoreParamsMapper(topic string, activeValidators uint64) *pubsub.Top case strings.Contains(topic, p2p.GossipBlockMessage): return defaultBlockTopicParams() + case strings.Contains(topic, p2p.GossipAttestationMessage): + return defaultAttestationTopicParams() + case strings.Contains(topic, p2p.GossipAggregateAndProofMessage): return defaultAggregateTopicParams(activeValidators) - case strings.Contains(topic, p2p.GossipAttestationMessage): + case strings.Contains(topic, p2p.GossipAggregateAndProofMessage): return defaultAggregateSubnetTopicParams(activeValidators) case strings.Contains(topic, p2p.GossipExitMessage): @@ -70,6 +75,9 @@ func topicToScoreParamsMapper(topic string, activeValidators uint64) *pubsub.Top case strings.Contains(topic, p2p.GossipBlobSidecarMessage): return defaultBlockTopicParams() + case strings.Contains(topic, p2p.GossipDataColumnSidecarMessage): + return defaultDataColumnSidecarTopicParams() + default: slog.Warn("unrecognized gossip-topic to apply peerscores", slog.Attr{Key: "topic", Value: slog.StringValue(topic)}) // return empty parameters @@ -188,7 +196,7 @@ func defaultAggregateSubnetTopicParams(activeValidators uint64) *pubsub.TopicSco return nil } // Determine the amount of validators expected in a subnet in a single slot. - numPerSlot := time.Duration(subnetWeight / uint64(globalBeaconConfig.SlotsPerEpoch)) + numPerSlot := subnetWeight / uint64(globalBeaconConfig.SlotsPerEpoch) if numPerSlot == 0 { slog.Warn("numPerSlot is 0, skipping initializing topic scoring") return nil @@ -388,6 +396,50 @@ func defaultBlsToExecutionChangeTopicParams() *pubsub.TopicScoreParams { } } +func defaultAttestationTopicParams() *pubsub.TopicScoreParams { + return &pubsub.TopicScoreParams{ + TopicWeight: attestationWeight, + TimeInMeshWeight: maxInMeshScore / inMeshCap(), + TimeInMeshQuantum: inMeshTime(), + TimeInMeshCap: inMeshCap(), + FirstMessageDeliveriesWeight: 2, + FirstMessageDeliveriesDecay: scoreDecay(oneHundredEpochs), + FirstMessageDeliveriesCap: 5, + MeshMessageDeliveriesWeight: 0, + MeshMessageDeliveriesDecay: 0, + MeshMessageDeliveriesCap: 0, + MeshMessageDeliveriesThreshold: 0, + MeshMessageDeliveriesWindow: 0, + MeshMessageDeliveriesActivation: 0, + MeshFailurePenaltyWeight: 0, + MeshFailurePenaltyDecay: 0, + InvalidMessageDeliveriesWeight: -2000, + InvalidMessageDeliveriesDecay: scoreDecay(invalidDecayPeriod), + } +} + +func defaultDataColumnSidecarTopicParams() *pubsub.TopicScoreParams { + return &pubsub.TopicScoreParams{ + TopicWeight: dataColumnSidecarWeight, + TimeInMeshWeight: maxInMeshScore / inMeshCap(), + TimeInMeshQuantum: inMeshTime(), + TimeInMeshCap: inMeshCap(), + FirstMessageDeliveriesWeight: 2, + FirstMessageDeliveriesDecay: scoreDecay(oneHundredEpochs), + FirstMessageDeliveriesCap: 5, + MeshMessageDeliveriesWeight: 0, + MeshMessageDeliveriesDecay: 0, + MeshMessageDeliveriesCap: 0, + MeshMessageDeliveriesThreshold: 0, + MeshMessageDeliveriesWindow: 0, + MeshMessageDeliveriesActivation: 0, + MeshFailurePenaltyWeight: 0, + MeshFailurePenaltyDecay: 0, + InvalidMessageDeliveriesWeight: -2000, + InvalidMessageDeliveriesDecay: scoreDecay(invalidDecayPeriod), + } +} + // utility functions func oneSlotDuration() time.Duration { diff --git a/funding.json b/funding.json deleted file mode 100644 index 5d0fede..0000000 --- a/funding.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "opRetro": { - "projectId": "0x7504e494cb8d227193182e083128912173c14eaeecec9b90fa453de28377b269" - } -} diff --git a/go.mod b/go.mod index 1beab8a..5941251 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.24.0 toolchain go1.24.2 require ( - github.com/OffchainLabs/prysm/v6 v6.0.1 + github.com/OffchainLabs/prysm/v6 v6.0.4 github.com/aws/aws-sdk-go-v2 v1.32.7 github.com/aws/aws-sdk-go-v2/config v1.28.7 github.com/aws/aws-sdk-go-v2/credentials v1.17.48 @@ -30,16 +30,16 @@ require ( github.com/stretchr/testify v1.10.0 github.com/thejerf/suture/v4 v4.0.6 github.com/urfave/cli/v2 v2.27.5 - go.opentelemetry.io/otel v1.34.0 + go.opentelemetry.io/otel v1.35.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.33.0 go.opentelemetry.io/otel/exporters/prometheus v0.55.0 - go.opentelemetry.io/otel/metric v1.34.0 + go.opentelemetry.io/otel/metric v1.35.0 go.opentelemetry.io/otel/sdk v1.34.0 - go.opentelemetry.io/otel/sdk/metric v1.33.0 - go.opentelemetry.io/otel/trace v1.34.0 + go.opentelemetry.io/otel/sdk/metric v1.34.0 + go.opentelemetry.io/otel/trace v1.35.0 golang.org/x/time v0.9.0 - google.golang.org/grpc v1.69.4 - google.golang.org/protobuf v1.36.3 + google.golang.org/grpc v1.71.0 + google.golang.org/protobuf v1.36.5 gopkg.in/yaml.v3 v3.0.1 ) @@ -78,7 +78,7 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect github.com/deckarep/golang-set/v2 v2.7.0 // indirect - github.com/dgraph-io/ristretto v0.2.0 // indirect + github.com/dgraph-io/ristretto/v2 v2.2.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/elastic/gosigar v0.14.3 // indirect @@ -100,7 +100,7 @@ require ( github.com/golang-jwt/jwt/v4 v4.5.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.5-0.20231225225746-43d5d4cd4e0e // indirect - github.com/google/go-cmp v0.6.0 // indirect + github.com/google/go-cmp v0.7.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/gopacket v1.1.19 // indirect github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect diff --git a/go.sum b/go.sum index 4bd8f11..df6794b 100644 --- a/go.sum +++ b/go.sum @@ -15,8 +15,8 @@ github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwS github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -github.com/OffchainLabs/prysm/v6 v6.0.1 h1:NwFsJTyPVQqhmEz4//GqAs+M6AjcWYqH9x+HvDGxgwk= -github.com/OffchainLabs/prysm/v6 v6.0.1/go.mod h1:7QuGy5ol0x0hx1Qmz0XcXJ3CnjWWKHpMiz++bUR0IIg= +github.com/OffchainLabs/prysm/v6 v6.0.4 h1:aqWCb2U3LfeahzjORvxXYsL1ebKWT1AUu3Ya3y7LApE= +github.com/OffchainLabs/prysm/v6 v6.0.4/go.mod h1:lMkHT3gWiCOqo4rbuhLTU4FoQ/THni9v6z4w9P6FRyU= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= @@ -168,11 +168,11 @@ github.com/deepmap/oapi-codegen v1.8.2 h1:SegyeYGcdi0jLLrpbCMoJxnUUn8GBXHsvr4rbz github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw= github.com/dennis-tra/go-kinesis v0.0.0-20240326083914-7acf5f8dc24e h1:y6QyYh8YZyRQDdfnQqUgC5tRBmEwUFAjavnybKboCm4= github.com/dennis-tra/go-kinesis v0.0.0-20240326083914-7acf5f8dc24e/go.mod h1:5Hm3EOeNP1/lYm9qcFwWgYgjixQilwcZA+hZ05bUz54= -github.com/dgraph-io/ristretto v0.2.0 h1:XAfl+7cmoUDWW/2Lx8TGZQjjxIQ2Ley9DSf52dru4WE= -github.com/dgraph-io/ristretto v0.2.0/go.mod h1:8uBHCU/PBV4Ag0CJrP47b9Ofby5dqWNh4FicAdoqFNU= +github.com/dgraph-io/ristretto/v2 v2.2.0 h1:bkY3XzJcXoMuELV8F+vS8kzNgicwQFAaGINAEJdWGOM= +github.com/dgraph-io/ristretto/v2 v2.2.0/go.mod h1:RZrm63UmcBAaYWC1DotLYBmTvgkrs0+XhBd7Npn7/zI= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= -github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-farm v0.0.0-20240924180020-3414d57e47da h1:aIftn67I1fkbMa512G+w+Pxci9hJPB8oMnkcP3iZF38= +github.com/dgryski/go-farm v0.0.0-20240924180020-3414d57e47da/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= @@ -298,8 +298,8 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -875,8 +875,8 @@ go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJyS go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 h1:CV7UdSGJt/Ao6Gp4CXckLxVRRsRgDHoI8XjbL3PDl8s= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0/go.mod h1:FRmFuRJfag1IZ2dPkHnEoSFVgTVPUd2qf5Vi69hLb8I= -go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= -go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= +go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= +go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 h1:OeNbIYk/2C15ckl7glBlOBp5+WlYsOElzTNmiPW/x60= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0/go.mod h1:7Bept48yIeqxP2OZ9/AqIpYS94h2or0aB4FypJTc8ZM= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.33.0 h1:5pojmb1U1AogINhN3SurB+zm/nIcusopeBNp42f45QM= @@ -885,14 +885,14 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.34.0 h1:BEj3S go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.34.0/go.mod h1:9cKLGBDzI/F3NoHLQGm4ZrYdIHsvGt6ej6hUowxY0J4= go.opentelemetry.io/otel/exporters/prometheus v0.55.0 h1:sSPw658Lk2NWAv74lkD3B/RSDb+xRFx46GjkrL3VUZo= go.opentelemetry.io/otel/exporters/prometheus v0.55.0/go.mod h1:nC00vyCmQixoeaxF6KNyP42II/RHa9UdruK02qBmHvI= -go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= -go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= +go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= -go.opentelemetry.io/otel/sdk/metric v1.33.0 h1:Gs5VK9/WUJhNXZgn8MR6ITatvAmKeIuCtNbsP3JkNqU= -go.opentelemetry.io/otel/sdk/metric v1.33.0/go.mod h1:dL5ykHZmm1B1nVRk9dDjChwDmt81MjVp3gLkQRwKf/Q= -go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= -go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= +go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= +go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -1149,16 +1149,16 @@ google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.69.4 h1:MF5TftSMkd8GLw/m0KM6V8CMOCY6NZ1NQDPGFgbTt4A= -google.golang.org/grpc v1.69.4/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4= +google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= +google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.36.3 h1:82DV7MYdb8anAVi3qge1wSnMDrnKK7ebr+I0hHRN1BU= -google.golang.org/protobuf v1.36.3/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= +google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= 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=