Skip to content

Commit

Permalink
Merge pull request #2007 from iotaledger/fix/submit-block-errors
Browse files Browse the repository at this point in the history
Adapt to recent change in `SubmitBlock` in iota.go
  • Loading branch information
muXxer authored Feb 23, 2023
2 parents 6fa77e1 + 9078ad4 commit f756aaf
Show file tree
Hide file tree
Showing 9 changed files with 85 additions and 113 deletions.
8 changes: 4 additions & 4 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ replace (
require (
github.com/bygui86/multi-profile/v2 v2.1.0
github.com/bytecodealliance/wasmtime-go/v5 v5.0.0
github.com/ethereum/go-ethereum v1.10.26
github.com/ethereum/go-ethereum v1.11.2
github.com/golang-jwt/jwt v3.2.2+incompatible
github.com/hashicorp/golang-lru/v2 v2.0.1
github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230217135120-e907aac0262d
github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1
github.com/iotaledger/inx-app v1.0.0-rc.3
github.com/iotaledger/inx/go v1.0.0-rc.1
github.com/iotaledger/iota.go/v3 v3.0.0-rc.1.0.20221212191201-0105a0847e96
github.com/iotaledger/iota.go/v3 v3.0.0-rc.1.0.20230223105330-ef33ea7fe34f
github.com/labstack/echo-contrib v0.13.1
github.com/labstack/echo/v4 v4.10.0
github.com/libp2p/go-libp2p v0.25.1
Expand Down Expand Up @@ -186,14 +186,14 @@ require (
go.uber.org/multierr v1.9.0 // indirect
golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect
golang.org/x/mod v0.8.0 // indirect
golang.org/x/net v0.6.0 // indirect
golang.org/x/net v0.7.0 // indirect
golang.org/x/sync v0.1.0 // indirect
golang.org/x/sys v0.5.0 // indirect
golang.org/x/text v0.7.0 // indirect
golang.org/x/time v0.3.0 // indirect
golang.org/x/tools v0.6.0 // indirect
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc // indirect
google.golang.org/genproto v0.0.0-20230222225845-10f96fb3dbec // indirect
google.golang.org/grpc v1.53.0 // indirect
google.golang.org/protobuf v1.28.1 // indirect
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect
Expand Down
12 changes: 6 additions & 6 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -369,8 +369,8 @@ github.com/iotaledger/inx/go v1.0.0-rc.1 h1:BCLPHP+GiC99tVKvaiw0BMn4+Tv6VBNSAusJ
github.com/iotaledger/inx/go v1.0.0-rc.1/go.mod h1:avAlMHmwcXsyOIIQ6sskA3b1K28Yew7O/iDmDcCQjCo=
github.com/iotaledger/iota.go v1.0.0 h1:tqm1FxJ/zOdzbrAaQ5BQpVF8dUy2eeGlSeWlNG8GoXY=
github.com/iotaledger/iota.go v1.0.0/go.mod h1:RiKYwDyY7aCD1L0YRzHSjOsJ5mUR9yvQpvhZncNcGQI=
github.com/iotaledger/iota.go/v3 v3.0.0-rc.1.0.20221212191201-0105a0847e96 h1:wYnIqx4ulWVagOltdZqGnHAd40yIgE1FSGWJ+biyzso=
github.com/iotaledger/iota.go/v3 v3.0.0-rc.1.0.20221212191201-0105a0847e96/go.mod h1:R3m6d5AFI0I++HOaYQR7QU8hY//vUSwbOyqQ7Bco2O4=
github.com/iotaledger/iota.go/v3 v3.0.0-rc.1.0.20230223105330-ef33ea7fe34f h1:l841YDhDjat+wkKKJZd7jeS9R/rZEfV330FWsRapil4=
github.com/iotaledger/iota.go/v3 v3.0.0-rc.1.0.20230223105330-ef33ea7fe34f/go.mod h1:R3m6d5AFI0I++HOaYQR7QU8hY//vUSwbOyqQ7Bco2O4=
github.com/ipfs/go-cid v0.3.2 h1:OGgOd+JCFM+y1DjWPmVH+2/4POtpDzwcr7VgnB7mZXc=
github.com/ipfs/go-cid v0.3.2/go.mod h1:gQ8pKqT/sUxGY+tIwy1RPpAojYu7jAyCp5Tz1svoupw=
github.com/ipfs/go-detect-race v0.0.1 h1:qX/xay2W3E4Q1U7d9lNs1sU9nvguX0a7319XbyQ6cOk=
Expand Down Expand Up @@ -947,8 +947,8 @@ golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy
golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.6.0 h1:L4ZwwTvKW9gr0ZMS1yrHD9GZhIuVjOBBnaKH+SPQK0Q=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g=
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
Expand Down Expand Up @@ -1100,8 +1100,8 @@ google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfG
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24=
google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc h1:ijGwO+0vL2hJt5gaygqP2j6PfflOBrRot0IczKbmtio=
google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
google.golang.org/genproto v0.0.0-20230222225845-10f96fb3dbec h1:6rwgChOSUfpzJF2/KnLgo+gMaxGpujStSkPWrbhXArU=
google.golang.org/genproto v0.0.0-20230222225845-10f96fb3dbec/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw=
google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio=
Expand Down
118 changes: 45 additions & 73 deletions packages/l1connection/l1connection.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ type Client interface {
// requests funds from faucet, waits for confirmation
RequestFunds(addr iotago.Address, timeout ...time.Duration) error
// sends a tx (including tipselection and local PoW if necessary) and waits for confirmation
PostTxAndWaitUntilConfirmation(tx *iotago.Transaction, timeout ...time.Duration) (*iotago.Block, error)
PostTxAndWaitUntilConfirmation(tx *iotago.Transaction, timeout ...time.Duration) (iotago.BlockID, error)
// returns the outputs owned by a given address
OutputMap(myAddress iotago.Address, timeout ...time.Duration) (iotago.OutputSet, error)
// output
Expand Down Expand Up @@ -119,100 +119,75 @@ func (c *l1client) OutputMap(myAddress iotago.Address, timeout ...time.Duration)
}

// postBlock sends a block (including tipselection and local PoW if necessary).
func (c *l1client) postBlock(ctx context.Context, block *iotago.Block) (*iotago.Block, error) {
func (c *l1client) postBlock(ctx context.Context, block *iotago.Block) (iotago.BlockID, error) {
if !c.config.UseRemotePoW {
if err := doBlockPow(ctx, block, c.nodeAPIClient); err != nil {
return nil, fmt.Errorf("failed during local PoW: %w", err)
return iotago.EmptyBlockID(), fmt.Errorf("failed during local PoW: %w", err)
}
}
block, err := c.nodeAPIClient.SubmitBlock(ctx, block, parameters.L1().Protocol)
blockID, err := c.nodeAPIClient.SubmitBlock(ctx, block, parameters.L1().Protocol)
if err != nil {
return nil, fmt.Errorf("failed to submit block: %w", err)
return iotago.EmptyBlockID(), fmt.Errorf("failed to submit block: %w", err)
}

blockID, err := block.ID()
if err != nil {
return nil, err
}
c.log.Infof("Posted blockID %v", blockID.ToHex())

return block, nil
}

// PostBlock sends a block (including tipselection and local PoW if necessary).
func (c *l1client) PostBlock(block *iotago.Block, timeout ...time.Duration) (*iotago.Block, error) {
ctxWithTimeout, cancelContext := newCtx(c.ctx, timeout...)
defer cancelContext()

return c.postBlock(ctxWithTimeout, block)
return blockID, nil
}

// PostTx sends a tx (including tipselection and local PoW if necessary).
func (c *l1client) postTx(ctx context.Context, tx *iotago.Transaction) (*iotago.Block, error) {
func (c *l1client) postTx(ctx context.Context, tx *iotago.Transaction) (iotago.BlockID, error) {
// Build a Block and post it.
block, err := builder.NewBlockBuilder().Payload(tx).Build()
if err != nil {
return nil, fmt.Errorf("failed to build block: %w", err)
return iotago.EmptyBlockID(), fmt.Errorf("failed to build block: %w", err)
}

block, err = c.postBlock(ctx, block)
blockID, err := c.postBlock(ctx, block)
if err != nil {
return nil, err
return iotago.EmptyBlockID(), err
}

txID, err := tx.ID()
if err != nil {
return nil, err
return iotago.EmptyBlockID(), err
}
c.log.Infof("Posted transaction id %v", txID.ToHex())

return block, nil
}

// PostTx sends a tx (including tipselection and local PoW if necessary).
func (c *l1client) PostTx(tx *iotago.Transaction, timeout ...time.Duration) (*iotago.Block, error) {
ctxWithTimeout, cancelContext := newCtx(c.ctx, timeout...)
defer cancelContext()

return c.postTx(ctxWithTimeout, tx)
return blockID, nil
}

// PostTxAndWaitUntilConfirmation sends a tx (including tipselection and local PoW if necessary) and waits for confirmation.
func (c *l1client) PostTxAndWaitUntilConfirmation(tx *iotago.Transaction, timeout ...time.Duration) (*iotago.Block, error) {
func (c *l1client) PostTxAndWaitUntilConfirmation(tx *iotago.Transaction, timeout ...time.Duration) (iotago.BlockID, error) {
ctxWithTimeout, cancelContext := newCtx(c.ctx, timeout...)
defer cancelContext()

block, err := c.postTx(ctxWithTimeout, tx)
blockID, err := c.postTx(ctxWithTimeout, tx)
if err != nil {
return nil, err
return iotago.EmptyBlockID(), err
}

return c.waitUntilBlockConfirmed(ctxWithTimeout, block)
return c.waitUntilBlockConfirmed(ctxWithTimeout, blockID, tx)
}

// waitUntilBlockConfirmed waits until a given block is confirmed, it takes care of promotions/re-attachments for that block
//
//nolint:gocyclo,funlen
func (c *l1client) waitUntilBlockConfirmed(ctx context.Context, block *iotago.Block) (*iotago.Block, error) {
blockID, err := block.ID()
if err != nil {
return nil, fmt.Errorf("failed to calculate blockID: %w", err)
}

_, isTransactionPayload := block.Payload.(*iotago.Transaction)
func (c *l1client) waitUntilBlockConfirmed(ctx context.Context, blockID iotago.BlockID, payload iotago.Payload) (iotago.BlockID, error) {
_, isTransactionPayload := payload.(*iotago.Transaction)
var lastPromotionTime time.Time

checkContext := func() error {
if err = ctx.Err(); err != nil {
if err := ctx.Err(); err != nil {
return fmt.Errorf("failed to wait for block confimation within timeout: %w", err)
}

return nil
}

checkAndPromote := func(metadata *nodeclient.BlockMetadataResponse) error {
if err2 := checkContext(); err2 != nil {
return err2
if err := checkContext(); err != nil {
return err
}

if metadata.ShouldPromote != nil && *metadata.ShouldPromote {
Expand All @@ -224,13 +199,13 @@ func (c *l1client) waitUntilBlockConfirmed(ctx context.Context, block *iotago.Bl

c.log.Debugf("promoting blockID: %s", blockID.ToHex())
// create an empty Block and the BlockID as one of the parents
tipsResp, err2 := c.nodeAPIClient.Tips(ctx)
if err2 != nil {
return fmt.Errorf("failed to fetch tips: %w", err2)
tipsResp, err := c.nodeAPIClient.Tips(ctx)
if err != nil {
return fmt.Errorf("failed to fetch tips: %w", err)
}
tips, err2 := tipsResp.Tips()
if err2 != nil {
return fmt.Errorf("failed to get tips from tips response: %w", err2)
tips, err := tipsResp.Tips()
if err != nil {
return fmt.Errorf("failed to get tips from tips response: %w", err)
}
if len(tips) > 7 {
tips = tips[:7] // max 8 parents
Expand All @@ -241,86 +216,83 @@ func (c *l1client) waitUntilBlockConfirmed(ctx context.Context, block *iotago.Bl
}
parents = append(parents, tips...)

promotionBlock, err2 := builder.NewBlockBuilder().Parents(parents).Build()
if err2 != nil {
return fmt.Errorf("failed to build promotion Block: %w", err2)
promotionBlock, err := builder.NewBlockBuilder().Parents(parents).Build()
if err != nil {
return fmt.Errorf("failed to build promotion Block: %w", err)
}

if _, err2 := c.postBlock(ctx, promotionBlock); err2 != nil {
return fmt.Errorf("failed to promote block: %w", err2)
if _, err := c.postBlock(ctx, promotionBlock); err != nil {
return fmt.Errorf("failed to promote block: %w", err)
}
}

return nil
}

checkAndReattach := func(metadata *nodeclient.BlockMetadataResponse) error {
if err2 := checkContext(); err2 != nil {
return err2
if err := checkContext(); err != nil {
return err
}

if metadata.ShouldReattach != nil && *metadata.ShouldReattach {
c.log.Debugf("reattaching block: %v", block)
c.log.Debugf("reattaching block: %v", blockID.ToHex())

// build new block with same payload
block, err = builder.NewBlockBuilder().Payload(block.Payload).Build()
block, err := builder.NewBlockBuilder().Payload(payload).Build()
if err != nil {
return fmt.Errorf("failed to reattach block: %w", err)
}

// reattach the block
block, err = c.postBlock(ctx, block)
reattachedBlockID, err := c.postBlock(ctx, block)
if err != nil {
return err
}

// update the tracked blockID
blockID, err = block.ID()
if err != nil {
return fmt.Errorf("failed to calculate blockID: %w", err)
}
blockID = reattachedBlockID
}

return nil
}

for {
if err := checkContext(); err != nil {
return nil, err
return iotago.EmptyBlockID(), err
}

// poll the node for block confirmation state
metadata, err := c.nodeAPIClient.BlockMetadataByBlockID(ctx, blockID)
if err != nil {
return nil, fmt.Errorf("failed to get block metadata: %w", err)
return iotago.EmptyBlockID(), fmt.Errorf("failed to get block metadata: %w", err)
}

// check if block was included
if metadata.ReferencedByMilestoneIndex != 0 {
if metadata.LedgerInclusionState != "" {
if isTransactionPayload {
if metadata.LedgerInclusionState == "included" {
return block, nil // success
return blockID, nil // success
}
} else {
if metadata.LedgerInclusionState == "noTransaction" {
return block, nil // success
return blockID, nil // success
}
}
}

return nil, fmt.Errorf("block was not included in the ledger. IsTransaction: %t, LedgerInclusionState: %s, ConflictReason: %d",
return iotago.EmptyBlockID(), fmt.Errorf("block was not included in the ledger. IsTransaction: %t, LedgerInclusionState: %s, ConflictReason: %d",
isTransactionPayload, metadata.LedgerInclusionState, metadata.ConflictReason)
}

// promote if needed
if err := checkAndPromote(metadata); err != nil {
return nil, err
return iotago.EmptyBlockID(), err
}

// reattach if needed
if err := checkAndReattach(metadata); err != nil {
return nil, err
return iotago.EmptyBlockID(), err
}

time.Sleep(pollConfirmedBlockInterval)
Expand Down
8 changes: 4 additions & 4 deletions tools/gascalibration/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ require (
github.com/cockroachdb/redact v1.1.3 // indirect
github.com/deckarep/golang-set v1.8.0 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect
github.com/ethereum/go-ethereum v1.10.26 // indirect
github.com/ethereum/go-ethereum v1.11.2 // indirect
github.com/fatih/structs v1.1.0 // indirect
github.com/fsnotify/fsnotify v1.6.0 // indirect
github.com/getsentry/sentry-go v0.18.0 // indirect
Expand All @@ -51,7 +51,7 @@ require (
github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230217135120-e907aac0262d // indirect
github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1 // indirect
github.com/iotaledger/iota.go v1.0.0 // indirect
github.com/iotaledger/iota.go/v3 v3.0.0-rc.1.0.20221212191201-0105a0847e96 // indirect
github.com/iotaledger/iota.go/v3 v3.0.0-rc.1.0.20230223105330-ef33ea7fe34f // indirect
github.com/iotaledger/wasp v1.0.0-00010101000000-000000000000 // indirect
github.com/knadh/koanf v1.5.0 // indirect
github.com/kr/pretty v0.3.1 // indirect
Expand Down Expand Up @@ -89,11 +89,11 @@ require (
golang.org/x/crypto v0.6.0 // indirect
golang.org/x/exp v0.0.0-20230212135524-a684f29349b6 // indirect
golang.org/x/image v0.3.0 // indirect
golang.org/x/net v0.6.0 // indirect
golang.org/x/net v0.7.0 // indirect
golang.org/x/sys v0.5.0 // indirect
golang.org/x/text v0.7.0 // indirect
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc // indirect
google.golang.org/genproto v0.0.0-20230222225845-10f96fb3dbec // indirect
google.golang.org/grpc v1.53.0 // indirect
google.golang.org/protobuf v1.28.1 // indirect
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect
Expand Down
12 changes: 6 additions & 6 deletions tools/gascalibration/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -270,8 +270,8 @@ github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1 h1:x3xsI32h+1wTIzLWInC+A
github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1/go.mod h1:jkV//O5d+HHm32qDmTy6AWZUgxuZaXazTUVqox+5z4g=
github.com/iotaledger/iota.go v1.0.0 h1:tqm1FxJ/zOdzbrAaQ5BQpVF8dUy2eeGlSeWlNG8GoXY=
github.com/iotaledger/iota.go v1.0.0/go.mod h1:RiKYwDyY7aCD1L0YRzHSjOsJ5mUR9yvQpvhZncNcGQI=
github.com/iotaledger/iota.go/v3 v3.0.0-rc.1.0.20221212191201-0105a0847e96 h1:wYnIqx4ulWVagOltdZqGnHAd40yIgE1FSGWJ+biyzso=
github.com/iotaledger/iota.go/v3 v3.0.0-rc.1.0.20221212191201-0105a0847e96/go.mod h1:R3m6d5AFI0I++HOaYQR7QU8hY//vUSwbOyqQ7Bco2O4=
github.com/iotaledger/iota.go/v3 v3.0.0-rc.1.0.20230223105330-ef33ea7fe34f h1:l841YDhDjat+wkKKJZd7jeS9R/rZEfV330FWsRapil4=
github.com/iotaledger/iota.go/v3 v3.0.0-rc.1.0.20230223105330-ef33ea7fe34f/go.mod h1:R3m6d5AFI0I++HOaYQR7QU8hY//vUSwbOyqQ7Bco2O4=
github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI=
github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0=
github.com/iris-contrib/jade v1.1.3/go.mod h1:H/geBymxJhShH5kecoiOCSssPX7QWYH7UaeZTSWddIk=
Expand Down Expand Up @@ -610,8 +610,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b
golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8=
golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.6.0 h1:L4ZwwTvKW9gr0ZMS1yrHD9GZhIuVjOBBnaKH+SPQK0Q=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g=
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
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-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
Expand Down Expand Up @@ -734,8 +734,8 @@ google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfG
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24=
google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc h1:ijGwO+0vL2hJt5gaygqP2j6PfflOBrRot0IczKbmtio=
google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
google.golang.org/genproto v0.0.0-20230222225845-10f96fb3dbec h1:6rwgChOSUfpzJF2/KnLgo+gMaxGpujStSkPWrbhXArU=
google.golang.org/genproto v0.0.0-20230222225845-10f96fb3dbec/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw=
google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
Expand Down
Loading

0 comments on commit f756aaf

Please sign in to comment.