Skip to content
This repository has been archived by the owner on Sep 23, 2024. It is now read-only.

Commit

Permalink
New LXLY contract calls (#38)
Browse files Browse the repository at this point in the history
* Definitely needed changes added in a draft state

* rearranged related etherman methods

* typo fixed in config and import order corrected

* better alias name in config.go and added rollupID to etherman.BuildTrustedVerifyBatchesTxData

* RollupID arg added to BuildTrustedVerifyBatchesTxData call in executor.VerifyZKP

* zkevm-node package version increased, types corrected, and 'RollupIDToRollupData' call fixed

* consistent naming of 'rollupId' argument over all methods

* interface changes for the new properties applied in the test files

* TX struct it rpc_test fixed and error handling in interop/executor.go and rpc/rpc.go fixed

* etherman_test updated

* interop/execute_test updated

* rpc_test.go updated

* passed arguments in rpc.SendTx method for executor.CheckTx fixed

* '%v' changed to '%d' in rpc.SendTx

* code style improved in etherman.getRollupContractAddress

* codestyle++

* kept the comment in 'tx/tx.go' but fixed the typos

* Moved logging of the errors to the top level of the call-stack for etherman.GetSequencerAddr
  • Loading branch information
nivida authored Jan 12, 2024
1 parent eca12c0 commit 6356805
Show file tree
Hide file tree
Showing 13 changed files with 411 additions and 126 deletions.
2 changes: 1 addition & 1 deletion cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ func start(cliCtx *cli.Context) error {
log.Fatal("error getting chain ID from l1 with address: %+v", err)
}

ethMan, err := etherman.New(ethClient, *auth)
ethMan, err := etherman.New(ethClient, *auth, c)
if err != nil {
log.Fatal(err)
}
Expand Down
7 changes: 4 additions & 3 deletions config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ const (
FlagCfg = "cfg"
)

type FullNodeRPCs map[common.Address]string
type FullNodeRPCs map[uint32]string

// Config represents the full configuration of the data node
type Config struct {
Expand All @@ -37,8 +37,9 @@ type Config struct {
}

type L1Config struct {
ChainID int64
NodeURL string
ChainID int64
NodeURL string
RollupManagerContract common.Address
}

type Telemetry struct {
Expand Down
57 changes: 40 additions & 17 deletions etherman/etherman.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@ package etherman
import (
"context"
"errors"
"github.com/0xPolygon/beethoven/config"
"math/big"
"time"

"github.com/0xPolygonHermez/zkevm-node/etherman/smartcontracts/polygonrollupmanager"
"github.com/0xPolygonHermez/zkevm-node/etherman/smartcontracts/polygonzkevm"
"github.com/0xPolygonHermez/zkevm-node/log"
"github.com/0xPolygonHermez/zkevm-node/state"
Expand All @@ -27,25 +29,33 @@ const (
type Etherman struct {
ethClient EthereumClient
auth bind.TransactOpts
config *config.Config
}

func New(ethClient EthereumClient, auth bind.TransactOpts) (Etherman, error) {
func New(ethClient EthereumClient, auth bind.TransactOpts, cfg *config.Config) (Etherman, error) {
return Etherman{
ethClient: ethClient,
auth: auth,
config: cfg,
}, nil
}

func (e *Etherman) GetSequencerAddr(l1Contract common.Address) (common.Address, error) {
_, contract, err := e.contractCaller(common.Address{}, l1Contract)
func (e *Etherman) GetSequencerAddr(rollupId uint32) (common.Address, error) {
address, err := e.getTrustedSequencerAddress(rollupId)
if err != nil {
log.Errorf("error requesting the 'TrustedSequencer' address: %s", err)
return common.Address{}, err
}

return contract.TrustedSequencer(&bind.CallOpts{Pending: false})
return address, nil
}

func (e *Etherman) BuildTrustedVerifyBatchesTxData(lastVerifiedBatch, newVerifiedBatch uint64, proof tx.ZKP) (data []byte, err error) {
func (e *Etherman) BuildTrustedVerifyBatchesTxData(
lastVerifiedBatch,
newVerifiedBatch uint64,
proof tx.ZKP,
rollupId uint32,
) (data []byte, err error) {
var newLocalExitRoot [HashLength]byte
copy(newLocalExitRoot[:], proof.NewLocalExitRoot.Bytes())
var newStateRoot [HashLength]byte
Expand All @@ -65,6 +75,7 @@ func (e *Etherman) BuildTrustedVerifyBatchesTxData(lastVerifiedBatch, newVerifie

return abi.Pack(
"verifyBatchesTrustedAggregator",
rollupId,
pendStateNum,
lastVerifiedBatch,
newVerifiedBatch,
Expand All @@ -78,20 +89,32 @@ func (e *Etherman) CallContract(ctx context.Context, call ethereum.CallMsg, bloc
return e.ethClient.CallContract(ctx, call, blockNumber)
}

func (e *Etherman) contractCaller(from, to common.Address) (*bind.TransactOpts, *polygonzkevm.Polygonzkevm, error) {
opts := bind.TransactOpts{}
opts.From = from
opts.NoSend = true
// force nonce, gas limit and gas price to avoid querying it from the chain
opts.Nonce = big.NewInt(1)
opts.GasLimit = uint64(1)
opts.GasPrice = big.NewInt(1)
contract, err := polygonzkevm.NewPolygonzkevm(to, e.ethClient)
func (e *Etherman) getRollupContractAddress(rollupId uint32) (common.Address, error) {
contract, err := polygonrollupmanager.NewPolygonrollupmanager(e.config.L1.RollupManagerContract, e.ethClient)
if err != nil {
return common.Address{}, err
}

rollupData, err := contract.RollupIDToRollupData(&bind.CallOpts{Pending: false}, rollupId)
if err != nil {
return common.Address{}, err
}

return rollupData.RollupContract, nil
}

func (e *Etherman) getTrustedSequencerAddress(rollupId uint32) (common.Address, error) {
rollupContractAddress, err := e.getRollupContractAddress(rollupId)
if err != nil {
log.Errorf("error instantiating contract: %s", err)
return nil, nil, err
return common.Address{}, err
}
return &opts, contract, nil

contract, err := polygonzkevm.NewPolygonzkevm(rollupContractAddress, e.ethClient)
if err != nil {
return common.Address{}, err
}

return contract.TrustedSequencer(&bind.CallOpts{Pending: false})
}

// CheckTxWasMined check if a tx was already mined
Expand Down
84 changes: 78 additions & 6 deletions etherman/etherman_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,18 @@ package etherman
import (
"context"
"errors"
"github.com/0xPolygon/beethoven/config"
cdkTypes "github.com/0xPolygon/beethoven/rpc/types"
"github.com/0xPolygon/beethoven/tx"
"github.com/ethereum/go-ethereum/crypto"
"math/big"
"testing"

"github.com/0xPolygon/beethoven/mocks"
cdkTypes "github.com/0xPolygon/beethoven/rpc/types"
"github.com/0xPolygon/beethoven/tx"
"github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
)
Expand All @@ -36,6 +37,7 @@ func getEtherman(ethClientMock EthereumClient) Etherman {
Context: context.TODO(),
NoSend: false,
},
&config.Config{},
)

return ethman
Expand All @@ -45,12 +47,31 @@ func TestGetSequencerAddr(t *testing.T) {
t.Parallel()
assert := assert.New(t)

t.Run("Returns expected error (improperly formatted output)", func(t *testing.T) {
t.Run("Returns expected error on 'TrustedSequencer' call (improperly formatted output)", func(t *testing.T) {
t.Parallel()

ethClient := new(mocks.EthereumClientMock)
ethman := getEtherman(ethClient)

ethClient.On(
"CallContract",
mock.Anything,
ethereum.CallMsg{
From: common.HexToAddress("0x0000000000000000000000000000000000000000"),
To: &common.Address{},
Gas: 0,
GasPrice: nil,
GasFeeCap: nil,
GasTipCap: nil,
Value: nil,
Data: common.Hex2Bytes("f9c4c2ae0000000000000000000000000000000000000000000000000000000000000001"),
},
(*big.Int)(nil),
).Return( // Invalid return value below to provocate error
common.Hex2Bytes("000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001"),
nil,
).Once()

ethClient.On(
"CallContract",
mock.Anything,
Expand All @@ -70,7 +91,38 @@ func TestGetSequencerAddr(t *testing.T) {
nil,
).Once()

_, err := ethman.GetSequencerAddr(common.HexToAddress("0x0000000000000000000000000000000000000000"))
_, err := ethman.GetSequencerAddr(1)

assert.ErrorContains(err, "abi: improperly formatted output:")
ethClient.AssertExpectations(t)
})

t.Run("Returns expected error on 'RollupIDToRollupData' call (improperly formatted output)", func(t *testing.T) {
t.Parallel()

ethClient := new(mocks.EthereumClientMock)
ethman := getEtherman(ethClient)

ethClient.On(
"CallContract",
mock.Anything,
ethereum.CallMsg{
From: common.HexToAddress("0x0000000000000000000000000000000000000000"),
To: &common.Address{},
Gas: 0,
GasPrice: nil,
GasFeeCap: nil,
GasTipCap: nil,
Value: nil,
Data: common.Hex2Bytes("f9c4c2ae0000000000000000000000000000000000000000000000000000000000000001"),
},
(*big.Int)(nil),
).Return( // Invalid return value below to provocate error
common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001"),
nil,
).Once()

_, err := ethman.GetSequencerAddr(1)

assert.ErrorContains(err, "abi: improperly formatted output:")
ethClient.AssertExpectations(t)
Expand All @@ -83,6 +135,25 @@ func TestGetSequencerAddr(t *testing.T) {
ethman := getEtherman(ethClient)

ethClient.On(
"CallContract",
mock.Anything,
ethereum.CallMsg{
From: common.HexToAddress("0x0000000000000000000000000000000000000000"),
To: &common.Address{},
Gas: 0,
GasPrice: nil,
GasFeeCap: nil,
GasTipCap: nil,
Value: nil,
Data: common.Hex2Bytes("f9c4c2ae0000000000000000000000000000000000000000000000000000000000000001"),
},
(*big.Int)(nil),
).Return( // Invalid return value below to provocate error
common.Hex2Bytes("000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001"),
nil,
).Once()

ethClient.On( // Call "TrustedSequencer" property on rollup contract
"CallContract",
mock.Anything,
ethereum.CallMsg{
Expand All @@ -96,7 +167,7 @@ func TestGetSequencerAddr(t *testing.T) {
nil,
).Once()

returnValue, err := ethman.GetSequencerAddr(common.HexToAddress("0x0000000000000000000000000000000000000000"))
returnValue, err := ethman.GetSequencerAddr(1)

assert.Equal(common.Address{}, returnValue)
assert.NoError(err)
Expand All @@ -120,6 +191,7 @@ func TestBuildTrustedVerifyBatches(t *testing.T) {
NewLocalExitRoot: common.HexToHash("0x002"),
Proof: cdkTypes.ArgBytes("0x30030030030003003300300030033003000300330030003003003000300300300030030030003003003000300300300030030030003003003000300300300030030030003003003000300300300030030030003003003000300300300030030030003003003000300300300030030030003003003000300300300030030030003003003000300300300030030030003003003000300300300030030030003003003000300300300030030030003003003000300300300030030030003003003000300300300030030030003003003000300300300030030030003003003000300300300030030030003003003000300300300030030030003003003000300300300030030030003003003000300300300030030030003003003000300300300030030030003003003000300300300030030030003003003000300300300030030030003003003000300300300030030030003003003000300300300030030030003003003000300300300030030030003003003000300300300030030030"),
},
1,
)

assert.ErrorContains(err, "invalid proof length. Expected length: 1538, Actual length 1534")
Expand Down
10 changes: 5 additions & 5 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ go 1.21

require (
github.com/0xPolygon/cdk-data-availability v0.0.3
github.com/0xPolygonHermez/zkevm-node v0.4.5
github.com/0xPolygonHermez/zkevm-node v0.5.0-RC4
github.com/ethereum/go-ethereum v1.13.8
github.com/gobuffalo/packr/v2 v2.8.3
github.com/jackc/pgconn v1.14.1
Expand All @@ -14,13 +14,13 @@ require (
github.com/rubenv/sql-migrate v1.6.0
github.com/spf13/viper v1.18.2
github.com/stretchr/testify v1.8.4
github.com/urfave/cli/v2 v2.25.7
github.com/urfave/cli/v2 v2.26.0
go.opentelemetry.io/otel/exporters/prometheus v0.44.0
go.opentelemetry.io/otel/sdk/metric v1.21.0
)

require (
github.com/0xPolygonHermez/zkevm-data-streamer v0.1.15 // indirect
github.com/0xPolygonHermez/zkevm-data-streamer v0.1.17 // indirect
github.com/DataDog/zstd v1.5.2 // indirect
github.com/Microsoft/go-winio v0.6.1 // indirect
github.com/StackExchange/wmi v1.2.1 // indirect
Expand Down Expand Up @@ -66,7 +66,7 @@ require (
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/google/pprof v0.0.0-20230207041349-798e818bf904 // indirect
github.com/google/uuid v1.4.0 // indirect
github.com/google/uuid v1.5.0 // indirect
github.com/gorilla/websocket v1.5.1 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/hermeznetwork/tracerr v0.3.2 // indirect
Expand Down Expand Up @@ -144,7 +144,7 @@ require (
golang.org/x/time v0.5.0 // indirect
golang.org/x/tools v0.15.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f // indirect
google.golang.org/grpc v1.59.0 // indirect
google.golang.org/grpc v1.60.0 // indirect
google.golang.org/protobuf v1.31.0 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
Expand Down
24 changes: 12 additions & 12 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,10 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
github.com/0xPolygon/cdk-data-availability v0.0.3 h1:ft0j1H7Q8hYT0AcapM9DmZS9FkAC1JGD+7QrOBhWRWA=
github.com/0xPolygon/cdk-data-availability v0.0.3/go.mod h1:nA2O2ZzuvrR1pJLAmzTjuhUBSlCT0Noz2WI6HZfhvsg=
github.com/0xPolygonHermez/zkevm-data-streamer v0.1.15 h1:WmSnrlSHzlpkD33mRoUVlxScR6f+xig9pMKqYM8n+hQ=
github.com/0xPolygonHermez/zkevm-data-streamer v0.1.15/go.mod h1:VrOfhxA3y9XVpZh2jpBqwv7eGBKwxgKJ7jVTzFr6vYI=
github.com/0xPolygonHermez/zkevm-node v0.4.5 h1:spFfHtQ5b0NB32FcFj0ELYGRxhaWgsE67bMxQTr81+o=
github.com/0xPolygonHermez/zkevm-node v0.4.5/go.mod h1:53xLWQDtrRygFT0mzTVqhH6J5Vrbg1Th866npGW9NME=
github.com/0xPolygonHermez/zkevm-data-streamer v0.1.17 h1:pCA2k5ke1otBTNAyE8yiSlkDwpZxvJQH55Nf0GXWvfk=
github.com/0xPolygonHermez/zkevm-data-streamer v0.1.17/go.mod h1:0QkAXcFa92mFJrCbN3UPUJGJYes851yEgYHLONnaosE=
github.com/0xPolygonHermez/zkevm-node v0.5.0-RC4 h1:xQYFDA4+JQ/5PO28n+AC+yz+/Ase2mGPRYbc52i6m/w=
github.com/0xPolygonHermez/zkevm-node v0.5.0-RC4/go.mod h1:/+coO2Mg0Zj2NR9XHTB2FVPYT7V7YGx+wXeAidhuFBs=
github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8=
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 h1:w+iIsaOQNcT7OZ575w+acHgRric5iCyQh+xv+KJ4HB8=
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=
Expand Down Expand Up @@ -337,8 +337,8 @@ github.com/google/pprof v0.0.0-20230207041349-798e818bf904/go.mod h1:uglQLonpP8q
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4=
github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU=
github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
Expand Down Expand Up @@ -525,8 +525,8 @@ github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd
github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU=
github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
Expand Down Expand Up @@ -722,8 +722,8 @@ github.com/umbracle/ethgo v0.1.4-0.20230712173909-df37dddf16f0 h1:wE2g4ydxJk8kdR
github.com/umbracle/ethgo v0.1.4-0.20230712173909-df37dddf16f0/go.mod h1:J+OZNfRCtbaYW3AEc0m47GhwAzlNJjcr9vO86nzOr6E=
github.com/umbracle/fastrlp v0.0.0-20220527094140-59d5dd30e722 h1:10Nbw6cACsnQm7r34zlpJky+IzxVLRk6MKTS2d3Vp0E=
github.com/umbracle/fastrlp v0.0.0-20220527094140-59d5dd30e722/go.mod h1:c8J0h9aULj2i3umrfyestM6jCq0LK0U6ly6bWy96nd4=
github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs=
github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ=
github.com/urfave/cli/v2 v2.26.0 h1:3f3AMg3HpThFNT4I++TKOejZO8yU55t3JnnSr4S4QEI=
github.com/urfave/cli/v2 v2.26.0/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ=
github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w=
Expand Down Expand Up @@ -1197,8 +1197,8 @@ google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG
google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk=
google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98=
google.golang.org/grpc v1.60.0 h1:6FQAR0kM31P6MRdeluor2w2gPaS4SVNrD/DNTxrQ15k=
google.golang.org/grpc v1.60.0/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM=
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=
Expand Down
Loading

0 comments on commit 6356805

Please sign in to comment.