diff --git a/.gitignore b/.gitignore index 4f328cd4d..2f93fa8b5 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ coverage.out release.tar.gz .env nchainz/ -.idea/ \ No newline at end of file +.idea/ +.csv diff --git a/Makefile b/Makefile index faba985e5..bc26a28ef 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,6 @@ VERSION := $(shell echo $(shell git describe --tags) | sed 's/^v//') COMMIT := $(shell git log -1 --format='%H') +SDKCOMMIT := $(shell echo $(shell go list -m -u github.com/cosmos/cosmos-sdk) | sed 's~github.com/cosmos/cosmos-sdk ~~') all: ci-lint install ############################################################################### @@ -7,7 +8,8 @@ all: ci-lint install ############################################################################### LD_FLAGS = -X github.com/iqlusioninc/relayer/cmd.Version=$(VERSION) \ - -X github.com/iqlusioninc/relayer/cmd.Commit=$(COMMIT) + -X github.com/iqlusioninc/relayer/cmd.Commit=$(COMMIT) \ + -X github.com/iqlusioninc/relayer/cmd.SDKCommit=$(SDKCOMMIT) BUILD_FLAGS := -ldflags '$(LD_FLAGS)' diff --git a/cmd/dev.go b/cmd/dev.go index 2750d285f..572854146 100644 --- a/cmd/dev.go +++ b/cmd/dev.go @@ -1,10 +1,16 @@ package cmd import ( + "encoding/csv" + "encoding/json" "fmt" "os" + "time" + + "github.com/DataDog/datadog-go/statsd" sdk "github.com/cosmos/cosmos-sdk/types" + tmclient "github.com/cosmos/cosmos-sdk/x/ibc/07-tendermint/types" "github.com/spf13/cobra" ) @@ -20,10 +26,91 @@ func devCommand() *cobra.Command { rlyService(), listenCmd(), genesisCmd(), + gozDataCmd(), + gozCSVCmd(), + gozStatsDCmd(), ) return cmd } +func gozCSVCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "goz-csv [chain-id] [file]", + Aliases: []string{"csv"}, + Short: "read in source of truth csv, and enrich on chain w/ team data", + Args: cobra.ExactArgs(2), + RunE: func(cmd *cobra.Command, args []string) error { + to, err := readGoZCsv(args[1]) + if err != nil { + return err + } + cd, err := fetchClientData(args[0]) + if err != nil { + return err + } + for _, c := range cd { + info := to[c.ChainID] + c.TeamInfo = info + } + out, _ := json.Marshal(cd) + fmt.Println(string(out)) + return nil + }, + } + return cmd +} + +func gozStatsDCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "goz-statsd [chain-id] [file] [statsd-host] [statd-port]", + Aliases: []string{"statsd"}, + Short: "read in source of truth csv", + Args: cobra.ExactArgs(4), + RunE: func(cmd *cobra.Command, args []string) error { + + to, err := readGoZCsv(args[1]) + if err != nil { + return err + } + client, err := statsd.New(args[2]) + if err != nil { + return err + } + + cd, err := fetchClientData(args[0]) + if err != nil { + return err + } + for _, c := range cd { + info := to[c.ChainID] + c.TeamInfo = info + c.StatsD(client, args[3]) + } + return nil + }, + } + return cmd +} + +func gozDataCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "goz-dump [chain-id]", + Aliases: []string{"dump", "goz"}, + Short: "fetch the list of chains connected as a CSV dump", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + cd, err := fetchClientData(args[0]) + if err != nil { + return err + } + out, _ := json.Marshal(cd) + fmt.Println(string(out)) + return nil + }, + } + return cmd +} + func genesisCmd() *cobra.Command { cmd := &cobra.Command{ Use: "genesis [chain-id]", @@ -231,3 +318,119 @@ WantedBy=multi-user.target } return cmd } + +func readGoZCsv(path string) (map[string]*teamInfo, error) { + // open the CSV file + f, err := os.Open(path) + if err != nil { + return nil, err + } + defer f.Close() + + // create the csv reader + cs := csv.NewReader(f) + + // ignore the header line + if _, err := cs.Read(); err != nil { + return nil, err + } + + // read all the records into memory + records, err := cs.ReadAll() + if err != nil { + return nil, err + } + + // format the map[chain-id]Info + var out = map[string]*teamInfo{} + for _, r := range records { + out[r[2]] = &teamInfo{r[0], r[1], r[3]} + } + + return out, nil +} + +type teamInfo struct { + Name string `json:"name"` + Address string `json:"address"` + RPCAddr string `json:"rpc-addr"` +} + +func fetchClientData(chainID string) ([]*clientData, error) { + c, err := config.Chains.Get(chainID) + if err != nil { + return nil, err + } + + clients, err := c.QueryClients(1, 1000) + if err != nil { + return nil, err + } + + header, err := c.UpdateLiteWithHeader() + if err != nil { + return nil, err + } + + chans, err := c.QueryChannels(1, 10000) + if err != nil { + return nil, err + } + + var clientDatas = []*clientData{} + for _, cl := range clients { + cd := &clientData{ + ClientID: cl.GetID(), + ChainID: cl.GetChainID(), + TimeOfLastUpdate: cl.(tmclient.ClientState).LastHeader.Time, + ChannelIDs: []string{}, + } + + if err := c.AddPath(cd.ClientID, dcon, dcha, dpor, dord); err != nil { + return nil, err + } + + conns, err := c.QueryConnectionsUsingClient(header.Height) + if err != nil { + return nil, err + } + + cd.ConnectionIDs = conns.ConnectionPaths + for _, conn := range cd.ConnectionIDs { + for _, ch := range chans { + for _, co := range ch.ConnectionHops { + if co == conn { + cd.ChannelIDs = append(cd.ChannelIDs, ch.ID) + } + } + } + } + + // todo deal with channels + clientDatas = append(clientDatas, cd) + + } + return clientDatas, nil +} + +type clientData struct { + ClientID string `json:"client-id"` + ConnectionIDs []string `json:"connection-ids"` + ChannelIDs []string `json:"channel-ids"` + ChainID string `json:"chain-id"` + TimeOfLastUpdate time.Time `json:"since-last-update"` + TeamInfo *teamInfo `json:"team-info"` +} + +func (cd *clientData) StatsD(cl *statsd.Client, prefix string) { + switch { + case len(cd.ConnectionIDs) != 1: + byt, _ := json.Marshal(cd) + fmt.Fprintf(os.Stderr, "%s", string(byt)) + case len(cd.ChannelIDs) != 1: + byt, _ := json.Marshal(cd) + fmt.Fprintf(os.Stderr, "%s", string(byt)) + // TODO: add more cases here + } + cl.TimeInMilliseconds(fmt.Sprintf("relayer.%s.client", prefix), float64(time.Since(cd.TimeOfLastUpdate).Milliseconds()), []string{"teamname", cd.TeamInfo.Name, "chain-id", cd.ChainID, "client-id", cd.ClientID, "connection-id", cd.ConnectionIDs[0], "channelid", cd.ChannelIDs[0]}, 1) +} diff --git a/cmd/paths.go b/cmd/paths.go index 16e23b8ef..6011ee5f5 100644 --- a/cmd/paths.go +++ b/cmd/paths.go @@ -178,11 +178,11 @@ func pathsGenCmd() *cobra.Command { return err } - var srcCon connTypes.IdentifiedConnectionEnd + var srcCon connTypes.ConnectionEnd for _, c := range srcConns { - if c.Connection.ClientID == path.Src.ClientID { + if c.ClientID == path.Src.ClientID { srcCon = c - path.Src.ConnectionID = c.Identifier + path.Src.ConnectionID = c.ID } } @@ -191,11 +191,11 @@ func pathsGenCmd() *cobra.Command { return err } - var dstCon connTypes.IdentifiedConnectionEnd + var dstCon connTypes.ConnectionEnd for _, c := range dstConns { - if c.Connection.ClientID == path.Dst.ClientID { + if c.ClientID == path.Dst.ClientID { dstCon = c - path.Dst.ConnectionID = c.Identifier + path.Dst.ConnectionID = c.ID } } @@ -204,10 +204,10 @@ func pathsGenCmd() *cobra.Command { // If we have identified a connection, make sure that each end is the // other's counterparty and that the connection is open. In the failure case // we should generate a new connection identifier - dstCpForSrc := srcCon.Connection.Counterparty.ConnectionID == dstCon.Identifier - srcCpForDst := dstCon.Connection.Counterparty.ConnectionID == srcCon.Identifier - srcOpen := srcCon.Connection.GetState().String() == "OPEN" - dstOpen := dstCon.Connection.GetState().String() == "OPEN" + dstCpForSrc := srcCon.Counterparty.ConnectionID == dstCon.ID + srcCpForDst := dstCon.Counterparty.ConnectionID == srcCon.ID + srcOpen := srcCon.State.String() == "OPEN" + dstOpen := dstCon.State.String() == "OPEN" if !(dstCpForSrc && srcCpForDst && srcOpen && dstOpen) { path.Src.ConnectionID = relayer.RandLowerCaseLetterString(10) path.Dst.ConnectionID = relayer.RandLowerCaseLetterString(10) @@ -236,9 +236,9 @@ func pathsGenCmd() *cobra.Command { var srcChan chanTypes.IdentifiedChannel for _, c := range srcChans { - if c.Channel.ConnectionHops[0] == path.Src.ConnectionID { + if c.ConnectionHops[0] == path.Src.ConnectionID { srcChan = c - path.Src.ChannelID = c.ChannelIdentifier + path.Src.ChannelID = c.ID } } @@ -249,22 +249,22 @@ func pathsGenCmd() *cobra.Command { var dstChan chanTypes.IdentifiedChannel for _, c := range dstChans { - if c.Channel.ConnectionHops[0] == path.Dst.ConnectionID { + if c.ConnectionHops[0] == path.Dst.ConnectionID { dstChan = c - path.Dst.ChannelID = c.ChannelIdentifier + path.Dst.ChannelID = c.ID } } switch { case path.Src.ChannelID != "" && path.Dst.ChannelID != "": - dstCpForSrc := srcChan.Channel.Counterparty.ChannelID == dstChan.ChannelIdentifier - srcCpForDst := dstChan.Channel.Counterparty.ChannelID == srcChan.ChannelIdentifier - srcOpen := srcChan.Channel.GetState().String() == "OPEN" - dstOpen := dstChan.Channel.GetState().String() == "OPEN" - srcPort := srcChan.PortIdentifier == path.Src.PortID - dstPort := dstChan.PortIdentifier == path.Dst.PortID - srcOrder := srcChan.Channel.Ordering.String() == path.Src.Order - dstOrder := dstChan.Channel.Ordering.String() == path.Dst.Order + dstCpForSrc := srcChan.Counterparty.ChannelID == dstChan.ID + srcCpForDst := dstChan.Counterparty.ChannelID == srcChan.ID + srcOpen := srcChan.State.String() == "OPEN" + dstOpen := dstChan.State.String() == "OPEN" + srcPort := srcChan.PortID == path.Src.PortID + dstPort := dstChan.PortID == path.Dst.PortID + srcOrder := srcChan.Ordering.String() == path.Src.Order + dstOrder := dstChan.Ordering.String() == path.Dst.Order if !(dstCpForSrc && srcCpForDst && srcOpen && dstOpen && srcPort && dstPort && srcOrder && dstOrder) { path.Src.ChannelID = relayer.RandLowerCaseLetterString(10) path.Dst.ChannelID = relayer.RandLowerCaseLetterString(10) @@ -387,7 +387,7 @@ func pathsListCmd() *cobra.Command { srcConn, err := ch[src].QueryConnection(srch) dstConn, _ := ch[dst].QueryConnection(dsth) - if err == nil && srcConn.Connection.Connection.State.String() == "OPEN" && dstConn.Connection.Connection.State.String() == "OPEN" { + if err == nil && srcConn.Connection.State.String() == "OPEN" && dstConn.Connection.State.String() == "OPEN" { connection = "✔" } else { printPath(i, k, pth, chains, clients, connection, channel) @@ -397,7 +397,7 @@ func pathsListCmd() *cobra.Command { srcChan, err := ch[src].QueryChannel(srch) dstChan, _ := ch[dst].QueryChannel(dsth) - if err == nil && srcChan.Channel.Channel.State.String() == "OPEN" && dstChan.Channel.Channel.State.String() == "OPEN" { + if err == nil && srcChan.Channel.State.String() == "OPEN" && dstChan.Channel.State.String() == "OPEN" { channel = "✔" } else { printPath(i, k, pth, chains, clients, connection, channel) @@ -490,13 +490,13 @@ func pathsShowCmd() *cobra.Command { srcConn, err := ch[src].QueryConnection(srch) dstConn, _ := ch[dst].QueryConnection(dsth) - if err == nil && srcConn.Connection.Connection.State.String() == "OPEN" && dstConn.Connection.Connection.State.String() == "OPEN" { + if err == nil && srcConn.Connection.State.String() == "OPEN" && dstConn.Connection.State.String() == "OPEN" { connection = true } srcChan, err := ch[src].QueryChannel(srch) dstChan, _ := ch[dst].QueryChannel(dsth) - if err == nil && srcChan.Channel.Channel.State.String() == "OPEN" && dstChan.Channel.Channel.State.String() == "OPEN" { + if err == nil && srcChan.Channel.State.String() == "OPEN" && dstChan.Channel.State.String() == "OPEN" { channel = true } diff --git a/cmd/query.go b/cmd/query.go index 274d444e9..cf2d13e8b 100644 --- a/cmd/query.go +++ b/cmd/query.go @@ -97,7 +97,17 @@ documents its respective events under 'cosmos-sdk/x/{module}/spec/xx_events.md'. return err } - txs, err := chain.QueryTxs(h.GetHeight(), viper.GetInt(flags.FlagPage), viper.GetInt(flags.FlagLimit), events) + page, err := cmd.Flags().GetInt(flags.FlagPage) + if err != nil { + return err + } + + limit, err := cmd.Flags().GetInt(flags.FlagLimit) + if err != nil { + return err + } + + txs, err := chain.QueryTxs(h.GetHeight(), page, limit, events) if err != nil { return err } @@ -318,7 +328,17 @@ func queryClientsCmd() *cobra.Command { return err } - res, err := chain.QueryClients(viper.GetInt(flags.FlagPage), viper.GetInt(flags.FlagLimit)) + page, err := cmd.Flags().GetInt(flags.FlagPage) + if err != nil { + return err + } + + limit, err := cmd.Flags().GetInt(flags.FlagLimit) + if err != nil { + return err + } + + res, err := chain.QueryClients(page, limit) if err != nil { return err } @@ -342,7 +362,17 @@ func queryConnections() *cobra.Command { return err } - res, err := chain.QueryConnections(viper.GetInt(flags.FlagPage), viper.GetInt(flags.FlagLimit)) + page, err := cmd.Flags().GetInt(flags.FlagPage) + if err != nil { + return err + } + + limit, err := cmd.Flags().GetInt(flags.FlagLimit) + if err != nil { + return err + } + + res, err := chain.QueryConnections(page, limit) if err != nil { return err } @@ -384,7 +414,7 @@ func queryConnectionsUsingClient() *cobra.Command { }, } - return paginationFlags(cmd) + return cmd } func queryConnection() *cobra.Command { @@ -435,7 +465,17 @@ func queryConnectionChannels() *cobra.Command { return err } - chans, err := chain.QueryConnectionChannels(args[1], viper.GetInt(flags.FlagPage), viper.GetInt(flags.FlagLimit)) + page, err := cmd.Flags().GetInt(flags.FlagPage) + if err != nil { + return err + } + + limit, err := cmd.Flags().GetInt(flags.FlagLimit) + if err != nil { + return err + } + + chans, err := chain.QueryConnectionChannels(args[1], page, limit) if err != nil { return err } @@ -476,7 +516,7 @@ func queryChannel() *cobra.Command { }, } - return paginationFlags(cmd) + return cmd } func queryChannels() *cobra.Command { @@ -491,7 +531,17 @@ func queryChannels() *cobra.Command { return err } - res, err := chain.QueryChannels(viper.GetInt(flags.FlagPage), viper.GetInt(flags.FlagLimit)) + page, err := cmd.Flags().GetInt(flags.FlagPage) + if err != nil { + return err + } + + limit, err := cmd.Flags().GetInt(flags.FlagLimit) + if err != nil { + return err + } + + res, err := chain.QueryChannels(page, limit) if err != nil { return err } @@ -532,7 +582,7 @@ func queryNextSeqRecv() *cobra.Command { }, } - return paginationFlags(cmd) + return cmd } func queryPacketCommitment() *cobra.Command { @@ -569,7 +619,7 @@ func queryPacketCommitment() *cobra.Command { }, } - return paginationFlags(cmd) + return cmd } func queryPacketAck() *cobra.Command { @@ -606,7 +656,7 @@ func queryPacketAck() *cobra.Command { }, } - return paginationFlags(cmd) + return cmd } func queryUnrelayed() *cobra.Command { diff --git a/cmd/root.go b/cmd/root.go index 96c9e67e6..66ce42bd4 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -23,8 +23,8 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/codec" - codecstd "github.com/cosmos/cosmos-sdk/codec/std" "github.com/cosmos/cosmos-sdk/simapp" + codecstd "github.com/cosmos/cosmos-sdk/std" "github.com/spf13/cobra" "github.com/spf13/viper" ) diff --git a/cmd/version.go b/cmd/version.go index f7d4f7752..5be6d0da3 100644 --- a/cmd/version.go +++ b/cmd/version.go @@ -3,10 +3,8 @@ package cmd import ( "encoding/json" "fmt" - "io/ioutil" "runtime" - "github.com/sirkon/goproxy/gomod" "github.com/spf13/cobra" "gopkg.in/yaml.v2" ) @@ -16,6 +14,8 @@ var ( Version = "" // Commit defines the application commit hash (defined at compile time) Commit = "" + // SDKCommit defines the CosmosSDK commit hash (defined at compile time) + SDKCommit = "" ) type versionInfo struct { @@ -31,16 +31,6 @@ func getVersionCmd() *cobra.Command { Aliases: []string{"v"}, Short: "Print relayer version info", RunE: func(cmd *cobra.Command, args []string) error { - modBz, err := ioutil.ReadFile("go.mod") - if err != nil { - return err - } - - mod, err := gomod.Parse("go.mod", modBz) - if err != nil { - return err - } - jsn, err := cmd.Flags().GetBool(flagJSON) if err != nil { return err @@ -49,7 +39,7 @@ func getVersionCmd() *cobra.Command { verInfo := versionInfo{ Version: Version, Commit: Commit, - CosmosSDK: mod.Require["github.com/cosmos/cosmos-sdk"], + CosmosSDK: SDKCommit, Go: fmt.Sprintf("%s %s/%s", runtime.Version(), runtime.GOOS, runtime.GOARCH), } diff --git a/go.mod b/go.mod index 78b8a7f09..e7bb09b4c 100644 --- a/go.mod +++ b/go.mod @@ -3,15 +3,14 @@ module github.com/iqlusioninc/relayer go 1.14 require ( - github.com/CosmicCompass/post-chain v0.0.0-20200425063042-f936180f841c + github.com/DataDog/datadog-go v3.7.1+incompatible github.com/avast/retry-go v2.6.0+incompatible github.com/cenkalti/backoff/v3 v3.2.2 // indirect github.com/containerd/continuity v0.0.0-20200228182428-0f16d7a0959c // indirect - github.com/cosmos/cosmos-sdk v0.34.4-0.20200423152229-f1fdde5d1b18 + github.com/cosmos/cosmos-sdk v0.34.4-0.20200502230752-7557f0eda346 github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d github.com/gorilla/mux v1.7.4 github.com/ory/dockertest/v3 v3.5.5 - github.com/sirkon/goproxy v1.4.8 github.com/sirupsen/logrus v1.5.0 // indirect github.com/spf13/cobra v1.0.0 github.com/spf13/viper v1.6.3 diff --git a/go.sum b/go.sum index 470d8033b..41d423070 100644 --- a/go.sum +++ b/go.sum @@ -3,8 +3,8 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= -github.com/99designs/keyring v1.1.4 h1:x0g0zQ9bQKgNsLo0XSXAy1H8Q1RG/td+5OXJt+Ci8b8= -github.com/99designs/keyring v1.1.4/go.mod h1:657DQuMrBZRtuL/voxVyiyb6zpMehlm5vLB9Qwrv904= +github.com/99designs/keyring v1.1.5 h1:wLv7QyzYpFIyMSwOADq1CLTF9KbjbBfcnfmOGJ64aO4= +github.com/99designs/keyring v1.1.5/go.mod h1:7hsVvt2qXgtadGevGJ4ujg+u8m6SpJ5TpHqTozIPqf0= 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= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= @@ -13,8 +13,8 @@ github.com/ChainSafe/go-schnorrkel v0.0.0-20200102211924-4bcbc698314f h1:4O1om+U github.com/ChainSafe/go-schnorrkel v0.0.0-20200102211924-4bcbc698314f/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= -github.com/CosmicCompass/post-chain v0.0.0-20200425063042-f936180f841c h1:X6DyGTZFA9UySkh8EWhnWO26XRWjHlD95TyKPFfoR0E= -github.com/CosmicCompass/post-chain v0.0.0-20200425063042-f936180f841c/go.mod h1:3X8dI91RhiEOGbCKCHkQmTrNEC3d16tZMee1snJwTbw= +github.com/DataDog/datadog-go v3.7.1+incompatible h1:HmA9qHVrHIAqpSvoCYJ+c6qst0lgqEhNW6/KwfkHbS8= +github.com/DataDog/datadog-go v3.7.1+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Microsoft/go-winio v0.4.14 h1:+hMXMk01us9KgxGb7ftKQt2Xpf5hH/yky+TDA+qxleU= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= @@ -97,8 +97,8 @@ github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7 github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cosmos/cosmos-sdk v0.34.4-0.20200423152229-f1fdde5d1b18 h1:9OjontPURNCXMTCeyBx7uG3R3kAGYITXgjFaNj7qfr4= -github.com/cosmos/cosmos-sdk v0.34.4-0.20200423152229-f1fdde5d1b18/go.mod h1:Kcgs8c2WWtO2Q+KmDogvGRw+sdEqpvHYXFhj/QiAoOg= +github.com/cosmos/cosmos-sdk v0.34.4-0.20200502230752-7557f0eda346 h1:8zSHAaoImyObcijcfmAxiRRfYR65IW/i3SkQKE+b2d8= +github.com/cosmos/cosmos-sdk v0.34.4-0.20200502230752-7557f0eda346/go.mod h1:tvCen72hkJxkYT1/CsOaKHjZ4PouX4Isp4w9aRL2K4c= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d h1:49RLWk1j44Xu4fjHb6JFYmeUnDORVwHNkDxaQ0ctCVU= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/ledger-cosmos-go v0.11.1 h1:9JIYsGnXP613pb2vPjFeMMjBI5lEDsEaF6oYorTy6J4= @@ -132,7 +132,6 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/etcd-io/bbolt v1.3.3 h1:gSJmxrs37LgTqR/oyJBWok6k6SvXEUerFTbltIhXkBM= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51 h1:0JZ+dUmQeA8IIVUMzysrX4/AKuQwWhV2dYQuPZdvdSQ= github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= @@ -151,12 +150,10 @@ github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeME github.com/gibson042/canonicaljson-go v1.0.3 h1:EAyF8L74AWabkyUmrvEFHEt/AGFQeD6RfwbAuf0j1bI= github.com/gibson042/canonicaljson-go v1.0.3/go.mod h1:DsLpJTThXyGNO+KZlI85C1/KDcImpP67k/RKVjcaEqo= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0 h1:wDJmvq38kDhkVxi50ni9ykkdUr1PKgqKOoi01fa0Mdk= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.10.0 h1:dXFJfIHVvUcpSgDOV+Ne6t7jXri8Tfv2uOLHUZ2XNuo= github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0 h1:MP4Eh7ZCb31lleYCFuwm0oe4/YGak+5l1vA2NOE80nA= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= @@ -171,7 +168,6 @@ github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7a github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -182,10 +178,8 @@ github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4 h1:87PNWwrRvUSnqS4dlcBU/ftvOIBep4sYuBLlh6rX2wk= github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= @@ -199,7 +193,6 @@ github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -220,7 +213,6 @@ github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc= github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.1 h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= @@ -231,7 +223,6 @@ github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= -github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f h1:8N8XWLZelZNibkhM1FuF+3Ad3YIbgirjdMiVA0eUkaM= github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is= github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= @@ -287,7 +278,6 @@ github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6 github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= @@ -329,6 +319,8 @@ github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= +github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= @@ -342,14 +334,10 @@ github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQ github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0 h1:WSHQ+IS43OoUrWtD1/bbclrwK8TTH5hzp+umCiuxHgs= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.1 h1:q/mM8GF/n0shIN8SaAZ0V+jnLPzen6WIVZdiwrRlMlo= github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v1.4.3 h1:RE1xgDvH7imwFD45h+u2SgIfERHlS2yNG4DObb5BSKU= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0 h1:XPnZz8VVBHjVsy1vzJmRwIcSwiUO+JFfrv/xGiigmME= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= @@ -380,7 +368,6 @@ github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.7.0 h1:7utD74fnzVc/cpcyy8sjrlFr5vYpypUixARcHIMIGuI= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= @@ -389,7 +376,6 @@ github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0 github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -399,25 +385,21 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= -github.com/prometheus/client_golang v0.9.3 h1:9iH4JKXLzFbOAdtqv/a+j8aewx2Y8lAjAydhbaScPF8= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= -github.com/prometheus/client_golang v1.5.0 h1:Ctq0iGpCmr3jeP77kbF2UxgvRwzWWz+4Bh9/vJTyg1A= github.com/prometheus/client_golang v1.5.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.5.1 h1:bdHYieyGlH+6OLEk2YQha8THib30KP0/yD0YH9m6xcA= github.com/prometheus/client_golang v1.5.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 h1:gQz4mCbXsO+nc9n1hCxHcGA3Zx3Eo+UHZoInFGUIXNM= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.0 h1:7etb9YClo3a6HjLzfl6rIQaU+FDfi0VSX39io3aQ+DM= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= @@ -425,15 +407,12 @@ github.com/prometheus/common v0.9.1 h1:KOMtN28tlbam3/7ZKEYKHhKoJZYYj3gMH4uc62x7X github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084 h1:sofwID9zm4tzrgykg80hfFph1mryUeLRsUfoocVVmRY= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8 h1:+fpWZdT24pJBiqJdAwYBjPSk+5YmQzYNPYzQsdzLkt8= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a h1:9ZKAASQSHhDYGoxY8uLVpewe1GDZ2vu2Tr/vTdVAkFQ= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0 h1:MkV+77GLUNo5oJ0jf870itWm3D0Sjh7+Za9gazKc5LQ= github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= @@ -443,21 +422,14 @@ github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6So github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= -github.com/rs/zerolog v1.12.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= -github.com/rs/zerolog v1.14.3/go.mod h1:3WXPzbXEEliJ+a6UFE4vhIxV8qR1EML6ngzP9ug4eYg= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirkon/gitlab v0.0.5/go.mod h1:shZhI7CQWIXV84FhVUPietVUS3OcjOm9/YQwrgyVL0Q= -github.com/sirkon/goproxy v1.4.8 h1:99oq8rx+xfMb5tkyP6z6ddpkvpT9wJimvtwNmRmI7LA= -github.com/sirkon/goproxy v1.4.8/go.mod h1:bdsQaJ3VBi0Ua4fML6P3AFtmdkcbO3IHCfQoObjdO3c= github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= -github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.5.0 h1:1N5EYkVAPEywqZRJd7cwnRtCb6xJx7NH3T3WUTF980Q= github.com/sirupsen/logrus v1.5.0/go.mod h1:+F7Ogzej0PZc/94MaYx/nvG9jOFMD2osvC3s+Squfpo= @@ -469,8 +441,6 @@ github.com/snikch/goodman v0.0.0-20171125024755-10e37e294daa/go.mod h1:oJyF+mSPH github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= @@ -478,22 +448,18 @@ github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.6 h1:breEStsVwemnKh2/s6gMvSdMEkwW0sK8vGStnlVBMCs= github.com/spf13/cobra v0.0.6/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.0.0 h1:6m/oheQuQ13N9ks4hubMG6BnvwOeaJrqSPLahSnczz8= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/spf13/viper v1.6.2 h1:7aKfF+e8/k68gda3LOjo5RxiUqddoFxVq4BKBPrxk5E= github.com/spf13/viper v1.6.2/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= github.com/spf13/viper v1.6.3 h1:pDDu1OyEDTKzpJwdq4TiuLyMsUgRa/BT5cn5O62NoHs= github.com/spf13/viper v1.6.3/go.mod h1:jUMtyi0/lB5yZH/FjyGAoH7IMNrIhlBf6pXZmbMDvzw= @@ -504,10 +470,8 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= @@ -526,11 +490,9 @@ github.com/tendermint/go-amino v0.15.1 h1:D2uk35eT4iTsvJd9jWIetzthE5C0/k2QmMFkCN github.com/tendermint/go-amino v0.15.1/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= github.com/tendermint/iavl v0.13.3 h1:expgBDY1MX+6/3sqrIxGChbTNf9N9aTJ67SH4bPchCs= github.com/tendermint/iavl v0.13.3/go.mod h1:2lE7GiWdSvc7kvT78ncIKmkOjCnp6JEnSb2O7B9htLw= -github.com/tendermint/tendermint v0.33.2 h1:NzvRMTuXJxqSsFed2J7uHmMU5N1CVzSpfi3nCc882KY= github.com/tendermint/tendermint v0.33.2/go.mod h1:25DqB7YvV1tN3tHsjWoc2vFtlwICfrub9XO6UBO+4xk= github.com/tendermint/tendermint v0.33.4 h1:NM3G9618yC5PaaxGrcAySc5ylc1PAANeIx42u2Re/jo= github.com/tendermint/tendermint v0.33.4/go.mod h1:6NW9DVkvsvqmCY6wbRsOo66qGDhMXglRL70aXajvBEA= -github.com/tendermint/tm-db v0.4.1 h1:TvX7JWjJOVZ+N3y+I86wddrGttOdMmmBxXcu0/Y7ZJ0= github.com/tendermint/tm-db v0.4.1/go.mod h1:JsJ6qzYkCGiGwm5GHl/H5GLI9XLb6qZX7PRe425dHAY= github.com/tendermint/tm-db v0.5.1 h1:H9HDq8UEA7Eeg13kdYckkgwwkQLBnJGgX4PgLJRhieY= github.com/tendermint/tm-db v0.5.1/go.mod h1:g92zWjHpCYlEvQXvy9M168Su8V1IBEeawpXVVBaK4f4= @@ -541,7 +503,6 @@ github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijb github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= github.com/zondax/hid v0.9.0 h1:eiT3P6vNxAEVxXMw66eZUAAnU2zD33JBkfG/EnfAKl8= github.com/zondax/hid v0.9.0/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= @@ -565,10 +526,8 @@ golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4 h1:HuIa8hRrWRSrqYzx1qI49NNxhdi2PrY7gxVSq1JjLDc= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413 h1:ULYEB3JvPRE/IfO+9uO7vKV/xzVTO7XPAwm8xbf4w2g= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200406173513-056763e48d71 h1:DOmugCavvUtnUD114C1Wh+UgTgQZ4pMLzXxi1pSt+/Y= @@ -597,11 +556,8 @@ golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7 h1:rTIdg5QFRR7XCaK4LCjBiPbx8j4DQRpdYMnGn/bJUEU= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7 h1:fHDIZ2oxGnUZRN6WgWFCbYBjH9uqVPRCUVUDhs0wnbA= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191003171128-d98b1b443823 h1:Ypyv6BNJh07T1pUSrehkLemqPKXhus2MkfktJ91kRh4= golang.org/x/net v0.0.0-20191003171128-d98b1b443823/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e h1:3G+cUijn7XD+S4eJFddp53Pv7+slrESplyjG25HgL+k= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= @@ -611,9 +567,7 @@ golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJ 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= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -623,7 +577,6 @@ golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -633,15 +586,12 @@ golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42 h1:vEOn+mP2zCOVzKckCZy6YsCtDblrpj/w7B9nxGNELpg= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200121082415-34d275377bf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82 h1:ywK/j/KkyTHcdyYSZNXGjMwgmDSfjglYZ3vStQ/gSCU= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -658,7 +608,6 @@ golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3 golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= @@ -689,11 +638,8 @@ 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.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0 h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1 h1:zvIju4sqAGvwKspUQOhwnpcqSbzi7/H6QomNNjTL4sk= google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0 h1:bO/TA4OxCOummhSf10siHuG7vJOiwh7SpRpFZDkOgl4= google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= google.golang.org/grpc v1.28.1 h1:C1QC6KzgSiLyBabDi87BbjaGreoRgGUF5nOyvfrAZ1k= google.golang.org/grpc v1.28.1/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= @@ -706,7 +652,6 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= 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 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -725,7 +670,6 @@ gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRN gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= 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.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/goz-roster.csv b/goz-roster.csv new file mode 100644 index 000000000..b8acb2224 --- /dev/null +++ b/goz-roster.csv @@ -0,0 +1,131 @@ +team_name,cosmos_addr,chain_id,rpc,Contact info,Notes +Node A-Team,cosmos1s0fymxncdm2tga7swzucywggcunxvq89d3pcyn,achain,tcp://achain.nodeateam.com:26657,jeeuk.lim@nodeateam.com, +Agoric GoZ,cosmos1kunv205wrrywmny2nhyt87kzeuq5nhq9z8vncw,agoric-goz-1.0.0,tcp://178.128.254.143:26657,tribble+goz@agoric.com,Multiple endpoints https://github.com/cosmosdevs/GameOfZones/pull/80 +All in Bits Inc,cosmos1xnc4hwja48e77nms0a49eqkdw36d7dqzrj006n,aib-goz-1,tcp://138.197.157.152:26657,peng@tendermint.com, +Akashian,cosmos1dt6wukc53dangle8qz7xjc792u0yrdc35tlcfm,akashian,tcp://159.89.183.144:26657,greg@akash.network, +Aneka,cosmos14ahfuwynumydy2kz2gq6qe2l4w4n7pr8ycka55,aneka,tcp://goz.aneka.io:26657,anil@vitwit.com, +Anonstake,cosmos10zehl3artk76qfmn4h09pxfvvq264ew2me8lap,anon-chain,tcp://116.203.245.68:26657,support@anonstake.com, +Ape Smash,cosmos1jljl9ks0093mewjjmdkdujp6cs3du8pzgh99e4,ape_smash,tcp://116.203.208.175:26657,andrew.work0@gmail.com, +ArmyIDs,cosmos13u9vzlmxpk44uzmzvhgctkw0cpht42cgwjw54c,armyids,tcp://goz.armyids.com:26657,armyids@gmail.com, +Atomic Bombers,cosmos1kmrn6a4wf2sqw6fxemhee9tr6qz46wvl0hdzya,atomicbombers,tcp://bombers.dokia.cloud:26657,goz@cosmos-hub.ro, +Audit.One,cosmos1nknhkw97mj8aelekg7v73am6zlrdc3fd3n2lyc,audit.one,tcp://goz.audit.one:26657,subash@audit.one, +Alpha Virtual,cosmos1x2f3vpdww36px4r6m40mzjnndn8aghfq8yeda7,avnet,tcp://goz.cosmos.alphavirtual.com:26657,nbolam@alphavirtual.com, +Aynelis,cosmos1afed0xhvc2hzkn38fpqcfl9m9wjycqw7mtvkag,aynchain,tcp://52.247.127.40:26657,aynelis@protonmail.com, +B-Harvest,cosmos1f9z2gazg52a8n6c06xf2234c9y0tzsgtqv4j8q,B-Harvest,tcp://ibc.bharvest.io:26657,contact@bharvest.io, +BitSong,cosmos12m0en3wm0f50w25nzqfxvxu3je0vk3qvwqqxxt,bitsong-goz-1,tcp://goz-1.bitsong.network:26657,a.recca@bitsong.io, +BlockNgine,cosmos1qmd7y0mw63qcuts0z53sptne6vypen5q00xmww,blockngine-ibc,tcp://rpc.blockngine.io:26657,nathan@blockngine.io, +BigBeautifulSilverPlate,cosmos1fj9lg5n4demt42t6ey6wfzx4ut9pz6yyltzxyx,BlogChain,tcp://blogchain.xyz:26657,jtw@onenode.com, +teddyrabbit,cosmos1fnp2kdujj2vrlfj5y4nly2wpy9unjthx8ngfx8,brankochain,tcp://149.248.61.193:26657,dzemajl@gmail.com, +BurekSteak,cosmos12gec735tjutvyjwc0lnlqllgdufnctg62uek7r,burek,tcp://95.216.198.111:26657,gosp.mouse@gmail.com, +Byzantine Battalion,cosmos12sjv59l22c8evpxd3ekqxzhhg82d4meqx5dajg,byzantine-goz,tcp://178.128.186.74:26657,sunny@sikka.tech, +Capybara,cosmos1y4gs9xtwk0335zf3kej8el5kzkpalq3dtmxljr,capychain,tcp://capychain.com:26657,latenthero@protonmail.com, +Bit Cat,cosmos12knqu4ecmg0982plzs9m9f5jareh0cvedv6yz0,cat,tcp://3.130.208.130:26657,wjdfxa@gmail.com, +Chainapsis,cosmos1l28a844m6p0csr6ypcpnygl4hrg9vr4mqty83j,chainapsis-1a,http://goz.chainapsis.com:80,josh@chainapsis.com, +chainflow,cosmos1c5udlt5f3m3fj3p2eufw3k9407df8zkhrjlg33,chainflow,tcp://goz.chainflow.io:26657,chris@chainflow.io, +ChainLayer,cosmos1j4tmary50sq3cfn6n9vk3k7addplljjmfs5fjd,chainlayer,tcp://176.9.238.157:26657,hello@chainlayer.io, +Cosmic Compass (CoCo),cosmos17hm0z0gme9nd8th32yz4lde5k48t3nykuu90yq,coco-post-chain,tcp://ibc.cosmiccompass.io:26657,info@cosmiclabs.co, +Compass,cosmos1u0fdsfw0wflm2n9x2ggv09u89ed2nhmfgq88zr,Compass,tcp://goz.val.network:26657,knight.drawing@gmail.com, +COSMOON,cosmos1402ggxz5u6vm29sqztwqq8vxs3ke6dmw67kpp9,cosmoon-testnet,tcp://ibc.cosmoon.org:26657,info@cosmoon.org, +crazyzoo,cosmos1fxwzwvrd30gzl39c6yy244l3zgxl4x9urnw5zf,crazyzoo,tcp://47.240.29.196:26657,260442518@qq.com, +cyber~Congress,cosmos13fmcdmkurnaz6sklf0tyynln4k48xjj0dwuvpu,cyberdevs,http://cyberdevs.cyberd.ai:26657,serejandmyself@gmail.com, +Dawns.World,cosmos1v5fhgkkkvcd9sqpd5arzce0h36jqezcwmf2w3z,dawnsworld,tcp://testnet.dawns.world:26657,wangfeiping@outlook.com, +Datachain,cosmos1hezg9c7etk6qvs5p6j22jgxuqdc82fy9tnynmr,dcz,tcp://goz.dev.datachain.jp:26657,jun.kimura@speee.jp, +Defending.Network,cosmos1hcapezvn75r8p7c4xglsq82kzrvffudmyp50td,defending-network,tcp://ibc.defending.network:26657,martin@holovsky.net, +disraptor,cosmos18wfsw3jqna9268crdzksz897uw08pzdmjwjn5n,disraptorchain,tcp://3.21.156.79:26657,oteperda@gmail.com, +TeamDK,cosmos1hu9yyd6vyk840gu2lvnajhhmnvxufydxucgsmz,dking,tcp://34.66.86.162:26657,edwardmarshalldteach@gmail.com, +cdos,cosmos1xl0pc9phu3meevzfy4v8f35c2vy2as3trzwt9w,dos-ibc,tcp://goz.dos.network:26657,info@dos.network, +Drops Power,cosmos1jr2kxdw3je9kr7rhxw8y6t40qrms53z5ksc3w2,dropschain,tcp://dropschain.com:26657,dropsearn@gmail.com, +DUNHILL,cosmos154gkwufztxevns3adkmk3q8uhp8mlqwd03r2zy,dunhillchain,tcp://52.231.28.219:26657,heartbreaker.jung@gmail.com, +Enigma,cosmos1n4syv5vyndkpswyu6a6cgjvuwzwnrte854c547,enigma-goz,tcp://val1.goz.enigma.co:26657,can@enigma.co, +Everstake,cosmos1zt902wvvf2340qpq3uxtmst8a5cpgww95s6rv9,everstakechain,tcp://goz.everstake.one:26657,vp@everstake.one, +Protofire,cosmos14el02ask2rr9uez9gc5uqr98cskdt4ydz9nw2x,EVM.Protofire.io,tcp://3.22.194.241:26657,vitaliy.chernov@altoros.com, +Chorus One,cosmos1a66jar5lh0mgzexgqfl7rkcuy6gt5rj06l9v2e,fedzone-1,tcp://fedzone.chorus.one:26657,meher@chorus.one, +Fetch.AI,cosmos16sctx4fhuczxxy6sfj2e5s4v72sqdspx6eectt,fetchBeacon,tcp://fetch-goz.fetch.ai:26657,jonathan.ward@fetch.ai, +Figment Networks,cosmos1yf058v9ur9t59nhmwew2z90q0m28t9fk4nmksr,figment,tcp://goz-ibc.figment.network:26657,ajc@figment.network, +finalbattle,cosmos13m5p3g4xcsmnsneh4c82dmuy45vqa0wav3659p,finalbattlechain,tcp://18.217.240.174:26657,sasha0632513061@gmail.com, +FreeFlix Media,cosmos1ljd64u6uf5x23c85e6t0v7rquss3weqff6x3mj,freeflix-media-hub,tcp://ibc.freeflix.media:26657,info@freeflix.media, +huglester,cosmos14r2l50t22kk63st9e0zeg3m6hjel6gnzpnmr2j,gemstone,tcp://goz.jptpool.com:26657,huglester@gmail.com, +Genesis Lab,cosmos1pah42z0avajjcpdf5u83p9vjp9vpkkc4p82sx3,genesis-lab,tcp://95.216.216.117:26657,team@genesislab.net, +Gruberx_crew,cosmos1ygz4u35t0yyt7vm6fxtl0x6t8nyuw0dly05asn,grbx-route,tcp://176.9.8.110:26657,gruberxr@gmail.com, +gunray,cosmos1wu8mv84pwsmcryq98w8nzwskusmqyv24qpy9pv,gunchain,tcp://goz.gunray.xyz:26657,zuzic.domagoj@gmail.com, +Strong,cosmos1wrdpscszcevkeplqykedphclquh3ha6mr0709c,hada,tcp://15.165.120.204:26657,node@coinone.com, +hashquark,cosmos1a76ndykhlcgm7u7rexn99vmj2uptm2633ypw6f,hashquarkchain,http://goz.hashquark.io:26657,zhiyuan.liang6@gmail.com, +kokuwa,cosmos1xl67sr4mdv2ejc4whgpkz66llm2v8g24dmxcn7,hongo-3,tcp://18.178.211.15:26657,aseknock@gmail.com, +Interstation,cosmos108rpmv2kr798p7nalkdgdexkmem70shkecqvhh,interstation,tcp://interstation.cosmostation.io:26657,business@cosmostation.io, +IRISnet,cosmos10uvrya46d400ymgp7ygdp6auasfvfx9lxpdtja,irishub-goz,tcp://35.236.168.104:26657,yelong@bianjie.ai, +isillien,cosmos1c4e4pd8p39tr4tvtgdt8zapu4pmmxg7693235m,isillienchain,tcp://49.12.106.6:26657,isillien@gmail.com, +Certus One,cosmos1t73d3c57mu7w4gncf50yuupfutkqthjw7d6f66,it-wasnt-us,tcp://wasntus.goz.certus.one:26657,leo@nexantic.com, +stakefish,cosmos1vskhrny09fjjmrsf90nqccaxcp40eyc2gvkgp4,jellyfish,tcp://goz.cosmos.fish:26657,hi+goz@stake.fish, +joonZone,cosmos17dp0722pxv3fycv2g3gvr00reug9cgq56mhpmm,joon-chain-goz,tcp://joon-chain-goz.cosmostation.io:26657,thedigitalimg@gmail.com, +JS,cosmos18yk6fxjd2sgds5qk6zkhwjfdafxs8z535qyht9,js,tcp://54.211.26.151:26657,jws325@cornell.edu, +JokerTheBond,cosmos1v6p6p0dr4ll0p53q8zn78fdf5dd5ldmnecp0wl,jtbchain,tcp://213.32.70.133:26657,simor98@gmail.com, +Kira Core,cosmos1efzs6x9244z9hjz6pcrsam4muxxms74wz98h7c,kira-1,tcp://goz.kiraex.com:10001,asmodat@gmail.com, +Konstellation,cosmos1mtv5e6zq8grgpnrsm7cr23h5k5q9qw4egz6678,konstellation,tcp://goz.konstellation.tech:26657,social@konstellation.tech, +Mia // Lableet,cosmos1g0n9dhy4d3vyvaesgtw0sdruehugyyk3mv3hge,kugs-030,tcp://goz.labeleet.com:26657,maria.gdinca@gmail.com, +Microtick,cosmos153lxtrh996g6g0lrv3uquw7dzpya8kfzz8tj7h,microtick-ibc,tcp://45.79.207.112:26657,mark@shapeshift.io, +mintonium,cosmos1sjj6v2v2hzl9mrup5gnnta66pd76krz3qw3hhw,mintonium,tcp://45.77.91.232:26657,joekudi@gmail.com, +mmmh-validator,cosmos1erslkc49pkcxa7f44vu0se4w7n4tl53la7ta8y,mmmh-lazy,tcp://mmmh.sytes.net:26657,liamsi@mmmh.studio, +modulus,cosmos18l22jvep8cc8cdzvyntc4utnkgkqhz2vj84jt7,modulus-goz-1,tcp://goz.modulus.network:26657,mail+goz@theophoric.com, +Molecule,cosmos14htdkcv4mrm0txhnmeqelaxfekc24k8s36e7q0,moleculechain,tcp://molecule.adri.co:26657,cosmos@adrianverde.com, +Desmos,cosmos1engcn8p4vj8fsta62l3n3c5menm6sc9djvrzee,morpheus-goz-1a,http://goz.desmos.network:80,info@forbole.com, +Muzamint,cosmos1runeqr6aagcgv9ysw420mvw0sfymsz58szxew9,muzamint,tcp://muzamint.com:26657/,mingderwang@gmail.com, +Newroad Network,cosmos1l0qgnjr4uw3jv7r735kfgu3n6awpnqea229m4c,newroadchain,tcp://goz.newroad.network:26657,kasper@newroad.network, +nibiru,cosmos15fz7asxctg528lwgde3x633vru9rgz64qkvrq7,nibiru-ibc,tcp://goz.nibiru.network:26657,1018eguchi@gmail.com, +blockscape,cosmos16tdeldrswlksrejchqtzndrkal9cxawtnh8mvd,NoChainNoGain-1000,tcp://ibc.blockscape.network:26657,blockscape-dev@mwaysolutions.com, +Node123,cosmos15h39aypryvsd87p2tsxxv0aedrlqu93neenjys,Node123,tcp://193.30.121.61:26657,574984600@qq.com, +Nodeasy.com,cosmos152zx830nl6gy97m6qms7chyktzk729cyveqv9n,nodeasy,tcp://144.76.118.133:26657,wenzhihao@bitopia.cn, +staked.sh,cosmos1z0gsnxexgc5jxgcl3uz55kqy29y8ck7ayk5ejz,nuube-goz,tcp://ibc.stake.sh:26657,djflorez@nuube.com, +okchain/OKex,cosmos1rdrtfn7rgzula94vv9cz4tah75uh2zr930ftes,okchain,tcp://3.112.29.150:26657,xiangjian.meng@okg.com, +Kysen Outpost,cosmos1mpqvdhh7cq47j6qjxgtwarsxsgxdzjw9cd66ul,outpost,tcp://goz.kysenpool.io:26657,jack@kysenpool.io, +ozone,cosmos19ytadpwm7687ywft6sdksz2j5sgxh4ywl5ev44,ozone,tcp://goz.ozonechain.xyz:26657,ozone.chain@gmail.com, +P2P.ORG - P2P Validator,cosmos1vf93vh2rsn4yf3rgu5sy8n39q52cna0rewmrn4,p2p-org-1,tcp://p2p-org-1.goz.p2p.org:26657,vs@p2p.org, +Persistence,cosmos1tznxzdk4t9vr9nstrvjwmnztq4k6wjj55cgeqq,persistence,tcp://relayer.persistence.one:26657,tushar@persistence.one, +Cypher Core,cosmos1ww8zfd4ts6fac55wt8z5lnm5wdfqy67ldanua8,petomhub,tcp://goz.cyphercore.io:26657,admin@cyphercore.io,Updated chainID +Bitple,cosmos1vndhkx9sdheewhdg58ug7fy388l8wm689gn7jg,plex,tcp://ibc.j96.me:26657,jjangg96@gmail.com, +Protofire,cosmos1y8ejrm82rzaqf5n4n5nx338m6x3u9x082qfqe8,Protofire.io,tcp://3.134.115.80:26657,vitaliy.chernov@altoros.com, +pupu,cosmos10xq9nh42m7wd79mel9uhae4xqk7yk7yurs5q2v,pupu,tcp://35.230.42.221:26657,becool19800101@yahoo.com, +Pylons,cosmos1jgvmax3xnfq9wgr45m5xjsq9fr62d8uyadtvn9,pylons,tcp://node.pylons.tech:26657,m@pylons.tech, +Meeseeks,cosmos1mhdnss2nd7mx29qnc9gqp4lpxjqdp3j6drhe0v,meeseeks,tcp://validating.for.co.ke:26657,grizz@20c.com, +Regen,cosmos1fnlw6290j037gyff6zdy8rzlv88wr9qn3v4l3h,regengoz,tcp://regengoz.vaasl.io:26657,regengoz@20c.com, +ResponsibleChain,cosmos1dtx6e6we59j03grm55zpc3pymz52msx0hsq8ce,responsible,tcp://95.216.204.82:26657,vs+sockpuppet@p2p.org, +retz80,cosmos1ud9yn60f9eppkgc7hy6tt8ye9kaga8mtd4e6ep,retz80chain,tcp://tnet-csg.c9ret.xyz:26657,ret@c9ret.xyz, +RVC Group,cosmos1qyfu9s408exw2yae0d86m5tupr8q9h8qt4tnge,rvc-1,tcp://rvc.novy.pw:26657,stake@novy.pw,Changed cosmos address +HashMoney,cosmos178zck85waenzw4mhwchkzw44wst8kqx3he9hzu,seen,tcp://35.222.132.154:26657,imnisen@163.com, +Sentinel,cosmos1mcm426eejm5y7dsjvppxfg2dd2uel0gyt8cxxj,sentinel-goz,tcp://one.goz.sentinel.co:26657,ironman0x7b2@protonmail.com, +astronomia,cosmos1hwux8hlz2xrwggdcltg7net4v7sfjnn76w5ec3,setanchain,tcp://setan.ml:26657,harshjniitr@gmail.com,Updated cosmos_addr 4/28 +Simply Staking,cosmos1sreeksgvr62zgamuewp0znkta8gdkj7agxdl56,simplystaking,tcp://80.64.211.64:26657,staking@simply-vc.com.mt, +Validatorich,cosmos1mvu547ythhm8c7ew2xnh6d8njhvdljgen3dr65,snakey,tcp://ananas.alpe1.net:26657,info@alexanderpeters.de, +SNZPool,cosmos1tstp7pl0fd6zk2v3tzmpq86x8pv29jevyrgswk,SNZPoolHub,tcp://18.136.225.71:26657,shuai.yuan@snzholding.com, +Source,cosmos1qz2s5unwu3l4hn2jw09cnsd3muvrcerezm9c52,source-xgoz,tcp://goz.source.network:26657,simmons.johnalan@gmail.com, +Stake Capital,cosmos1c6vyd9sqmxslqkrqtn84det6ukefrxrnwru66p,stake-capital,tcp://goz.stakedao.org:26657,julien.bouteloup@gmail.com, +Stakebird,cosmos1ar20w6rf4ulfljld7xaj4qjklyulr5myw0xqt6,stakebird-1,tcp://goz.stakebird.com:26657,shane@rocketprotocol.io, +Staked,cosmos1w8ueuqk007aqy33tgfx5yveatlfamapwty47p0,staked-ibc,tcp://ibc.staked.cloud:26657,devops@staked.us, +stakematic,cosmos1pzgw03td8l5hsa3e6jert6gpjfratxxsm32adg,stakematic,tcp://35.198.125.128:26657,stakematic@gmail.com, +StakesStone,cosmos1dx2jqcrjfd3y9mvdd56t54j7pa2wgx2qqk0tx2,stakesstonechain,tcp://5.181.51.80:26657,jonasbosch@gmx.de, +stakewolf,cosmos1auhk88eyt7y4paywhtv3ykqfzfkmtjzk57aynt,stakewolf,tcp://stakewolf.com:26657,roxy10bcn@gmail.com, +Stakin,cosmos1atkhc2che0en0yzy5prh00wqwn5nhclvlgymrm,stakin,tcp://161.35.45.178:26657,hello@stakin.com, +staking-defense,cosmos1c00l9xvwmh4f77pwnnnh5x0fww0x245sdlzlxg,staking-defense,tcp://goz.stakingdefense.org:26657,hello@chainflow.io, +Staking Fund,cosmos1a533d3t2k5pynxh3hn3mzjhwe9jmeskqxh3cz9,stakingfund,tcp://ibc.staking.fund:26657,chanwoo@staking.fund, +StarCluster,cosmos16gp9q9euupf2m96cvv7kta7q09h8ce0cl6wky9,starcluster-1337,tcp://goz.starcluster.tech:26657,hertz@starcluster.tech, +Stratus,cosmos1gx77frp5shnhnf2ffupt6mp97nalxsyav7mphq,stardust-1111,tcp://stratus.mycryptobets.com:26657,meleacrypto@gmail.com, +Dapps Inc.,cosmos1vxnhz4jzs5qushcfrdwg3ptp28nfevpg3u78hu,stateset,tcp://35.209.174.13:26657,dominic@dapps-inc.com, +Team Stoner,cosmos15dgc2xv3l28vqy9n6r8q7aya5s37zdu2phjxm8,stoner-ibc,tcp://157.230.75.134:26657,stonroner@gmail.com, +Commonwealth Labs Inc.,cosmos1k8zxp6yxqqpgafe0m3ujs2gccs9f5zkvy9anv8,supernova,tcp://supernova.commonwealth.im:26657,founders@commonwealth.im, +Supernova,cosmos15wa9rkp28zsw8ymuj7dpvpyuqd5ncywnggsqeu,supernovachain,tcp://supernovachain.cosmostation.io:26657,jaybkim2@gmail.com, +stakezone,cosmos1ufa0sa4hjwj389t2f0r028mspr4nr5eu0vg4d6,szchain,tcp://goz2.stake.zone:26657,info@stake.zone, +Taidi,cosmos1xgcjknmn6y2cjapje5aw6fq93a5r7hejcu6y6j,TaidiHub,tcp://13.250.207.24:26657,bearflyinghaha@gmail.com, +TheTechTrap,cosmos12c3wmcqqhy3xvkac5zc5rvgxf2hunm6qydm7az,thetechtrap-goz,tcp://thetechtrap.com:26657,htrap@thetechtrap.com, +timetowin,cosmos1wltxa7d9lu3pgm2lyz5ser8fvasmtxhlxu0nxw,timetowinchain,tcp://3.22.166.56:26657,supplydnepr@gmail.com, +Tom,cosmos15f9vuwylnyzggwtgcxe84th0yx4ugf0pwqj5hf,tom,tcp://47.245.35.172:26657,1035868500@qq.com, +Fanprime,cosmos1780eywt4gghkhzu62fkr2exqkkya06ydj68ckh,ublochain,tcp://15.236.69.21:26657,louis@fanprime.io, +Umbrella,cosmos10ekrjlmat8sgr6c40fg8j348gv9tearfkmx883,umbrellachain,tcp://goz.umbrellavalidator.com:26657,luigi@umbrellavalidator.com, +Mr.K,cosmos1kgrhmxu6khuzcamwgwrent45ufhpdqlmm0473u,universe,tcp://35.193.176.142:26657,mr.k.validator@gmail.com, +Vb,cosmos13dus5s0c2ey32509xy6hgk8s923wufrv2dyy6g,vbstreetz,tcp://144.202.100.245:26657,vbstreetz@gmail.com, +VGNG,cosmos1vgng37d8ksml9yxaryzect6pdvlpzx64yzfzff,vgng-1,tcp://ibc.vgng.io:26657,matt@vgng.io, +vipnamai,cosmos1trq740zypnm64g9deufsdkx0qcw8xd09vfxx06,vipnamai,tcp://173.249.12.108:26657,a.palaikis00@gmail.com, +Yura Forgive Us,cosmos18g6s0cdlm593ej66rr6hrxc55362dkjattvc7h,vostok-1,tcp://chain.exchange-fees.com:26657,sosnickiy13@gmail.com, +WeStaking,cosmos16qp669v7k2wcsml6zv945nmnsknhckp39w0a0k,westaking,tcp://ibc.westaking.io:26657,takermaker2@gmail.com, +Wetez,cosmos1gnpwvxwkj6a855z2708hnfy3h30muewcfmckw2,Wetez,tcp://goz.wetez.io:26657,huangdj521@gmail.com, +zilot,cosmos1aftl8e8maxkw0q7yjzytfhpcz75stu835gzhxw,zilotchain,tcp://3.21.169.1:26657,puzirniymiha@gmail.com, +Ping.pub,cosmos182pr5pdngtkglyjgk057jam4v2uuk952jswkt0,ping-ibc,tcp://ibc.ping.pub:26657,18786721@qq.com, +melea,cosmos1exwcn4rmcyuf4xfjs722amqrfheng7z8cjfzgn,melea-1111,tcp://melea.xyz:26657,meleacrypto@gmail.com, \ No newline at end of file diff --git a/relayer/chain.go b/relayer/chain.go index def9826c3..2b92dfaa9 100644 --- a/relayer/chain.go +++ b/relayer/chain.go @@ -14,9 +14,9 @@ import ( sdkCtx "github.com/cosmos/cosmos-sdk/client/context" ckeys "github.com/cosmos/cosmos-sdk/client/keys" aminocodec "github.com/cosmos/cosmos-sdk/codec" - codecstd "github.com/cosmos/cosmos-sdk/codec/std" "github.com/cosmos/cosmos-sdk/crypto/hd" keys "github.com/cosmos/cosmos-sdk/crypto/keyring" + codecstd "github.com/cosmos/cosmos-sdk/std" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/auth" "github.com/cosmos/go-bip39" diff --git a/relayer/channel-tx.go b/relayer/channel-tx.go index 195460273..1b9baac48 100644 --- a/relayer/channel-tx.go +++ b/relayer/channel-tx.go @@ -94,7 +94,7 @@ func (src *Chain) CreateChannelStep(dst *Chain, ordering chanState.Order) (*Rela switch { // Handshake hasn't been started on src or dst, relay `chanOpenInit` to src - case chans[scid].Channel.Channel.State == chanState.UNINITIALIZED && chans[dcid].Channel.Channel.State == chanState.UNINITIALIZED: + case chans[scid].Channel.State == chanState.UNINITIALIZED && chans[dcid].Channel.State == chanState.UNINITIALIZED: if src.debug { logChannelStates(src, dst, chans) } @@ -103,7 +103,7 @@ func (src *Chain) CreateChannelStep(dst *Chain, ordering chanState.Order) (*Rela ) // Handshake has started on dst (1 step done), relay `chanOpenTry` and `updateClient` to src - case chans[scid].Channel.Channel.State == chanState.UNINITIALIZED && chans[dcid].Channel.Channel.State == chanState.INIT: + case chans[scid].Channel.State == chanState.UNINITIALIZED && chans[dcid].Channel.State == chanState.INIT: if src.debug { logChannelStates(src, dst, chans) } @@ -113,7 +113,7 @@ func (src *Chain) CreateChannelStep(dst *Chain, ordering chanState.Order) (*Rela ) // Handshake has started on src (1 step done), relay `chanOpenTry` and `updateClient` to dst - case chans[scid].Channel.Channel.State == chanState.INIT && chans[dcid].Channel.Channel.State == chanState.UNINITIALIZED: + case chans[scid].Channel.State == chanState.INIT && chans[dcid].Channel.State == chanState.UNINITIALIZED: if dst.debug { logChannelStates(dst, src, chans) } @@ -123,7 +123,7 @@ func (src *Chain) CreateChannelStep(dst *Chain, ordering chanState.Order) (*Rela ) // Handshake has started on src (2 steps done), relay `chanOpenAck` and `updateClient` to dst - case chans[scid].Channel.Channel.State == chanState.TRYOPEN && chans[dcid].Channel.Channel.State == chanState.INIT: + case chans[scid].Channel.State == chanState.TRYOPEN && chans[dcid].Channel.State == chanState.INIT: if dst.debug { logChannelStates(dst, src, chans) } @@ -133,7 +133,7 @@ func (src *Chain) CreateChannelStep(dst *Chain, ordering chanState.Order) (*Rela ) // Handshake has started on dst (2 steps done), relay `chanOpenAck` and `updateClient` to src - case chans[scid].Channel.Channel.State == chanState.INIT && chans[dcid].Channel.Channel.State == chanState.TRYOPEN: + case chans[scid].Channel.State == chanState.INIT && chans[dcid].Channel.State == chanState.TRYOPEN: if src.debug { logChannelStates(src, dst, chans) } @@ -143,7 +143,7 @@ func (src *Chain) CreateChannelStep(dst *Chain, ordering chanState.Order) (*Rela ) // Handshake has confirmed on dst (3 steps done), relay `chanOpenConfirm` and `updateClient` to src - case chans[scid].Channel.Channel.State == chanState.TRYOPEN && chans[dcid].Channel.Channel.State == chanState.OPEN: + case chans[scid].Channel.State == chanState.TRYOPEN && chans[dcid].Channel.State == chanState.OPEN: if src.debug { logChannelStates(src, dst, chans) } @@ -154,7 +154,7 @@ func (src *Chain) CreateChannelStep(dst *Chain, ordering chanState.Order) (*Rela out.last = true // Handshake has confirmed on src (3 steps done), relay `chanOpenConfirm` and `updateClient` to dst - case chans[scid].Channel.Channel.State == chanState.OPEN && chans[dcid].Channel.Channel.State == chanState.TRYOPEN: + case chans[scid].Channel.State == chanState.OPEN && chans[dcid].Channel.State == chanState.TRYOPEN: if dst.debug { logChannelStates(dst, src, chans) } @@ -231,8 +231,8 @@ func (src *Chain) CloseChannelStep(dst *Chain) (*RelayMsgs, error) { switch { // Closing handshake has not started, relay `updateClient` and `chanCloseInit` to src or dst according // to the channel state - case chans[scid].Channel.Channel.State != chanState.CLOSED && chans[dcid].Channel.Channel.State != chanState.CLOSED: - if chans[scid].Channel.Channel.State != chanState.UNINITIALIZED { + case chans[scid].Channel.State != chanState.CLOSED && chans[dcid].Channel.State != chanState.CLOSED: + if chans[scid].Channel.State != chanState.UNINITIALIZED { if src.debug { logChannelStates(src, dst, chans) } @@ -240,7 +240,7 @@ func (src *Chain) CloseChannelStep(dst *Chain) (*RelayMsgs, error) { src.PathEnd.UpdateClient(hs[dcid], src.MustGetAddress()), src.PathEnd.ChanCloseInit(src.MustGetAddress()), ) - } else if chans[dcid].Channel.Channel.State != chanState.UNINITIALIZED { + } else if chans[dcid].Channel.State != chanState.UNINITIALIZED { if dst.debug { logChannelStates(dst, src, chans) } @@ -251,8 +251,8 @@ func (src *Chain) CloseChannelStep(dst *Chain) (*RelayMsgs, error) { } // Closing handshake has started on src, relay `updateClient` and `chanCloseConfirm` to dst - case chans[scid].Channel.Channel.State == chanState.CLOSED && chans[dcid].Channel.Channel.State != chanState.CLOSED: - if chans[dcid].Channel.Channel.State != chanState.UNINITIALIZED { + case chans[scid].Channel.State == chanState.CLOSED && chans[dcid].Channel.State != chanState.CLOSED: + if chans[dcid].Channel.State != chanState.UNINITIALIZED { if dst.debug { logChannelStates(dst, src, chans) } @@ -264,8 +264,8 @@ func (src *Chain) CloseChannelStep(dst *Chain) (*RelayMsgs, error) { } // Closing handshake has started on dst, relay `updateClient` and `chanCloseConfirm` to src - case chans[dcid].Channel.Channel.State == chanState.CLOSED && chans[scid].Channel.Channel.State != chanState.CLOSED: - if chans[scid].Channel.Channel.State != chanState.UNINITIALIZED { + case chans[dcid].Channel.State == chanState.CLOSED && chans[scid].Channel.State != chanState.CLOSED: + if chans[scid].Channel.State != chanState.UNINITIALIZED { if src.debug { logChannelStates(src, dst, chans) } diff --git a/relayer/connection-tx.go b/relayer/connection-tx.go index 3cc4c309d..b4b345dfd 100644 --- a/relayer/connection-tx.go +++ b/relayer/connection-tx.go @@ -112,14 +112,14 @@ func (src *Chain) CreateConnectionStep(dst *Chain) (*RelayMsgs, error) { switch { // Handshake hasn't been started on src or dst, relay `connOpenInit` to src - case conn[scid].Connection.Connection.State == connState.UNINITIALIZED && conn[dcid].Connection.Connection.State == connState.UNINITIALIZED: + case conn[scid].Connection.State == connState.UNINITIALIZED && conn[dcid].Connection.State == connState.UNINITIALIZED: if src.debug { logConnectionStates(src, dst, conn) } out.Src = append(out.Src, src.PathEnd.ConnInit(dst.PathEnd, src.MustGetAddress())) // Handshake has started on dst (1 stepdone), relay `connOpenTry` and `updateClient` on src - case conn[scid].Connection.Connection.State == connState.UNINITIALIZED && conn[dcid].Connection.Connection.State == connState.INIT: + case conn[scid].Connection.State == connState.UNINITIALIZED && conn[dcid].Connection.State == connState.INIT: if src.debug { logConnectionStates(src, dst, conn) } @@ -129,7 +129,7 @@ func (src *Chain) CreateConnectionStep(dst *Chain) (*RelayMsgs, error) { ) // Handshake has started on src (1 step done), relay `connOpenTry` and `updateClient` on dst - case conn[scid].Connection.Connection.State == connState.INIT && conn[dcid].Connection.Connection.State == connState.UNINITIALIZED: + case conn[scid].Connection.State == connState.INIT && conn[dcid].Connection.State == connState.UNINITIALIZED: if dst.debug { logConnectionStates(dst, src, conn) } @@ -139,7 +139,7 @@ func (src *Chain) CreateConnectionStep(dst *Chain) (*RelayMsgs, error) { ) // Handshake has started on src end (2 steps done), relay `connOpenAck` and `updateClient` to dst end - case conn[scid].Connection.Connection.State == connState.TRYOPEN && conn[dcid].Connection.Connection.State == connState.INIT: + case conn[scid].Connection.State == connState.TRYOPEN && conn[dcid].Connection.State == connState.INIT: if dst.debug { logConnectionStates(dst, src, conn) } @@ -149,7 +149,7 @@ func (src *Chain) CreateConnectionStep(dst *Chain) (*RelayMsgs, error) { ) // Handshake has started on dst end (2 steps done), relay `connOpenAck` and `updateClient` to src end - case conn[scid].Connection.Connection.State == connState.INIT && conn[dcid].Connection.Connection.State == connState.TRYOPEN: + case conn[scid].Connection.State == connState.INIT && conn[dcid].Connection.State == connState.TRYOPEN: if src.debug { logConnectionStates(src, dst, conn) } @@ -159,7 +159,7 @@ func (src *Chain) CreateConnectionStep(dst *Chain) (*RelayMsgs, error) { ) // Handshake has confirmed on dst (3 steps done), relay `connOpenConfirm` and `updateClient` to src end - case conn[scid].Connection.Connection.State == connState.TRYOPEN && conn[dcid].Connection.Connection.State == connState.OPEN: + case conn[scid].Connection.State == connState.TRYOPEN && conn[dcid].Connection.State == connState.OPEN: if src.debug { logConnectionStates(src, dst, conn) } @@ -170,7 +170,7 @@ func (src *Chain) CreateConnectionStep(dst *Chain) (*RelayMsgs, error) { out.last = true // Handshake has confirmed on src (3 steps done), relay `connOpenConfirm` and `updateClient` to dst end - case conn[scid].Connection.Connection.State == connState.OPEN && conn[dcid].Connection.Connection.State == connState.TRYOPEN: + case conn[scid].Connection.State == connState.OPEN && conn[dcid].Connection.State == connState.TRYOPEN: if dst.debug { logConnectionStates(dst, src, conn) } diff --git a/relayer/contextual.go b/relayer/contextual.go index a6d618016..464360cf4 100644 --- a/relayer/contextual.go +++ b/relayer/contextual.go @@ -2,7 +2,7 @@ package relayer import ( "github.com/cosmos/cosmos-sdk/codec" - stdcodec "github.com/cosmos/cosmos-sdk/codec/std" + stdcodec "github.com/cosmos/cosmos-sdk/std" ) type contextualStdCodec struct { diff --git a/relayer/faucet.go b/relayer/faucet.go index eb04e8ae6..78a82ca1c 100644 --- a/relayer/faucet.go +++ b/relayer/faucet.go @@ -3,6 +3,7 @@ package relayer import ( "encoding/json" "fmt" + "io/ioutil" "net/http" "time" @@ -49,13 +50,31 @@ func (src *Chain) BuildAndSignTxWithKey(datagram []sdk.Msg, keyName string) ([]b // FaucetHandler listens for addresses func (src *Chain) FaucetHandler(fromKey sdk.AccAddress, amount sdk.Coin) func(w http.ResponseWriter, r *http.Request) { return func(w http.ResponseWriter, r *http.Request) { + defer r.Body.Close() + src.Log("handling faucet request...") + + byt, err := ioutil.ReadAll(r.Body) + if err != nil { + str := "Failed to read request body" + src.Error(fmt.Errorf(str)) + respondWithError(w, http.StatusBadGateway, str) + return + } + var fr FaucetRequest - decoder := json.NewDecoder(r.Body) - if err := decoder.Decode(&fr); err != nil || fr.ChainID != src.ChainID { - respondWithError(w, http.StatusBadRequest, "Invalid request payload") + err = json.Unmarshal(byt, &fr) + switch { + case err != nil: + str := fmt.Sprintf("Failed to unmarshal request payload: %s", string(byt)) + src.Log(str) + respondWithError(w, http.StatusBadRequest, str) + return + case fr.ChainID != src.ChainID: + str := fmt.Sprintf("Invalid chain id: exp(%s) got(%s)", src.ChainID, fr.ChainID) + src.Log(str) + respondWithError(w, http.StatusBadRequest, str) return } - defer r.Body.Close() if wait, err := src.checkAddress(fr.Address); err != nil { src.Log(fmt.Sprintf("%s hit rate limit, needs to wait %s", fr.Address, wait.String())) diff --git a/relayer/log-tx.go b/relayer/log-tx.go index adda9c26c..2eb255a00 100644 --- a/relayer/log-tx.go +++ b/relayer/log-tx.go @@ -49,11 +49,11 @@ func logChannelStates(src, dst *Chain, conn map[string]chanTypes.ChannelResponse src.ChainID, conn[src.ChainID].ProofHeight, src.PathEnd.ChannelID, - conn[src.ChainID].Channel.Channel.GetState(), + conn[src.ChainID].Channel.State, dst.ChainID, conn[dst.ChainID].ProofHeight, dst.PathEnd.ChannelID, - conn[dst.ChainID].Channel.Channel.GetState(), + conn[dst.ChainID].Channel.State, )) } @@ -62,11 +62,11 @@ func logConnectionStates(src, dst *Chain, conn map[string]connTypes.ConnectionRe src.ChainID, conn[src.ChainID].ProofHeight, src.PathEnd.ConnectionID, - conn[src.ChainID].Connection.Connection.GetState(), + conn[src.ChainID].Connection.State, dst.ChainID, conn[dst.ChainID].ProofHeight, dst.PathEnd.ConnectionID, - conn[dst.ChainID].Connection.Connection.GetState(), + conn[dst.ChainID].Connection.State, )) } diff --git a/relayer/naive-strategy.go b/relayer/naive-strategy.go index 7d0032c41..6d449f36b 100644 --- a/relayer/naive-strategy.go +++ b/relayer/naive-strategy.go @@ -4,6 +4,7 @@ import ( "fmt" "strconv" + retry "github.com/avast/retry-go" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -150,22 +151,27 @@ func sendTxFromEventPackets(src, dst *Chain, rlyPackets []relayPacket, sh *SyncH } } - // instantiate the RelayMsgs with the appropriate update client - txs := &RelayMsgs{ - Src: []sdk.Msg{ - src.PathEnd.UpdateClient(sh.GetHeader(dst.ChainID), src.MustGetAddress()), - }, - Dst: []sdk.Msg{}, - } + // send the transaction, retrying if not successful + if err := retry.Do(func() error { + // instantiate the RelayMsgs with the appropriate update client + txs := &RelayMsgs{ + Src: []sdk.Msg{ + src.PathEnd.UpdateClient(sh.GetHeader(dst.ChainID), src.MustGetAddress()), + }, + Dst: []sdk.Msg{}, + } - // add the packet msgs to RelayPackets - for _, rp := range rlyPackets { - txs.Src = append(txs.Src, rp.Msg(src, dst)) - } + // add the packet msgs to RelayPackets + for _, rp := range rlyPackets { + txs.Src = append(txs.Src, rp.Msg(src, dst)) + } - // send the transaction, maybe retry here if not successful - if txs.Send(src, dst); !txs.success { - src.Error(fmt.Errorf("failed to send packets, maybe we should add a retry here")) + if txs.Send(src, dst); !txs.success { + return fmt.Errorf("failed to send packets") + } + return nil + }); err != nil { + src.Error(err) } } @@ -194,7 +200,9 @@ func (nrs *NaiveStrategy) RelayPacketsOrderedChan(src, dst *Chain, sp *RelaySequ if err != nil { return err } - msgs.Dst = append(msgs.Dst, msg) + if msg != nil { + msgs.Dst = append(msgs.Dst, msg) + } } // add messages for dst -> src @@ -203,7 +211,9 @@ func (nrs *NaiveStrategy) RelayPacketsOrderedChan(src, dst *Chain, sp *RelaySequ if err != nil { return err } - msgs.Src = append(msgs.Src, msg) + if msg != nil { + msgs.Src = append(msgs.Src, msg) + } } if !msgs.Ready() { @@ -237,7 +247,8 @@ func packetMsgFromTxQuery(src, dst *Chain, sh *SyncHeaders, seq uint64) (sdk.Msg case err != nil: return nil, err case tx.Count == 0: - return nil, fmt.Errorf("no transactions returned with query") + // Not an error, just try again later. + return nil, nil case tx.Count > 1: return nil, fmt.Errorf("more than one transaction returned with query") } diff --git a/relayer/path.go b/relayer/path.go index d2308563b..2c0e67214 100644 --- a/relayer/path.go +++ b/relayer/path.go @@ -202,27 +202,27 @@ func FindPaths(chains Chains) (*Paths, error) { if err != nil { return nil, err } - if conn.Connection.Connection.GetState().String() == "OPEN" { + if conn.Connection.GetState().String() == "OPEN" { chans, err := src.QueryConnectionChannels(connid, 1, 1000) if err != nil { return nil, err } for _, chn := range chans { - if chn.Channel.State.String() == "OPEN" { + if chn.State.String() == "OPEN" { p := &Path{ Src: &PathEnd{ ChainID: src.ChainID, ClientID: client.GetID(), - ConnectionID: conn.Connection.Identifier, - ChannelID: chn.ChannelIdentifier, - PortID: chn.PortIdentifier, + ConnectionID: conn.Connection.ID, + ChannelID: chn.ID, + PortID: chn.PortID, }, Dst: &PathEnd{ ChainID: dst.ChainID, - ClientID: conn.Connection.Connection.GetCounterparty().GetClientID(), - ConnectionID: conn.Connection.Connection.GetCounterparty().GetConnectionID(), - ChannelID: chn.Channel.GetCounterparty().GetChannelID(), - PortID: chn.Channel.GetCounterparty().GetPortID(), + ClientID: conn.Connection.Counterparty.GetClientID(), + ConnectionID: conn.Connection.Counterparty.GetConnectionID(), + ChannelID: chn.Counterparty.GetChannelID(), + PortID: chn.Counterparty.GetPortID(), }, Strategy: &StrategyCfg{ Type: "naive", diff --git a/relayer/pathEnd.go b/relayer/pathEnd.go index af88f1fe7..6601b0686 100644 --- a/relayer/pathEnd.go +++ b/relayer/pathEnd.go @@ -32,7 +32,7 @@ func (src *PathEnd) getOrder() chanState.Order { return chanState.OrderFromString(strings.ToUpper(src.Order)) } -// UpdateClient creates an sdk.Msg to update the client on c with data pulled from cp +// UpdateClient creates an sdk.Msg to update the client on src with data pulled from dst func (src *PathEnd) UpdateClient(dstHeader *tmclient.Header, signer sdk.AccAddress) sdk.Msg { return tmclient.NewMsgUpdateClient( src.ClientID, @@ -132,11 +132,11 @@ func (src *PathEnd) ChanTry(dst *PathEnd, dstChanState chanTypes.ChannelResponse src.PortID, src.ChannelID, defaultTransferVersion, - dstChanState.Channel.Channel.Ordering, + dstChanState.Channel.Ordering, []string{src.ConnectionID}, dst.PortID, dst.ChannelID, - dstChanState.Channel.Channel.GetVersion(), + dstChanState.Channel.Version, dstChanState.Proof, dstChanState.ProofHeight+1, signer, @@ -148,7 +148,7 @@ func (src *PathEnd) ChanAck(dstChanState chanTypes.ChannelResponse, signer sdk.A return chanTypes.NewMsgChannelOpenAck( src.PortID, src.ChannelID, - dstChanState.Channel.Channel.GetVersion(), + dstChanState.Channel.Version, dstChanState.Proof, dstChanState.ProofHeight+1, signer, diff --git a/relayer/query.go b/relayer/query.go index d0d01247c..226c56bd5 100644 --- a/relayer/query.go +++ b/relayer/query.go @@ -301,7 +301,7 @@ func qClntsErr(err error) error { return fmt.Errorf("query clients failed: %w", // //////////////////////////// // QueryConnections gets any connections on a chain -func (c *Chain) QueryConnections(page, limit int) (conns []connTypes.IdentifiedConnectionEnd, err error) { +func (c *Chain) QueryConnections(page, limit int) (conns []connTypes.ConnectionEnd, err error) { var bz []byte if bz, err = c.Cdc.MarshalJSON(connTypes.NewQueryAllConnectionsParams(page, limit)); err != nil { return nil, qConnsErr(err) @@ -435,7 +435,7 @@ func QueryConnectionPair(src, dst *Chain, srcH, dstH int64) (map[string]connType func qConnErr(err error) error { return fmt.Errorf("query connection failed: %w", err) } var emptyConn = connTypes.ConnectionEnd{State: connState.UNINITIALIZED} -var emptyConnRes = connTypes.ConnectionResponse{Connection: connTypes.IdentifiedConnectionEnd{Connection: emptyConn, Identifier: ""}} +var emptyConnRes = connTypes.ConnectionResponse{Connection: connTypes.ConnectionEnd{ID: ""}} // //////////////////////////// // ICS 04 -> CHANNEL // @@ -912,33 +912,33 @@ func QueryPathStatus(src, dst *Chain, path *Path) (stat *PathStatus, err error) if err != nil { return } - stat.Chains[src.ChainID].Connection.ID = srcConn.Connection.Identifier - stat.Chains[src.ChainID].Connection.State = srcConn.Connection.Connection.GetState().String() + stat.Chains[src.ChainID].Connection.ID = srcConn.Connection.ID + stat.Chains[src.ChainID].Connection.State = srcConn.Connection.State.String() dstConn, err := dst.QueryConnection(int64(sh.GetHeight(dst.ChainID))) if err != nil { return } - stat.Chains[dst.ChainID].Connection.ID = dstConn.Connection.Identifier - stat.Chains[dst.ChainID].Connection.State = dstConn.Connection.Connection.GetState().String() + stat.Chains[dst.ChainID].Connection.ID = dstConn.Connection.ID + stat.Chains[dst.ChainID].Connection.State = dstConn.Connection.State.String() srcChan, err := src.QueryChannel(int64(sh.GetHeight(src.ChainID))) if err != nil { return } - stat.Chains[src.ChainID].Channel.ID = srcChan.Channel.ChannelIdentifier - stat.Chains[src.ChainID].Channel.Port = srcChan.Channel.PortIdentifier - stat.Chains[src.ChainID].Channel.State = srcChan.Channel.Channel.GetState().String() - stat.Chains[src.ChainID].Channel.Order = srcChan.Channel.Channel.GetOrdering().String() + stat.Chains[src.ChainID].Channel.ID = srcChan.Channel.ID + stat.Chains[src.ChainID].Channel.Port = srcChan.Channel.PortID + stat.Chains[src.ChainID].Channel.State = srcChan.Channel.State.String() + stat.Chains[src.ChainID].Channel.Order = srcChan.Channel.Ordering.String() dstChan, err := dst.QueryChannel(int64(sh.GetHeight(dst.ChainID))) if err != nil { return } - stat.Chains[dst.ChainID].Channel.ID = dstChan.Channel.ChannelIdentifier - stat.Chains[dst.ChainID].Channel.Port = dstChan.Channel.PortIdentifier - stat.Chains[dst.ChainID].Channel.State = dstChan.Channel.Channel.GetState().String() - stat.Chains[dst.ChainID].Channel.Order = dstChan.Channel.Channel.GetOrdering().String() + stat.Chains[dst.ChainID].Channel.ID = dstChan.Channel.ID + stat.Chains[dst.ChainID].Channel.Port = dstChan.Channel.PortID + stat.Chains[dst.ChainID].Channel.State = dstChan.Channel.State.String() + stat.Chains[dst.ChainID].Channel.Order = dstChan.Channel.Ordering.String() unrelayed, err := UnrelayedSequences(src, dst, sh) if err != nil { diff --git a/scripts/nchainz b/scripts/nchainz index 2c49379d7..1fd564b76 100755 --- a/scripts/nchainz +++ b/scripts/nchainz @@ -303,6 +303,7 @@ while [[ $# -gt 0 ]]; do shift done +mkdir -p "$BASEDIR" BASEDIR=$(cd "$BASEDIR" && pwd) NCONFIG="$BASEDIR/nchainz.cfg" DATA="$BASEDIR/data" @@ -528,6 +529,7 @@ relay) path="$ia" paths="$paths $path" echo "Starting 'rly tx link $path' ($src<>$dst) logs in $LOGS/$path.log" + rly start -d "$path" & ( try=0 while ! rly tx link $path --timeout=3s -d >> "$LOGS/$path.log" 2>&1; do @@ -537,7 +539,6 @@ relay) done try=$(( $try + 1 )) echo "$path tx link initialized (try=$try)" - rly start -d "$path" ) & done diff --git a/test/test_chains.go b/test/test_chains.go index 37560c712..f42eaee2b 100644 --- a/test/test_chains.go +++ b/test/test_chains.go @@ -4,15 +4,14 @@ import ( "fmt" "testing" "time" - - codecstd "github.com/cosmos/cosmos-sdk/codec/std" + "github.com/cosmos/cosmos-sdk/server" "github.com/cosmos/cosmos-sdk/simapp" + codecstd "github.com/cosmos/cosmos-sdk/std" "github.com/stretchr/testify/require" "github.com/tendermint/go-amino" - + . "github.com/iqlusioninc/relayer/relayer" - "github.com/CosmicCompass/post-chain/app" ) var ( @@ -24,7 +23,7 @@ var ( cdc: codecstd.NewAppCodec(codecstd.MakeCodec(simapp.ModuleBasics)), amino: codecstd.MakeCodec(simapp.ModuleBasics), dockerImage: "jackzampolin/gaiatest", - dockerTag: "master", + dockerTag: "efc2f27", timeout: 3 * time.Second, rpcPort: "26657", accountPrefix: "cosmos", @@ -33,7 +32,7 @@ var ( defaultDenom: "stake", trustingPeriod: "330h", } - + // MTD BLOCK TIMEOUTS on microtick/mtzonetest:ibc-alpha // timeout_commit = "1000ms" // timeout_propose = "1000ms" @@ -51,7 +50,7 @@ var ( defaultDenom: "stake", trustingPeriod: "330h", } - + // RocketZone // timeout_commit = "1000ms" // timeout_propose = "1000ms" @@ -69,7 +68,7 @@ var ( defaultDenom: "ufuel", trustingPeriod: "330h", } - + // Agoric Chain // timeout_commit = "1000ms" // timeout_propose = "1000ms" @@ -87,14 +86,14 @@ var ( defaultDenom: "uag", trustingPeriod: "330h", } - + // CoCo Chain saisunkari19/coco:ibc-alpha // timeout_commit = "1000ms" // timeout_propose = "1000ms" // 3 second relayer timeout works well with these block times cocoTestConfig = testChainConfig{ - cdc: codecstd.NewAppCodec(codecstd.MakeCodec(app.ModuleBasics)), - amino: codecstd.MakeCodec(app.ModuleBasics), + cdc: codecstd.NewAppCodec(codecstd.MakeCodec(simapp.ModuleBasics)), + amino: codecstd.MakeCodec(simapp.ModuleBasics), dockerImage: "saisunkari19/coco", dockerTag: "ibc-alpha", timeout: 3 * time.Second, @@ -114,7 +113,7 @@ type ( chainID string t testChainConfig } - + // testChainConfig represents the chain specific docker and codec configurations // required. testChainConfig struct { diff --git a/test/test_queries.go b/test/test_queries.go index 4a4dd9e0a..0b3f06f82 100644 --- a/test/test_queries.go +++ b/test/test_queries.go @@ -41,20 +41,20 @@ func testConnection(t *testing.T, src, dst *Chain) { conns, err := src.QueryConnections(1, 1000) require.NoError(t, err) require.Equal(t, len(conns), 1) - require.Equal(t, conns[0].Connection.GetClientID(), src.PathEnd.ClientID) - require.Equal(t, conns[0].Connection.GetCounterparty().GetClientID(), dst.PathEnd.ClientID) - require.Equal(t, conns[0].Connection.GetCounterparty().GetConnectionID(), dst.PathEnd.ConnectionID) - require.Equal(t, conns[0].Connection.GetState().String(), "OPEN") + require.Equal(t, conns[0].GetClientID(), src.PathEnd.ClientID) + require.Equal(t, conns[0].GetCounterparty().GetClientID(), dst.PathEnd.ClientID) + require.Equal(t, conns[0].GetCounterparty().GetConnectionID(), dst.PathEnd.ConnectionID) + require.Equal(t, conns[0].GetState().String(), "OPEN") h, err := src.Client.Status() require.NoError(t, err) conn, err := src.QueryConnection(h.SyncInfo.LatestBlockHeight) require.NoError(t, err) - require.Equal(t, conn.Connection.Connection.GetClientID(), src.PathEnd.ClientID) - require.Equal(t, conn.Connection.Connection.GetCounterparty().GetClientID(), dst.PathEnd.ClientID) - require.Equal(t, conn.Connection.Connection.GetCounterparty().GetConnectionID(), dst.PathEnd.ConnectionID) - require.Equal(t, conn.Connection.Connection.GetState().String(), "OPEN") + require.Equal(t, conn.Connection.GetClientID(), src.PathEnd.ClientID) + require.Equal(t, conn.Connection.GetCounterparty().GetClientID(), dst.PathEnd.ClientID) + require.Equal(t, conn.Connection.GetCounterparty().GetConnectionID(), dst.PathEnd.ConnectionID) + require.Equal(t, conn.Connection.GetState().String(), "OPEN") } // testChannelPair tests that the only channel on src and dst is between the two chains @@ -68,18 +68,18 @@ func testChannel(t *testing.T, src, dst *Chain) { chans, err := src.QueryChannels(1, 1000) require.NoError(t, err) require.Equal(t, 1, len(chans)) - require.Equal(t, chans[0].Channel.GetOrdering().String(), "ORDERED") - require.Equal(t, chans[0].Channel.GetState().String(), "OPEN") - require.Equal(t, chans[0].Channel.GetCounterparty().GetChannelID(), dst.PathEnd.ChannelID) - require.Equal(t, chans[0].Channel.GetCounterparty().GetPortID(), dst.PathEnd.PortID) + require.Equal(t, chans[0].Ordering.String(), "ORDERED") + require.Equal(t, chans[0].State.String(), "OPEN") + require.Equal(t, chans[0].Counterparty.ChannelID, dst.PathEnd.ChannelID) + require.Equal(t, chans[0].Counterparty.GetPortID(), dst.PathEnd.PortID) h, err := src.Client.Status() require.NoError(t, err) ch, err := src.QueryChannel(h.SyncInfo.LatestBlockHeight) require.NoError(t, err) - require.Equal(t, ch.Channel.Channel.GetOrdering().String(), "ORDERED") - require.Equal(t, ch.Channel.Channel.GetState().String(), "OPEN") - require.Equal(t, ch.Channel.Channel.GetCounterparty().GetChannelID(), dst.PathEnd.ChannelID) - require.Equal(t, ch.Channel.Channel.GetCounterparty().GetPortID(), dst.PathEnd.PortID) + require.Equal(t, ch.Channel.Ordering.String(), "ORDERED") + require.Equal(t, ch.Channel.State.String(), "OPEN") + require.Equal(t, ch.Channel.Counterparty.ChannelID, dst.PathEnd.ChannelID) + require.Equal(t, ch.Channel.Counterparty.GetPortID(), dst.PathEnd.PortID) }