diff --git a/Dockerfile b/Dockerfile index 5716747..2fece9f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,15 +13,15 @@ # limitations under the License. # Compile golang -FROM ubuntu:20.04 as golang-builder +FROM --platform=linux/amd64 ubuntu:20.04 as golang-builder RUN mkdir -p /app \ && chown -R nobody:nogroup /app WORKDIR /app RUN apt-get update && apt-get install -y curl make gcc g++ git -ENV GOLANG_VERSION 1.16.8 -ENV GOLANG_DOWNLOAD_SHA256 f32501aeb8b7b723bc7215f6c373abb6981bbc7e1c7b44e9f07317e1a300dce2 +ENV GOLANG_VERSION 1.19.8 +ENV GOLANG_DOWNLOAD_SHA256 e1a0bf0ab18c8218805a1003fd702a41e2e807710b770e787e5979d1cf947aba ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz RUN curl -fsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz \ @@ -36,16 +36,16 @@ RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 777 "$GOPATH" # Compile geth FROM golang-builder as geth-builder -# VERSION: go-ethereum v.1.10.16 -RUN git clone https://github.com/ethereum/go-ethereum \ - && cd go-ethereum \ - && git checkout 20356e57b119b4e70ce47665a71964434e15200d +# VERSION: core-chain v.1.0.6 +RUN git clone https://github.com/coredao-org/core-chain.git \ + && cd core-chain \ + && git checkout v1.0.6 -RUN cd go-ethereum \ +RUN cd core-chain \ && make geth -RUN mv go-ethereum/build/bin/geth /app/geth \ - && rm -rf go-ethereum +RUN mv core-chain/build/bin/geth /app/geth \ + && rm -rf core-chain # Compile rosetta-ethereum FROM golang-builder as rosetta-builder diff --git a/Makefile b/Makefile index 4970d00..fb65c38 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ ADDLICENCE_SCRIPT=${ADDLICENSE_CMD} -c "Coinbase, Inc." -l "apache" -v ${ADDLICE SPELLCHECK_CMD=go run github.com/client9/misspell/cmd/misspell GOLINES_INSTALL=go install github.com/segmentio/golines@latest GOLINES_CMD=golines -GOLINT_INSTALL=go get golang.org/x/lint/golint +GOLINT_INSTALL=go install golang.org/x/lint/golint GOLINT_CMD=golint GOVERALLS_INSTALL=go install github.com/mattn/goveralls@latest GOVERALLS_CMD=goveralls @@ -21,6 +21,7 @@ TEST_SCRIPT=go test ${GO_PACKAGES} LINT_SETTINGS=golint,misspell,gocyclo,gocritic,whitespace,goconst,gocognit,bodyclose,unconvert,lll,unparam PWD=$(shell pwd) NOFILE=100000 +IMAGE_NAME=rosetta-core deps: go get ./... @@ -29,40 +30,41 @@ test: ${TEST_SCRIPT} build: - docker build -t rosetta-ethereum:latest https://github.com/coinbase/rosetta-ethereum.git + docker build --platform=${platform} -t ${IMAGE_NAME}:latest https://${github_token}@github.com/coredao-org/rosetta-core.git build-local: - docker build -t rosetta-ethereum:latest . + docker build --platform=${platform} -t ${IMAGE_NAME}:latest . build-release: # make sure to always set version with vX.X.X - docker build -t rosetta-ethereum:$(version) .; - docker save rosetta-ethereum:$(version) | gzip > rosetta-ethereum-$(version).tar.gz; + docker build --platform=${platform} -t ${IMAGE_NAME}:$(version) .; + docker save ${IMAGE_NAME}:$(version) | gzip > ${IMAGE_NAME}-$(version).tar.gz; update-tracer: - curl https://raw.githubusercontent.com/ethereum/go-ethereum/master/eth/tracers/js/internal/tracers/call_tracer_js.js -o ethereum/call_tracer.js + curl https://github.com/coredao-org/core-chain/blob/master/eth/tracers/js/internal/tracers/call_tracer_js.js -o ethereum/call_tracer.js update-bootstrap-balances: go run main.go utils:generate-bootstrap ethereum/genesis_files/mainnet.json rosetta-cli-conf/mainnet/bootstrap_balances.json; go run main.go utils:generate-bootstrap ethereum/genesis_files/testnet.json rosetta-cli-conf/testnet/bootstrap_balances.json; + go run main.go utils:generate-bootstrap ethereum/genesis_files/devnet.json rosetta-cli-conf/devnet/bootstrap_balances.json; run-mainnet-online: - docker run -d --rm --ulimit "nofile=${NOFILE}:${NOFILE}" -v "${PWD}/ethereum-data:/data" -e "MODE=ONLINE" -e "NETWORK=MAINNET" -e "PORT=8080" -p 8080:8080 -p 30303:30303 rosetta-ethereum:latest + docker run -d --rm --platform ${platform} --ulimit "nofile=${NOFILE}:${NOFILE}" -v "${PWD}/ethereum-data:/data" -e "MODE=ONLINE" -e "NETWORK=MAINNET" -e "PORT=8080" -p 8080:8080 -p 30303:30303 ${IMAGE_NAME}:latest run-mainnet-offline: - docker run -d --rm -e "MODE=OFFLINE" -e "NETWORK=MAINNET" -e "PORT=8081" -p 8081:8081 rosetta-ethereum:latest + docker run -d --rm --platform ${platform} -e "MODE=OFFLINE" -e "NETWORK=MAINNET" -e "PORT=8081" -p 8081:8081 ${IMAGE_NAME}:latest run-testnet-online: - docker run -d --rm --ulimit "nofile=${NOFILE}:${NOFILE}" -v "${PWD}/ethereum-data:/data" -e "MODE=ONLINE" -e "NETWORK=TESTNET" -e "PORT=8080" -p 8080:8080 -p 30303:30303 -p 8545:8545 rosetta-ethereum:latest + docker run -d --rm --platform ${platform} --ulimit "nofile=${NOFILE}:${NOFILE}" -v "${PWD}/ethereum-data:/data" -e "MODE=ONLINE" -e "NETWORK=TESTNET" -e "PORT=8081" -p 8080:8080 -p 35021:35021 -p 8579:8579 ${IMAGE_NAME}:latest run-testnet-offline: - docker run -d --rm -e "MODE=OFFLINE" -e "NETWORK=TESTNET" -e "PORT=8081" -p 8081:8081 rosetta-ethereum:latest + docker run -d --rm --platform ${platform} -e "MODE=OFFLINE" -e "NETWORK=TESTNET" -e "PORT=8081" -p 8081:8081 ${IMAGE_NAME}:latest run-mainnet-remote: - docker run -d --rm --ulimit "nofile=${NOFILE}:${NOFILE}" -e "MODE=ONLINE" -e "NETWORK=MAINNET" -e "PORT=8080" -e "GETH=$(geth)" -p 8080:8080 -p 30303:30303 rosetta-ethereum:latest + docker run -d --rm --platform ${platform} --ulimit "nofile=${NOFILE}:${NOFILE}" -e "MODE=ONLINE" -e "NETWORK=MAINNET" -e "PORT=8080" -e "GETH=$(geth)" -p 8080:8080 -p 30303:30303 ${IMAGE_NAME}:latest run-testnet-remote: - docker run -d --rm --ulimit "nofile=${NOFILE}:${NOFILE}" -e "MODE=ONLINE" -e "NETWORK=TESTNET" -e "PORT=8080" -e "GETH=$(geth)" -p 8080:8080 -p 30303:30303 rosetta-ethereum:latest + docker run -d --rm --platform ${platform} --ulimit "nofile=${NOFILE}:${NOFILE}" -e "MODE=ONLINE" -e "NETWORK=TESTNET" -e "PORT=8080" -e "GETH=$(geth)" -p 8080:8080 -p 30303:35021 ${IMAGE_NAME}:latest check-comments: ${GOLINT_INSTALL} diff --git a/configuration/configuration.go b/configuration/configuration.go index d62fa2d..5684414 100644 --- a/configuration/configuration.go +++ b/configuration/configuration.go @@ -17,6 +17,7 @@ package configuration import ( "errors" "fmt" + "math/big" "os" "strconv" @@ -52,7 +53,11 @@ const ( Goerli string = "GOERLI" // Testnet defaults to `Ropsten` for backwards compatibility. - Testnet string = "TESTNET" + Devnet string = "DEVNET" + + Core string = "CORE" + + Buffalo string = "BUFFALO" // DataDirectory is the default location for all // persistent data. @@ -66,6 +71,8 @@ const ( // read to determine network. NetworkEnv = "NETWORK" + ChainIdEnv = "CHAINID" + // PortEnv is the environment variable // read to determine the port for the Rosetta // implementation. @@ -122,6 +129,10 @@ func LoadConfiguration() (*Configuration, error) { return nil, fmt.Errorf("%s is not a valid mode", modeValue) } + chainIdValue := os.Getenv(ChainIdEnv) + chainId := new(big.Int) + chainId.SetString(chainIdValue, 10) + networkValue := os.Getenv(NetworkEnv) switch networkValue { case Mainnet: @@ -156,14 +167,34 @@ func LoadConfiguration() (*Configuration, error) { config.GenesisBlockIdentifier = ethereum.GoerliGenesisBlockIdentifier config.Params = params.GoerliChainConfig config.GethArguments = ethereum.GoerliGethArguments - case Testnet: + case Devnet: config.Network = &types.NetworkIdentifier{ Blockchain: ethereum.Blockchain, Network: ethereum.DevNetwork, } - config.GenesisBlockIdentifier = nil - config.Params = params.AllCliqueProtocolChanges + config.GenesisBlockIdentifier = ethereum.DevGenesisBlockIdentifier + config.Params = ethereum.DevChainConfig + + if chainId.Cmp(big.NewInt(0)) == 1 { + config.Params.ChainID = chainId + } config.GethArguments = ethereum.DevGethArguments + case Core: + config.Network = &types.NetworkIdentifier{ + Blockchain: ethereum.Blockchain, + Network: ethereum.CoreNetwork, + } + config.GenesisBlockIdentifier = ethereum.CoreGenesisBlockIdentifier + config.Params = ethereum.CoreChainConfig + config.GethArguments = ethereum.CoreGethArguments + case Buffalo: + config.Network = &types.NetworkIdentifier{ + Blockchain: ethereum.Blockchain, + Network: ethereum.BuffaloNetwork, + } + config.GenesisBlockIdentifier = ethereum.BuffaloGenesisBlockIdentifier + config.Params = ethereum.BuffaloChainConfig + config.GethArguments = ethereum.BuffaloGethArguments case "": return nil, errors.New("NETWORK must be populated") default: diff --git a/ethereum/client.go b/ethereum/client.go index e9183e9..cd48a34 100644 --- a/ethereum/client.go +++ b/ethereum/client.go @@ -712,6 +712,10 @@ func (t *Call) UnmarshalJSON(input []byte) error { // flattenTraces recursively flattens all traces. func flattenTraces(data *Call, flattened []*flatCall) []*flatCall { + if data == nil { + return flattened + } + results := append(flattened, data.flatten()) for _, child := range data.Calls { // Ensure all children of a reverted call diff --git a/ethereum/types.go b/ethereum/types.go index 12d7060..2107b73 100644 --- a/ethereum/types.go +++ b/ethereum/types.go @@ -17,8 +17,10 @@ package ethereum import ( "context" "fmt" + "math/big" "github.com/coinbase/rosetta-sdk-go/types" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rpc" ) @@ -28,7 +30,7 @@ const ( NodeVersion = "1.9.24" // Blockchain is Ethereum. - Blockchain string = "Ethereum" + Blockchain string = "Corechain" // MainnetNetwork is the value of the network // in MainnetNetworkIdentifier. @@ -50,6 +52,10 @@ const ( // in DevNetworkNetworkIdentifier. DevNetwork string = "Dev" + CoreNetwork string = "Core" + + BuffaloNetwork string = "Buffalo" + // Symbol is the symbol value // used in Currency. Symbol = "ETH" @@ -130,6 +136,24 @@ const ( IncludeMempoolCoins = false ) +var ( + DevGenesisHash = common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000") + CoreGenesisHash = common.HexToHash("0xf7fc87f11e61508a5828cd1508060ed1714c8d32a92744ae10acb43c953357ad") + BuffaloGenesisHash = common.HexToHash("0xd90508c51efd64e75363cdf51114d9f2a90a79e6cd0f78f3c3038b47695c034a") + + CoreChainConfig = ¶ms.ChainConfig{ + ChainID: big.NewInt(1116), + } + + BuffaloChainConfig = ¶ms.ChainConfig{ + ChainID: big.NewInt(1115), + } + + DevChainConfig = ¶ms.ChainConfig{ + ChainID: big.NewInt(1112), + } +) + var ( // RopstenGethArguments are the arguments to start a ropsten geth instance. RopstenGethArguments = fmt.Sprintf("%s --ropsten", MainnetGethArguments) @@ -143,6 +167,10 @@ var ( // DevGethArguments are the arguments to start a dev geth instance. DevGethArguments = fmt.Sprintf("%s --dev", MainnetGethArguments) + CoreGethArguments = fmt.Sprintf("%s --core", MainnetGethArguments) + + BuffaloGethArguments = fmt.Sprintf("%s --buffalo", MainnetGethArguments) + // MainnetGenesisBlockIdentifier is the *types.BlockIdentifier // of the mainnet genesis block. MainnetGenesisBlockIdentifier = &types.BlockIdentifier{ @@ -171,6 +199,21 @@ var ( Index: GenesisBlockIndex, } + DevGenesisBlockIdentifier = &types.BlockIdentifier{ + Hash: DevGenesisHash.Hex(), + Index: GenesisBlockIndex, + } + + CoreGenesisBlockIdentifier = &types.BlockIdentifier{ + Hash: CoreGenesisHash.Hex(), + Index: GenesisBlockIndex, + } + + BuffaloGenesisBlockIdentifier = &types.BlockIdentifier{ + Hash: BuffaloGenesisHash.Hex(), + Index: GenesisBlockIndex, + } + // Currency is the *types.Currency for all // Ethereum networks. Currency = &types.Currency{ diff --git a/go.mod b/go.mod index 69f035d..dca8afb 100644 --- a/go.mod +++ b/go.mod @@ -2,12 +2,15 @@ module github.com/coinbase/rosetta-ethereum require ( github.com/OneOfOne/xxhash v1.2.5 // indirect - github.com/coinbase/rosetta-sdk-go v0.7.10 - github.com/ethereum/go-ethereum v1.10.20 + github.com/coinbase/rosetta-sdk-go v0.8.3 + github.com/coinbase/rosetta-sdk-go/types v1.0.0 + github.com/ethereum/go-ethereum v1.10.21 github.com/fatih/color v1.13.0 github.com/go-kit/kit v0.9.0 // indirect github.com/spf13/cobra v1.5.0 github.com/stretchr/testify v1.8.0 + github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a // indirect + golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c ) diff --git a/go.sum b/go.sum index 1592155..ddc19c0 100644 --- a/go.sum +++ b/go.sum @@ -103,8 +103,10 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cloudflare/cloudflare-go v0.14.0/go.mod h1:EnwdgGMaFOruiPZRFSgn+TsQ3hQ7C/YWzIGLeu5c304= github.com/coinbase/kryptology v1.8.0 h1:Aoq4gdTsJhSU3lNWsD5BWmFSz2pE0GlmrljaOxepdYY= github.com/coinbase/kryptology v1.8.0/go.mod h1:RYXOAPdzOGUe3qlSFkMGn58i3xUA8hmxYHksuq+8ciI= -github.com/coinbase/rosetta-sdk-go v0.7.10 h1:m5Prrqg9CD1GFZm0tu8z3LEDF/BY5RKUSkODZRpAkEc= -github.com/coinbase/rosetta-sdk-go v0.7.10/go.mod h1:/glajndJEMrp+D7cO2PJZWKeclK8mDyzSCokCMc6Ftc= +github.com/coinbase/rosetta-sdk-go v0.8.3 h1:IYqd+Ser5NVh0s7p8p2Ir82iCvi75E1l0NH2H4NEr0Y= +github.com/coinbase/rosetta-sdk-go v0.8.3/go.mod h1:ChOHc+BNq7zqJDDkui0DA124GOvlAiRbdgAc1U9GMDQ= +github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= +github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ= github.com/consensys/bavard v0.1.8-0.20210915155054-088da2f7f54a/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q= @@ -156,9 +158,8 @@ github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/go-ethereum v1.10.18/go.mod h1:RD3NhcSBjZpj3k+SnQq24wBrmnmie78P5R/P62iNBD8= -github.com/ethereum/go-ethereum v1.10.20 h1:75IW830ClSS40yrQC1ZCMZCt5I+zU16oqId2SiQwdQ4= -github.com/ethereum/go-ethereum v1.10.20/go.mod h1:LWUN82TCHGpxB3En5HVmLLzPD7YSrEUFmFfN1nKkVN0= +github.com/ethereum/go-ethereum v1.10.21 h1:5lqsEx92ZaZzRyOqBEXux4/UR06m296RGzN3ol3teJY= +github.com/ethereum/go-ethereum v1.10.21/go.mod h1:EYFyF19u3ezGLD4RqOkLq+ZCXzYbLoNDdZlMt7kyKFg= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= @@ -215,9 +216,7 @@ github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:x github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= @@ -234,7 +233,6 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= @@ -358,8 +356,8 @@ github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjK github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.3 h1:OVowDSCllw/YjdLkam3/sm7wEtOy59d8ndGgCcyj8cs= -github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= @@ -744,22 +742,17 @@ google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvx google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200108215221-bd8f9a0ef82f/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= 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.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= @@ -775,7 +768,6 @@ gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7 gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=