diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..89156fd --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,3 @@ +* @zeta-chain/protocol-engineering + +.github/** @zeta-chain/devops diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 23276fd..d79a009 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,16 +20,25 @@ jobs: with: go-version: ${{ matrix.go-version }} - name: Test - run: go test -race -timeout 25m ./... + run: go test -timeout 25m ./... lint: - name: lint runs-on: ubuntu-22.04 + timeout-minutes: 15 + env: + GO111MODULE: on steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - name: Checkout Source + uses: actions/checkout@v4 with: - go-version: 1.22 - - name: golangci-lint + fetch-depth: 0 + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: '1.23' + + - name: Run golangci-lint uses: golangci/golangci-lint-action@v6 with: - version: v1.56.2 + version: v1.63.4 + skip-cache: true \ No newline at end of file diff --git a/.gitignore b/.gitignore index f454cb0..e77f8c9 100644 --- a/.gitignore +++ b/.gitignore @@ -2,22 +2,14 @@ .DS_Store *.swp *.swo -.vscode -.idea .env* -# Build -vendor -.vendor-new -observe - # IDE +.vscode/ .idea/ -*.iml bin/ thord -*.exe .testCoverage.txt c.out *.leveldb/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index 0d237e3..0000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,27 +0,0 @@ -image: golang:1.20 - -cache: - paths: - - .cache - -before_script: - - mkdir -p .cache - - export GOPATH="$CI_PROJECT_DIR/.cache" - -stages: - - test - -unit_tests: - stage: test - coverage: '/total:\s+\(statements\)\s+(\d+.\d+\%)/' - script: - - make unittest - -lint_code: - cache: {} - image: golangci/golangci-lint:v1.56.2 - stage: test - before_script: - - go get mvdan.cc/gofumpt@v0.3.0 - script: - - golangci-lint run -v diff --git a/.golangci.yml b/.golangci.yml index 9f35be1..ce1f763 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,24 +1,53 @@ +run: + go: "1.22.11" + timeout: 5m + tests: false # exclude test from linting + linters: disable-all: true enable: - - deadcode - errcheck - - golint + - revive - ineffassign - unconvert - misspell + - goimports - govet + - stylecheck + - typecheck + - misspell + # - prealloc not really useful imo + - dogsled + - goconst + - bodyclose + - unconvert + - unused + - gci + - gofmt + - whitespace + linters-settings: gocyclo: min-complexity: 11 errcheck: - ignore: fmt:.*,io/ioutil:^Read.*,github.com/spf13/cobra:MarkFlagRequired,github.com/spf13/viper:BindPFlag - golint: - min-confidence: 1.1 + exclude-functions: + - fmt:.* + - io/ioutil:^Read.*, + - github.com/spf13/cobra:MarkFlagRequired + - github.com/spf13/viper:BindPFlag + exhaustive: + check-generated: false + gci: + # Gci controls Go package import order and makes it always deterministic + # https://golangci-lint.run/usage/linters/#gci + sections: + - standard + - default + - prefix(github.com/zeta-chain/go-tss) + skip-generated: true + issues: + exclude-generated: strict exclude: - composite -run: - tests: false - deadline: 15m - timeout: 5m + exclude-dirs: [ ".git", ".github" ] \ No newline at end of file diff --git a/Makefile b/Makefile index 104200d..9b389a7 100644 --- a/Makefile +++ b/Makefile @@ -1,50 +1,42 @@ -module = gitlab.com/thorchain/tss/go-tss +module = github.com/zeta-chain/go-tss -.PHONY: clear tools install test test-watch lint-pre lint lint-verbose protob build docker-gitlab-login docker-gitlab-push docker-gitlab-build +help: ## List of commands + @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' -all: lint build +deps: ## Install required dev tooling: + go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.63.4 + go install github.com/segmentio/golines@v0.12.2 -clear: - clear - -tools: +tools: ## Installs tss tools go install ./cmd/tss-recovery go install ./cmd/tss-benchgen go install ./cmd/tss-benchsign -install: go.sum +install: go.sum ## Compiles & install go-tss binary go install ./cmd/tss -go.sum: go.mod +go.sum: go.mod ## Go sum @echo "--> Ensure dependencies have not been modified" go mod verify -test: - @go test --race -timeout 30m ./... +test: ## Runs tests + @go test -race -timeout 30m ./... -test-watch: clear - @gow -c test -tags testnet -mod=readonly ./... +fmt: ## Formats the code + @echo "Fixing long lines" + @golines -w --max-len=120 --ignore-generated --ignored-dirs=".git" --base-formatter="gofmt" . -unittest: - @go test --race -v -coverprofile=coverage.out -timeout 30m ./... - @go tool cover -func=coverage.out + @echo "Formatting code" + @golangci-lint run --enable-only 'gci' --enable-only 'gofmt' --enable-only 'whitespace' --fix -lint-pre: - @gofumpt -l cmd common keygen keysign messages p2p storage tss # for display - @test -z "$(shell gofumpt -l cmd common keygen keysign messages p2p storage tss)" # cause error - @go mod verify +lint-pre: ## Runs pre-lint check + @test -z $(gofmt -l .) + go mod verify -lint: lint-pre +lint: lint-pre ## Runs linter @golangci-lint run -lint-verbose: lint-pre - @golangci-lint run -v - -protob: +codegen: ## Generates proto protoc --go_out=module=$(module):. ./messages/*.proto -build: protob - go build ./... - -docker-build: - docker build -t registry.gitlab.com/thorchain/tss/go-tss . +.PHONY: deps tools install test fmt lint-pre lint codegen diff --git a/README.md b/README.md index 6226638..080d1f8 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,5 @@ -# THORCHain TSS +# Zetachain Threshold Signature Scheme (TSS) P2P server -This repository wraps tss-lib with the networking level coordination code used in Thorchain. - -### How to contribute - -* Create an issue or find an existing issue on https://gitlab.com/thorchain/tss/go-tss/-/issues -* Assign the issue to yourself -* Raise a PR, making sure to include "Resolves #" in the description -* Make sure the pipeline is green -* Once PR is approved, the team will merge it to master +- Forked from https://gitlab.com/thorchain/tss/go-tss +- Based on https://github.com/bnb-chain/tss-lib +- Used by `zetaclientd`: https://github.com/zeta-chain/node diff --git a/blame/manager.go b/blame/manager.go index b852d9f..834754b 100644 --- a/blame/manager.go +++ b/blame/manager.go @@ -98,7 +98,7 @@ func (m *Manager) SetPartyInfo(partyMap *sync.Map, partyIDMap map[string]*btss.P } m.partyInfo = partyInfo var localParty btss.Party - m.partyInfo.PartyMap.Range(func(key, value interface{}) bool { + m.partyInfo.PartyMap.Range(func(_, value any) bool { localParty = value.(btss.Party) return false }) diff --git a/blame/policy.go b/blame/policy.go index ba182aa..02610c1 100644 --- a/blame/policy.go +++ b/blame/policy.go @@ -8,8 +8,8 @@ import ( mapset "github.com/deckarep/golang-set" "github.com/libp2p/go-libp2p/core/peer" - "gitlab.com/thorchain/tss/go-tss/conversion" - "gitlab.com/thorchain/tss/go-tss/messages" + "github.com/zeta-chain/go-tss/conversion" + "github.com/zeta-chain/go-tss/messages" ) func (m *Manager) tssTimeoutBlame(lastMessageType string, partyIDMap map[string]*btss.PartyID) ([]string, error) { @@ -182,7 +182,8 @@ func (m *Manager) TssMissingShareBlame(rounds int, algo messages.Algo) ([]Node, isUnicast = false default: - m.logger.Error().Msgf("fail to find the algorithm for this keygen/keysign, set unicast as false by default") + m.logger.Error(). + Msgf("fail to find the algorithm for this keygen/keysign, set unicast as false by default") isUnicast = false } diff --git a/blame/policy_helper.go b/blame/policy_helper.go index e87281c..eaf3e45 100644 --- a/blame/policy_helper.go +++ b/blame/policy_helper.go @@ -1,6 +1,6 @@ package blame -import "gitlab.com/thorchain/tss/go-tss/conversion" +import "github.com/zeta-chain/go-tss/conversion" // GetBlamePubKeysInList returns the nodes public key who are in the peer list func (m *Manager) getBlamePubKeysInList(peers []string) ([]string, error) { diff --git a/blame/policy_test.go b/blame/policy_test.go index 672c552..8df95f8 100644 --- a/blame/policy_test.go +++ b/blame/policy_test.go @@ -11,12 +11,17 @@ import ( "github.com/libp2p/go-libp2p/core/peer" . "gopkg.in/check.v1" - "gitlab.com/thorchain/tss/go-tss/conversion" - "gitlab.com/thorchain/tss/go-tss/messages" + "github.com/zeta-chain/go-tss/conversion" + "github.com/zeta-chain/go-tss/messages" ) var ( - testPubKeys = [...]string{"thorpub1addwnpepqtdklw8tf3anjz7nn5fly3uvq2e67w2apn560s4smmrt9e3x52nt2svmmu3", "thorpub1addwnpepqtspqyy6gk22u37ztra4hq3hdakc0w0k60sfy849mlml2vrpfr0wvm6uz09", "thorpub1addwnpepq2ryyje5zr09lq7gqptjwnxqsy2vcdngvwd6z7yt5yjcnyj8c8cn559xe69", "thorpub1addwnpepqfjcw5l4ay5t00c32mmlky7qrppepxzdlkcwfs2fd5u73qrwna0vzag3y4j"} + testPubKeys = [...]string{ + "thorpub1addwnpepqtdklw8tf3anjz7nn5fly3uvq2e67w2apn560s4smmrt9e3x52nt2svmmu3", + "thorpub1addwnpepqtspqyy6gk22u37ztra4hq3hdakc0w0k60sfy849mlml2vrpfr0wvm6uz09", + "thorpub1addwnpepq2ryyje5zr09lq7gqptjwnxqsy2vcdngvwd6z7yt5yjcnyj8c8cn559xe69", + "thorpub1addwnpepqfjcw5l4ay5t00c32mmlky7qrppepxzdlkcwfs2fd5u73qrwna0vzag3y4j", + } testPeers = []string{ "16Uiu2HAm4TmEzUqy3q3Dv7HvdoSboHk5sFj2FH3npiN5vDbJC6gh", diff --git a/blame/round_mgr.go b/blame/round_mgr.go index 6e06ac7..579dc9c 100644 --- a/blame/round_mgr.go +++ b/blame/round_mgr.go @@ -3,7 +3,7 @@ package blame import ( "sync" - "gitlab.com/thorchain/tss/go-tss/messages" + "github.com/zeta-chain/go-tss/messages" ) type RoundInfo struct { diff --git a/blame/round_mgr_test.go b/blame/round_mgr_test.go index a0949b7..3b39ab8 100644 --- a/blame/round_mgr_test.go +++ b/blame/round_mgr_test.go @@ -3,7 +3,7 @@ package blame import ( . "gopkg.in/check.v1" - "gitlab.com/thorchain/tss/go-tss/messages" + "github.com/zeta-chain/go-tss/messages" ) type RoundMgrSuite struct{} diff --git a/cmd/tss-benchsign/main.go b/cmd/tss-benchsign/main.go index 5207948..aa5be80 100644 --- a/cmd/tss-benchsign/main.go +++ b/cmd/tss-benchsign/main.go @@ -67,7 +67,10 @@ func main() { os.Exit(1) } if _, err := os.Stat(makeKeyGenDataFilePath(dir, *endQuorum-1)); os.IsNotExist(err) { - fmt.Printf("Error: insufficient shares for the specified quorum; run tss-benchgen and generate at least %d shares.\n", *endQuorum) + fmt.Printf( + "Error: insufficient shares for the specified quorum; run tss-benchgen and generate at least %d shares.\n", + *endQuorum, + ) os.Exit(1) } @@ -228,7 +231,11 @@ func printSummary(results [][]result) { // ----- // -func loadKeyGenData(dir string, qty int, optionalStart ...int) ([]keygen.LocalPartySaveData, tss.SortedPartyIDs, error) { +func loadKeyGenData( + dir string, + qty int, + optionalStart ...int, +) ([]keygen.LocalPartySaveData, tss.SortedPartyIDs, error) { keys := make([]keygen.LocalPartySaveData, 0, qty) start := 0 if 0 < len(optionalStart) { @@ -239,7 +246,7 @@ func loadKeyGenData(dir string, qty int, optionalStart ...int) ([]keygen.LocalPa bz, err := ioutil.ReadFile(fixtureFilePath) if err != nil { return nil, nil, errors.Wrapf(err, - "could not open the test fixture for party %d in the expected location: %s. run keygen tests first.", + "could not open the test fixture for party %d in the expected location: %s. run keygen tests first", i, fixtureFilePath) } var key keygen.LocalPartySaveData diff --git a/cmd/tss-recovery/key.go b/cmd/tss-recovery/key.go index 1fe8f60..5d18707 100644 --- a/cmd/tss-recovery/key.go +++ b/cmd/tss-recovery/key.go @@ -5,7 +5,6 @@ import ( "encoding/hex" "gitlab.com/thorchain/binance-sdk/common/uuid" - "golang.org/x/crypto/pbkdf2" "golang.org/x/crypto/sha3" ) @@ -25,7 +24,7 @@ type CryptoJSON struct { type EncryptedKey struct { Crypto CryptoJSON `json:"crypto"` - Id string `json:"id"` + ID string `json:"id"` Version int `json:"version"` } @@ -77,7 +76,7 @@ func exportKeyStore(privKey []byte, password string) (*EncryptedKey, error) { } return &EncryptedKey{ Crypto: cryptoStruct, - Id: id.String(), + ID: id.String(), Version: 1, }, nil } diff --git a/cmd/tss-recovery/tss-recovery.go b/cmd/tss-recovery/tss-recovery.go index ccd3b6e..3eed4f0 100644 --- a/cmd/tss-recovery/tss-recovery.go +++ b/cmd/tss-recovery/tss-recovery.go @@ -9,7 +9,7 @@ import ( "github.com/bnb-chain/tss-lib/crypto/vss" "github.com/btcsuite/btcd/btcec/v2" - . "github.com/decred/dcrd/dcrec/secp256k1" + ecdsa "github.com/decred/dcrd/dcrec/secp256k1" ) func main() { @@ -46,7 +46,7 @@ func main() { fmt.Printf("error in tss verify") } - privKey := NewPrivateKey(tssPrivateKey) + privKey := ecdsa.NewPrivateKey(tssPrivateKey) pk := privKey.PubKey() thorchainpk, address, err := getTssPubKey(pk.X, pk.Y) diff --git a/cmd/tss/main.go b/cmd/tss/main.go index 658c3ff..c81e8b1 100644 --- a/cmd/tss/main.go +++ b/cmd/tss/main.go @@ -14,10 +14,10 @@ import ( golog "github.com/ipfs/go-log" "github.com/libp2p/go-libp2p/core/peer" - "gitlab.com/thorchain/tss/go-tss/common" - "gitlab.com/thorchain/tss/go-tss/conversion" - "gitlab.com/thorchain/tss/go-tss/p2p" - "gitlab.com/thorchain/tss/go-tss/tss" + "github.com/zeta-chain/go-tss/common" + "github.com/zeta-chain/go-tss/conversion" + "github.com/zeta-chain/go-tss/p2p" + "github.com/zeta-chain/go-tss/tss" ) var ( @@ -54,7 +54,7 @@ func main() { log.Fatal(err) } // init tss module - tss, err := tss.NewTss( + tss, err := tss.New( p2pConf.BootstrapPeers, p2pConf.Port, priKey, @@ -68,7 +68,7 @@ func main() { if nil != err { log.Fatal(err) } - s := NewTssHttpServer(tssAddr, tss) + s := NewHTTPServer(tssAddr, tss) go func() { if err := s.Start(); err != nil { fmt.Println(err) @@ -87,7 +87,12 @@ func parseFlags() (tssConf common.TssConfig, p2pConf p2p.Config) { flag.StringVar(&tssAddr, "tss-port", "127.0.0.1:8080", "tss port") flag.BoolVar(&help, "h", false, "Display Help") flag.StringVar(&logLevel, "loglevel", "info", "Log Level") - flag.BoolVar(&pretty, "pretty-log", false, "Enables unstructured prettified logging. This is useful for local debugging") + flag.BoolVar( + &pretty, + "pretty-log", + false, + "Enables unstructured prettified logging. This is useful for local debugging", + ) flag.StringVar(&baseFolder, "home", "", "home folder to store the keygen state file") // we setup the Tss parameter configuration diff --git a/cmd/tss/mock_tss_server.go b/cmd/tss/mock_tss_server.go index 068e0d6..b08db60 100644 --- a/cmd/tss/mock_tss_server.go +++ b/cmd/tss/mock_tss_server.go @@ -4,11 +4,12 @@ import ( "errors" "github.com/libp2p/go-libp2p/core/peer" - "gitlab.com/thorchain/tss/go-tss/blame" - "gitlab.com/thorchain/tss/go-tss/common" - "gitlab.com/thorchain/tss/go-tss/conversion" - "gitlab.com/thorchain/tss/go-tss/keygen" - "gitlab.com/thorchain/tss/go-tss/keysign" + + "github.com/zeta-chain/go-tss/blame" + "github.com/zeta-chain/go-tss/common" + "github.com/zeta-chain/go-tss/conversion" + "github.com/zeta-chain/go-tss/keygen" + "github.com/zeta-chain/go-tss/keysign" ) type MockTssServer struct { @@ -35,14 +36,20 @@ func (mts *MockTssServer) GetKnownPeers() []peer.AddrInfo { return []peer.AddrInfo{} } -func (mts *MockTssServer) Keygen(req keygen.Request) (keygen.Response, error) { +func (mts *MockTssServer) Keygen(_ keygen.Request) (keygen.Response, error) { if mts.failToKeyGen { return keygen.Response{}, errors.New("you ask for it") } - return keygen.NewResponse(common.ECDSA, conversion.GetRandomPubKey(), "whatever", common.Success, blame.Blame{}), nil + return keygen.NewResponse( + common.ECDSA, + conversion.GetRandomPubKey(), + "whatever", + common.Success, + blame.Blame{}, + ), nil } -func (mts *MockTssServer) KeygenAllAlgo(req keygen.Request) ([]keygen.Response, error) { +func (mts *MockTssServer) KeygenAllAlgo(_ keygen.Request) ([]keygen.Response, error) { if mts.failToKeyGen { return []keygen.Response{{}}, errors.New("you ask for it") } @@ -52,7 +59,7 @@ func (mts *MockTssServer) KeygenAllAlgo(req keygen.Request) ([]keygen.Response, }, nil } -func (mts *MockTssServer) KeySign(req keysign.Request) (keysign.Response, error) { +func (mts *MockTssServer) KeySign(_ keysign.Request) (keysign.Response, error) { if mts.failToKeySign { return keysign.Response{}, errors.New("you ask for it") } diff --git a/cmd/tss/tss_http.go b/cmd/tss/tss_http.go index e8c9480..53d8e41 100644 --- a/cmd/tss/tss_http.go +++ b/cmd/tss/tss_http.go @@ -13,21 +13,21 @@ import ( "github.com/rs/zerolog" "github.com/rs/zerolog/log" - "gitlab.com/thorchain/tss/go-tss/keygen" - "gitlab.com/thorchain/tss/go-tss/keysign" - "gitlab.com/thorchain/tss/go-tss/tss" + "github.com/zeta-chain/go-tss/keygen" + "github.com/zeta-chain/go-tss/keysign" + "github.com/zeta-chain/go-tss/tss" ) -// TssHttpServer provide http endpoint for tss server -type TssHttpServer struct { +// HTTPServer provide http endpoint for tss server +type HTTPServer struct { logger zerolog.Logger - tssServer tss.Server + tssServer tss.IServer s *http.Server } -// NewTssHttpServer should only listen to the loopback -func NewTssHttpServer(tssAddr string, t tss.Server) *TssHttpServer { - hs := &TssHttpServer{ +// NewHTTPServer should only listen to the loopback +func NewHTTPServer(tssAddr string, t tss.IServer) *HTTPServer { + hs := &HTTPServer{ logger: log.With().Str("module", "http").Logger(), tssServer: t, } @@ -40,7 +40,7 @@ func NewTssHttpServer(tssAddr string, t tss.Server) *TssHttpServer { } // NewHandler registers the API routes and returns a new HTTP handler -func (t *TssHttpServer) tssNewHandler() http.Handler { +func (t *HTTPServer) tssNewHandler() http.Handler { router := mux.NewRouter() router.Handle("/keygen", http.HandlerFunc(t.keygenHandler)).Methods(http.MethodPost) router.Handle("/keygenall", http.HandlerFunc(t.keygenAllHandler)).Methods(http.MethodPost) @@ -52,7 +52,7 @@ func (t *TssHttpServer) tssNewHandler() http.Handler { return router } -func (t *TssHttpServer) keygenHandler(w http.ResponseWriter, r *http.Request) { +func (t *HTTPServer) keygenHandler(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPost { w.WriteHeader(http.StatusMethodNotAllowed) return @@ -88,7 +88,7 @@ func (t *TssHttpServer) keygenHandler(w http.ResponseWriter, r *http.Request) { } } -func (t *TssHttpServer) keygenAllHandler(w http.ResponseWriter, r *http.Request) { +func (t *HTTPServer) keygenAllHandler(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPost { w.WriteHeader(http.StatusMethodNotAllowed) return @@ -124,7 +124,7 @@ func (t *TssHttpServer) keygenAllHandler(w http.ResponseWriter, r *http.Request) } } -func (t *TssHttpServer) keySignHandler(w http.ResponseWriter, r *http.Request) { +func (t *HTTPServer) keySignHandler(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPost { w.WriteHeader(http.StatusMethodNotAllowed) return @@ -163,7 +163,7 @@ func (t *TssHttpServer) keySignHandler(w http.ResponseWriter, r *http.Request) { } } -func (t *TssHttpServer) Start() error { +func (t *HTTPServer) Start() error { if t.s == nil { return errors.New("invalid http server instance") } @@ -193,7 +193,7 @@ func logMiddleware() mux.MiddlewareFunc { } } -func (t *TssHttpServer) Stop() error { +func (t *HTTPServer) Stop() error { c, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() err := t.s.Shutdown(c) @@ -204,11 +204,11 @@ func (t *TssHttpServer) Stop() error { return err } -func (t *TssHttpServer) pingHandler(w http.ResponseWriter, _ *http.Request) { +func (t *HTTPServer) pingHandler(w http.ResponseWriter, _ *http.Request) { w.WriteHeader(http.StatusOK) } -func (t *TssHttpServer) getP2pIDHandler(w http.ResponseWriter, _ *http.Request) { +func (t *HTTPServer) getP2pIDHandler(w http.ResponseWriter, _ *http.Request) { localPeerID := t.tssServer.GetLocalPeerID() _, err := w.Write([]byte(localPeerID)) if err != nil { diff --git a/cmd/tss/tss_http_test.go b/cmd/tss/tss_http_test.go index 9c365bc..18e77bd 100644 --- a/cmd/tss/tss_http_test.go +++ b/cmd/tss/tss_http_test.go @@ -11,7 +11,7 @@ import ( . "gopkg.in/check.v1" - "gitlab.com/thorchain/tss/go-tss/keygen" + "github.com/zeta-chain/go-tss/keygen" ) func TestPackage(t *testing.T) { TestingT(t) } @@ -23,7 +23,7 @@ var _ = Suite(&TssHttpServerTestSuite{}) func (TssHttpServerTestSuite) TestNewTssHttpServer(c *C) { tssServer := &MockTssServer{} - s := NewTssHttpServer("127.0.0.1:8080", tssServer) + s := NewHTTPServer("127.0.0.1:8080", tssServer) c.Assert(s, NotNil) wg := sync.WaitGroup{} wg.Add(1) @@ -40,7 +40,7 @@ func (TssHttpServerTestSuite) TestNewTssHttpServer(c *C) { func (TssHttpServerTestSuite) TestPingHandler(c *C) { tssServer := &MockTssServer{} - s := NewTssHttpServer("127.0.0.1:8080", tssServer) + s := NewHTTPServer("127.0.0.1:8080", tssServer) c.Assert(s, NotNil) req := httptest.NewRequest(http.MethodGet, "/ping", nil) res := httptest.NewRecorder() @@ -50,7 +50,7 @@ func (TssHttpServerTestSuite) TestPingHandler(c *C) { func (TssHttpServerTestSuite) TestGetP2pIDHandler(c *C) { tssServer := &MockTssServer{} - s := NewTssHttpServer("127.0.0.1:8080", tssServer) + s := NewHTTPServer("127.0.0.1:8080", tssServer) c.Assert(s, NotNil) req := httptest.NewRequest(http.MethodGet, "/p2pid", nil) res := httptest.NewRecorder() @@ -114,7 +114,7 @@ func (TssHttpServerTestSuite) TestKeygenHandler(c *C) { for _, tc := range testCases { c.Log(tc.name) tssServer := &MockTssServer{} - s := NewTssHttpServer("127.0.0.1:8080", tssServer) + s := NewHTTPServer("127.0.0.1:8080", tssServer) c.Assert(s, NotNil) if tc.setter != nil { tc.setter(tssServer) @@ -191,7 +191,7 @@ func (TssHttpServerTestSuite) TestKeysignHandler(c *C) { for _, tc := range testCases { c.Log(tc.name) tssServer := &MockTssServer{} - s := NewTssHttpServer("127.0.0.1:8080", tssServer) + s := NewHTTPServer("127.0.0.1:8080", tssServer) c.Assert(s, NotNil) if tc.setter != nil { tc.setter(tssServer) diff --git a/common/local_cache_item.go b/common/local_cache_item.go index dc88dd4..8ada9b8 100644 --- a/common/local_cache_item.go +++ b/common/local_cache_item.go @@ -3,7 +3,7 @@ package common import ( "sync" - "gitlab.com/thorchain/tss/go-tss/messages" + "github.com/zeta-chain/go-tss/messages" ) // LocalCacheItem used to cache the unconfirmed broadcast message diff --git a/common/tss.go b/common/tss.go index 4cacc26..2303f3d 100644 --- a/common/tss.go +++ b/common/tss.go @@ -15,10 +15,10 @@ import ( "github.com/rs/zerolog" "github.com/rs/zerolog/log" - "gitlab.com/thorchain/tss/go-tss/blame" - "gitlab.com/thorchain/tss/go-tss/conversion" - "gitlab.com/thorchain/tss/go-tss/messages" - "gitlab.com/thorchain/tss/go-tss/p2p" + "github.com/zeta-chain/go-tss/blame" + "github.com/zeta-chain/go-tss/conversion" + "github.com/zeta-chain/go-tss/messages" + "github.com/zeta-chain/go-tss/p2p" ) // PartyInfo the information used by tss key gen and key sign @@ -53,7 +53,14 @@ type TssCommon struct { msgNum int } -func NewTssCommon(peerID string, broadcastChannel chan *messages.BroadcastMsgChan, conf TssConfig, msgID string, privKey tcrypto.PrivKey, msgNum int) *TssCommon { +func NewTssCommon( + peerID string, + broadcastChannel chan *messages.BroadcastMsgChan, + conf TssConfig, + msgID string, + privKey tcrypto.PrivKey, + msgNum int, +) *TssCommon { return &TssCommon{ conf: conf, logger: log.With().Str("module", "tsscommon").Logger(), @@ -94,12 +101,11 @@ func NewBulkWireMsg(msg []byte, id string, r *btss.MessageRouting) BulkWireMsg { } type tssJob struct { - wireBytes []byte - msgIdentifier string - partyID *btss.PartyID - isBroadcast bool - localParty btss.Party - acceptedShares map[blame.RoundInfo][]string + wireBytes []byte + msgIdentifier string + partyID *btss.PartyID + isBroadcast bool + localParty btss.Party } func newJob(party btss.Party, wireBytes []byte, msgIdentifier string, from *btss.PartyID, isBroadcast bool) *tssJob { @@ -269,7 +275,8 @@ func (t *TssCommon) updateLocal(wireMsg *messages.WireMessage) error { } if msg.Routing.From.Id != wireMsg.Routing.From.Id { // this should never happen , if it happened , which ever party did it , should be blamed and slashed - t.logger.Error().Msgf("all messages in a batch sign should have the same routing ,batch routing party id: %s, however message routing:%s", msg.Routing.From, wireMsg.Routing.From) + t.logger.Error(). + Msgf("all messages in a batch sign should have the same routing ,batch routing party id: %s, however message routing:%s", msg.Routing.From, wireMsg.Routing.From) } localMsgParty := data.(btss.Party) partyID, ok := partyInfo.PartyIDMap[wireMsg.Routing.From.Id] @@ -304,7 +311,8 @@ func (t *TssCommon) updateLocal(wireMsg *messages.WireMessage) error { } t.culpritsLock.RLock() if len(t.culprits) != 0 && partyInlist(partyID, t.culprits) { - t.logger.Error().Msgf("the malicious party (party ID:%s) try to send incorrect message to me (party ID:%s)", partyID.Id, localMsgParty.PartyID().Id) + t.logger.Error(). + Msgf("the malicious party (party ID:%s) try to send incorrect message to me (party ID:%s)", partyID.Id, localMsgParty.PartyID().Id) t.culpritsLock.RUnlock() return errors.New(blame.TssBrokenMsg) } @@ -409,7 +417,8 @@ func (t *TssCommon) getMsgHash(localCacheItem *LocalCacheItem, threshold int) (s return "", blame.ErrHashCheck } if freq < threshold-1 { - t.logger.Debug().Msgf("fail to have more than 2/3 peers agree on the received message threshold(%d)--total confirmed(%d)\n", threshold, freq) + t.logger.Debug(). + Msgf("fail to have more than 2/3 peers agree on the received message threshold(%d)--total confirmed(%d)\n", threshold, freq) return "", blame.ErrHashInconsistency } return hash, nil @@ -449,7 +458,11 @@ func (t *TssCommon) hashCheck(localCacheItem *LocalCacheItem, threshold int) err return blame.ErrNotMajority } -func (t *TssCommon) sendBulkMsg(wiredMsgType string, tssMsgType messages.THORChainTSSMessageType, wiredMsgList []BulkWireMsg) error { +func (t *TssCommon) sendBulkMsg( + wiredMsgType string, + tssMsgType messages.THORChainTSSMessageType, + wiredMsgList []BulkWireMsg, +) error { // since all the messages in the list is the same round, so it must have the same dest // we just need to get the routing info of the first message r := wiredMsgList[0].Routing @@ -567,7 +580,12 @@ func (t *TssCommon) ProcessOutCh(msg btss.Message, msgType messages.THORChainTSS return nil } -func (t *TssCommon) applyShare(localCacheItem *LocalCacheItem, threshold int, key string, msgType messages.THORChainTSSMessageType) error { +func (t *TssCommon) applyShare( + localCacheItem *LocalCacheItem, + threshold int, + key string, + msgType messages.THORChainTSSMessageType, +) error { unicast := true if localCacheItem.Msg.Routing.IsBroadcast { unicast = false @@ -604,7 +622,12 @@ func (t *TssCommon) applyShare(localCacheItem *LocalCacheItem, threshold int, ke return nil } -func (t *TssCommon) requestShareFromPeer(localCacheItem *LocalCacheItem, threshold int, key string, msgType messages.THORChainTSSMessageType) error { +func (t *TssCommon) requestShareFromPeer( + localCacheItem *LocalCacheItem, + threshold int, + key string, + msgType messages.THORChainTSSMessageType, +) error { targetHash, err := t.getMsgHash(localCacheItem, threshold) if err != nil { t.logger.Debug().Msg("we do not know which message to request, so we quit") @@ -645,7 +668,10 @@ func (t *TssCommon) requestShareFromPeer(localCacheItem *LocalCacheItem, thresho } } -func (t *TssCommon) processVerMsg(broadcastConfirmMsg *messages.BroadcastConfirmMessage, msgType messages.THORChainTSSMessageType) error { +func (t *TssCommon) processVerMsg( + broadcastConfirmMsg *messages.BroadcastConfirmMessage, + msgType messages.THORChainTSSMessageType, +) error { t.logger.Debug().Msg("process ver msg") defer t.logger.Debug().Msg("finish process ver msg") if nil == broadcastConfirmMsg { @@ -678,7 +704,11 @@ func (t *TssCommon) processVerMsg(broadcastConfirmMsg *messages.BroadcastConfirm return t.applyShare(localCacheItem, threshold, key, msgType) } -func (t *TssCommon) broadcastHashToPeers(key, msgHash string, peerIDs []peer.ID, msgType messages.THORChainTSSMessageType) error { +func (t *TssCommon) broadcastHashToPeers( + key, msgHash string, + peerIDs []peer.ID, + msgType messages.THORChainTSSMessageType, +) error { if len(peerIDs) == 0 { t.logger.Error().Msg("fail to get any peer ID") return errors.New("fail to get any peer ID") @@ -709,7 +739,10 @@ func (t *TssCommon) broadcastHashToPeers(key, msgHash string, peerIDs []peer.ID, return nil } -func (t *TssCommon) receiverBroadcastHashToPeers(wireMsg *messages.WireMessage, msgType messages.THORChainTSSMessageType) error { +func (t *TssCommon) receiverBroadcastHashToPeers( + wireMsg *messages.WireMessage, + msgType messages.THORChainTSSMessageType, +) error { var peerIDs []peer.ID dataOwnerPartyID := wireMsg.Routing.From.Id dataOwnerPeerID, ok := t.PartyIDtoP2PID[dataOwnerPartyID] @@ -739,7 +772,11 @@ func (t *TssCommon) receiverBroadcastHashToPeers(wireMsg *messages.WireMessage, } // processTSSMsg -func (t *TssCommon) processTSSMsg(wireMsg *messages.WireMessage, msgType messages.THORChainTSSMessageType, forward bool) error { +func (t *TssCommon) processTSSMsg( + wireMsg *messages.WireMessage, + msgType messages.THORChainTSSMessageType, + forward bool, +) error { t.logger.Debug().Msg("process wire message") defer t.logger.Debug().Msg("finish process wire message") @@ -870,7 +907,6 @@ func (t *TssCommon) ProcessInboundMessages(finishChan chan struct{}, wg *sync.Wa if err != nil { t.logger.Error().Err(err).Msg("fail to process the received message") } - } } } diff --git a/common/tss_helper.go b/common/tss_helper.go index fa74a77..c440353 100644 --- a/common/tss_helper.go +++ b/common/tss_helper.go @@ -24,8 +24,8 @@ import ( "github.com/rs/zerolog" "github.com/rs/zerolog/log" - "gitlab.com/thorchain/tss/go-tss/blame" - "gitlab.com/thorchain/tss/go-tss/messages" + "github.com/zeta-chain/go-tss/blame" + "github.com/zeta-chain/go-tss/messages" ) func Contains(s []*btss.PartyID, e *btss.PartyID) bool { diff --git a/common/tss_helper_test.go b/common/tss_helper_test.go index e3ecf43..b0a2323 100644 --- a/common/tss_helper_test.go +++ b/common/tss_helper_test.go @@ -13,9 +13,9 @@ import ( "github.com/libp2p/go-libp2p/core/peer" . "gopkg.in/check.v1" - "gitlab.com/thorchain/tss/go-tss/blame" - "gitlab.com/thorchain/tss/go-tss/conversion" - "gitlab.com/thorchain/tss/go-tss/messages" + "github.com/zeta-chain/go-tss/blame" + "github.com/zeta-chain/go-tss/conversion" + "github.com/zeta-chain/go-tss/messages" ) type tssHelpSuite struct{} @@ -62,7 +62,10 @@ func (t *tssHelpSuite) TestMsgToHashString(c *C) { func (t *tssHelpSuite) TestTssCommon_NotifyTaskDone(c *C) { conversion.SetupBech32Prefix() - pk, err := sdk.UnmarshalPubKey(sdk.AccPK, "thorpub1addwnpepqtdklw8tf3anjz7nn5fly3uvq2e67w2apn560s4smmrt9e3x52nt2svmmu3") + pk, err := sdk.UnmarshalPubKey( + sdk.AccPK, + "thorpub1addwnpepqtdklw8tf3anjz7nn5fly3uvq2e67w2apn560s4smmrt9e3x52nt2svmmu3", + ) c.Assert(err, IsNil) peerID, err := conversion.GetPeerIDFromSecp256PubKey(pk.Bytes()) c.Assert(err, IsNil) @@ -73,7 +76,10 @@ func (t *tssHelpSuite) TestTssCommon_NotifyTaskDone(c *C) { } func (t *tssHelpSuite) TestTssCommon_processRequestMsgFromPeer(c *C) { - pk, err := sdk.UnmarshalPubKey(sdk.AccPK, "thorpub1addwnpepqtdklw8tf3anjz7nn5fly3uvq2e67w2apn560s4smmrt9e3x52nt2svmmu3") + pk, err := sdk.UnmarshalPubKey( + sdk.AccPK, + "thorpub1addwnpepqtdklw8tf3anjz7nn5fly3uvq2e67w2apn560s4smmrt9e3x52nt2svmmu3", + ) c.Assert(err, IsNil) peerID, err := conversion.GetPeerIDFromSecp256PubKey(pk.Bytes()) c.Assert(err, IsNil) diff --git a/common/tss_test.go b/common/tss_test.go index da9917c..b527d6e 100644 --- a/common/tss_test.go +++ b/common/tss_test.go @@ -21,17 +21,33 @@ import ( . "gopkg.in/check.v1" "github.com/btcsuite/btcd/btcec/v2" - "gitlab.com/thorchain/tss/go-tss/blame" - "gitlab.com/thorchain/tss/go-tss/conversion" - "gitlab.com/thorchain/tss/go-tss/messages" - "gitlab.com/thorchain/tss/go-tss/p2p" + "github.com/zeta-chain/go-tss/blame" + "github.com/zeta-chain/go-tss/conversion" + "github.com/zeta-chain/go-tss/messages" + "github.com/zeta-chain/go-tss/p2p" ) var ( testBlamePrivKey = "YmNiMzA2ODU1NWNjMzk3NDE1OWMwMTM3MDU0NTNjN2YwMzYzZmVhZDE5NmU3NzRhOTMwOWIxN2QyZTQ0MzdkNg==" testSenderPubKey = "thorpub1addwnpepqtspqyy6gk22u37ztra4hq3hdakc0w0k60sfy849mlml2vrpfr0wvm6uz09" - testPubKeys = [...]string{"thorpub1addwnpepqtdklw8tf3anjz7nn5fly3uvq2e67w2apn560s4smmrt9e3x52nt2svmmu3", "thorpub1addwnpepqtspqyy6gk22u37ztra4hq3hdakc0w0k60sfy849mlml2vrpfr0wvm6uz09", "thorpub1addwnpepq2ryyje5zr09lq7gqptjwnxqsy2vcdngvwd6z7yt5yjcnyj8c8cn559xe69", "thorpub1addwnpepqfjcw5l4ay5t00c32mmlky7qrppepxzdlkcwfs2fd5u73qrwna0vzag3y4j"} - testBlamePubKeys = []string{"thorpub1addwnpepqtr5p8tllhp4xaxmu77zhqen24pmrdlnekzevshaqkyzdqljm6rejnnt02t", "thorpub1addwnpepqtspqyy6gk22u37ztra4hq3hdakc0w0k60sfy849mlml2vrpfr0wvm6uz09", "thorpub1addwnpepqga4nded5hhnwsrwmrns803w7vu9mffp9r6dz4l6smaww2l5useuq6vkttg", "thorpub1addwnpepq28hfdpu3rdgvj8skzhlm8hyt5nlwwc8pjrzvn253j86e4dujj6jsmuf25q", "thorpub1addwnpepqfuq0xc67052h288r6flp67l0ny9mg6u3sxhsrlukyfg0fe9j6q36ysd33y", "thorpub1addwnpepq0jszts80udfl4pkfk6cp93647yl6fhu6pk486uwjdz2sf94qvu0kw0t6ug", "thorpub1addwnpepqw6mmffk69n5taaqhq3wsc8mvdpsrdnx960kujeh4jwm9lj8nuyux9hz5e4", "thorpub1addwnpepq0pdhm2jatzg2vy6fyw89vs6q374zayqd5498wn8ww780grq256ygq7hhjt", "thorpub1addwnpepqggwmlgd8u9t2sx4a0styqwhzrvdhpvdww7sqwnweyrh25rjwwm9q65kx9s", "thorpub1addwnpepqtssltyjvms8pa7k4yg85lnrjqtvvr2ecr36rhm7pa4ztf55tnuzzgvegpk"} + testPubKeys = [...]string{ + "thorpub1addwnpepqtdklw8tf3anjz7nn5fly3uvq2e67w2apn560s4smmrt9e3x52nt2svmmu3", + "thorpub1addwnpepqtspqyy6gk22u37ztra4hq3hdakc0w0k60sfy849mlml2vrpfr0wvm6uz09", + "thorpub1addwnpepq2ryyje5zr09lq7gqptjwnxqsy2vcdngvwd6z7yt5yjcnyj8c8cn559xe69", + "thorpub1addwnpepqfjcw5l4ay5t00c32mmlky7qrppepxzdlkcwfs2fd5u73qrwna0vzag3y4j", + } + testBlamePubKeys = []string{ + "thorpub1addwnpepqtr5p8tllhp4xaxmu77zhqen24pmrdlnekzevshaqkyzdqljm6rejnnt02t", + "thorpub1addwnpepqtspqyy6gk22u37ztra4hq3hdakc0w0k60sfy849mlml2vrpfr0wvm6uz09", + "thorpub1addwnpepqga4nded5hhnwsrwmrns803w7vu9mffp9r6dz4l6smaww2l5useuq6vkttg", + "thorpub1addwnpepq28hfdpu3rdgvj8skzhlm8hyt5nlwwc8pjrzvn253j86e4dujj6jsmuf25q", + "thorpub1addwnpepqfuq0xc67052h288r6flp67l0ny9mg6u3sxhsrlukyfg0fe9j6q36ysd33y", + "thorpub1addwnpepq0jszts80udfl4pkfk6cp93647yl6fhu6pk486uwjdz2sf94qvu0kw0t6ug", + "thorpub1addwnpepqw6mmffk69n5taaqhq3wsc8mvdpsrdnx960kujeh4jwm9lj8nuyux9hz5e4", + "thorpub1addwnpepq0pdhm2jatzg2vy6fyw89vs6q374zayqd5498wn8ww780grq256ygq7hhjt", + "thorpub1addwnpepqggwmlgd8u9t2sx4a0styqwhzrvdhpvdww7sqwnweyrh25rjwwm9q65kx9s", + "thorpub1addwnpepqtssltyjvms8pa7k4yg85lnrjqtvvr2ecr36rhm7pa4ztf55tnuzzgvegpk", + } ) func TestPackage(t *testing.T) { TestingT(t) } @@ -125,7 +141,13 @@ func (t *TssTestSuite) TestTssProcessOutCh(c *C) { c.Assert(err, IsNil) } -func fabricateTssMsg(c *C, privKey tcrypto.PrivKey, partyID *btss.PartyID, roundInfo, msg, msgID string, msgType messages.THORChainTSSMessageType) (*messages.WrappedMessage, []byte) { +func fabricateTssMsg( + c *C, + privKey tcrypto.PrivKey, + partyID *btss.PartyID, + roundInfo, msg, msgID string, + msgType messages.THORChainTSSMessageType, +) (*messages.WrappedMessage, []byte) { routingInfo := btss.MessageRouting{ From: partyID, To: nil, @@ -172,12 +194,26 @@ func fabricateVerMsg(c *C, hash, hashKey string) *messages.WrappedMessage { return &wrappedMsg } -func (t *TssTestSuite) testVerMsgDuplication(c *C, privKey tcrypto.PrivKey, tssCommonStruct *TssCommon, senderID *btss.PartyID, partiesID []*btss.PartyID) { +func (t *TssTestSuite) testVerMsgDuplication( + c *C, + privKey tcrypto.PrivKey, + tssCommonStruct *TssCommon, + senderID *btss.PartyID, + partiesID []*btss.PartyID, +) { testMsg := "testVerMsgDuplication" roundInfo := "round testVerMsgDuplication" tssCommonStruct.msgID = "123" msgKey := fmt.Sprintf("%s-%s", senderID.Id, roundInfo) - wrappedMsg, _ := fabricateTssMsg(c, privKey, senderID, roundInfo, testMsg, tssCommonStruct.msgID, messages.TSSKeyGenMsg) + wrappedMsg, _ := fabricateTssMsg( + c, + privKey, + senderID, + roundInfo, + testMsg, + tssCommonStruct.msgID, + messages.TSSKeyGenMsg, + ) err := tssCommonStruct.ProcessOneMessage(wrappedMsg, tssCommonStruct.PartyIDtoP2PID[partiesID[1].Id].String()) c.Assert(err, IsNil) localItem := tssCommonStruct.TryGetLocalCacheItem(msgKey) @@ -187,7 +223,12 @@ func (t *TssTestSuite) testVerMsgDuplication(c *C, privKey tcrypto.PrivKey, tssC c.Assert(localItem.ConfirmedList, HasLen, 1) } -func setupProcessVerMsgEnv(c *C, privKey tcrypto.PrivKey, keyPool []string, partyNum int) (*TssCommon, []*btss.PartyID, []*btss.PartyID) { +func setupProcessVerMsgEnv( + c *C, + privKey tcrypto.PrivKey, + keyPool []string, + partyNum int, +) (*TssCommon, []*btss.PartyID, []*btss.PartyID) { conf := TssConfig{} tssCommonStruct := NewTssCommon("", nil, conf, "test", privKey, 1) localTestPubKeys := make([]string, partyNum) @@ -221,13 +262,27 @@ func setupProcessVerMsgEnv(c *C, privKey tcrypto.PrivKey, keyPool []string, part return tssCommonStruct, peerPartiesID, partiesID } -func (t *TssTestSuite) testDropMsgOwner(c *C, privKey tcrypto.PrivKey, tssCommonStruct *TssCommon, senderID *btss.PartyID, peerPartiesID []*btss.PartyID) { +func (t *TssTestSuite) testDropMsgOwner( + c *C, + privKey tcrypto.PrivKey, + tssCommonStruct *TssCommon, + senderID *btss.PartyID, + peerPartiesID []*btss.PartyID, +) { testMsg := "testDropMsgOwner" roundInfo := "round testDropMsgOwner" msgHash, err := conversion.BytesToHashString([]byte(testMsg)) c.Assert(err, IsNil) msgKey := fmt.Sprintf("%s-%s", senderID.Id, roundInfo) - senderMsg, expectedSignature := fabricateTssMsg(c, privKey, senderID, roundInfo, testMsg, "123", messages.TSSKeyGenMsg) + senderMsg, expectedSignature := fabricateTssMsg( + c, + privKey, + senderID, + roundInfo, + testMsg, + "123", + messages.TSSKeyGenMsg, + ) senderPeer, err := conversion.GetPeerIDFromPartyID(senderID) c.Assert(err, IsNil) @@ -326,7 +381,12 @@ func (t *TssTestSuite) testProcessTaskDone(c *C, tssCommonStruct *TssCommon) { wg.Done() } -func (t *TssTestSuite) testVerMsgAndUpdateFromPeer(c *C, tssCommonStruct *TssCommon, senderID *btss.PartyID, partiesID []*btss.PartyID) { +func (t *TssTestSuite) testVerMsgAndUpdateFromPeer( + c *C, + tssCommonStruct *TssCommon, + senderID *btss.PartyID, + partiesID []*btss.PartyID, +) { testMsg := "testVerMsgAndUpdate2" roundInfo := "round testVerMsgAndUpdate2" msgHash, err := conversion.BytesToHashString([]byte(testMsg)) @@ -344,7 +404,12 @@ func (t *TssTestSuite) testVerMsgAndUpdateFromPeer(c *C, tssCommonStruct *TssCom c.Assert(localItem.ConfirmedList, HasLen, 1) } -func (t *TssTestSuite) testVerMsgAndUpdate(c *C, tssCommonStruct *TssCommon, senderID *btss.PartyID, partiesID []*btss.PartyID) { +func (t *TssTestSuite) testVerMsgAndUpdate( + c *C, + tssCommonStruct *TssCommon, + senderID *btss.PartyID, + partiesID []*btss.PartyID, +) { testMsg := "testVerMsgAndUpdate" roundInfo := "round testVerMsgAndUpdate" msgKey := fmt.Sprintf("%s-%s", senderID.Id, roundInfo) @@ -405,7 +470,10 @@ func (t *TssTestSuite) TestProcessVerMessage(c *C) { } func (t *TssTestSuite) TestTssCommon(c *C) { - pk, err := sdk.UnmarshalPubKey(sdk.AccPK, "thorpub1addwnpepqtdklw8tf3anjz7nn5fly3uvq2e67w2apn560s4smmrt9e3x52nt2svmmu3") + pk, err := sdk.UnmarshalPubKey( + sdk.AccPK, + "thorpub1addwnpepqtdklw8tf3anjz7nn5fly3uvq2e67w2apn560s4smmrt9e3x52nt2svmmu3", + ) c.Assert(err, IsNil) peerID, err := conversion.GetPeerIDFromSecp256PubKey(pk.Bytes()) c.Assert(err, IsNil) @@ -421,7 +489,15 @@ func (t *TssTestSuite) TestTssCommon(c *C) { }() bi, err := MsgToHashInt([]byte("whatever"), ECDSA) c.Assert(err, IsNil) - wrapMsg, _ := fabricateTssMsg(c, sk, btss.NewPartyID("1,", "test", bi), "roundInfo", "message", "123", messages.TSSKeyGenMsg) + wrapMsg, _ := fabricateTssMsg( + c, + sk, + btss.NewPartyID("1,", "test", bi), + "roundInfo", + "message", + "123", + messages.TSSKeyGenMsg, + ) buf, err := json.Marshal(wrapMsg) c.Assert(err, IsNil) pMsg := &p2p.Message{ @@ -445,7 +521,15 @@ func (t *TssTestSuite) TestProcessInvalidMsgBlame(c *C) { testMsg := "testVerMsgDuplication" roundInfo := "round testMessage" tssCommonStruct.msgID = "123" - wrappedMsg, _ := fabricateTssMsg(c, t.privKey, sender, roundInfo, testMsg, tssCommonStruct.msgID, messages.TSSKeyGenMsg) + wrappedMsg, _ := fabricateTssMsg( + c, + t.privKey, + sender, + roundInfo, + testMsg, + tssCommonStruct.msgID, + messages.TSSKeyGenMsg, + ) var wiredMsg messages.WireMessage err := json.Unmarshal(wrappedMsg.Payload, &wiredMsg) diff --git a/conversion/conversion.go b/conversion/conversion.go index 2379b74..0777a0f 100644 --- a/conversion/conversion.go +++ b/conversion/conversion.go @@ -19,11 +19,11 @@ import ( coskey "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types/bech32/legacybech32" + "github.com/decred/dcrd/dcrec/edwards/v2" crypto2 "github.com/libp2p/go-libp2p/core/crypto" "github.com/libp2p/go-libp2p/core/peer" - "github.com/decred/dcrd/dcrec/edwards/v2" - "gitlab.com/thorchain/tss/go-tss/messages" + "github.com/zeta-chain/go-tss/messages" ) // GetPeerIDFromSecp256PubKey convert the given pubkey into a peer.ID diff --git a/conversion/conversion_test.go b/conversion/conversion_test.go index d0ee717..7e68dd1 100644 --- a/conversion/conversion_test.go +++ b/conversion/conversion_test.go @@ -15,8 +15,13 @@ import ( ) var ( - testPubKeys = [...]string{"thorpub1addwnpepqtdklw8tf3anjz7nn5fly3uvq2e67w2apn560s4smmrt9e3x52nt2svmmu3", "thorpub1addwnpepqtspqyy6gk22u37ztra4hq3hdakc0w0k60sfy849mlml2vrpfr0wvm6uz09", "thorpub1addwnpepq2ryyje5zr09lq7gqptjwnxqsy2vcdngvwd6z7yt5yjcnyj8c8cn559xe69", "thorpub1addwnpepqfjcw5l4ay5t00c32mmlky7qrppepxzdlkcwfs2fd5u73qrwna0vzag3y4j"} - testPeers = []string{ + testPubKeys = [...]string{ + "thorpub1addwnpepqtdklw8tf3anjz7nn5fly3uvq2e67w2apn560s4smmrt9e3x52nt2svmmu3", + "thorpub1addwnpepqtspqyy6gk22u37ztra4hq3hdakc0w0k60sfy849mlml2vrpfr0wvm6uz09", + "thorpub1addwnpepq2ryyje5zr09lq7gqptjwnxqsy2vcdngvwd6z7yt5yjcnyj8c8cn559xe69", + "thorpub1addwnpepqfjcw5l4ay5t00c32mmlky7qrppepxzdlkcwfs2fd5u73qrwna0vzag3y4j", + } + testPeers = []string{ "16Uiu2HAm4TmEzUqy3q3Dv7HvdoSboHk5sFj2FH3npiN5vDbJC6gh", "16Uiu2HAm2FzqoUdS6Y9Esg2EaGcAG5rVe1r6BFNnmmQr2H3bqafa", "16Uiu2HAmACG5DtqmQsHtXg4G2sLS65ttv84e7MrL4kapkjfmhxAp", @@ -220,7 +225,15 @@ func (p *ConversionTestSuite) TestTssPubKey(c *C) { c.Assert(addr.Bytes(), HasLen, 0) SetupBech32Prefix() // var point crypto.ECPoint - c.Assert(json.Unmarshal([]byte(`{"Coords":[70074650318631491136896111706876206496089700125696166275258483716815143842813,72125378038650252881868972131323661098816214918201601489154946637636730727892],"CurveType":"ecdsa"}`), &point), IsNil) + c.Assert( + json.Unmarshal( + []byte( + `{"Coords":[70074650318631491136896111706876206496089700125696166275258483716815143842813,72125378038650252881868972131323661098816214918201601489154946637636730727892],"CurveType":"ecdsa"}`, + ), + &point, + ), + IsNil, + ) pk, addr, err = GetTssPubKeyECDSA(point) c.Assert(err, IsNil) c.Assert(pk, Equals, "thorpub1addwnpepq2dwek9hkrlxjxadrlmy9fr42gqyq6029q0hked46l3u6a9fxqel6tma5eu") diff --git a/conversion/key_provider.go b/conversion/key_provider.go index a6a7587..4eae79e 100644 --- a/conversion/key_provider.go +++ b/conversion/key_provider.go @@ -135,5 +135,4 @@ func CheckKeyOnCurve(pk string) (bool, error) { default: return false, fmt.Errorf("fail to parse pub key(%s): %w", pk, err) } - } diff --git a/conversion/tss_helper.go b/conversion/tss_helper.go index a19db42..737ebc6 100644 --- a/conversion/tss_helper.go +++ b/conversion/tss_helper.go @@ -62,11 +62,11 @@ func VersionLTCheck(currentVer, expectedVer string) (bool, error) { func TestBootstrapAddrs(ports []int, testPubKeys []string) ([]maddr.Multiaddr, error) { res := make([]maddr.Multiaddr, len(ports)) for i := 0; i < len(ports); i++ { - peerId, err := Bech32PubkeyToPeerID(testPubKeys[i]) + peerID, err := Bech32PubkeyToPeerID(testPubKeys[i]) if err != nil { return nil, fmt.Errorf("pubkey for peer %d is not valid %w", i, err) } - peerAddr, err := maddr.NewMultiaddr(fmt.Sprintf("/ip4/127.0.0.1/tcp/%d/p2p/%s", ports[i], peerId.String())) + peerAddr, err := maddr.NewMultiaddr(fmt.Sprintf("/ip4/127.0.0.1/tcp/%d/p2p/%s", ports[i], peerID.String())) if err != nil { return nil, fmt.Errorf("peer addr %d is not valid %w", i, err) } diff --git a/go.mod b/go.mod index 45c1de5..0b8256f 100644 --- a/go.mod +++ b/go.mod @@ -1,122 +1,139 @@ -module gitlab.com/thorchain/tss/go-tss +module github.com/zeta-chain/go-tss -go 1.20 +go 1.22.11 require ( github.com/blang/semver v3.5.1+incompatible github.com/bnb-chain/tss-lib v1.3.5 github.com/btcsuite/btcd v0.24.2 // indirect - github.com/cosmos/cosmos-sdk v0.47.10 + github.com/btcsuite/btcd/btcec/v2 v2.3.4 + github.com/cometbft/cometbft v0.38.17 + github.com/cosmos/cosmos-sdk v0.50.13 github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect github.com/deckarep/golang-set v1.7.1 + github.com/decred/dcrd/dcrec/edwards/v2 v2.0.0 github.com/decred/dcrd/dcrec/secp256k1 v1.0.3 - github.com/golang/protobuf v1.5.3 + github.com/golang/protobuf v1.5.4 github.com/gorilla/mux v1.8.0 github.com/ipfs/go-log v1.0.5 github.com/libp2p/go-libp2p v0.25.1 github.com/libp2p/go-libp2p-testing v0.12.0 - github.com/magiconair/properties v1.8.6 + github.com/magiconair/properties v1.8.7 github.com/multiformats/go-multiaddr v0.8.0 github.com/olekukonko/tablewriter v0.0.5 github.com/pkg/errors v0.9.1 - github.com/prometheus/client_golang v1.14.0 - github.com/prometheus/client_model v0.3.0 - github.com/rs/zerolog v1.32.0 - github.com/stretchr/testify v1.9.0 + github.com/prometheus/client_golang v1.20.5 + github.com/prometheus/client_model v0.6.1 + github.com/rs/zerolog v1.33.0 + github.com/stretchr/testify v1.10.0 github.com/tendermint/btcd v0.1.1 gitlab.com/thorchain/binance-sdk v1.2.3-0.20210117202539-d569b6b9ba5d go.uber.org/atomic v1.10.0 - golang.org/x/crypto v0.16.0 - golang.org/x/text v0.14.0 - google.golang.org/protobuf v1.32.0 + golang.org/x/crypto v0.32.0 + golang.org/x/text v0.21.0 + google.golang.org/protobuf v1.36.4 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c ) require ( - github.com/btcsuite/btcd/btcec/v2 v2.3.2 - github.com/cometbft/cometbft v0.37.4 - github.com/decred/dcrd/dcrec/edwards/v2 v2.0.0 -) - -require ( - cosmossdk.io/api v0.3.1 // indirect - cosmossdk.io/core v0.5.1 // indirect - cosmossdk.io/depinject v1.0.0-alpha.4 // indirect + cosmossdk.io/api v0.7.6 // indirect + cosmossdk.io/collections v0.4.0 // indirect + cosmossdk.io/core v0.11.0 // indirect + cosmossdk.io/depinject v1.1.0 // indirect cosmossdk.io/errors v1.0.1 // indirect - cosmossdk.io/math v1.3.0 // indirect + cosmossdk.io/log v1.4.1 // indirect + cosmossdk.io/math v1.4.0 // indirect + cosmossdk.io/store v1.1.1 // indirect + cosmossdk.io/x/tx v0.13.7 // indirect filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.1 // indirect - github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect + github.com/DataDog/datadog-go v3.2.0+incompatible // indirect + github.com/DataDog/zstd v1.5.5 // indirect github.com/agl/ed25519 v0.0.0-20200225211852-fd4d107ace12 // indirect - github.com/armon/go-metrics v0.4.1 // indirect github.com/benbjohnson/clock v1.3.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect github.com/btcsuite/btcd/btcutil v1.1.6 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect - github.com/cespare/xxhash v1.1.0 // indirect - github.com/cespare/xxhash/v2 v2.2.0 // indirect - github.com/cockroachdb/errors v1.10.0 // indirect + github.com/cenkalti/backoff/v4 v4.1.3 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/cockroachdb/errors v1.11.3 // indirect + github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect + github.com/cockroachdb/pebble v1.1.2 // indirect github.com/cockroachdb/redact v1.1.5 // indirect - github.com/cometbft/cometbft-db v0.7.0 // indirect - github.com/confio/ics23/go v0.9.0 // indirect + github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect + github.com/cometbft/cometbft-db v0.14.1 // indirect github.com/containerd/cgroups v1.0.4 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/cosmos/btcutil v1.0.5 // indirect - github.com/cosmos/cosmos-proto v1.0.0-beta.4 // indirect + github.com/cosmos/cosmos-db v1.1.1 // indirect + github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect github.com/cosmos/go-bip39 v1.0.0 // indirect - github.com/cosmos/gogoproto v1.4.10 // indirect - github.com/cosmos/iavl v0.20.1 // indirect - github.com/cosmos/ledger-cosmos-go v0.12.4 // indirect + github.com/cosmos/gogogateway v1.2.0 // indirect + github.com/cosmos/gogoproto v1.7.0 // indirect + github.com/cosmos/iavl v1.2.2 // indirect + github.com/cosmos/ics23/go v0.11.0 // indirect + github.com/cosmos/ledger-cosmos-go v0.14.0 // indirect github.com/danieljoos/wincred v1.1.2 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.0 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect - github.com/dgraph-io/badger/v2 v2.2007.4 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect + github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect + github.com/dgraph-io/badger/v4 v4.2.0 // indirect github.com/dgraph-io/ristretto v0.1.1 // indirect - github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/dvsekhvalnov/jose2go v1.6.0 // indirect github.com/elastic/gosigar v0.14.2 // indirect + github.com/emicklei/dot v1.6.2 // indirect + github.com/fatih/color v1.15.0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect github.com/flynn/noise v1.0.0 // indirect - github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/getsentry/sentry-go v0.23.0 // indirect - github.com/go-kit/kit v0.12.0 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/getsentry/sentry-go v0.27.0 // indirect + github.com/go-kit/kit v0.13.0 // indirect github.com/go-kit/log v0.2.1 // indirect - github.com/go-logfmt/logfmt v0.5.1 // indirect + github.com/go-logfmt/logfmt v0.6.0 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/godbus/dbus/v5 v5.1.0 // indirect + github.com/gogo/googleapis v1.4.1 // indirect github.com/gogo/protobuf v1.3.3 // indirect - github.com/golang/glog v1.1.2 // indirect + github.com/golang/glog v1.2.3 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/mock v1.6.0 // indirect github.com/golang/snappy v0.0.4 // indirect - github.com/google/btree v1.1.2 // indirect + github.com/google/btree v1.1.3 // indirect + github.com/google/flatbuffers v1.12.1 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/gopacket v1.1.19 // indirect - github.com/gorilla/websocket v1.5.0 // indirect - github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect + github.com/gorilla/handlers v1.5.1 // indirect + github.com/gorilla/websocket v1.5.3 // indirect + github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect - github.com/gtank/merlin v0.1.1 // indirect - github.com/gtank/ristretto255 v0.1.2 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/go-hclog v1.5.0 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect + github.com/hashicorp/go-metrics v0.5.3 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect + github.com/hashicorp/go-plugin v1.5.2 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.1.0 // indirect github.com/huandu/skiplist v1.2.0 // indirect github.com/huin/goupnp v1.0.3 // indirect - github.com/inconshreveable/mousetrap v1.0.1 // indirect + github.com/iancoleman/strcase v0.3.0 // indirect + github.com/improbable-eng/grpc-web v0.15.0 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/ipfs/go-cid v0.3.2 // indirect github.com/ipfs/go-log/v2 v2.5.1 // indirect github.com/jackpal/go-nat-pmp v1.0.2 // indirect github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect - github.com/klauspost/compress v1.16.7 // indirect + github.com/klauspost/compress v1.17.9 // indirect github.com/klauspost/cpuid/v2 v2.2.1 // indirect github.com/koron/go-ssdp v0.0.3 // indirect github.com/kr/pretty v0.3.1 // indirect @@ -130,16 +147,16 @@ require ( github.com/libp2p/go-netroute v0.2.1 // indirect github.com/libp2p/go-reuseport v0.2.0 // indirect github.com/libp2p/go-yamux/v4 v4.0.0 // indirect + github.com/linxGnu/grocksdb v1.8.14 // indirect github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.9 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/miekg/dns v1.1.50 // indirect github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect - github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect github.com/minio/sha256-simd v1.0.0 // indirect + github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mr-tron/base58 v1.2.0 // indirect github.com/mtibben/percent v0.2.1 // indirect @@ -152,54 +169,58 @@ require ( github.com/multiformats/go-multihash v0.2.1 // indirect github.com/multiformats/go-multistream v0.4.1 // indirect github.com/multiformats/go-varint v0.0.7 // indirect - github.com/onsi/gomega v1.24.0 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect + github.com/oklog/run v1.1.0 // indirect github.com/opencontainers/runtime-spec v1.0.2 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/otiai10/primes v0.0.0-20180210170552-f6d2a1ba97c4 // indirect github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect - github.com/pelletier/go-toml v1.9.5 // indirect - github.com/pelletier/go-toml/v2 v2.0.7 // indirect - github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/common v0.42.0 // indirect - github.com/prometheus/procfs v0.9.0 // indirect + github.com/pelletier/go-toml/v2 v2.2.2 // indirect + github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/prometheus/common v0.62.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect github.com/raulk/go-watchdog v1.3.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect - github.com/rogpeppe/go-internal v1.11.0 // indirect - github.com/sasha-s/go-deadlock v0.3.1 // indirect + github.com/rogpeppe/go-internal v1.12.0 // indirect + github.com/rs/cors v1.11.1 // indirect + github.com/sagikazarmark/locafero v0.4.0 // indirect + github.com/sagikazarmark/slog-shim v0.1.0 // indirect + github.com/sasha-s/go-deadlock v0.3.5 // indirect + github.com/sourcegraph/conc v0.3.0 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect - github.com/spf13/afero v1.9.2 // indirect - github.com/spf13/cast v1.5.0 // indirect - github.com/spf13/cobra v1.6.1 // indirect - github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/afero v1.11.0 // indirect + github.com/spf13/cast v1.7.1 // indirect + github.com/spf13/cobra v1.8.1 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.14.0 // indirect - github.com/subosito/gotenv v1.4.1 // indirect + github.com/spf13/viper v1.19.0 // indirect + github.com/subosito/gotenv v1.6.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect - github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect github.com/tendermint/go-amino v0.16.0 // indirect - github.com/tidwall/btree v1.6.0 // indirect + github.com/tidwall/btree v1.7.0 // indirect github.com/zondax/hid v0.9.2 // indirect github.com/zondax/ledger-go v0.14.3 // indirect - go.etcd.io/bbolt v1.3.7 // indirect + go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect + go.opencensus.io v0.24.0 // indirect go.uber.org/dig v1.15.0 // indirect go.uber.org/fx v1.18.2 // indirect - go.uber.org/multierr v1.8.0 // indirect + go.uber.org/multierr v1.10.0 // indirect go.uber.org/zap v1.24.0 // indirect - golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb // indirect - golang.org/x/mod v0.11.0 // indirect - golang.org/x/net v0.19.0 // indirect - golang.org/x/sync v0.4.0 // indirect - golang.org/x/sys v0.16.0 // indirect - golang.org/x/term v0.15.0 // indirect - golang.org/x/tools v0.6.0 // indirect - google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20231212172506-995d672761c0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240108191215-35c7eff3a6b1 // indirect - google.golang.org/grpc v1.60.1 // indirect + golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect + golang.org/x/mod v0.19.0 // indirect + golang.org/x/net v0.34.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.29.0 // indirect + golang.org/x/term v0.28.0 // indirect + golang.org/x/tools v0.23.0 // indirect + google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20241202173237-19429a94021a // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect + google.golang.org/grpc v1.70.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect + gotest.tools/v3 v3.5.1 // indirect lukechampine.com/blake3 v1.1.7 // indirect nhooyr.io/websocket v1.8.7 // indirect pgregory.net/rapid v1.1.0 // indirect diff --git a/go.sum b/go.sum index 7364e44..cba6a5c 100644 --- a/go.sum +++ b/go.sum @@ -5,51 +5,31 @@ cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -cosmossdk.io/api v0.3.1 h1:NNiOclKRR0AOlO4KIqeaG6PS6kswOMhHD0ir0SscNXE= -cosmossdk.io/api v0.3.1/go.mod h1:DfHfMkiNA2Uhy8fj0JJlOCYOBp4eWUUJ1te5zBGNyIw= -cosmossdk.io/core v0.5.1 h1:vQVtFrIYOQJDV3f7rw4pjjVqc1id4+mE0L9hHP66pyI= -cosmossdk.io/core v0.5.1/go.mod h1:KZtwHCLjcFuo0nmDc24Xy6CRNEL9Vl/MeimQ2aC7NLE= -cosmossdk.io/depinject v1.0.0-alpha.4 h1:PLNp8ZYAMPTUKyG9IK2hsbciDWqna2z1Wsl98okJopc= -cosmossdk.io/depinject v1.0.0-alpha.4/go.mod h1:HeDk7IkR5ckZ3lMGs/o91AVUc7E596vMaOmslGFM3yU= +cosmossdk.io/api v0.7.6 h1:PC20PcXy1xYKH2KU4RMurVoFjjKkCgYRbVAD4PdqUuY= +cosmossdk.io/api v0.7.6/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= +cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= +cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0= +cosmossdk.io/core v0.11.0 h1:vtIafqUi+1ZNAE/oxLOQQ7Oek2n4S48SWLG8h/+wdbo= +cosmossdk.io/core v0.11.0/go.mod h1:LaTtayWBSoacF5xNzoF8tmLhehqlA9z1SWiPuNC6X1w= +cosmossdk.io/depinject v1.1.0 h1:wLan7LG35VM7Yo6ov0jId3RHWCGRhe8E8bsuARorl5E= +cosmossdk.io/depinject v1.1.0/go.mod h1:kkI5H9jCGHeKeYWXTqYdruogYrEeWvBQCw1Pj4/eCFI= cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= -cosmossdk.io/log v1.3.1 h1:UZx8nWIkfbbNEWusZqzAx3ZGvu54TZacWib3EzUYmGI= -cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= -cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= -cosmossdk.io/tools/rosetta v0.2.1 h1:ddOMatOH+pbxWbrGJKRAawdBkPYLfKXutK9IETnjYxw= +cosmossdk.io/log v1.4.1 h1:wKdjfDRbDyZRuWa8M+9nuvpVYxrEOwbD/CA8hvhU8QM= +cosmossdk.io/log v1.4.1/go.mod h1:k08v0Pyq+gCP6phvdI6RCGhLf/r425UT6Rk/m+o74rU= +cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= +cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= +cosmossdk.io/store v1.1.1 h1:NA3PioJtWDVU7cHHeyvdva5J/ggyLDkyH0hGHl2804Y= +cosmossdk.io/store v1.1.1/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM= +cosmossdk.io/x/tx v0.13.7 h1:8WSk6B/OHJLYjiZeMKhq7DK7lHDMyK0UfDbBMxVmeOI= +cosmossdk.io/x/tx v0.13.7/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek= filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= @@ -60,12 +40,12 @@ github.com/99designs/keyring v1.2.1/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwR github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= -github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= -github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= +github.com/DataDog/datadog-go v3.2.0+incompatible h1:qSG2N4FghB1He/r2mFrWKCaL7dXCilEuNEeAn20fdD4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= +github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= +github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= @@ -85,8 +65,6 @@ github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= -github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= @@ -116,8 +94,9 @@ github.com/btcsuite/btcd v0.24.2 h1:aLmxPguqxza+4ag8R1I2nnJjSu2iFn/kqtHTIImswcY= github.com/btcsuite/btcd v0.24.2/go.mod h1:5C8ChTkl5ejr3WHj8tkQSCmydiMEPB0ZhQhehpq7Dgg= github.com/btcsuite/btcd/btcec/v2 v2.1.0/go.mod h1:2VzYrv4Gm4apmbVVsSq5bqf1Ec8v56E48Vt0Y/umPgA= github.com/btcsuite/btcd/btcec/v2 v2.1.3/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= -github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ= +github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= github.com/btcsuite/btcd/btcutil v1.0.0/go.mod h1:Uoxwv0pqYWhD//tfTiipkxNfdhG9UrLwaeswfjfdF0A= github.com/btcsuite/btcd/btcutil v1.1.0/go.mod h1:5OapHB7A2hBBWLm48mmw4MOHNJCcUBTwmWH/0Jn8VHE= github.com/btcsuite/btcd/btcutil v1.1.5/go.mod h1:PSZZ4UitpLBWzxGd5VGOrLnmOjtPP/a6HaFo12zMs00= @@ -137,19 +116,22 @@ github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= +github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= +github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= +github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/readline v1.5.1 h1:upd/6fQk4src78LMRzh5vItIt361/o4uq553V8B5sGI= +github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= @@ -157,25 +139,34 @@ github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/cockroachdb/errors v1.10.0 h1:lfxS8zZz1+OjtV4MtNWgboi/W5tyLEB6VQZBXN+0VUU= -github.com/cockroachdb/errors v1.10.0/go.mod h1:lknhIsEVQ9Ss/qKDBQS/UqFSvPQjOwNq2qyKAxtHRqE= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= +github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= +github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/pebble v1.1.2 h1:CUh2IPtR4swHlEj48Rhfzw6l/d0qA31fItcIszQVIsA= +github.com/cockroachdb/pebble v1.1.2/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= -github.com/cometbft/cometbft v0.37.4 h1:xyvvEqlyfK8MgNIIKVJaMsuIp03wxOcFmVkT26+Ikpg= -github.com/cometbft/cometbft v0.37.4/go.mod h1:Cmg5Hp4sNpapm7j+x0xRyt2g0juQfmB752ous+pA0G8= -github.com/cometbft/cometbft-db v0.7.0 h1:uBjbrBx4QzU0zOEnU8KxoDl18dMNgDh+zZRUE0ucsbo= -github.com/cometbft/cometbft-db v0.7.0/go.mod h1:yiKJIm2WKrt6x8Cyxtq9YTEcIMPcEe4XPxhgX59Fzf0= +github.com/cometbft/cometbft v0.38.17 h1:FkrQNbAjiFqXydeAO81FUzriL4Bz0abYxN/eOHrQGOk= +github.com/cometbft/cometbft v0.38.17/go.mod h1:5l0SkgeLRXi6bBfQuevXjKqML1jjfJJlvI1Ulp02/o4= +github.com/cometbft/cometbft-db v0.14.1 h1:SxoamPghqICBAIcGpleHbmoPqy+crij/++eZz3DlerQ= +github.com/cometbft/cometbft-db v0.14.1/go.mod h1:KHP1YghilyGV/xjD5DP3+2hyigWx0WTp9X+0Gnx0RxQ= github.com/confio/ics23/go v0.0.0-20200817220745-f173e6211efb/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= github.com/confio/ics23/go v0.6.3/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= -github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4= -github.com/confio/ics23/go v0.9.0/go.mod h1:4LPZ2NYqnYIVRklaozjNR1FScgDJ2s5Xrp+e/mYVRak= github.com/containerd/cgroups v0.0.0-20201119153540-4cbc285b3327/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= github.com/containerd/cgroups v1.0.4 h1:jN/mbWBEaz+T1pi5OFtnkQ+8qnmEbAr1Oo1FRm5B0dA= github.com/containerd/cgroups v1.0.4/go.mod h1:nLNQtsF7Sl2HxNebu77i1R0oDlhiTG+kO4JTrUzo6IA= @@ -194,44 +185,50 @@ github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfc github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= -github.com/cosmos/cosmos-proto v1.0.0-beta.4 h1:aEL7tU/rLOmxZQ9z4i7mzxcLbSCY48OdY7lIWTLG7oU= -github.com/cosmos/cosmos-proto v1.0.0-beta.4/go.mod h1:oeB+FyVzG3XrQJbJng0EnV8Vljfk9XvTIpGILNU/9Co= -github.com/cosmos/cosmos-sdk v0.47.10 h1:Wxf5yEN3jZbG4fftxAMKB6rpd8ME0mxuCVihpz65dt0= -github.com/cosmos/cosmos-sdk v0.47.10/go.mod h1:UWpgWkhcsBIATS68uUC0del7IiBN4hPv/vqg8Zz23uw= +github.com/cosmos/cosmos-db v1.1.1 h1:FezFSU37AlBC8S98NlSagL76oqBRWq/prTPvFcEJNCM= +github.com/cosmos/cosmos-db v1.1.1/go.mod h1:AghjcIPqdhSLP/2Z0yha5xPH3nLnskz81pBx3tcVSAw= +github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= +github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= +github.com/cosmos/cosmos-sdk v0.50.13 h1:xQ32hhzVy7agEe7behMdZN0ezWhPss3KoLZsF9KoBnw= +github.com/cosmos/cosmos-sdk v0.50.13/go.mod h1:hrWEFMU1eoXqLJeE6VVESpJDQH67FS1nnMrQIjO2daw= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= -github.com/cosmos/gogoproto v1.4.10 h1:QH/yT8X+c0F4ZDacDv3z+xE3WU1P1Z3wQoLMBRJoKuI= -github.com/cosmos/gogoproto v1.4.10/go.mod h1:3aAZzeRWpAwr+SS/LLkICX2/kDFyaYVzckBDzygIxek= +github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= +github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= +github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro= +github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0= github.com/cosmos/iavl v0.15.0-rc3.0.20201009144442-230e9bdf52cd/go.mod h1:3xOIaNNX19p0QrX0VqWa6voPRoJRGGYtny+DH8NEPvE= github.com/cosmos/iavl v0.15.0-rc5/go.mod h1:WqoPL9yPTQ85QBMT45OOUzPxG/U/JcJoN7uMjgxke/I= -github.com/cosmos/iavl v0.20.1 h1:rM1kqeG3/HBT85vsZdoSNsehciqUQPWrR4BYmqE2+zg= -github.com/cosmos/iavl v0.20.1/go.mod h1:WO7FyvaZJoH65+HFOsDir7xU9FWk2w9cHXNW1XHcl7A= -github.com/cosmos/ledger-cosmos-go v0.12.4 h1:drvWt+GJP7Aiw550yeb3ON/zsrgW0jgh5saFCr7pDnw= -github.com/cosmos/ledger-cosmos-go v0.12.4/go.mod h1:fjfVWRf++Xkygt9wzCsjEBdjcf7wiiY35fv3ctT+k4M= -github.com/cosmos/rosetta-sdk-go v0.10.0 h1:E5RhTruuoA7KTIXUcMicL76cffyeoyvNybzUGSKFTcM= +github.com/cosmos/iavl v1.2.2 h1:qHhKW3I70w+04g5KdsdVSHRbFLgt3yY3qTMd4Xa4rC8= +github.com/cosmos/iavl v1.2.2/go.mod h1:GiM43q0pB+uG53mLxLDzimxM9l/5N9UuSY3/D0huuVw= +github.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5RtnU= +github.com/cosmos/ics23/go v0.11.0/go.mod h1:A8OjxPE67hHST4Icw94hOxxFEJMBG031xIGF/JHNIY0= +github.com/cosmos/ledger-cosmos-go v0.14.0 h1:WfCHricT3rPbkPSVKRH+L4fQGKYHuGOK9Edpel8TYpE= +github.com/cosmos/ledger-cosmos-go v0.14.0/go.mod h1:E07xCWSBl3mTGofZ2QnL4cIUzMbbGVyik84QYKbX3RA= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c h1:pFUpOrbxDR6AkioZ1ySsx5yxlDQZ8stG2b88gTPxgJU= github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6UhI8N9EjYm1c2odKpFpAYeR8dsBeM7PtzQhRgxRr9U= github.com/deckarep/golang-set v1.7.1 h1:SCQV0S6gTtp6itiFrTqI+pfmJ4LN85S1YzhDf9rTHJQ= github.com/deckarep/golang-set v1.7.1/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ= github.com/decred/dcrd/chaincfg/chainhash v1.0.2 h1:rt5Vlq/jM3ZawwiacWjPa+smINyLRN07EO0cNBV6DGU= github.com/decred/dcrd/chaincfg/chainhash v1.0.2/go.mod h1:BpbrGgrPTr3YJYRN3Bm+D9NuaFd+zGyNeIKgrhCXK60= -github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= +github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/edwards/v2 v2.0.0 h1:E5KszxGgpjpmW8vN811G6rBAZg0/S/DftdGqN4FW5x4= github.com/decred/dcrd/dcrec/edwards/v2 v2.0.0/go.mod h1:d0H8xGMWbiIQP7gN3v2rByWUcuZPm9YsgmnfoxgbINc= github.com/decred/dcrd/dcrec/secp256k1 v1.0.3 h1:u4XpHqlscRolxPxt2YHrFBDVZYY1AK+KMV02H1r+HmU= @@ -239,14 +236,15 @@ github.com/decred/dcrd/dcrec/secp256k1 v1.0.3/go.mod h1:eCL8H4MYYjRvsw2TuANvEOcV github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.0 h1:3GIJYXQDAKpLEFriGFN8SbSffak10UXHGdIcFaMPykY= github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.0/go.mod h1:3s92l0paYkZoIHuj4X93Teg/HB7eGM9x/zokGw+u4mY= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 h1:HbphB4TFFXpv7MNrT52FGrrgVXF1owhMVTHFZIlnvd4= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2UO1+lbSKsdiOoYi9Zzey7Fc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= +github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= github.com/dgraph-io/badger/v2 v2.2007.1/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= github.com/dgraph-io/badger/v2 v2.2007.2/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= -github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= -github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= +github.com/dgraph-io/badger/v4 v4.2.0 h1:kJrlajbXXL9DFTNuhhu9yCx7JJa4qpYWxtE8BzuWsEs= +github.com/dgraph-io/badger/v4 v4.2.0/go.mod h1:qfCqhPoWDFJRx1gp5QwwyGo8xk1lbHUxvK9nK0OGAak= github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= @@ -271,63 +269,78 @@ github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaB github.com/elastic/gosigar v0.12.0/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= github.com/elastic/gosigar v0.14.2 h1:Dg80n8cr90OZ7x+bAax/QjoW/XqTI11RmA79ZwIm9/4= github.com/elastic/gosigar v0.14.2/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= +github.com/emicklei/dot v1.6.2 h1:08GN+DD79cy/tzN6uLCT84+2Wk9u+wvqP+Hkx/dIR8A= +github.com/emicklei/dot v1.6.2/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= 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/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= -github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= -github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= -github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= +github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/flynn/noise v1.0.0 h1:DlTHqmzmvcEiKj+4RYo/imoswx/4r6iBlCMfVtrMXpQ= github.com/flynn/noise v1.0.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= -github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= -github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= -github.com/getsentry/sentry-go v0.23.0 h1:dn+QRCeJv4pPt9OjVXiMcGIBIefaTJPw/h0bZWO05nE= -github.com/getsentry/sentry-go v0.23.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= +github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= github.com/gin-gonic/gin v1.8.1 h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8= +github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= +github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= -github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= -github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= +github.com/go-kit/kit v0.13.0 h1:OoneCcHKHQ03LfBpoQCUfCluwd2Vt3ohz+kvbJneZAU= +github.com/go-kit/kit v0.13.0/go.mod h1:phqEHMMUbyrCFCTgH48JueqrM3md2HcAZ8N3XE4FKDg= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= -github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= +github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= +github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= +github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= +github.com/go-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= @@ -338,6 +351,7 @@ github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6Wezm github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk= +github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -346,22 +360,21 @@ github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= +github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo= -github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= +github.com/golang/glog v1.2.3 h1:oDTdz9f5VGVVNGu/Q7UXKWYsD0873HXLHdJUNBsSEKM= +github.com/golang/glog v1.2.3/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= 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= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -369,7 +382,6 @@ github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= 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/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= 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= @@ -381,60 +393,54 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= -github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= +github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= 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= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gopacket v1.1.17/go.mod h1:UdDNZ1OO62aGYVnPhxT1U6aI7ukYtA/kB8vaU0diBUM= github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8= github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= +github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= +github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= @@ -443,14 +449,15 @@ github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.2.1/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= @@ -461,9 +468,7 @@ github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFb 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/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= -github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= @@ -474,13 +479,19 @@ github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= +github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-metrics v0.5.3 h1:M5uADWMOGCTUNU1YuC4hfknOeHNaX54LDm4oYSucoNE= +github.com/hashicorp/go-metrics v0.5.3/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/go-plugin v1.5.2 h1:aWv8eimFqWlsEiMrYZdPYl+FdHaBJSN4AWwGWfT1G2Y= +github.com/hashicorp/go-plugin v1.5.2/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= @@ -492,14 +503,18 @@ github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09 github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= -github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= +github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= github.com/hdevalence/ed25519consensus v0.1.0 h1:jtBwzzcHuTmFrQN6xQZn6CQEO/V9f7HsjsjeEZ6auqU= github.com/hdevalence/ed25519consensus v0.1.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -512,12 +527,14 @@ github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7 github.com/huin/goupnp v1.0.3 h1:N8No57ls+MnjlB+JPiCVSOyy/ot7MJTqlo7rn+NYSqQ= github.com/huin/goupnp v1.0.3/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= +github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= -github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/ipfs/go-cid v0.3.2 h1:OGgOd+JCFM+y1DjWPmVH+2/4POtpDzwcr7VgnB7mZXc= github.com/ipfs/go-cid v0.3.2/go.mod h1:gQ8pKqT/sUxGY+tIwy1RPpAojYu7jAyCp5Tz1svoupw= @@ -535,6 +552,8 @@ github.com/jbenet/go-temp-err-catcher v0.1.0 h1:zpb3ZH6wIE8Shj2sKS+khgRvf7T7RABo github.com/jbenet/go-temp-err-catcher v0.1.0/go.mod h1:0kJRvmDZXNMIiJirNPEYfhpPwbGVtZVWC34vc5WLsDk= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls= +github.com/jhump/protoreflect v1.15.3/go.mod h1:4ORHmSBmlCW8fh3xHmJMGyul1zNqZK4Elxc8qKP+p1k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= @@ -547,8 +566,8 @@ github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= @@ -556,9 +575,9 @@ github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQL github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I= -github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.1 h1:U33DW0aiEj633gHYw3LoDNfkDiYnE5Q8M/TKJn2f2jI= @@ -568,7 +587,6 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxv github.com/koron/go-ssdp v0.0.0-20191105050749-2e1c40ed0b5d/go.mod h1:5Ky9EC2xfoUKUor0Hjgi2BJhCSXJfMOFlmyYrVKGQMk= github.com/koron/go-ssdp v0.0.3 h1:JivLMY45N76b4p/vsWGOKewBQu6uf39y8l+AQ7sDKx8= github.com/koron/go-ssdp v0.0.3/go.mod h1:b2MxI6yh02pKrsyNoQUsk4+YNikaGhe4894J+Q5lDvA= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -578,9 +596,13 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= -github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= +github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= @@ -606,17 +628,22 @@ github.com/libp2p/go-yamux/v4 v4.0.0 h1:+Y80dV2Yx/kv7Y7JKu0LECyVdMXm1VUoko+VQ9rB github.com/libp2p/go-yamux/v4 v4.0.0/go.mod h1:NWjl8ZTLOGlozrXSOZ/HlfG++39iKNnM5wwmtQP1YB4= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/linxGnu/grocksdb v1.8.14 h1:HTgyYalNwBSG/1qCQUIott44wU5b2Y9Kr3z7SK5OfGQ= +github.com/linxGnu/grocksdb v1.8.14/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= -github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= +github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= +github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd h1:br0buuQ854V8u83wA0rVZ8ttrq5CpaPZdvrK0LP2lOk= github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd/go.mod h1:QuCEs1Nt24+FYQEqAAncTDPJIuGs+LxK1MCiFL25pMU= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= @@ -633,8 +660,6 @@ github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzp github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= -github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= github.com/miekg/dns v1.1.50 h1:DQUfb9uc6smULcREF09Uc+/Gd46YWqJd5DbpPE9xkcA= @@ -646,11 +671,10 @@ github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b/go.mod h1:lxPUiZwKo github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc h1:PTfri+PuQmWDqERdnNMiD9ZejrlswWrCpBEZgWOiTrc= github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc/go.mod h1:cGKTAVKx4SxOuR/czcZ/E2RSJ3sfHs8FpHhQ5CWMf9s= github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= -github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 h1:QRUSJEgZn2Snx0EmT/QLXibWjSUDjKWvXIT19NBVp94= -github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= +github.com/minio/highwayhash v1.0.3 h1:kbnuUMoHYyVl7szWjSxJnxw11k2U709jqFPPmIUyD6Q= +github.com/minio/highwayhash v1.0.3/go.mod h1:GGYsuwP/fPD6Y9hMiXuapVvlIUEhFhMTh0rxU3ik1LQ= github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g= github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= @@ -658,6 +682,8 @@ github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceT github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= @@ -670,6 +696,7 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ 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/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= @@ -699,8 +726,12 @@ github.com/multiformats/go-multistream v0.4.1/go.mod h1:Mz5eykRVAjJWckE2U78c6xqd github.com/multiformats/go-varint v0.0.1/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo= 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= github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= @@ -712,8 +743,12 @@ github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLA github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a h1:dlRvE5fWabOchtH7znfiFCcOvmIYgOeAS5ifBXBlh9Q= +github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a/go.mod h1:hVoHR2EVESiICEMbg137etN/Lx+lSrHPTD39Z/uE+2s= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= +github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= 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/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= @@ -732,8 +767,8 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/onsi/gomega v1.24.0 h1:+0glovB9Jd6z3VR+ScSwQqXVTIfJcGA9UBM8yzQxhqg= -github.com/onsi/gomega v1.24.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg= +github.com/onsi/gomega v1.26.0 h1:03cDLK28U6hWvCAns6NeydX3zIm4SF3ci69ulidS32Q= +github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/runtime-spec v1.0.2 h1:UfAcuLBJB9Coz72x1hgl8O5RVzTdNiaglX6v2DM6FI0= github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= @@ -760,26 +795,25 @@ github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2D github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= -github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml/v2 v2.0.7 h1:muncTPStnKRos5dpVKULv2FVd4bMOhNePj9CjgDb8Us= -github.com/pelletier/go-toml/v2 v2.0.7/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= +github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= +github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 h1:hDSdbBuw3Lefr6R18ax0tZ2BJeNB3NehB3trOwYBsdU= -github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 h1:Dx7Ovyv/SFnMFw3fD4oEoeorXc6saIiQ23LrGLth0Gw= +github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= +github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 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= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= -github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 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= @@ -789,16 +823,16 @@ github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeD github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.8.0/go.mod h1:O9VU6huf47PktckDQfMTX0Y8tY0/7TSWwj+ITvv0TnM= -github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= -github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= +github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= +github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= 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/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= -github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= 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/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= @@ -807,8 +841,9 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.14.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= -github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= +github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= +github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= 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/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -816,10 +851,10 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= -github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= +github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= 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/raulk/go-watchdog v1.3.0 h1:oUmdlHxdkXRJlwfG0O9omj8ukerm8MEQavSiDTEtBsk= github.com/raulk/go-watchdog v1.3.0/go.mod h1:fIvOnLbF0b0ZwkB9YU4mOW9Did//4vPZtDqv66NfsMU= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= @@ -832,21 +867,26 @@ github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6So github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= -github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U= +github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= +github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0= -github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= +github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= +github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= +github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= +github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sasha-s/go-deadlock v0.2.0/go.mod h1:StQn567HiB1fF2yJ44N9au7wOhrPS3iZqiDbRupzT10= -github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= -github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= +github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU= +github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U= 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/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -858,24 +898,24 @@ github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9 github.com/snikch/goodman v0.0.0-20171125024755-10e37e294daa/go.mod h1:oJyF+mSPHbB5mVY2iO9KV3pTt/QbIkGaO8gQ2WrDbP4= 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/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= +github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.9.2 h1:j49Hj62F0n+DaZ1dDCvhABaPNSGNkt32oRFxI33IEMw= -github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= +github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= -github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= +github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y= +github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= -github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= -github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= 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/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= 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= @@ -884,8 +924,8 @@ github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DM github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.14.0 h1:Rg7d3Lo706X9tHsJMUjdiwMpHB7W8WnSVOssIY+JElU= -github.com/spf13/viper v1.14.0/go.mod h1:WT//axPky3FdvXHzGw33dNdXXXfFQqmEalje+egj8As= +github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= +github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= @@ -906,16 +946,16 @@ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1F github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= -github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca/go.mod h1:u2MKkTVTVJWe5D1rCvame8WqhBd88EuIwODJZ1VHCPM= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= -github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= github.com/tendermint/btcd v0.0.0-20180816174608-e5840949ff4f/go.mod h1:DC6/m53jtQzr/NFmMNEu0rxf18/ktVoVtMrnDD5pN+U= github.com/tendermint/btcd v0.1.1 h1:0VcxPfflS2zZ3RiOAHkBiFUcPvbtRj5O7zHmcJWHV7s= @@ -928,8 +968,8 @@ github.com/tendermint/tendermint v0.34.0-rc6/go.mod h1:ugzyZO5foutZImv0Iyx/gOFCX github.com/tendermint/tendermint v0.34.0/go.mod h1:Aj3PIipBFSNO21r+Lq3TtzQ+uKESxkbA3yo/INM4QwQ= github.com/tendermint/tm-db v0.6.2/go.mod h1:GYtQ67SUvATOcoY8/+x6ylk8Qo02BQyLrAs+yAcLvGI= github.com/tendermint/tm-db v0.6.3/go.mod h1:lfA1dL9/Y/Y8wwyPp2NMLyn5P5Ptr/gvDFNWtrCWSf8= -github.com/tidwall/btree v1.6.0 h1:LDZfKfQIBHGHWSwckhXI0RPSXzlo+KYdjK7FWSqOzzg= -github.com/tidwall/btree v1.6.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= +github.com/tidwall/btree v1.7.0 h1:L1fkJH/AuEh5zBnnBbmTwQ5Lt+bRJ5A8EWecslvo9iI= +github.com/tidwall/btree v1.7.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= @@ -939,15 +979,13 @@ github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVM github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0= +github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/whyrusleeping/go-logging v0.0.0-20170515211332-0457bb6b88fc/go.mod h1:bopw91TMyo8J3tvftk8xmU2kPmlrt4nScJQZU2hE5EM= 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/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/zeta-chain/go-libp2p v0.0.0-20240710192637-567fbaacc2b4 h1:FmO3HfVdZ7LzxBUfg6sVzV7ilKElQU2DZm8PxJ7KcYI= @@ -965,17 +1003,27 @@ gitlab.com/thorchain/binance-sdk v1.2.3-0.20210117202539-d569b6b9ba5d/go.mod h1: go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= -go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ= -go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= +go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 h1:qxen9oVGzDdIRP6ejyAJc760RwW4SnVDiTYTzwnXuxo= +go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5/go.mod h1:eW0HG9/oHQhvRCvb1/pIXW4cOvtDqeQK+XSi3TnwaXY= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/otel v1.32.0 h1:WnBN+Xjcteh0zdk01SVqV55d/m62NJLJdIyb4y/WO5U= +go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg= +go.opentelemetry.io/otel/metric v1.32.0 h1:xV2umtmNcThh2/a/aCP+h64Xx5wsj8qqnkYZktzNa0M= +go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8= +go.opentelemetry.io/otel/sdk v1.32.0 h1:RNxepc9vK59A8XsgZQouW8ue8Gkb4jpWtJm9ge5lEG4= +go.opentelemetry.io/otel/sdk v1.32.0/go.mod h1:LqgegDBjKMmb2GC6/PrTnteJG39I8/vJCAP9LlJXEjU= +go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= +go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQDe03fM= +go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= @@ -987,18 +1035,21 @@ go.uber.org/dig v1.15.0 h1:vq3YWr8zRj1eFGC7Gvf907hE0eRjPTZ1d3xHadD6liE= go.uber.org/dig v1.15.0/go.mod h1:pKHs0wMynzL6brANhB2hLMro+zalv1osARTviTcqHLM= go.uber.org/fx v1.18.2 h1:bUNI6oShr+OVFQeU8cDNbnN7VFsu+SsjHzUF51V/GAU= go.uber.org/fx v1.18.2/go.mod h1:g0V1KMQ66zIRk8bLu3Ea5Jt2w/cHlOIp4wdRsgh0JaY= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= +go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= -go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= +go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ= +go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= +go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= @@ -1021,23 +1072,16 @@ golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY= -golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb h1:xIApU0ow1zwMa2uL1VDNeQlNVFTWMQxZUZCMDy0Q4Us= -golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1047,23 +1091,17 @@ golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= -golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= +golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1085,62 +1123,40 @@ 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/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= -golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 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/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= -golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180810173357-98c5dad5d1a0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 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= @@ -1173,71 +1189,59 @@ golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= -golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= -golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= +golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1262,47 +1266,19 @@ golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200110213125-a7a6caa82ab2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg= +golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1314,28 +1290,11 @@ google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -1347,43 +1306,20 @@ google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201111145450-ac7456db90a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917 h1:nz5NESFLZbJGPFxDT/HCn+V1mZ8JGNoY4nUpmW/Y2eg= -google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917/go.mod h1:pZqR+glSb11aJ+JQcczCvgf47+duRuzNSKqE8YAQnV0= -google.golang.org/genproto/googleapis/api v0.0.0-20231212172506-995d672761c0 h1:s1w3X6gQxwrLEpxnLd/qXTVLgQE2yXwaOaoa6IlY/+o= -google.golang.org/genproto/googleapis/api v0.0.0-20231212172506-995d672761c0/go.mod h1:CAny0tYF+0/9rmDB9fahA9YLzX3+AEVl1qXbv5hhj6c= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240108191215-35c7eff3a6b1 h1:gphdwh0npgs8elJ4T6J+DQJHPVF7RsuJHCfwztUb4J4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240108191215-35c7eff3a6b1/go.mod h1:daQN87bsDqDoe316QbbvX60nMoJQa4r6Ds0ZuoAe5yA= +google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20220314164441-57ef72a4c106/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= +google.golang.org/genproto/googleapis/api v0.0.0-20241202173237-19429a94021a h1:OAiGFfOiA0v9MRYsSidp3ubZaBnteRUyn3xB2ZQ5G/E= +google.golang.org/genproto/googleapis/api v0.0.0-20241202173237-19429a94021a/go.mod h1:jehYqy3+AhJU9ve55aNOaSml7wUXjF9x6z2LcCfpAhY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -1397,19 +1333,18 @@ google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU= -google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= +google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1422,8 +1357,11 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= +google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1457,25 +1395,22 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= +gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= lukechampine.com/blake3 v1.1.7 h1:GgRMhmdsuK8+ii6UZFDL8Nb+VyMwadAgcJyfYHxG6n0= lukechampine.com/blake3 v1.1.7/go.mod h1:tkKEOtDkNtklkXtLNEOGNq5tcV90tJiA1vAA12R78LA= +nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g= nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/keygen/ecdsa/keygen_test.go b/keygen/ecdsa/keygen_test.go index 6a0a620..f0ca93a 100644 --- a/keygen/ecdsa/keygen_test.go +++ b/keygen/ecdsa/keygen_test.go @@ -15,6 +15,7 @@ import ( "time" "github.com/ipfs/go-log" + zlog "github.com/rs/zerolog/log" "github.com/bnb-chain/tss-lib/crypto" tcrypto "github.com/cometbft/cometbft/crypto" @@ -25,12 +26,12 @@ import ( btss "github.com/bnb-chain/tss-lib/tss" . "gopkg.in/check.v1" - "gitlab.com/thorchain/tss/go-tss/common" - "gitlab.com/thorchain/tss/go-tss/conversion" - "gitlab.com/thorchain/tss/go-tss/keygen" - "gitlab.com/thorchain/tss/go-tss/messages" - "gitlab.com/thorchain/tss/go-tss/p2p" - "gitlab.com/thorchain/tss/go-tss/storage" + "github.com/zeta-chain/go-tss/common" + "github.com/zeta-chain/go-tss/conversion" + "github.com/zeta-chain/go-tss/keygen" + "github.com/zeta-chain/go-tss/messages" + "github.com/zeta-chain/go-tss/p2p" + "github.com/zeta-chain/go-tss/storage" ) var ( @@ -103,9 +104,10 @@ func (s *TssECDSAKeygenTestSuite) TearDownSuite(c *C) { // SetUpTest set up environment for test key gen func (s *TssECDSAKeygenTestSuite) SetUpTest(c *C) { - ports := []int{ - 18666, 18667, 18668, 18669, - } + ports, err := p2p.GetFreePorts(4) + c.Assert(err, IsNil) + zlog.Info().Ints("ports", ports).Msg("Allocated ports for test") + s.partyNum = 4 s.comms = make([]*p2p.Communication, s.partyNum) s.stateMgrs = make([]storage.LocalStateManager, s.partyNum) diff --git a/keygen/ecdsa/tss_keygen.go b/keygen/ecdsa/tss_keygen.go index 0d0c44a..2150169 100644 --- a/keygen/ecdsa/tss_keygen.go +++ b/keygen/ecdsa/tss_keygen.go @@ -10,18 +10,18 @@ import ( bcrypto "github.com/bnb-chain/tss-lib/crypto" bkg "github.com/bnb-chain/tss-lib/ecdsa/keygen" btss "github.com/bnb-chain/tss-lib/tss" + "github.com/btcsuite/btcd/btcec/v2" tcrypto "github.com/cometbft/cometbft/crypto" "github.com/rs/zerolog" "github.com/rs/zerolog/log" - "github.com/btcsuite/btcd/btcec/v2" - "gitlab.com/thorchain/tss/go-tss/blame" - "gitlab.com/thorchain/tss/go-tss/common" - "gitlab.com/thorchain/tss/go-tss/conversion" - "gitlab.com/thorchain/tss/go-tss/keygen" - "gitlab.com/thorchain/tss/go-tss/messages" - "gitlab.com/thorchain/tss/go-tss/p2p" - "gitlab.com/thorchain/tss/go-tss/storage" + "github.com/zeta-chain/go-tss/blame" + "github.com/zeta-chain/go-tss/common" + "github.com/zeta-chain/go-tss/conversion" + "github.com/zeta-chain/go-tss/keygen" + "github.com/zeta-chain/go-tss/messages" + "github.com/zeta-chain/go-tss/p2p" + "github.com/zeta-chain/go-tss/storage" ) type TssKeyGen struct { @@ -113,7 +113,10 @@ func (tKeyGen *TssKeyGen) GenerateNewKey(keygenReq keygen.Request) (*bcrypto.ECP tKeyGen.tssCommonStruct.SetPartyInfo(partyInfo) blameMgr.SetPartyInfo(keyGenPartyMap, partyIDMap) tKeyGen.tssCommonStruct.P2PPeersLock.Lock() - tKeyGen.tssCommonStruct.P2PPeers = conversion.GetPeersID(tKeyGen.tssCommonStruct.PartyIDtoP2PID, tKeyGen.tssCommonStruct.GetLocalPeerID()) + tKeyGen.tssCommonStruct.P2PPeers = conversion.GetPeersID( + tKeyGen.tssCommonStruct.PartyIDtoP2PID, + tKeyGen.tssCommonStruct.GetLocalPeerID(), + ) tKeyGen.tssCommonStruct.P2PPeersLock.Unlock() var keyGenWg sync.WaitGroup keyGenWg.Add(2) @@ -196,7 +199,10 @@ func (tKeyGen *TssKeyGen) processKeyGen(errChan chan struct{}, // if we cannot find the blame node, we check whether everyone send me the share if len(blameMgr.GetBlame().BlameNodes) == 0 { - blameNodesMisingShare, isUnicast, err := blameMgr.TssMissingShareBlame(messages.TSSKEYGENROUNDS, messages.ECDSAKEYGEN) + blameNodesMisingShare, isUnicast, err := blameMgr.TssMissingShareBlame( + messages.TSSKEYGENROUNDS, + messages.ECDSAKEYGEN, + ) if err != nil { tKeyGen.logger.Error().Err(err).Msg("fail to get the node of missing share ") } diff --git a/keygen/eddsa/keygen_test.go b/keygen/eddsa/keygen_test.go index 2c263a6..fe6895c 100644 --- a/keygen/eddsa/keygen_test.go +++ b/keygen/eddsa/keygen_test.go @@ -17,16 +17,17 @@ import ( tcrypto "github.com/cometbft/cometbft/crypto" "github.com/cometbft/cometbft/crypto/secp256k1" "github.com/libp2p/go-libp2p/core/peer" + zlog "github.com/rs/zerolog/log" btss "github.com/bnb-chain/tss-lib/tss" . "gopkg.in/check.v1" - "gitlab.com/thorchain/tss/go-tss/common" - "gitlab.com/thorchain/tss/go-tss/conversion" - "gitlab.com/thorchain/tss/go-tss/keygen" - "gitlab.com/thorchain/tss/go-tss/messages" - "gitlab.com/thorchain/tss/go-tss/p2p" - "gitlab.com/thorchain/tss/go-tss/storage" + "github.com/zeta-chain/go-tss/common" + "github.com/zeta-chain/go-tss/conversion" + "github.com/zeta-chain/go-tss/keygen" + "github.com/zeta-chain/go-tss/messages" + "github.com/zeta-chain/go-tss/p2p" + "github.com/zeta-chain/go-tss/storage" ) var ( @@ -90,9 +91,10 @@ func (s *EddsaKeygenTestSuite) SetUpSuite(c *C) { // SetUpTest set up environment for test key gen func (s *EddsaKeygenTestSuite) SetUpTest(c *C) { - ports := []int{ - 19666, 19667, 19668, 19669, - } + ports, err := p2p.GetFreePorts(4) + c.Assert(err, IsNil) + zlog.Info().Ints("ports", ports).Msg("Allocated ports for test") + s.partyNum = 4 s.comms = make([]*p2p.Communication, s.partyNum) s.stateMgrs = make([]storage.LocalStateManager, s.partyNum) @@ -161,7 +163,7 @@ func (s *EddsaKeygenTestSuite) TestGenerateNewKey(c *C) { comm := s.comms[idx] stopChan := make(chan struct{}) localPubKey := testPubKeys[idx] - keygenInstance := NewTssKeyGen( + keygenInstance := New( comm.GetLocalPeerID(), conf, localPubKey, @@ -199,7 +201,7 @@ func (s *EddsaKeygenTestSuite) TestKeyGenWithError(c *C) { } conf := common.TssConfig{} stateManager := &storage.MockLocalStateManager{} - keyGenInstance := NewTssKeyGen("", conf, "", nil, nil, "test", stateManager, s.nodePrivKeys[0], nil) + keyGenInstance := New("", conf, "", nil, nil, "test", stateManager, s.nodePrivKeys[0], nil) generatedKey, err := keyGenInstance.GenerateNewKey(req) c.Assert(err, NotNil) c.Assert(generatedKey, IsNil) @@ -208,7 +210,7 @@ func (s *EddsaKeygenTestSuite) TestKeyGenWithError(c *C) { func (s *EddsaKeygenTestSuite) TestCloseKeyGennotifyChannel(c *C) { conf := common.TssConfig{} stateManager := &storage.MockLocalStateManager{} - keyGenInstance := NewTssKeyGen("", conf, "", nil, nil, "test", stateManager, s.nodePrivKeys[0], s.comms[0]) + keyGenInstance := New("", conf, "", nil, nil, "test", stateManager, s.nodePrivKeys[0], s.comms[0]) taskDone := messages.TssTaskNotifier{TaskDone: true} taskDoneBytes, err := json.Marshal(taskDone) diff --git a/keygen/eddsa/tss_keygen.go b/keygen/eddsa/tss_keygen.go index 7819254..64e6115 100644 --- a/keygen/eddsa/tss_keygen.go +++ b/keygen/eddsa/tss_keygen.go @@ -14,16 +14,16 @@ import ( "github.com/rs/zerolog" "github.com/rs/zerolog/log" - "gitlab.com/thorchain/tss/go-tss/blame" - "gitlab.com/thorchain/tss/go-tss/common" - "gitlab.com/thorchain/tss/go-tss/conversion" - "gitlab.com/thorchain/tss/go-tss/keygen" - "gitlab.com/thorchain/tss/go-tss/messages" - "gitlab.com/thorchain/tss/go-tss/p2p" - "gitlab.com/thorchain/tss/go-tss/storage" + "github.com/zeta-chain/go-tss/blame" + "github.com/zeta-chain/go-tss/common" + "github.com/zeta-chain/go-tss/conversion" + "github.com/zeta-chain/go-tss/keygen" + "github.com/zeta-chain/go-tss/messages" + "github.com/zeta-chain/go-tss/p2p" + "github.com/zeta-chain/go-tss/storage" ) -type EDDSAKeyGen struct { +type KeyGen struct { logger zerolog.Logger localNodePubKey string tssCommonStruct *common.TssCommon @@ -34,7 +34,8 @@ type EDDSAKeyGen struct { p2pComm *p2p.Communication } -func NewTssKeyGen(localP2PID string, +func New( + localP2PID string, conf common.TssConfig, localNodePubKey string, broadcastChan chan *messages.BroadcastMsgChan, @@ -42,11 +43,10 @@ func NewTssKeyGen(localP2PID string, msgID string, stateManager storage.LocalStateManager, privateKey tcrypto.PrivKey, - p2pComm *p2p.Communication) *EDDSAKeyGen { - return &EDDSAKeyGen{ - logger: log.With(). - Str("module", "keygen"). - Str("msgID", msgID).Logger(), + p2pComm *p2p.Communication, +) *KeyGen { + return &KeyGen{ + logger: log.With().Str("module", "keygen").Str("msgID", msgID).Logger(), localNodePubKey: localNodePubKey, tssCommonStruct: common.NewTssCommon(localP2PID, broadcastChan, conf, msgID, privateKey, 1), stopChan: stopChan, @@ -57,15 +57,15 @@ func NewTssKeyGen(localP2PID string, } } -func (tKeyGen *EDDSAKeyGen) GetTssKeyGenChannels() chan *p2p.Message { +func (tKeyGen *KeyGen) GetTssKeyGenChannels() chan *p2p.Message { return tKeyGen.tssCommonStruct.TssMsg } -func (tKeyGen *EDDSAKeyGen) GetTssCommonStruct() *common.TssCommon { +func (tKeyGen *KeyGen) GetTssCommonStruct() *common.TssCommon { return tKeyGen.tssCommonStruct } -func (tKeyGen *EDDSAKeyGen) GenerateNewKey(keygenReq keygen.Request) (*bcrypto.ECPoint, error) { +func (tKeyGen *KeyGen) GenerateNewKey(keygenReq keygen.Request) (*bcrypto.ECPoint, error) { keyGenPartyMap := new(sync.Map) partiesID, localPartyID, err := conversion.GetParties(keygenReq.Keys, tKeyGen.localNodePubKey) if err != nil { @@ -106,7 +106,10 @@ func (tKeyGen *EDDSAKeyGen) GenerateNewKey(keygenReq keygen.Request) (*bcrypto.E tKeyGen.tssCommonStruct.SetPartyInfo(partyInfo) blameMgr.SetPartyInfo(keyGenPartyMap, partyIDMap) tKeyGen.tssCommonStruct.P2PPeersLock.Lock() - tKeyGen.tssCommonStruct.P2PPeers = conversion.GetPeersID(tKeyGen.tssCommonStruct.PartyIDtoP2PID, tKeyGen.tssCommonStruct.GetLocalPeerID()) + tKeyGen.tssCommonStruct.P2PPeers = conversion.GetPeersID( + tKeyGen.tssCommonStruct.PartyIDtoP2PID, + tKeyGen.tssCommonStruct.GetLocalPeerID(), + ) tKeyGen.tssCommonStruct.P2PPeersLock.Unlock() var keyGenWg sync.WaitGroup keyGenWg.Add(2) @@ -138,7 +141,7 @@ func (tKeyGen *EDDSAKeyGen) GenerateNewKey(keygenReq keygen.Request) (*bcrypto.E return r, err } -func (tKeyGen *EDDSAKeyGen) processKeyGen(errChan chan struct{}, +func (tKeyGen *KeyGen) processKeyGen(errChan chan struct{}, outCh <-chan btss.Message, endCh <-chan eddsakg.LocalPartySaveData, keyGenLocalStateItem storage.KeygenLocalState) (*bcrypto.ECPoint, error) { @@ -187,7 +190,10 @@ func (tKeyGen *EDDSAKeyGen) processKeyGen(errChan chan struct{}, // if we cannot find the blame node, we check whether everyone send me the share if len(blameMgr.GetBlame().BlameNodes) == 0 { - blameNodesMisingShare, isUnicast, err := blameMgr.TssMissingShareBlame(messages.EDDSAKEYGENROUNDS, messages.EDDSAKEYGEN) + blameNodesMisingShare, isUnicast, err := blameMgr.TssMissingShareBlame( + messages.EDDSAKEYGENROUNDS, + messages.EDDSAKEYGEN, + ) if err != nil { tKeyGen.logger.Error().Err(err).Msg("fail to get the node of missing share ") } diff --git a/keygen/keygen.go b/keygen/keygen.go index 2240aa2..6ebfeee 100644 --- a/keygen/keygen.go +++ b/keygen/keygen.go @@ -3,8 +3,8 @@ package keygen import ( bcrypto "github.com/bnb-chain/tss-lib/crypto" - "gitlab.com/thorchain/tss/go-tss/common" - "gitlab.com/thorchain/tss/go-tss/p2p" + "github.com/zeta-chain/go-tss/common" + "github.com/zeta-chain/go-tss/p2p" ) type TssKeyGen interface { diff --git a/keygen/request.go b/keygen/request.go index cc5d41e..9f7a030 100644 --- a/keygen/request.go +++ b/keygen/request.go @@ -1,6 +1,6 @@ package keygen -import "gitlab.com/thorchain/tss/go-tss/common" +import "github.com/zeta-chain/go-tss/common" // Request request to do keygen type Request struct { diff --git a/keygen/response.go b/keygen/response.go index 000c083..51028d6 100644 --- a/keygen/response.go +++ b/keygen/response.go @@ -1,8 +1,8 @@ package keygen import ( - "gitlab.com/thorchain/tss/go-tss/blame" - "gitlab.com/thorchain/tss/go-tss/common" + "github.com/zeta-chain/go-tss/blame" + "github.com/zeta-chain/go-tss/common" ) // Response keygen response diff --git a/keysign/ecdsa/keysign_old_test.go b/keysign/ecdsa/keysign_old_test.go index f2e8172..d99d5ff 100644 --- a/keysign/ecdsa/keysign_old_test.go +++ b/keysign/ecdsa/keysign_old_test.go @@ -20,8 +20,8 @@ import ( "github.com/ipfs/go-log" zlog "github.com/rs/zerolog/log" - "gitlab.com/thorchain/tss/go-tss/conversion" - "gitlab.com/thorchain/tss/go-tss/keysign" + "github.com/zeta-chain/go-tss/conversion" + "github.com/zeta-chain/go-tss/keysign" tcrypto "github.com/cometbft/cometbft/crypto" "github.com/cometbft/cometbft/crypto/secp256k1" @@ -29,10 +29,10 @@ import ( maddr "github.com/multiformats/go-multiaddr" . "gopkg.in/check.v1" - "gitlab.com/thorchain/tss/go-tss/common" - "gitlab.com/thorchain/tss/go-tss/messages" - "gitlab.com/thorchain/tss/go-tss/p2p" - "gitlab.com/thorchain/tss/go-tss/storage" + "github.com/zeta-chain/go-tss/common" + "github.com/zeta-chain/go-tss/messages" + "github.com/zeta-chain/go-tss/p2p" + "github.com/zeta-chain/go-tss/storage" ) func TestOldPackage(t *testing.T) { @@ -58,7 +58,10 @@ func (m *MockLocalStateOldManager) GetLocalState(pubKey string) (storage.KeygenL var stateOld storage.KeygenLocalStateOld if err := json.Unmarshal(buf, &stateOld); nil != err { - return storage.KeygenLocalState{}, fmt.Errorf("fail to unmarshal KeygenLocalState with backwards compatibility: %w", err) + return storage.KeygenLocalState{}, fmt.Errorf( + "fail to unmarshal KeygenLocalState with backwards compatibility: %w", + err, + ) } state.PubKey = stateOld.PubKey @@ -67,7 +70,10 @@ func (m *MockLocalStateOldManager) GetLocalState(pubKey string) (storage.KeygenL state.LocalData, err = json.Marshal(stateOld.LocalData) if err != nil { - return storage.KeygenLocalState{}, fmt.Errorf("fail to marshal KeygenLocalState.LocalData for backwards compatibility: %w", err) + return storage.KeygenLocalState{}, fmt.Errorf( + "fail to marshal KeygenLocalState.LocalData for backwards compatibility: %w", + err, + ) } } return state, nil @@ -117,9 +123,11 @@ func (s *TssECDSAKeysignOldTestSuite) SetUpTest(c *C) { c.Skip("skip the test") return } - ports := []int{ - 17666, 17667, 17668, 17669, - } + + ports, err := p2p.GetFreePorts(4) + c.Assert(err, IsNil) + zlog.Info().Ints("ports", ports).Msg("Allocated ports for test") + s.partyNum = 4 s.comms = make([]*p2p.Communication, s.partyNum) s.stateMgrs = make([]storage.LocalStateManager, s.partyNum) @@ -162,7 +170,13 @@ func (s *TssECDSAKeysignOldTestSuite) TestSignMessage(c *C) { } log.SetLogLevel("tss-lib", "info") sort.Strings(testPubKeys) - req := keysign.NewRequest("thorpub1addwnpepqv6xp3fmm47dfuzglywqvpv8fdjv55zxte4a26tslcezns5czv586u2fw33", []string{"helloworld-test", "t"}, 10, testPubKeys, "") + req := keysign.NewRequest( + "thorpub1addwnpepqv6xp3fmm47dfuzglywqvpv8fdjv55zxte4a26tslcezns5czv586u2fw33", + []string{"helloworld-test", "t"}, + 10, + testPubKeys, + "", + ) sort.Strings(req.Messages) dat := []byte(strings.Join(req.Messages, ",")) messageID, err := common.MsgToHashString(dat) @@ -236,7 +250,13 @@ func (s *TssECDSAKeysignOldTestSuite) TestSignMessageWithStop(c *C) { return } sort.Strings(testPubKeys) - req := keysign.NewRequest("thorpub1addwnpepqv6xp3fmm47dfuzglywqvpv8fdjv55zxte4a26tslcezns5czv586u2fw33", []string{"helloworld-test", "t"}, 10, testPubKeys, "") + req := keysign.NewRequest( + "thorpub1addwnpepqv6xp3fmm47dfuzglywqvpv8fdjv55zxte4a26tslcezns5czv586u2fw33", + []string{"helloworld-test", "t"}, + 10, + testPubKeys, + "", + ) sort.Strings(req.Messages) dat := []byte(strings.Join(req.Messages, ",")) messageID, err := common.MsgToHashString(dat) @@ -284,7 +304,8 @@ func (s *TssECDSAKeysignOldTestSuite) TestSignMessageWithStop(c *C) { _, err = keysignIns.SignMessage(msgsToSign, localState, req.SignerPubKeys) c.Assert(err, NotNil) lastMsg := keysignIns.tssCommonStruct.GetBlameMgr().GetLastMsg() - zlog.Info().Msgf("%s------->last message %v, broadcast? %v", keysignIns.tssCommonStruct.GetLocalPeerID(), lastMsg.Type(), lastMsg.IsBroadcast()) + zlog.Info(). + Msgf("%s------->last message %v, broadcast? %v", keysignIns.tssCommonStruct.GetLocalPeerID(), lastMsg.Type(), lastMsg.IsBroadcast()) // we skip the node 1 as we force it to stop if idx != 1 { blames := keysignIns.GetTssCommonStruct().GetBlameMgr().GetBlame().BlameNodes @@ -302,7 +323,13 @@ func (s *TssECDSAKeysignOldTestSuite) TestSignMessageRejectOnePeer(c *C) { return } sort.Strings(testPubKeys) - req := keysign.NewRequest("thorpub1addwnpepqv6xp3fmm47dfuzglywqvpv8fdjv55zxte4a26tslcezns5czv586u2fw33", []string{"helloworld-test", "t"}, 10, testPubKeys, "") + req := keysign.NewRequest( + "thorpub1addwnpepqv6xp3fmm47dfuzglywqvpv8fdjv55zxte4a26tslcezns5czv586u2fw33", + []string{"helloworld-test", "t"}, + 10, + testPubKeys, + "", + ) sort.Strings(req.Messages) dat := []byte(strings.Join(req.Messages, ",")) messageID, err := common.MsgToHashString(dat) @@ -345,7 +372,8 @@ func (s *TssECDSAKeysignOldTestSuite) TestSignMessageRejectOnePeer(c *C) { msgsToSign = append(msgsToSign, []byte(req.Messages[1])) _, err = keysignIns.SignMessage(msgsToSign, localState, req.SignerPubKeys) lastMsg := keysignIns.tssCommonStruct.GetBlameMgr().GetLastMsg() - zlog.Info().Msgf("%s------->last message %v, broadcast? %v", keysignIns.tssCommonStruct.GetLocalPeerID(), lastMsg.Type(), lastMsg.IsBroadcast()) + zlog.Info(). + Msgf("%s------->last message %v, broadcast? %v", keysignIns.tssCommonStruct.GetLocalPeerID(), lastMsg.Type(), lastMsg.IsBroadcast()) c.Assert(err, IsNil) }(i) } diff --git a/keysign/ecdsa/keysign_test.go b/keysign/ecdsa/keysign_test.go index 4b8a25e..0923ad3 100644 --- a/keysign/ecdsa/keysign_test.go +++ b/keysign/ecdsa/keysign_test.go @@ -20,8 +20,8 @@ import ( "github.com/ipfs/go-log" zlog "github.com/rs/zerolog/log" - "gitlab.com/thorchain/tss/go-tss/conversion" - "gitlab.com/thorchain/tss/go-tss/keysign" + "github.com/zeta-chain/go-tss/conversion" + "github.com/zeta-chain/go-tss/keysign" tcrypto "github.com/cometbft/cometbft/crypto" "github.com/cometbft/cometbft/crypto/secp256k1" @@ -29,10 +29,10 @@ import ( maddr "github.com/multiformats/go-multiaddr" . "gopkg.in/check.v1" - "gitlab.com/thorchain/tss/go-tss/common" - "gitlab.com/thorchain/tss/go-tss/messages" - "gitlab.com/thorchain/tss/go-tss/p2p" - "gitlab.com/thorchain/tss/go-tss/storage" + "github.com/zeta-chain/go-tss/common" + "github.com/zeta-chain/go-tss/messages" + "github.com/zeta-chain/go-tss/p2p" + "github.com/zeta-chain/go-tss/storage" ) var ( @@ -129,9 +129,11 @@ func (s *TssECDSAKeysignTestSuite) SetUpTest(c *C) { c.Skip("skip the test") return } - ports := []int{ - 17666, 17667, 17668, 17669, - } + + ports, err := p2p.GetFreePorts(4) + c.Assert(err, IsNil) + zlog.Info().Ints("ports", ports).Msg("Allocated ports for test") + s.partyNum = 4 s.comms = make([]*p2p.Communication, s.partyNum) s.stateMgrs = make([]storage.LocalStateManager, s.partyNum) @@ -175,7 +177,13 @@ func (s *TssECDSAKeysignTestSuite) TestSignMessage(c *C) { } log.SetLogLevel("tss-lib", "info") sort.Strings(testPubKeys) - req := keysign.NewRequest("thorpub1addwnpepqv6xp3fmm47dfuzglywqvpv8fdjv55zxte4a26tslcezns5czv586u2fw33", []string{"helloworld-test", "t"}, 10, testPubKeys, "") + req := keysign.NewRequest( + "thorpub1addwnpepqv6xp3fmm47dfuzglywqvpv8fdjv55zxte4a26tslcezns5czv586u2fw33", + []string{"helloworld-test", "t"}, + 10, + testPubKeys, + "", + ) sort.Strings(req.Messages) dat := []byte(strings.Join(req.Messages, ",")) messageID, err := common.MsgToHashString(dat) @@ -273,7 +281,13 @@ func (s *TssECDSAKeysignTestSuite) TestSignMessageWithStop(c *C) { return } sort.Strings(testPubKeys) - req := keysign.NewRequest("thorpub1addwnpepqv6xp3fmm47dfuzglywqvpv8fdjv55zxte4a26tslcezns5czv586u2fw33", []string{"helloworld-test", "t"}, 10, testPubKeys, "") + req := keysign.NewRequest( + "thorpub1addwnpepqv6xp3fmm47dfuzglywqvpv8fdjv55zxte4a26tslcezns5czv586u2fw33", + []string{"helloworld-test", "t"}, + 10, + testPubKeys, + "", + ) sort.Strings(req.Messages) dat := []byte(strings.Join(req.Messages, ",")) messageID, err := common.MsgToHashString(dat) @@ -321,7 +335,8 @@ func (s *TssECDSAKeysignTestSuite) TestSignMessageWithStop(c *C) { _, err = keysignIns.SignMessage(msgsToSign, localState, req.SignerPubKeys) c.Assert(err, NotNil) lastMsg := keysignIns.tssCommonStruct.GetBlameMgr().GetLastMsg() - zlog.Info().Msgf("%s------->last message %v, broadcast? %v", keysignIns.tssCommonStruct.GetLocalPeerID(), lastMsg.Type(), lastMsg.IsBroadcast()) + zlog.Info(). + Msgf("%s------->last message %v, broadcast? %v", keysignIns.tssCommonStruct.GetLocalPeerID(), lastMsg.Type(), lastMsg.IsBroadcast()) // we skip the node 1 as we force it to stop if idx != 1 { blames := keysignIns.GetTssCommonStruct().GetBlameMgr().GetBlame().BlameNodes @@ -364,7 +379,13 @@ func (s *TssECDSAKeysignTestSuite) TestSignMessageRejectOnePeer(c *C) { return } sort.Strings(testPubKeys) - req := keysign.NewRequest("thorpub1addwnpepqv6xp3fmm47dfuzglywqvpv8fdjv55zxte4a26tslcezns5czv586u2fw33", []string{"helloworld-test", "t"}, 10, testPubKeys, "") + req := keysign.NewRequest( + "thorpub1addwnpepqv6xp3fmm47dfuzglywqvpv8fdjv55zxte4a26tslcezns5czv586u2fw33", + []string{"helloworld-test", "t"}, + 10, + testPubKeys, + "", + ) sort.Strings(req.Messages) dat := []byte(strings.Join(req.Messages, ",")) messageID, err := common.MsgToHashString(dat) @@ -407,7 +428,8 @@ func (s *TssECDSAKeysignTestSuite) TestSignMessageRejectOnePeer(c *C) { msgsToSign = append(msgsToSign, []byte(req.Messages[1])) _, err = keysignIns.SignMessage(msgsToSign, localState, req.SignerPubKeys) lastMsg := keysignIns.tssCommonStruct.GetBlameMgr().GetLastMsg() - zlog.Info().Msgf("%s------->last message %v, broadcast? %v", keysignIns.tssCommonStruct.GetLocalPeerID(), lastMsg.Type(), lastMsg.IsBroadcast()) + zlog.Info(). + Msgf("%s------->last message %v, broadcast? %v", keysignIns.tssCommonStruct.GetLocalPeerID(), lastMsg.Type(), lastMsg.IsBroadcast()) c.Assert(err, IsNil) }(i) } diff --git a/keysign/ecdsa/tss_keysign.go b/keysign/ecdsa/tss_keysign.go index dbf0af9..8150d65 100644 --- a/keysign/ecdsa/tss_keysign.go +++ b/keysign/ecdsa/tss_keysign.go @@ -11,21 +11,21 @@ import ( "time" tsslibcommon "github.com/bnb-chain/tss-lib/common" + ecdsakg "github.com/bnb-chain/tss-lib/ecdsa/keygen" "github.com/bnb-chain/tss-lib/ecdsa/signing" btss "github.com/bnb-chain/tss-lib/tss" + "github.com/btcsuite/btcd/btcec/v2" tcrypto "github.com/cometbft/cometbft/crypto" "github.com/rs/zerolog" "github.com/rs/zerolog/log" "go.uber.org/atomic" - ecdsakg "github.com/bnb-chain/tss-lib/ecdsa/keygen" - "github.com/btcsuite/btcd/btcec/v2" - "gitlab.com/thorchain/tss/go-tss/blame" - "gitlab.com/thorchain/tss/go-tss/common" - "gitlab.com/thorchain/tss/go-tss/conversion" - "gitlab.com/thorchain/tss/go-tss/messages" - "gitlab.com/thorchain/tss/go-tss/p2p" - "gitlab.com/thorchain/tss/go-tss/storage" + "github.com/zeta-chain/go-tss/blame" + "github.com/zeta-chain/go-tss/common" + "github.com/zeta-chain/go-tss/conversion" + "github.com/zeta-chain/go-tss/messages" + "github.com/zeta-chain/go-tss/p2p" + "github.com/zeta-chain/go-tss/storage" ) type TssKeySign struct { @@ -38,10 +38,17 @@ type TssKeySign struct { stateManager storage.LocalStateManager } -func NewTssKeySign(localP2PID string, +func NewTssKeySign( + localP2PID string, conf common.TssConfig, broadcastChan chan *messages.BroadcastMsgChan, - stopChan chan struct{}, msgID string, privKey tcrypto.PrivKey, p2pComm *p2p.Communication, stateManager storage.LocalStateManager, msgNum int) *TssKeySign { + stopChan chan struct{}, + msgID string, + privKey tcrypto.PrivKey, + p2pComm *p2p.Communication, + stateManager storage.LocalStateManager, + msgNum int, +) *TssKeySign { logItems := []string{"keySign", msgID} return &TssKeySign{ logger: log.With().Strs("module", logItems).Logger(), @@ -67,7 +74,7 @@ func (tKeySign *TssKeySign) startBatchSigning(keySignPartyMap *sync.Map, msgNum var keySignWg sync.WaitGroup ret := atomic.NewBool(true) keySignWg.Add(msgNum) - keySignPartyMap.Range(func(key, value interface{}) bool { + keySignPartyMap.Range(func(_, value any) bool { eachParty := value.(btss.Party) go func(eachParty btss.Party) { defer keySignWg.Done() @@ -75,7 +82,8 @@ func (tKeySign *TssKeySign) startBatchSigning(keySignPartyMap *sync.Map, msgNum tKeySign.logger.Error().Err(err).Msg("fail to start key sign party") ret.Store(false) } - tKeySign.logger.Info().Msgf("local party(%s) %s is ready", eachParty.PartyID().Id, eachParty.PartyID().Moniker) + tKeySign.logger.Info(). + Msgf("local party(%s) %s is ready", eachParty.PartyID().Id, eachParty.PartyID().Moniker) }(eachParty) return true }) @@ -84,7 +92,11 @@ func (tKeySign *TssKeySign) startBatchSigning(keySignPartyMap *sync.Map, msgNum } // signMessage -func (tKeySign *TssKeySign) SignMessage(msgsToSign [][]byte, localStateItem storage.KeygenLocalState, parties []string) ([]*tsslibcommon.SignatureData, error) { +func (tKeySign *TssKeySign) SignMessage( + msgsToSign [][]byte, + localStateItem storage.KeygenLocalState, + parties []string, +) ([]*tsslibcommon.SignatureData, error) { partiesID, localPartyID, err := conversion.GetParties(parties, localStateItem.LocalPartyKey) if err != nil { return nil, fmt.Errorf("fail to form key sign party: %w", err) @@ -113,7 +125,7 @@ func (tKeySign *TssKeySign) SignMessage(msgsToSign [][]byte, localStateItem stor partiesID, eachLocalPartyID, err := conversion.GetParties(parties, localStateItem.LocalPartyKey) ctx := btss.NewPeerContext(partiesID) if err != nil { - return nil, fmt.Errorf("error to create parties in batch signging %w\n", err) + return nil, fmt.Errorf("error to create parties in batch signging %w", err) } tKeySign.logger.Info().Msgf("message: (%s) keysign parties: %+v", m.String(), parties) eachLocalPartyID.Moniker = moniker @@ -149,7 +161,10 @@ func (tKeySign *TssKeySign) SignMessage(msgsToSign [][]byte, localStateItem stor blameMgr.SetPartyInfo(keySignPartyMap, partyIDMap) tKeySign.tssCommonStruct.P2PPeersLock.Lock() - tKeySign.tssCommonStruct.P2PPeers = conversion.GetPeersID(tKeySign.tssCommonStruct.PartyIDtoP2PID, tKeySign.tssCommonStruct.GetLocalPeerID()) + tKeySign.tssCommonStruct.P2PPeers = conversion.GetPeersID( + tKeySign.tssCommonStruct.PartyIDtoP2PID, + tKeySign.tssCommonStruct.GetLocalPeerID(), + ) tKeySign.tssCommonStruct.P2PPeersLock.Unlock() var keySignWg sync.WaitGroup keySignWg.Add(2) @@ -190,7 +205,12 @@ func (tKeySign *TssKeySign) SignMessage(msgsToSign [][]byte, localStateItem stor return results, nil } -func (tKeySign *TssKeySign) processKeySign(reqNum int, errChan chan struct{}, outCh <-chan btss.Message, endCh <-chan tsslibcommon.SignatureData) ([]*tsslibcommon.SignatureData, error) { +func (tKeySign *TssKeySign) processKeySign( + reqNum int, + errChan chan struct{}, + outCh <-chan btss.Message, + endCh <-chan tsslibcommon.SignatureData, +) ([]*tsslibcommon.SignatureData, error) { defer tKeySign.logger.Debug().Msg("key sign finished") tKeySign.logger.Debug().Msg("start to read messages from local party") var signatures []*tsslibcommon.SignatureData @@ -226,7 +246,8 @@ func (tKeySign *TssKeySign) processKeySign(reqNum int, errChan chan struct{}, ou tKeySign.logger.Error().Err(err).Msg("error in get unicast blame") } if len(blameNodesUnicast) > 0 && len(blameNodesUnicast) <= threshold { - blameMgr.GetBlame().SetBlame(failReason, blameNodesUnicast, true, tKeySign.tssCommonStruct.RoundInfo) + blameMgr.GetBlame(). + SetBlame(failReason, blameNodesUnicast, true, tKeySign.tssCommonStruct.RoundInfo) } } else { blameNodesUnicast, err := blameMgr.GetUnicastBlame(conversion.GetPreviousKeySignUicast(lastMsg.Type())) @@ -246,7 +267,10 @@ func (tKeySign *TssKeySign) processKeySign(reqNum int, errChan chan struct{}, ou // if we cannot find the blame node, we check whether everyone send me the share if len(blameMgr.GetBlame().BlameNodes) == 0 { - blameNodesMisingShare, isUnicast, err := blameMgr.TssMissingShareBlame(messages.TSSKEYSIGNROUNDS, messages.ECDSAKEYSIGN) + blameNodesMisingShare, isUnicast, err := blameMgr.TssMissingShareBlame( + messages.TSSKEYSIGNROUNDS, + messages.ECDSAKEYSIGN, + ) if err != nil { tKeySign.logger.Error().Err(err).Msg("fail to get the node of missing share ") } diff --git a/keysign/eddsa/keysign_test.go b/keysign/eddsa/keysign_test.go index 7ea8e6e..325ffc6 100644 --- a/keysign/eddsa/keysign_test.go +++ b/keysign/eddsa/keysign_test.go @@ -14,9 +14,10 @@ import ( "time" btss "github.com/bnb-chain/tss-lib/tss" + zlog "github.com/rs/zerolog/log" - "gitlab.com/thorchain/tss/go-tss/conversion" - "gitlab.com/thorchain/tss/go-tss/keysign" + "github.com/zeta-chain/go-tss/conversion" + "github.com/zeta-chain/go-tss/keysign" tsslibcommon "github.com/bnb-chain/tss-lib/common" tcrypto "github.com/cometbft/cometbft/crypto" @@ -25,10 +26,10 @@ import ( maddr "github.com/multiformats/go-multiaddr" . "gopkg.in/check.v1" - "gitlab.com/thorchain/tss/go-tss/common" - "gitlab.com/thorchain/tss/go-tss/messages" - "gitlab.com/thorchain/tss/go-tss/p2p" - "gitlab.com/thorchain/tss/go-tss/storage" + "github.com/zeta-chain/go-tss/common" + "github.com/zeta-chain/go-tss/messages" + "github.com/zeta-chain/go-tss/p2p" + "github.com/zeta-chain/go-tss/storage" ) var ( @@ -127,9 +128,11 @@ func (s *EddsaKeysignTestSuite) SetUpTest(c *C) { c.Skip("skip the test") return } - ports := []int{ - 15666, 15667, 15668, 15669, - } + + ports, err := p2p.GetFreePorts(4) + c.Assert(err, IsNil) + zlog.Info().Ints("ports", ports).Msg("Allocated ports for test") + s.partyNum = 4 s.comms = make([]*p2p.Communication, s.partyNum) s.stateMgrs = make([]storage.LocalStateManager, s.partyNum) @@ -171,7 +174,13 @@ func (s *EddsaKeysignTestSuite) TestSignMessage(c *C) { return } sort.Strings(testPubKeys) - req := keysign.NewRequest("thorpub1zcjduepq665vjeq34n7ccpvdl8t6akgls3c6u2uq242vpag2d9knstxymxfqq2ufwe", []string{"helloworld-test111", "test2"}, 10, testPubKeys, "0.16.0") + req := keysign.NewRequest( + "thorpub1zcjduepq665vjeq34n7ccpvdl8t6akgls3c6u2uq242vpag2d9knstxymxfqq2ufwe", + []string{"helloworld-test111", "test2"}, + 10, + testPubKeys, + "0.16.0", + ) sort.Strings(req.Messages) dat := []byte(strings.Join(req.Messages, ",")) messageID, err := common.MsgToHashString(dat) @@ -195,7 +204,7 @@ func (s *EddsaKeysignTestSuite) TestSignMessage(c *C) { defer wg.Done() comm := s.comms[idx] stopChan := make(chan struct{}) - keysignIns := NewTssKeySign(comm.GetLocalPeerID(), + keysignIns := New(comm.GetLocalPeerID(), conf, comm.BroadcastMsgChan, stopChan, messageID, @@ -252,7 +261,7 @@ func (s *EddsaKeysignTestSuite) TearDownTest(c *C) { func (s *EddsaKeysignTestSuite) TestCloseKeySignnotifyChannel(c *C) { conf := common.TssConfig{} - keySignInstance := NewTssKeySign("", conf, nil, nil, "test", s.nodePrivKeys[0], s.comms[0], s.stateMgrs[0], 1) + keySignInstance := New("", conf, nil, nil, "test", s.nodePrivKeys[0], s.comms[0], s.stateMgrs[0], 1) taskDone := messages.TssTaskNotifier{TaskDone: true} taskDoneBytes, err := json.Marshal(taskDone) diff --git a/keysign/eddsa/tss_keysign.go b/keysign/eddsa/tss_keysign.go index c0a254d..64aeb64 100644 --- a/keysign/eddsa/tss_keysign.go +++ b/keysign/eddsa/tss_keysign.go @@ -10,8 +10,6 @@ import ( "sync" "time" - "go.uber.org/atomic" - tsslibcommon "github.com/bnb-chain/tss-lib/common" eddsakeygen "github.com/bnb-chain/tss-lib/eddsa/keygen" "github.com/bnb-chain/tss-lib/eddsa/signing" @@ -19,16 +17,17 @@ import ( tcrypto "github.com/cometbft/cometbft/crypto" "github.com/rs/zerolog" "github.com/rs/zerolog/log" + "go.uber.org/atomic" - "gitlab.com/thorchain/tss/go-tss/blame" - "gitlab.com/thorchain/tss/go-tss/common" - "gitlab.com/thorchain/tss/go-tss/conversion" - "gitlab.com/thorchain/tss/go-tss/messages" - "gitlab.com/thorchain/tss/go-tss/p2p" - "gitlab.com/thorchain/tss/go-tss/storage" + "github.com/zeta-chain/go-tss/blame" + "github.com/zeta-chain/go-tss/common" + "github.com/zeta-chain/go-tss/conversion" + "github.com/zeta-chain/go-tss/messages" + "github.com/zeta-chain/go-tss/p2p" + "github.com/zeta-chain/go-tss/storage" ) -type EDDSAKeySign struct { +type KeySign struct { logger zerolog.Logger tssCommonStruct *common.TssCommon stopChan chan struct{} // channel to indicate whether we should stop @@ -38,12 +37,19 @@ type EDDSAKeySign struct { stateManager storage.LocalStateManager } -func NewTssKeySign(localP2PID string, +func New( + localP2PID string, conf common.TssConfig, broadcastChan chan *messages.BroadcastMsgChan, - stopChan chan struct{}, msgID string, privKey tcrypto.PrivKey, p2pComm *p2p.Communication, stateManager storage.LocalStateManager, msgNum int) *EDDSAKeySign { + stopChan chan struct{}, + msgID string, + privKey tcrypto.PrivKey, + p2pComm *p2p.Communication, + stateManager storage.LocalStateManager, + msgNum int, +) *KeySign { logItems := []string{"keySign", msgID} - return &EDDSAKeySign{ + return &KeySign{ logger: log.With().Strs("module", logItems).Logger(), tssCommonStruct: common.NewTssCommon(localP2PID, broadcastChan, conf, msgID, privKey, msgNum), stopChan: stopChan, @@ -54,20 +60,20 @@ func NewTssKeySign(localP2PID string, } } -func (tKeySign *EDDSAKeySign) GetTssKeySignChannels() chan *p2p.Message { +func (tKeySign *KeySign) GetTssKeySignChannels() chan *p2p.Message { return tKeySign.tssCommonStruct.TssMsg } -func (tKeySign *EDDSAKeySign) GetTssCommonStruct() *common.TssCommon { +func (tKeySign *KeySign) GetTssCommonStruct() *common.TssCommon { return tKeySign.tssCommonStruct } -func (tKeySign *EDDSAKeySign) startBatchSigning(keySignPartyMap *sync.Map, msgNum int) bool { +func (tKeySign *KeySign) startBatchSigning(keySignPartyMap *sync.Map, msgNum int) bool { // start the batch sign var keySignWg sync.WaitGroup ret := atomic.NewBool(true) keySignWg.Add(msgNum) - keySignPartyMap.Range(func(key, value interface{}) bool { + keySignPartyMap.Range(func(_, value any) bool { eachParty := value.(btss.Party) go func(eachParty btss.Party) { defer keySignWg.Done() @@ -75,7 +81,8 @@ func (tKeySign *EDDSAKeySign) startBatchSigning(keySignPartyMap *sync.Map, msgNu tKeySign.logger.Error().Err(err).Msg("fail to start key sign party") ret.Store(false) } - tKeySign.logger.Info().Msgf("local party(%s) %s is ready", eachParty.PartyID().Id, eachParty.PartyID().Moniker) + tKeySign.logger.Info(). + Msgf("local party(%s) %s is ready", eachParty.PartyID().Id, eachParty.PartyID().Moniker) }(eachParty) return true }) @@ -84,7 +91,11 @@ func (tKeySign *EDDSAKeySign) startBatchSigning(keySignPartyMap *sync.Map, msgNu } // signMessage -func (tKeySign *EDDSAKeySign) SignMessage(msgsToSign [][]byte, localStateItem storage.KeygenLocalState, parties []string) ([]*tsslibcommon.SignatureData, error) { +func (tKeySign *KeySign) SignMessage( + msgsToSign [][]byte, + localStateItem storage.KeygenLocalState, + parties []string, +) ([]*tsslibcommon.SignatureData, error) { partiesID, localPartyID, err := conversion.GetParties(parties, localStateItem.LocalPartyKey) tKeySign.localParty = localPartyID if err != nil { @@ -114,14 +125,14 @@ func (tKeySign *EDDSAKeySign) SignMessage(msgsToSign [][]byte, localStateItem st partiesID, eachLocalPartyID, err := conversion.GetParties(parties, localStateItem.LocalPartyKey) ctx := btss.NewPeerContext(partiesID) if err != nil { - return nil, fmt.Errorf("error to create parties in batch signging %w\n", err) + return nil, fmt.Errorf("error to create parties in batch signing %w", err) } eachLocalPartyID.Moniker = moniker params := btss.NewParameters(btss.Edwards(), ctx, eachLocalPartyID, len(partiesID), threshold) var localData eddsakeygen.LocalPartySaveData err = json.Unmarshal(localStateItem.LocalData, &localData) if err != nil { - return nil, fmt.Errorf("fail to unmarshal the local saved data %w\n", err) + return nil, fmt.Errorf("fail to unmarshal the local saved data %w", err) } keySignParty := signing.NewLocalParty(m, params, localData, outCh, endCh) keySignPartyMap.Store(moniker, keySignParty) @@ -145,7 +156,10 @@ func (tKeySign *EDDSAKeySign) SignMessage(msgsToSign [][]byte, localStateItem st blameMgr.SetPartyInfo(keySignPartyMap, partyIDMap) tKeySign.tssCommonStruct.P2PPeersLock.Lock() - tKeySign.tssCommonStruct.P2PPeers = conversion.GetPeersID(tKeySign.tssCommonStruct.PartyIDtoP2PID, tKeySign.tssCommonStruct.GetLocalPeerID()) + tKeySign.tssCommonStruct.P2PPeers = conversion.GetPeersID( + tKeySign.tssCommonStruct.PartyIDtoP2PID, + tKeySign.tssCommonStruct.GetLocalPeerID(), + ) tKeySign.tssCommonStruct.P2PPeersLock.Unlock() var keySignWg sync.WaitGroup keySignWg.Add(2) @@ -188,7 +202,12 @@ func (tKeySign *EDDSAKeySign) SignMessage(msgsToSign [][]byte, localStateItem st return results, nil } -func (tKeySign *EDDSAKeySign) processKeySign(reqNum int, errChan chan struct{}, outCh <-chan btss.Message, endCh <-chan tsslibcommon.SignatureData) ([]*tsslibcommon.SignatureData, error) { +func (tKeySign *KeySign) processKeySign( + reqNum int, + errChan chan struct{}, + outCh <-chan btss.Message, + endCh <-chan tsslibcommon.SignatureData, +) ([]*tsslibcommon.SignatureData, error) { defer tKeySign.logger.Debug().Msg("key sign finished") tKeySign.logger.Debug().Msg("start to read messages from local party") var signatures []*tsslibcommon.SignatureData @@ -242,7 +261,10 @@ func (tKeySign *EDDSAKeySign) processKeySign(reqNum int, errChan chan struct{}, // if we cannot find the blame node, we check whether everyone send me the share if len(blameMgr.GetBlame().BlameNodes) == 0 { - blameNodesMisingShare, isUnicast, err := blameMgr.TssMissingShareBlame(messages.EDDSAKEYSIGNROUNDS, messages.EDDSAKEYSIGN) + blameNodesMisingShare, isUnicast, err := blameMgr.TssMissingShareBlame( + messages.EDDSAKEYSIGNROUNDS, + messages.EDDSAKEYSIGN, + ) if err != nil { tKeySign.logger.Error().Err(err).Msg("fail to get the node of missing share ") } diff --git a/keysign/keysign.go b/keysign/keysign.go index e61477d..a759959 100644 --- a/keysign/keysign.go +++ b/keysign/keysign.go @@ -3,13 +3,17 @@ package keysign import ( bc "github.com/bnb-chain/tss-lib/common" - "gitlab.com/thorchain/tss/go-tss/common" - "gitlab.com/thorchain/tss/go-tss/p2p" - "gitlab.com/thorchain/tss/go-tss/storage" + "github.com/zeta-chain/go-tss/common" + "github.com/zeta-chain/go-tss/p2p" + "github.com/zeta-chain/go-tss/storage" ) type TssKeySign interface { GetTssKeySignChannels() chan *p2p.Message GetTssCommonStruct() *common.TssCommon - SignMessage(msgToSign [][]byte, localStateItem storage.KeygenLocalState, parties []string) ([]*bc.SignatureData, error) + SignMessage( + msgToSign [][]byte, + localStateItem storage.KeygenLocalState, + parties []string, + ) ([]*bc.SignatureData, error) } diff --git a/keysign/notifier.go b/keysign/notifier.go index fea6e29..8d99cea 100644 --- a/keysign/notifier.go +++ b/keysign/notifier.go @@ -32,7 +32,12 @@ type notifier struct { } // newNotifier create a new instance of notifier. -func newNotifier(messageID string, messages [][]byte, poolPubKey string, signatures []*common.SignatureData) (*notifier, error) { +func newNotifier( + messageID string, + messages [][]byte, + poolPubKey string, + signatures []*common.SignatureData, +) (*notifier, error) { if len(messageID) == 0 { return nil, errors.New("messageID is empty") } @@ -119,7 +124,6 @@ func (n *notifier) verifySignature(data *common.SignatureData, msg []byte) error default: return errors.New("invalid pubkey type") } - } // processSignature is to verify whether the signature is valid diff --git a/keysign/notifier_test.go b/keysign/notifier_test.go index 2829630..0c82f86 100644 --- a/keysign/notifier_test.go +++ b/keysign/notifier_test.go @@ -8,8 +8,8 @@ import ( tsslibcommon "github.com/bnb-chain/tss-lib/common" . "gopkg.in/check.v1" - "gitlab.com/thorchain/tss/go-tss/common" - "gitlab.com/thorchain/tss/go-tss/conversion" + "github.com/zeta-chain/go-tss/common" + "github.com/zeta-chain/go-tss/conversion" ) type NotifierTestSuite struct{} diff --git a/keysign/response.go b/keysign/response.go index 92b1a40..3940de8 100644 --- a/keysign/response.go +++ b/keysign/response.go @@ -1,8 +1,8 @@ package keysign import ( - "gitlab.com/thorchain/tss/go-tss/blame" - "gitlab.com/thorchain/tss/go-tss/common" + "github.com/zeta-chain/go-tss/blame" + "github.com/zeta-chain/go-tss/common" ) // signature diff --git a/keysign/signature_notifier.go b/keysign/signature_notifier.go index bc6e21b..48a2542 100644 --- a/keysign/signature_notifier.go +++ b/keysign/signature_notifier.go @@ -7,7 +7,6 @@ import ( "time" "github.com/bnb-chain/tss-lib/common" - tsslibcommon "github.com/bnb-chain/tss-lib/common" "github.com/golang/protobuf/proto" "github.com/libp2p/go-libp2p/core/host" "github.com/libp2p/go-libp2p/core/network" @@ -16,8 +15,8 @@ import ( "github.com/rs/zerolog" "github.com/rs/zerolog/log" - "gitlab.com/thorchain/tss/go-tss/messages" - "gitlab.com/thorchain/tss/go-tss/p2p" + "github.com/zeta-chain/go-tss/messages" + "github.com/zeta-chain/go-tss/p2p" ) var signatureNotifierProtocol protocol.ID = "/p2p/signatureNotifier" @@ -186,11 +185,19 @@ func (s *SignatureNotifier) sendOneMsgToPeer(m *signatureItem) error { } // BroadcastSignature sending the keysign signature to all other peers -func (s *SignatureNotifier) BroadcastSignature(messageID string, sig []*tsslibcommon.SignatureData, peers []peer.ID) error { +func (s *SignatureNotifier) BroadcastSignature( + messageID string, + sig []*common.SignatureData, + peers []peer.ID, +) error { return s.broadcastCommon(messageID, sig, peers) } -func (s *SignatureNotifier) broadcastCommon(messageID string, sig []*tsslibcommon.SignatureData, peers []peer.ID) error { +func (s *SignatureNotifier) broadcastCommon( + messageID string, + sig []*common.SignatureData, + peers []peer.ID, +) error { wg := sync.WaitGroup{} for _, p := range peers { if p == s.host.ID() { @@ -234,7 +241,13 @@ func (s *SignatureNotifier) removeNotifier(n *notifier) { // hold on to the signatures until this node enters WaitForSignatures. alternatively, we may begin to // WaitForSignature first, in which case we should wait for signatures via broadcast. once all components // are set (see readyToProcess()), we can process the signature -func (s *SignatureNotifier) createOrUpdateNotifier(messageID string, messages [][]byte, poolPubKey string, signatures []*tsslibcommon.SignatureData, timeout time.Duration) (*notifier, error) { +func (s *SignatureNotifier) createOrUpdateNotifier( + messageID string, + messages [][]byte, + poolPubKey string, + signatures []*common.SignatureData, + timeout time.Duration, +) (*notifier, error) { s.notifierLock.Lock() defer s.notifierLock.Unlock() n, ok := s.notifiers[messageID] @@ -261,7 +274,13 @@ func (s *SignatureNotifier) createOrUpdateNotifier(messageID string, messages [] } // WaitForSignature wait until keysign finished and signature is available -func (s *SignatureNotifier) WaitForSignature(messageID string, message [][]byte, poolPubKey string, timeout time.Duration, sigChan chan string) ([]*tsslibcommon.SignatureData, error) { +func (s *SignatureNotifier) WaitForSignature( + messageID string, + message [][]byte, + poolPubKey string, + timeout time.Duration, + sigChan chan string, +) ([]*common.SignatureData, error) { s.logger.Debug().Msg("waiting for signature") n, err := s.createOrUpdateNotifier(messageID, message, poolPubKey, nil, timeout+time.Second) if err != nil { diff --git a/keysign/signature_notifier_test.go b/keysign/signature_notifier_test.go index 130f6e0..de4ae21 100644 --- a/keysign/signature_notifier_test.go +++ b/keysign/signature_notifier_test.go @@ -13,10 +13,11 @@ import ( "github.com/libp2p/go-libp2p/core/peer" mocknet "github.com/libp2p/go-libp2p/p2p/net/mock" "github.com/stretchr/testify/assert" - "gitlab.com/thorchain/tss/go-tss/conversion" + "github.com/stretchr/testify/require" + "github.com/zeta-chain/go-tss/conversion" - "gitlab.com/thorchain/tss/go-tss/common" - "gitlab.com/thorchain/tss/go-tss/p2p" + "github.com/zeta-chain/go-tss/common" + "github.com/zeta-chain/go-tss/p2p" ) func TestSignatureNotifierHappyPath(t *testing.T) { @@ -156,7 +157,7 @@ func TestSignatureNotifierBroadcastFirst(t *testing.T) { })) n1.notifierLock.Lock() - assert.Contains(t, n1.notifiers, messageID) + require.Contains(t, n1.notifiers, messageID) notifier := n1.notifiers[messageID] n1.notifierLock.Unlock() assert.False(t, notifier.readyToProcess()) diff --git a/messages/join_party.pb.go b/messages/join_party.pb.go index 571e08b..1c20738 100644 --- a/messages/join_party.pb.go +++ b/messages/join_party.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.12.4 +// protoc-gen-go v1.36.1 +// protoc v5.29.2 // source: messages/join_party.proto package messages import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type JoinPartyLeaderComm_ResponseType int32 const ( @@ -81,20 +76,17 @@ func (JoinPartyLeaderComm_ResponseType) EnumDescriptor() ([]byte, []int) { } type JoinPartyRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ID string `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"` // the unique hash id unknownFields protoimpl.UnknownFields - - ID string `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"` // the unique hash id + sizeCache protoimpl.SizeCache } func (x *JoinPartyRequest) Reset() { *x = JoinPartyRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_messages_join_party_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_messages_join_party_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *JoinPartyRequest) String() string { @@ -105,7 +97,7 @@ func (*JoinPartyRequest) ProtoMessage() {} func (x *JoinPartyRequest) ProtoReflect() protoreflect.Message { mi := &file_messages_join_party_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -128,23 +120,20 @@ func (x *JoinPartyRequest) GetID() string { } type JoinPartyLeaderComm struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ID string `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"` // unique hash id + MsgType string `protobuf:"bytes,2,opt,name=MsgType,proto3" json:"MsgType,omitempty"` // unique hash id + Type JoinPartyLeaderComm_ResponseType `protobuf:"varint,3,opt,name=type,proto3,enum=messages.JoinPartyLeaderComm_ResponseType" json:"type,omitempty"` // result + PeerIDs []string `protobuf:"bytes,4,rep,name=PeerIDs,proto3" json:"PeerIDs,omitempty"` // if Success , this will be the list of peers to form the ceremony, if fail , this will be the peers that are available unknownFields protoimpl.UnknownFields - - ID string `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"` // unique hash id - MsgType string `protobuf:"bytes,2,opt,name=MsgType,proto3" json:"MsgType,omitempty"` // unique hash id - Type JoinPartyLeaderComm_ResponseType `protobuf:"varint,3,opt,name=type,proto3,enum=messages.JoinPartyLeaderComm_ResponseType" json:"type,omitempty"` // result - PeerIDs []string `protobuf:"bytes,4,rep,name=PeerIDs,proto3" json:"PeerIDs,omitempty"` // if Success , this will be the list of peers to form the ceremony, if fail , this will be the peers that are available + sizeCache protoimpl.SizeCache } func (x *JoinPartyLeaderComm) Reset() { *x = JoinPartyLeaderComm{} - if protoimpl.UnsafeEnabled { - mi := &file_messages_join_party_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_messages_join_party_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *JoinPartyLeaderComm) String() string { @@ -155,7 +144,7 @@ func (*JoinPartyLeaderComm) ProtoMessage() {} func (x *JoinPartyLeaderComm) ProtoReflect() protoreflect.Message { mi := &file_messages_join_party_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -221,10 +210,10 @@ var file_messages_join_party_proto_rawDesc = []byte{ 0x0b, 0x0a, 0x07, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x52, 0x65, 0x61, 0x64, 0x79, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x50, 0x65, 0x65, 0x72, 0x10, - 0x04, 0x42, 0x2a, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x74, 0x68, 0x6f, 0x72, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x2f, 0x74, 0x73, 0x73, 0x2f, 0x67, 0x6f, - 0x2d, 0x74, 0x73, 0x73, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x04, 0x42, 0x27, 0x5a, 0x25, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x7a, 0x65, 0x74, 0x61, 0x2d, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x2f, 0x67, 0x6f, 0x2d, 0x74, 0x73, + 0x73, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -241,7 +230,7 @@ func file_messages_join_party_proto_rawDescGZIP() []byte { var file_messages_join_party_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_messages_join_party_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_messages_join_party_proto_goTypes = []interface{}{ +var file_messages_join_party_proto_goTypes = []any{ (JoinPartyLeaderComm_ResponseType)(0), // 0: messages.JoinPartyLeaderComm.ResponseType (*JoinPartyRequest)(nil), // 1: messages.JoinPartyRequest (*JoinPartyLeaderComm)(nil), // 2: messages.JoinPartyLeaderComm @@ -260,32 +249,6 @@ func file_messages_join_party_proto_init() { if File_messages_join_party_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_messages_join_party_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JoinPartyRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_messages_join_party_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JoinPartyLeaderComm); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/messages/join_party.proto b/messages/join_party.proto index 6f5e513..fee3b5b 100644 --- a/messages/join_party.proto +++ b/messages/join_party.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -option go_package = "gitlab.com/thorchain/tss/go-tss/messages"; +option go_package = "github.com/zeta-chain/go-tss/messages"; package messages; diff --git a/messages/signature_notifier.pb.go b/messages/signature_notifier.pb.go index dc46f58..e8e876a 100644 --- a/messages/signature_notifier.pb.go +++ b/messages/signature_notifier.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.12.4 +// protoc-gen-go v1.36.1 +// protoc v5.29.2 // source: messages/signature_notifier.proto package messages import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type KeysignSignature_Status int32 const ( @@ -75,22 +70,19 @@ func (KeysignSignature_Status) EnumDescriptor() ([]byte, []int) { } type KeysignSignature struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` ID string `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"` // the unique message id Signatures [][]byte `protobuf:"bytes,2,rep,name=Signatures,proto3" json:"Signatures,omitempty"` KeysignStatus KeysignSignature_Status `protobuf:"varint,3,opt,name=KeysignStatus,proto3,enum=messages.KeysignSignature_Status" json:"KeysignStatus,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *KeysignSignature) Reset() { *x = KeysignSignature{} - if protoimpl.UnsafeEnabled { - mi := &file_messages_signature_notifier_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_messages_signature_notifier_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *KeysignSignature) String() string { @@ -101,7 +93,7 @@ func (*KeysignSignature) ProtoMessage() {} func (x *KeysignSignature) ProtoReflect() protoreflect.Message { mi := &file_messages_signature_notifier_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -154,10 +146,10 @@ var file_messages_signature_notifier_proto_rawDesc = []byte{ 0x79, 0x73, 0x69, 0x67, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x2e, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x01, 0x12, - 0x0a, 0x0a, 0x06, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0x02, 0x42, 0x2a, 0x5a, 0x28, 0x67, - 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x68, 0x6f, 0x72, 0x63, 0x68, - 0x61, 0x69, 0x6e, 0x2f, 0x74, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2d, 0x74, 0x73, 0x73, 0x2f, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x0a, 0x0a, 0x06, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0x02, 0x42, 0x27, 0x5a, 0x25, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x7a, 0x65, 0x74, 0x61, 0x2d, 0x63, + 0x68, 0x61, 0x69, 0x6e, 0x2f, 0x67, 0x6f, 0x2d, 0x74, 0x73, 0x73, 0x2f, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -174,7 +166,7 @@ func file_messages_signature_notifier_proto_rawDescGZIP() []byte { var file_messages_signature_notifier_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_messages_signature_notifier_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_messages_signature_notifier_proto_goTypes = []interface{}{ +var file_messages_signature_notifier_proto_goTypes = []any{ (KeysignSignature_Status)(0), // 0: messages.KeysignSignature.Status (*KeysignSignature)(nil), // 1: messages.KeysignSignature } @@ -192,20 +184,6 @@ func file_messages_signature_notifier_proto_init() { if File_messages_signature_notifier_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_messages_signature_notifier_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KeysignSignature); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/messages/signature_notifier.proto b/messages/signature_notifier.proto index fdb6951..33a60c5 100644 --- a/messages/signature_notifier.proto +++ b/messages/signature_notifier.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -option go_package = "gitlab.com/thorchain/tss/go-tss/messages"; +option go_package = "github.com/zeta-chain/go-tss/messages"; package messages; message KeysignSignature { diff --git a/p2p/communication.go b/p2p/communication.go index 120726f..1473057 100644 --- a/p2p/communication.go +++ b/p2p/communication.go @@ -22,7 +22,7 @@ import ( "github.com/rs/zerolog" "github.com/rs/zerolog/log" - "gitlab.com/thorchain/tss/go-tss/messages" + "github.com/zeta-chain/go-tss/messages" ) var ( @@ -72,7 +72,7 @@ func NewCommunication( if err != nil { return nil, fmt.Errorf("fail to create listen addr: %w", err) } - var externalAddr maddr.Multiaddr = nil + var externalAddr maddr.Multiaddr if len(externalIP) != 0 { externalAddr, err = maddr.NewMultiaddr(fmt.Sprintf("/ip4/%s/tcp/%d", externalIP, port)) if err != nil { @@ -186,12 +186,12 @@ func (c *Communication) readFromStream(stream network.Stream) { c.streamMgr.AddStream(wrappedMsg.MsgID, stream) select { case <-time.After(10 * time.Second): - c.logger.Warn().Msgf("timeout to send message to channel: protocol ID: %s, msg type %s, peer ID %s", stream.Protocol(), wrappedMsg.MessageType.String(), peerID) + c.logger.Warn(). + Msgf("timeout to send message to channel: protocol ID: %s, msg type %s, peer ID %s", stream.Protocol(), wrappedMsg.MessageType.String(), peerID) case channel <- &Message{ PeerID: stream.Conn().RemotePeer(), Payload: dataBuf}: } - } } @@ -289,7 +289,11 @@ func (c *Communication) startChannel(privKeyBytes []byte) error { limiter := rcmgr.NewFixedLimiter(limits) - m, err := rcmgr.NewResourceManager(limiter, rcmgr.WithAllowlistedMultiaddrs(c.bootstrapPeers), rcmgr.WithMetrics(NewResourceMetricReporter())) + m, err := rcmgr.NewResourceManager( + limiter, + rcmgr.WithAllowlistedMultiaddrs(c.bootstrapPeers), + rcmgr.WithMetrics(NewResourceMetricReporter()), + ) if err != nil { return err } diff --git a/p2p/communication_test.go b/p2p/communication_test.go index a7d44fb..020e489 100644 --- a/p2p/communication_test.go +++ b/p2p/communication_test.go @@ -7,7 +7,7 @@ import ( "github.com/libp2p/go-libp2p/core/peer" maddr "github.com/multiformats/go-multiaddr" - "gitlab.com/thorchain/tss/go-tss/messages" + "github.com/zeta-chain/go-tss/messages" "github.com/libp2p/go-libp2p/core/crypto" . "gopkg.in/check.v1" diff --git a/p2p/metric_reporter.go b/p2p/metric_reporter.go index 3444f41..1a6262b 100644 --- a/p2p/metric_reporter.go +++ b/p2p/metric_reporter.go @@ -19,9 +19,7 @@ func NewResourceMetricReporter() *ResourceMetricReporter { } // AllowConn is invoked when opening a connection is allowed -func (rmr *ResourceMetricReporter) AllowConn(dir network.Direction, usefd bool) { - -} +func (rmr *ResourceMetricReporter) AllowConn(_ network.Direction, _ bool) {} // BlockConn is invoked when opening a connection is blocked func (rmr *ResourceMetricReporter) BlockConn(dir network.Direction, usefd bool) { @@ -29,9 +27,7 @@ func (rmr *ResourceMetricReporter) BlockConn(dir network.Direction, usefd bool) } // AllowStream is invoked when opening a stream is allowed -func (rmr *ResourceMetricReporter) AllowStream(p peer.ID, dir network.Direction) { - -} +func (rmr *ResourceMetricReporter) AllowStream(_ peer.ID, _ network.Direction) {} // BlockStream is invoked when opening a stream is blocked func (rmr *ResourceMetricReporter) BlockStream(p peer.ID, dir network.Direction) { @@ -39,7 +35,7 @@ func (rmr *ResourceMetricReporter) BlockStream(p peer.ID, dir network.Direction) } // AllowPeer is invoked when attaching ac onnection to a peer is allowed -func (rmr *ResourceMetricReporter) AllowPeer(p peer.ID) {} +func (rmr *ResourceMetricReporter) AllowPeer(_ peer.ID) {} // BlockPeer is invoked when attaching a connection to a peer is blocked func (rmr *ResourceMetricReporter) BlockPeer(p peer.ID) { @@ -47,7 +43,7 @@ func (rmr *ResourceMetricReporter) BlockPeer(p peer.ID) { } // AllowProtocol is invoked when setting the protocol for a stream is allowed -func (rmr *ResourceMetricReporter) AllowProtocol(proto protocol.ID) {} +func (rmr *ResourceMetricReporter) AllowProtocol(_ protocol.ID) {} // BlockProtocol is invoked when setting the protocol for a stream is blocked func (rmr *ResourceMetricReporter) BlockProtocol(proto protocol.ID) { @@ -60,7 +56,7 @@ func (rmr *ResourceMetricReporter) BlockProtocolPeer(proto protocol.ID, p peer.I } // AllowService is invoked when setting the protocol for a stream is allowed -func (rmr *ResourceMetricReporter) AllowService(svc string) {} +func (rmr *ResourceMetricReporter) AllowService(_ string) {} // BlockService is invoked when setting the protocol for a stream is blocked func (rmr *ResourceMetricReporter) BlockService(svc string) { @@ -73,7 +69,7 @@ func (rmr *ResourceMetricReporter) BlockServicePeer(svc string, p peer.ID) { } // AllowMemory is invoked when a memory reservation is allowed -func (rmr *ResourceMetricReporter) AllowMemory(size int) {} +func (rmr *ResourceMetricReporter) AllowMemory(_ int) {} // BlockMemory is invoked when a memory reservation is blocked func (rmr *ResourceMetricReporter) BlockMemory(size int) { diff --git a/p2p/party_coordinator.go b/p2p/party_coordinator.go index 414d6a8..8e4a79f 100644 --- a/p2p/party_coordinator.go +++ b/p2p/party_coordinator.go @@ -15,8 +15,8 @@ import ( "github.com/rs/zerolog/log" "google.golang.org/protobuf/proto" - "gitlab.com/thorchain/tss/go-tss/conversion" - "gitlab.com/thorchain/tss/go-tss/messages" + "github.com/zeta-chain/go-tss/conversion" + "github.com/zeta-chain/go-tss/messages" ) var ( @@ -188,7 +188,12 @@ func (pc *PartyCoordinator) RemovePeerGroup(messageID string) { delete(pc.peersGroup, messageID) } -func (pc *PartyCoordinator) createJoinPartyGroups(messageID string, leaderID peer.ID, peerIDs []peer.ID, threshold int) (*peerStatus, error) { +func (pc *PartyCoordinator) createJoinPartyGroups( + messageID string, + leaderID peer.ID, + peerIDs []peer.ID, + threshold int, +) (*peerStatus, error) { pc.joinPartyGroupLock.Lock() defer pc.joinPartyGroupLock.Unlock() peerStatus := newPeerStatus(peerIDs, pc.host.ID(), leaderID, threshold) @@ -264,7 +269,13 @@ func (pc *PartyCoordinator) sendRequestToAll(msgID string, msgSend []byte, peers wg.Wait() } -func (pc *PartyCoordinator) sendMsgToPeer(msgBuf []byte, msgID string, remotePeer peer.ID, protoc protocol.ID, needResponse bool) error { +func (pc *PartyCoordinator) sendMsgToPeer( + msgBuf []byte, + msgID string, + remotePeer peer.ID, + protoc protocol.ID, + needResponse bool, +) error { ctx, cancel := context.WithTimeout(context.Background(), time.Second*4) defer cancel() @@ -296,7 +307,11 @@ func (pc *PartyCoordinator) sendMsgToPeer(msgBuf []byte, msgID string, remotePee return nil } -func (pc *PartyCoordinator) joinPartyMember(msgID string, peerGroup *peerStatus, sigChan chan string) ([]peer.ID, error) { +func (pc *PartyCoordinator) joinPartyMember( + msgID string, + peerGroup *peerStatus, + sigChan chan string, +) ([]peer.ID, error) { leaderID := peerGroup.getLeader() msg := messages.JoinPartyLeaderComm{ ID: msgID, @@ -382,7 +397,11 @@ func (pc *PartyCoordinator) joinPartyMember(msgID string, peerGroup *peerStatus, return pIDs, ErrJoinPartyTimeout } -func (pc *PartyCoordinator) joinPartyLeader(msgID string, peerGroup *peerStatus, sigChan chan string) ([]peer.ID, error) { +func (pc *PartyCoordinator) joinPartyLeader( + msgID string, + peerGroup *peerStatus, + sigChan chan string, +) ([]peer.ID, error) { var sigNotify string select { case <-pc.stopChan: @@ -428,7 +447,13 @@ func (pc *PartyCoordinator) joinPartyLeader(msgID string, peerGroup *peerStatus, return onlinePeers, nil } -func (pc *PartyCoordinator) JoinPartyWithLeader(msgID string, blockHeight int64, peers []string, threshold int, sigChan chan string) ([]peer.ID, string, error) { +func (pc *PartyCoordinator) JoinPartyWithLeader( + msgID string, + blockHeight int64, + peers []string, + threshold int, + sigChan chan string, +) ([]peer.ID, string, error) { leader, err := LeaderNode(msgID, blockHeight, peers) if err != nil { return nil, "", err @@ -474,7 +499,7 @@ func (pc *PartyCoordinator) JoinPartyWithRetry(msgID string, peers []string) ([] return nil, err } - peerGroup, err := pc.createJoinPartyGroups(msg.ID, "NONE", peerIDs, 1) + peerGroup, err := pc.createJoinPartyGroups(msg.ID, NoLeader, peerIDs, 1) if err != nil { pc.logger.Error().Err(err).Msg("fail to create the join party group") return nil, err diff --git a/p2p/party_coordinator_test.go b/p2p/party_coordinator_test.go index 5006514..f464ba7 100644 --- a/p2p/party_coordinator_test.go +++ b/p2p/party_coordinator_test.go @@ -12,7 +12,7 @@ import ( mocknet "github.com/libp2p/go-libp2p/p2p/net/mock" "github.com/stretchr/testify/assert" - "gitlab.com/thorchain/tss/go-tss/conversion" + "github.com/zeta-chain/go-tss/conversion" ) func setupHostsLocally(t *testing.T, n int) []host.Host { diff --git a/p2p/party_coordinator_test_with_leader_test.go b/p2p/party_coordinator_test_with_leader_test.go index 84ffd75..333b3e4 100644 --- a/p2p/party_coordinator_test_with_leader_test.go +++ b/p2p/party_coordinator_test_with_leader_test.go @@ -12,7 +12,7 @@ import ( mocknet "github.com/libp2p/go-libp2p/p2p/net/mock" "github.com/stretchr/testify/assert" - "gitlab.com/thorchain/tss/go-tss/conversion" + "github.com/zeta-chain/go-tss/conversion" ) func init() { diff --git a/p2p/peer_status.go b/p2p/peer_status.go index da795bd..1ca99a5 100644 --- a/p2p/peer_status.go +++ b/p2p/peer_status.go @@ -7,9 +7,12 @@ import ( "github.com/libp2p/go-libp2p/core/peer" "github.com/rs/zerolog/log" - "gitlab.com/thorchain/tss/go-tss/messages" + "github.com/zeta-chain/go-tss/messages" ) +// NoLeader will be dropped. +const NoLeader = "NONE" + type peerStatus struct { peersResponse map[peer.ID]bool peerStatusLock *sync.RWMutex @@ -94,7 +97,7 @@ func (ps *peerStatus) updatePeer(peerNode peer.ID) (bool, error) { return false, errors.New("key not found") } - if ps.leader == "NONE" { + if ps.leader == NoLeader { if !val { ps.peersResponse[peerNode] = true return true, nil diff --git a/p2p/stream_helper.go b/p2p/stream_helper.go index 2dae44e..fef3c4e 100644 --- a/p2p/stream_helper.go +++ b/p2p/stream_helper.go @@ -102,7 +102,12 @@ func ReadStreamWithBuffer(stream network.Stream) ([]byte, error) { dataBuf := make([]byte, length) n, err = io.ReadFull(streamReader, dataBuf) if uint32(n) != length || err != nil { - return nil, fmt.Errorf("short read err(%w), we would like to read: %d, however we only read: %d", err, length, n) + return nil, fmt.Errorf( + "short read err(%w), we would like to read: %d, however we only read: %d", + err, + length, + n, + ) } return dataBuf, nil } diff --git a/p2p/test.go b/p2p/test.go new file mode 100644 index 0000000..291ff6e --- /dev/null +++ b/p2p/test.go @@ -0,0 +1,35 @@ +package p2p + +import ( + "net" + + "github.com/pkg/errors" +) + +// GetFreePorts allocated N available ports for testing purposes +// See https://github.com/tendermint/tendermint/issues/3682 +func GetFreePorts(n int) ([]int, error) { + ports := make([]int, 0, n) + + for i := 0; i < n; i++ { + addr, err := net.ResolveTCPAddr("tcp", "localhost:0") + if err != nil { + return nil, errors.Wrap(err, "unable to resolve port") + } + + l, err := net.ListenTCP("tcp", addr) + if err != nil { + return nil, errors.Wrap(err, "unable to listen to tcp") + } + + // This is done on purpose - we want to keep ports + // busy to avoid collisions when getting the next one + //goland:noinspection ALL + defer func() { _ = l.Close() }() + + port := l.Addr().(*net.TCPAddr).Port + ports = append(ports, port) + } + + return ports, nil +} diff --git a/p2p/whitelist_connection_gater.go b/p2p/whitelist_connection_gater.go index 0465aa0..fb8c0e9 100644 --- a/p2p/whitelist_connection_gater.go +++ b/p2p/whitelist_connection_gater.go @@ -3,10 +3,9 @@ package p2p import ( "github.com/libp2p/go-libp2p/core/control" "github.com/libp2p/go-libp2p/core/network" - "github.com/rs/zerolog" - "github.com/libp2p/go-libp2p/core/peer" maddr "github.com/multiformats/go-multiaddr" + "github.com/rs/zerolog" ) type WhitelistConnectionGater struct { @@ -38,11 +37,15 @@ func (wg *WhitelistConnectionGater) InterceptAddrDial(p peer.ID, m maddr.Multiad return wg.peerAllowed("InterceptAddrDial", p, &m) } -func (wg *WhitelistConnectionGater) InterceptAccept(m network.ConnMultiaddrs) (allow bool) { +func (wg *WhitelistConnectionGater) InterceptAccept(_ network.ConnMultiaddrs) (allow bool) { return true } -func (wg *WhitelistConnectionGater) InterceptSecured(direction network.Direction, p peer.ID, m network.ConnMultiaddrs) (allow bool) { +func (wg *WhitelistConnectionGater) InterceptSecured( + _ network.Direction, + p peer.ID, + m network.ConnMultiaddrs, +) (allow bool) { remoteMultiAddr := m.RemoteMultiaddr() return wg.peerAllowed("InterceptSecured", p, &remoteMultiAddr) } diff --git a/storage/localstate_backwards_test.go b/storage/localstate_backwards_test.go index b4b22ea..f42421b 100644 --- a/storage/localstate_backwards_test.go +++ b/storage/localstate_backwards_test.go @@ -3,7 +3,7 @@ package storage import ( "testing" - "gitlab.com/thorchain/tss/go-tss/conversion" + "github.com/zeta-chain/go-tss/conversion" . "gopkg.in/check.v1" ) diff --git a/storage/localstate_mgr.go b/storage/localstate_mgr.go index 64974b1..d0cf31f 100644 --- a/storage/localstate_mgr.go +++ b/storage/localstate_mgr.go @@ -16,11 +16,11 @@ import ( "strings" "sync" + "github.com/bnb-chain/tss-lib/ecdsa/keygen" "github.com/libp2p/go-libp2p/core/peer" maddr "github.com/multiformats/go-multiaddr" - "github.com/bnb-chain/tss-lib/ecdsa/keygen" - "gitlab.com/thorchain/tss/go-tss/conversion" + "github.com/zeta-chain/go-tss/conversion" ) const keyFragmentSeed = "TSS_FRAGMENT_SEED" @@ -151,7 +151,10 @@ func (fsm *FileStateMgr) GetLocalState(pubKey string) (KeygenLocalState, error) // try unmarshalling with the old format var localStateOld KeygenLocalStateOld if err := json.Unmarshal(pt, &localStateOld); nil != err { - return KeygenLocalState{}, fmt.Errorf("fail to unmarshal KeygenLocalState with backwards compatibility: %w", err) + return KeygenLocalState{}, fmt.Errorf( + "fail to unmarshal KeygenLocalState with backwards compatibility: %w", + err, + ) } localState.PubKey = localStateOld.PubKey @@ -160,7 +163,10 @@ func (fsm *FileStateMgr) GetLocalState(pubKey string) (KeygenLocalState, error) localState.LocalData, err = json.Marshal(localStateOld.LocalData) if err != nil { - return KeygenLocalState{}, fmt.Errorf("fail to marshal KeygenLocalState.LocalData for backwards compatibility: %w", err) + return KeygenLocalState{}, fmt.Errorf( + "fail to marshal KeygenLocalState.LocalData for backwards compatibility: %w", + err, + ) } } fsm.writeLock.Lock() diff --git a/storage/localstate_mgr_test.go b/storage/localstate_mgr_test.go index 658b369..2b782f5 100644 --- a/storage/localstate_mgr_test.go +++ b/storage/localstate_mgr_test.go @@ -13,7 +13,7 @@ import ( maddr "github.com/multiformats/go-multiaddr" . "gopkg.in/check.v1" - "gitlab.com/thorchain/tss/go-tss/conversion" + "github.com/zeta-chain/go-tss/conversion" ) type FileStateMgrTestSuite struct{} @@ -42,7 +42,11 @@ func (s *FileStateMgrTestSuite) TestNewFileStateMgr(c *C) { c.Assert(err, NotNil) fileName, err = fsm.getFilePathName("thorpub1addwnpepqf90u7n3nr2jwsw4t2gzhzqfdlply8dlzv3mdj4dr22uvhe04azq5gac3gq") c.Assert(err, IsNil) - c.Assert(fileName, Equals, filepath.Join(f, "localstate-thorpub1addwnpepqf90u7n3nr2jwsw4t2gzhzqfdlply8dlzv3mdj4dr22uvhe04azq5gac3gq.json")) + c.Assert( + fileName, + Equals, + filepath.Join(f, "localstate-thorpub1addwnpepqf90u7n3nr2jwsw4t2gzhzqfdlply8dlzv3mdj4dr22uvhe04azq5gac3gq.json"), + ) } func (s *FileStateMgrTestSuite) TestSaveLocalState(c *C) { diff --git a/storage/mock_localstatemanager.go b/storage/mock_localstatemanager.go index 3e1480b..21fe496 100644 --- a/storage/mock_localstatemanager.go +++ b/storage/mock_localstatemanager.go @@ -9,15 +9,13 @@ import ( type MockLocalStateManager struct { } -func (s *MockLocalStateManager) SaveLocalState(state KeygenLocalState) error { - return nil -} +func (s *MockLocalStateManager) SaveLocalState(_ KeygenLocalState) error { return nil } -func (s *MockLocalStateManager) GetLocalState(pubKey string) (KeygenLocalState, error) { +func (s *MockLocalStateManager) GetLocalState(_ string) (KeygenLocalState, error) { return KeygenLocalState{}, nil } -func (s *MockLocalStateManager) SaveAddressBook(address map[peer.ID][]maddr.Multiaddr) error { +func (s *MockLocalStateManager) SaveAddressBook(_ map[peer.ID][]maddr.Multiaddr) error { return nil } diff --git a/tss/keygen.go b/tss/keygen.go index e0f94db..ee1ef56 100644 --- a/tss/keygen.go +++ b/tss/keygen.go @@ -6,20 +6,22 @@ import ( "github.com/bnb-chain/tss-lib/crypto" "github.com/cosmos/cosmos-sdk/types" - "gitlab.com/thorchain/tss/go-tss/blame" - "gitlab.com/thorchain/tss/go-tss/common" - "gitlab.com/thorchain/tss/go-tss/conversion" - "gitlab.com/thorchain/tss/go-tss/keygen" - "gitlab.com/thorchain/tss/go-tss/keygen/ecdsa" - "gitlab.com/thorchain/tss/go-tss/keygen/eddsa" - "gitlab.com/thorchain/tss/go-tss/messages" + + "github.com/zeta-chain/go-tss/blame" + "github.com/zeta-chain/go-tss/common" + "github.com/zeta-chain/go-tss/conversion" + "github.com/zeta-chain/go-tss/keygen" + "github.com/zeta-chain/go-tss/keygen/ecdsa" + "github.com/zeta-chain/go-tss/keygen/eddsa" + "github.com/zeta-chain/go-tss/messages" + "github.com/zeta-chain/go-tss/p2p" ) -func (t *TssServer) Keygen(req keygen.Request) (keygen.Response, error) { +func (t *Server) Keygen(req keygen.Request) (keygen.Response, error) { t.tssKeyGenLocker.Lock() defer t.tssKeyGenLocker.Unlock() status := common.Success - msgID, err := t.requestToMsgId(req) + msgID, err := t.requestToMsgID(req) if err != nil { return keygen.Response{}, err } @@ -39,7 +41,7 @@ func (t *TssServer) Keygen(req keygen.Request) (keygen.Response, error) { t.privateKey, t.p2pCommunication) case common.EdDSA: - keygenInstance = eddsa.NewTssKeyGen( + keygenInstance = eddsa.New( t.p2pCommunication.GetLocalPeerID(), t.conf, t.localNodePubKey, @@ -71,15 +73,24 @@ func (t *TssServer) Keygen(req keygen.Request) (keygen.Response, error) { sigChan := make(chan string) blameMgr := keygenInstance.GetTssCommonStruct().GetBlameMgr() joinPartyStartTime := time.Now() - onlinePeers, leader, errJoinParty := t.joinParty(msgID, req.Version, req.BlockHeight, req.Keys, len(req.Keys)-1, sigChan) + onlinePeers, leader, errJoinParty := t.joinParty( + msgID, + req.Version, + req.BlockHeight, + req.Keys, + len(req.Keys)-1, + sigChan, + ) joinPartyTime := time.Since(joinPartyStartTime) if errJoinParty != nil { - t.logger.Error().Err(errJoinParty).Msgf("failed to joinParty after %s, onlinePeers=%v", joinPartyTime, onlinePeers) + t.logger.Error(). + Err(errJoinParty). + Msgf("failed to joinParty after %s, onlinePeers=%v", joinPartyTime, onlinePeers) t.tssMetrics.KeygenJoinParty(joinPartyTime, false) t.tssMetrics.UpdateKeyGen(0, false) // this indicate we are processing the leaderless join party - if leader == "NONE" { + if leader == p2p.NoLeader { if onlinePeers == nil { t.logger.Error().Err(err).Msg("error before we start join party") return keygen.Response{ @@ -97,7 +108,6 @@ func (t *TssServer) Keygen(req keygen.Request) (keygen.Response, error) { Status: common.Fail, Blame: blameNodes, }, nil - } var blameLeader blame.Blame @@ -129,7 +139,6 @@ func (t *TssServer) Keygen(req keygen.Request) (keygen.Response, error) { Status: common.Fail, Blame: blameNodes, }, nil - } t.logger.Info().Msg("joinParty succeeded, keygen party formed") @@ -147,10 +156,10 @@ func (t *TssServer) Keygen(req keygen.Request) (keygen.Response, error) { blameNodes := *blameMgr.GetBlame() t.logger.Error().Err(err).Msgf("failed to generate key, blaming: %+v", blameNodes.BlameNodes) return keygen.NewResponse(common.ECDSA, "", "", common.Fail, blameNodes), err - } else { - t.tssMetrics.UpdateKeyGen(keygenTime, true) } + t.tssMetrics.UpdateKeyGen(keygenTime, true) + var newPubKey string var addr types.AccAddress switch req.Algo { @@ -177,13 +186,13 @@ func (t *TssServer) Keygen(req keygen.Request) (keygen.Response, error) { ), nil } -func (t *TssServer) KeygenAllAlgo(req keygen.Request) ([]keygen.Response, error) { +func (t *Server) KeygenAllAlgo(req keygen.Request) ([]keygen.Response, error) { // this is the algo we currently support algos := []common.Algo{common.ECDSA, common.EdDSA} t.tssKeyGenLocker.Lock() defer t.tssKeyGenLocker.Unlock() status := common.Success - msgID, err := t.requestToMsgId(req) + msgID, err := t.requestToMsgID(req) if err != nil { return nil, err } @@ -200,7 +209,7 @@ func (t *TssServer) KeygenAllAlgo(req keygen.Request) ([]keygen.Response, error) t.privateKey, t.p2pCommunication) - eddsaKeygenInstance := eddsa.NewTssKeyGen( + eddsaKeygenInstance := eddsa.New( t.p2pCommunication.GetLocalPeerID(), t.conf, t.localNodePubKey, @@ -238,13 +247,20 @@ func (t *TssServer) KeygenAllAlgo(req keygen.Request) ([]keygen.Response, error) // since all the keygen algorithms share the join party, so we need to use the ecdsa algo's blame manager blameMgr := keygenInstances[common.ECDSA].GetTssCommonStruct().GetBlameMgr() joinPartyStartTime := time.Now() - onlinePeers, leader, errJoinParty := t.joinParty(msgID, req.Version, req.BlockHeight, req.Keys, len(req.Keys)-1, sigChan) + onlinePeers, leader, errJoinParty := t.joinParty( + msgID, + req.Version, + req.BlockHeight, + req.Keys, + len(req.Keys)-1, + sigChan, + ) joinPartyTime := time.Since(joinPartyStartTime) if errJoinParty != nil { t.tssMetrics.KeygenJoinParty(joinPartyTime, false) t.tssMetrics.UpdateKeyGen(0, false) // this indicate we are processing the leaderless join party - if leader == "NONE" { + if leader == p2p.NoLeader { if onlinePeers == nil { t.logger.Error().Err(err).Msg("error before we start join party") return []keygen.Response{{ @@ -262,7 +278,6 @@ func (t *TssServer) KeygenAllAlgo(req keygen.Request) ([]keygen.Response, error) Status: common.Fail, Blame: blameNodes, }}, nil - } var blameLeader blame.Blame @@ -293,7 +308,6 @@ func (t *TssServer) KeygenAllAlgo(req keygen.Request) ([]keygen.Response, error) Status: common.Fail, Blame: blameNodes, }}, nil - } t.tssMetrics.KeygenJoinParty(joinPartyTime, true) @@ -317,10 +331,10 @@ func (t *TssServer) KeygenAllAlgo(req keygen.Request) ([]keygen.Response, error) blameMgr := instance.GetTssCommonStruct().GetBlameMgr() blameNode = *blameMgr.GetBlame() break - } else { - t.tssMetrics.UpdateKeyGen(keygenTime, true) } + t.tssMetrics.UpdateKeyGen(keygenTime, true) + blameNodes := *blameMgr.GetBlame() var newPubKey string var addr types.AccAddress diff --git a/tss/keysign.go b/tss/keysign.go index 45327b2..e106358 100644 --- a/tss/keysign.go +++ b/tss/keysign.go @@ -10,24 +10,27 @@ import ( "time" tsslibcommon "github.com/bnb-chain/tss-lib/common" - "github.com/libp2p/go-libp2p/core/peer" - - sdk "github.com/cosmos/cosmos-sdk/types/bech32/legacybech32" - "gitlab.com/thorchain/tss/go-tss/blame" - "gitlab.com/thorchain/tss/go-tss/common" - "gitlab.com/thorchain/tss/go-tss/conversion" - "gitlab.com/thorchain/tss/go-tss/keysign" - "gitlab.com/thorchain/tss/go-tss/messages" - "gitlab.com/thorchain/tss/go-tss/p2p" - "gitlab.com/thorchain/tss/go-tss/storage" - "github.com/cometbft/cometbft/crypto/ed25519" "github.com/cometbft/cometbft/crypto/secp256k1" - "gitlab.com/thorchain/tss/go-tss/keysign/ecdsa" - "gitlab.com/thorchain/tss/go-tss/keysign/eddsa" + sdk "github.com/cosmos/cosmos-sdk/types/bech32/legacybech32" + "github.com/libp2p/go-libp2p/core/peer" + + "github.com/zeta-chain/go-tss/blame" + "github.com/zeta-chain/go-tss/common" + "github.com/zeta-chain/go-tss/conversion" + "github.com/zeta-chain/go-tss/keysign" + "github.com/zeta-chain/go-tss/keysign/ecdsa" + "github.com/zeta-chain/go-tss/keysign/eddsa" + "github.com/zeta-chain/go-tss/messages" + "github.com/zeta-chain/go-tss/p2p" + "github.com/zeta-chain/go-tss/storage" ) -func (t *TssServer) waitForSignatures(msgID, poolPubKey string, msgsToSign [][]byte, sigChan chan string) (keysign.Response, error) { +func (t *Server) waitForSignatures( + msgID, poolPubKey string, + msgsToSign [][]byte, + sigChan chan string, +) (keysign.Response, error) { // TSS keysign include both form party and keysign itself, thus we wait twice of the timeout data, err := t.signatureNotifier.WaitForSignature(msgID, msgsToSign, poolPubKey, t.conf.KeySignTimeout, sigChan) if err != nil { @@ -41,7 +44,17 @@ func (t *TssServer) waitForSignatures(msgID, poolPubKey string, msgsToSign [][]b return t.batchSignatures(data, msgsToSign), nil } -func (t *TssServer) generateSignature(msgID string, msgsToSign [][]byte, req keysign.Request, threshold int, allParticipants []string, localStateItem storage.KeygenLocalState, blameMgr *blame.Manager, keysignInstance keysign.TssKeySign, sigChan chan string) (keysign.Response, error) { +func (t *Server) generateSignature( + msgID string, + msgsToSign [][]byte, + req keysign.Request, + threshold int, + allParticipants []string, + localStateItem storage.KeygenLocalState, + blameMgr *blame.Manager, + keysignInstance keysign.TssKeySign, + sigChan chan string, +) (keysign.Response, error) { allPeersID, err := conversion.GetPeerIDsFromPubKeys(allParticipants) if err != nil { t.logger.Error().Msg("invalid block height or public key") @@ -63,7 +76,8 @@ func (t *TssServer) generateSignature(msgID string, msgsToSign [][]byte, req key allParticipants = req.SignerPubKeys myPk, err := conversion.GetPubKeyFromPeerID(t.p2pCommunication.GetHost().ID().String()) if err != nil { - t.logger.Info().Msgf("fail to convert the p2p id(%s) to pubkey, turn to wait for signature", t.p2pCommunication.GetHost().ID().String()) + t.logger.Info(). + Msgf("fail to convert the p2p id(%s) to pubkey, turn to wait for signature", t.p2pCommunication.GetHost().ID().String()) return keysign.Response{}, p2p.ErrNotActiveSigner } isSignMember := false @@ -77,11 +91,17 @@ func (t *TssServer) generateSignature(msgID string, msgsToSign [][]byte, req key t.logger.Info().Msgf("we(%s) are not the active signer", t.p2pCommunication.GetHost().ID().String()) return keysign.Response{}, p2p.ErrNotActiveSigner } - } joinPartyStartTime := time.Now() - onlinePeers, leader, errJoinParty := t.joinParty(msgID, req.Version, req.BlockHeight, allParticipants, threshold, sigChan) + onlinePeers, leader, errJoinParty := t.joinParty( + msgID, + req.Version, + req.BlockHeight, + allParticipants, + threshold, + sigChan, + ) joinPartyTime := time.Since(joinPartyStartTime) if errJoinParty != nil { // we received the signature from waiting for signature @@ -90,7 +110,7 @@ func (t *TssServer) generateSignature(msgID string, msgsToSign [][]byte, req key } t.tssMetrics.KeysignJoinParty(joinPartyTime, false) // this indicate we are processing the leaderness join party - if leader == "NONE" { + if leader == p2p.NoLeader { if onlinePeers == nil { t.logger.Error().Err(errJoinParty).Msg("error before we start join party") t.broadcastKeysignFailure(msgID, allPeersID) @@ -128,12 +148,13 @@ func (t *TssServer) generateSignature(msgID string, msgsToSign [][]byte, req key t.broadcastKeysignFailure(msgID, allPeersID) // make sure we blame the leader as well - t.logger.Error().Err(errJoinParty).Msgf("messagesID(%s)fail to form keysign party with online:%v", msgID, onlinePeers) + t.logger.Error(). + Err(errJoinParty). + Msgf("messagesID(%s)fail to form keysign party with online:%v", msgID, onlinePeers) return keysign.Response{ Status: common.Fail, Blame: blameLeader, }, nil - } t.tssMetrics.KeysignJoinParty(joinPartyTime, true) isKeySignMember := false @@ -183,7 +204,7 @@ func (t *TssServer) generateSignature(msgID string, msgsToSign [][]byte, req key return t.batchSignatures(signatureData, msgsToSign), nil } -func (t *TssServer) updateKeySignResult(result keysign.Response, timeSpent time.Duration) { +func (t *Server) updateKeySignResult(result keysign.Response, timeSpent time.Duration) { if result.Status == common.Success { t.tssMetrics.UpdateKeySign(timeSpent, true) return @@ -191,13 +212,13 @@ func (t *TssServer) updateKeySignResult(result keysign.Response, timeSpent time. t.tssMetrics.UpdateKeySign(timeSpent, false) } -func (t *TssServer) KeySign(req keysign.Request) (keysign.Response, error) { +func (t *Server) KeySign(req keysign.Request) (keysign.Response, error) { t.logger.Info().Str("pool pub key", req.PoolPubKey). Str("signer pub keys", strings.Join(req.SignerPubKeys, ",")). Str("msg", strings.Join(req.Messages, ",")). Msg("received keysign request") emptyResp := keysign.Response{} - msgID, err := t.requestToMsgId(req) + msgID, err := t.requestToMsgID(req) if err != nil { return emptyResp, err } @@ -225,7 +246,7 @@ func (t *TssServer) KeySign(req keysign.Request) (keysign.Response, error) { ) case ed25519.KeyType: algo = common.EdDSA - keysignInstance = eddsa.NewTssKeySign( + keysignInstance = eddsa.New( t.p2pCommunication.GetLocalPeerID(), t.conf, t.p2pCommunication.BroadcastMsgChan, @@ -268,7 +289,11 @@ func (t *TssServer) KeySign(req keysign.Request) (keysign.Response, error) { for _, val := range req.Messages { msgToSign, err := base64.StdEncoding.DecodeString(val) if err != nil { - return keysign.Response{}, fmt.Errorf("fail to decode message(%s): %w", strings.Join(req.Messages, ","), err) + return keysign.Response{}, fmt.Errorf( + "fail to decode message(%s): %w", + strings.Join(req.Messages, ","), + err, + ) } msgsToSign = append(msgsToSign, msgToSign) } @@ -336,7 +361,17 @@ func (t *TssServer) KeySign(req keysign.Request) (keysign.Response, error) { // we generate the signature ourselves go func() { defer wg.Done() - generatedSig, errGen = t.generateSignature(msgID, msgsToSign, req, threshold, localStateItem.ParticipantKeys, localStateItem, blameMgr, keysignInstance, sigChan) + generatedSig, errGen = t.generateSignature( + msgID, + msgsToSign, + req, + threshold, + localStateItem.ParticipantKeys, + localStateItem, + blameMgr, + keysignInstance, + sigChan, + ) }() wg.Wait() close(sigChan) @@ -356,13 +391,13 @@ func (t *TssServer) KeySign(req keysign.Request) (keysign.Response, error) { return generatedSig, errGen } -func (t *TssServer) broadcastKeysignFailure(messageID string, peers []peer.ID) { +func (t *Server) broadcastKeysignFailure(messageID string, peers []peer.ID) { if err := t.signatureNotifier.BroadcastFailed(messageID, peers); err != nil { t.logger.Err(err).Msg("fail to broadcast keysign failure") } } -func (t *TssServer) batchSignatures(sigs []*tsslibcommon.SignatureData, msgsToSign [][]byte) keysign.Response { +func (t *Server) batchSignatures(sigs []*tsslibcommon.SignatureData, msgsToSign [][]byte) keysign.Response { var signatures []keysign.Signature for i, sig := range sigs { msg := base64.StdEncoding.EncodeToString(msgsToSign[i]) diff --git a/tss/server.go b/tss/server.go deleted file mode 100644 index c02752a..0000000 --- a/tss/server.go +++ /dev/null @@ -1,18 +0,0 @@ -package tss - -import ( - "github.com/libp2p/go-libp2p/core/peer" - "gitlab.com/thorchain/tss/go-tss/keygen" - "gitlab.com/thorchain/tss/go-tss/keysign" -) - -// Server define the necessary functionality should be provide by a TSS Server implementation -type Server interface { - Start() error - Stop() - GetLocalPeerID() string - GetKnownPeers() []peer.AddrInfo - Keygen(req keygen.Request) (keygen.Response, error) - KeygenAllAlgo(req keygen.Request) ([]keygen.Response, error) - KeySign(req keysign.Request) (keysign.Response, error) -} diff --git a/tss/tss.go b/tss/tss.go index 86e388a..ed598f6 100644 --- a/tss/tss.go +++ b/tss/tss.go @@ -17,18 +17,29 @@ import ( "github.com/rs/zerolog" "github.com/rs/zerolog/log" - "gitlab.com/thorchain/tss/go-tss/common" - "gitlab.com/thorchain/tss/go-tss/conversion" - "gitlab.com/thorchain/tss/go-tss/keygen" - "gitlab.com/thorchain/tss/go-tss/keysign" - "gitlab.com/thorchain/tss/go-tss/messages" - "gitlab.com/thorchain/tss/go-tss/monitor" - "gitlab.com/thorchain/tss/go-tss/p2p" - "gitlab.com/thorchain/tss/go-tss/storage" + "github.com/zeta-chain/go-tss/common" + "github.com/zeta-chain/go-tss/conversion" + "github.com/zeta-chain/go-tss/keygen" + "github.com/zeta-chain/go-tss/keysign" + "github.com/zeta-chain/go-tss/messages" + "github.com/zeta-chain/go-tss/monitor" + "github.com/zeta-chain/go-tss/p2p" + "github.com/zeta-chain/go-tss/storage" ) -// TssServer is the structure that can provide all keysign and key gen features -type TssServer struct { +// IServer define the necessary functionality should be provide by a TSS Server implementation. +type IServer interface { + Start() error + Stop() + GetLocalPeerID() string + GetKnownPeers() []peer.AddrInfo + Keygen(req keygen.Request) (keygen.Response, error) + KeygenAllAlgo(req keygen.Request) ([]keygen.Response, error) + KeySign(req keysign.Request) (keysign.Response, error) +} + +// Server is the structure that can provide all keysign and key gen features +type Server struct { conf common.TssConfig logger zerolog.Logger p2pCommunication *p2p.Communication @@ -49,8 +60,8 @@ type PeerInfo struct { Address string } -// NewTss create a new instance of Tss -func NewTss( +// New constructs Server. +func New( cmdBootstrapPeers []maddr.Multiaddr, p2pPort int, priKey tcrypto.PrivKey, @@ -60,7 +71,7 @@ func NewTss( externalIP string, tssPassword string, whitelistedPeers []peer.ID, -) (*TssServer, error) { +) (*Server, error) { pk := coskey.PubKey{ Key: priKey.PubKey().Bytes()[:], } @@ -137,7 +148,7 @@ func NewTss( if conf.EnableMonitor { metrics.Enable() } - tssServer := TssServer{ + tssServer := Server{ conf: conf, logger: log.With().Str("module", "tss").Logger(), p2pCommunication: comm, @@ -156,13 +167,13 @@ func NewTss( } // Start Tss server -func (t *TssServer) Start() error { +func (t *Server) Start() error { t.logger.Info().Msg("starting the tss servers") return nil } // Stop Tss server -func (t *TssServer) Stop() { +func (t *Server) Stop() { close(t.stopChan) // stop the p2p and finish the p2p wait group err := t.p2pCommunication.Stop() @@ -174,20 +185,23 @@ func (t *TssServer) Stop() { t.logger.Info().Msg("The tss and p2p server has been stopped successfully") } -func (t *TssServer) setJoinPartyChan(jpc chan struct{}) { +// nolint:unused // used in tests +func (t *Server) setJoinPartyChan(jpc chan struct{}) { t.joinPartyChan = jpc } -func (t *TssServer) unsetJoinPartyChan() { + +// nolint:unused // used in tests +func (t *Server) unsetJoinPartyChan() { t.joinPartyChan = nil } -func (t *TssServer) notifyJoinPartyChan() { +func (t *Server) notifyJoinPartyChan() { if t.joinPartyChan != nil { t.joinPartyChan <- struct{}{} } } -func (t *TssServer) requestToMsgId(request interface{}) (string, error) { +func (t *Server) requestToMsgID(request any) (string, error) { var dat []byte var keys []string switch value := request.(type) { @@ -210,50 +224,58 @@ func (t *TssServer) requestToMsgId(request interface{}) (string, error) { return common.MsgToHashString(dat) } -func (t *TssServer) joinParty(msgID, version string, blockHeight int64, participants []string, threshold int, sigChan chan string) ([]peer.ID, string, error) { +func (t *Server) joinParty( + msgID, version string, + blockHeight int64, + participants []string, + threshold int, + sigChan chan string, +) ([]peer.ID, string, error) { oldJoinParty, err := conversion.VersionLTCheck(version, messages.NEWJOINPARTYVERSION) if err != nil { return nil, "", fmt.Errorf("fail to parse the version with error:%w", err) } + if oldJoinParty { t.logger.Info().Msg("we apply the leadless join party") peerIDs, err := conversion.GetPeerIDsFromPubKeys(participants) if err != nil { - return nil, "NONE", fmt.Errorf("fail to convert pub key to peer id: %w", err) + return nil, p2p.NoLeader, fmt.Errorf("fail to convert pub key to peer id: %w", err) } var peersIDStr []string for _, el := range peerIDs { peersIDStr = append(peersIDStr, el.String()) } onlines, err := t.partyCoordinator.JoinPartyWithRetry(msgID, peersIDStr) - return onlines, "NONE", err - } else { - t.logger.Info().Msg("we apply the join party with a leader") + return onlines, p2p.NoLeader, err + } - if len(participants) == 0 { - t.logger.Error().Msg("we fail to have any participants or passed by request") - return nil, "", errors.New("no participants can be found") - } - peersID, err := conversion.GetPeerIDsFromPubKeys(participants) - if err != nil { - return nil, "", errors.New("fail to convert the public key to peer ID") - } - var peersIDStr []string - for _, el := range peersID { - peersIDStr = append(peersIDStr, el.String()) - } + t.logger.Info().Msg("we apply the join party with a leader") + if len(participants) == 0 { + t.logger.Error().Msg("we fail to have any participants or passed by request") + return nil, "", errors.New("no participants can be found") + } - return t.partyCoordinator.JoinPartyWithLeader(msgID, blockHeight, peersIDStr, threshold, sigChan) + peersID, err := conversion.GetPeerIDsFromPubKeys(participants) + if err != nil { + return nil, "", errors.New("fail to convert the public key to peer ID") + } + + var peersIDStr []string + for _, el := range peersID { + peersIDStr = append(peersIDStr, el.String()) } + + return t.partyCoordinator.JoinPartyWithLeader(msgID, blockHeight, peersIDStr, threshold, sigChan) } // GetLocalPeerID return the local peer -func (t *TssServer) GetLocalPeerID() string { +func (t *Server) GetLocalPeerID() string { return t.p2pCommunication.GetLocalPeerID() } // GetKnownPeers return the the ID and IP address of all peers. -func (t *TssServer) GetKnownPeers() []peer.AddrInfo { +func (t *Server) GetKnownPeers() []peer.AddrInfo { var infos []peer.AddrInfo host := t.p2pCommunication.GetHost() @@ -269,7 +291,7 @@ func (t *TssServer) GetKnownPeers() []peer.AddrInfo { return infos } -// GetP2PHost return the libp2p host of the Communicator inside TssServer -func (t *TssServer) GetP2PHost() host.Host { +// GetP2PHost return the libp2p host of the Communicator inside Server +func (t *Server) GetP2PHost() host.Host { return t.p2pCommunication.GetHost() } diff --git a/tss/tss_4nodes_test.go b/tss/tss_4nodes_test.go index 724692b..aff266a 100644 --- a/tss/tss_4nodes_test.go +++ b/tss/tss_4nodes_test.go @@ -17,13 +17,15 @@ import ( btsskeygen "github.com/bnb-chain/tss-lib/ecdsa/keygen" "github.com/libp2p/go-libp2p/core/peer" maddr "github.com/multiformats/go-multiaddr" + zlog "github.com/rs/zerolog/log" + "github.com/zeta-chain/go-tss/p2p" . "gopkg.in/check.v1" - "gitlab.com/thorchain/tss/go-tss/common" - "gitlab.com/thorchain/tss/go-tss/conversion" - "gitlab.com/thorchain/tss/go-tss/keygen" - "gitlab.com/thorchain/tss/go-tss/keysign" + "github.com/zeta-chain/go-tss/common" + "github.com/zeta-chain/go-tss/conversion" + "github.com/zeta-chain/go-tss/keygen" + "github.com/zeta-chain/go-tss/keysign" ) const ( @@ -61,7 +63,7 @@ func TestPackage(t *testing.T) { } type FourNodeTestSuite struct { - servers []*TssServer + servers []*Server ports []int preParams []*btsskeygen.LocalPreParams bootstrapPeers []maddr.Multiaddr @@ -72,16 +74,18 @@ var _ = Suite(&FourNodeTestSuite{}) // setup four nodes for test func (s *FourNodeTestSuite) SetUpTest(c *C) { - var err error common.InitLog("info", true, "four_nodes_test") conversion.SetupBech32Prefix() - s.ports = []int{ - 20666, 20667, 20668, 20669, - } + + ports, err := p2p.GetFreePorts(4) + c.Assert(err, IsNil) + zlog.Info().Ints("ports", ports).Msg("Allocated ports for test") + s.ports = ports + s.bootstrapPeers, err = conversion.TestBootstrapAddrs(s.ports, testPubKeys) c.Assert(err, IsNil) s.preParams = getPreparams(c) - s.servers = make([]*TssServer, partyNum) + s.servers = make([]*Server, partyNum) s.tssConfig = common.TssConfig{ KeyGenTimeout: 90 * time.Second, KeySignTimeout: 90 * time.Second, @@ -119,7 +123,8 @@ func hash(payload []byte) []byte { func (s *FourNodeTestSuite) Test4NodesTss(c *C) { algos := []common.Algo{common.ECDSA, common.EdDSA} // 0.13.0 is oldJoinParty, 0.14.0 is the new leader-based joinParty - versions := []string{oldJoinPartyVersion, newJoinPartyVersion} + //versions := []string{oldJoinPartyVersion, newJoinPartyVersion} + versions := []string{newJoinPartyVersion} for _, algo := range algos { for _, jpv := range versions { c.Logf("testing with version %s for algo %s", jpv, algo) @@ -173,7 +178,13 @@ func (s *FourNodeTestSuite) doTestKeygenAndKeySign(c *C, version string, algo co } } - keysignReqWithErr := keysign.NewRequest(poolPubKey, []string{"helloworld", "helloworld2"}, 10, copyTestPubKeys(), version) + keysignReqWithErr := keysign.NewRequest( + poolPubKey, + []string{"helloworld", "helloworld2"}, + 10, + copyTestPubKeys(), + version, + ) resp, err := s.servers[0].KeySign(keysignReqWithErr) c.Assert(err, NotNil) c.Assert(resp.Signatures, HasLen, 0) @@ -356,7 +367,7 @@ func (s *FourNodeTestSuite) TearDownTest(c *C) { } } -func (s *FourNodeTestSuite) getTssServer(c *C, index int, conf common.TssConfig) *TssServer { +func (s *FourNodeTestSuite) getTssServer(c *C, index int, conf common.TssConfig) *Server { priKey, err := conversion.GetPriKey(testPriKeyArr[index]) c.Assert(err, IsNil) baseHome := path.Join(os.TempDir(), "4nodes_test", strconv.Itoa(index)) @@ -370,7 +381,17 @@ func (s *FourNodeTestSuite) getTssServer(c *C, index int, conf common.TssConfig) c.Assert(err, IsNil) whitelistedPeers = append(whitelistedPeers, peer) } - instance, err := NewTss(s.bootstrapPeers, s.ports[index], priKey, baseHome, conf, s.preParams[index], "", "password", whitelistedPeers) + instance, err := New( + s.bootstrapPeers, + s.ports[index], + priKey, + baseHome, + conf, + s.preParams[index], + "", + "password", + whitelistedPeers, + ) c.Assert(err, IsNil) return instance } diff --git a/tss/tss_4nodes_zeta_test.go b/tss/tss_4nodes_zeta_test.go index ec5de18..41c0f89 100644 --- a/tss/tss_4nodes_zeta_test.go +++ b/tss/tss_4nodes_zeta_test.go @@ -16,16 +16,18 @@ import ( btsskeygen "github.com/bnb-chain/tss-lib/ecdsa/keygen" "github.com/libp2p/go-libp2p/core/peer" maddr "github.com/multiformats/go-multiaddr" + zlog "github.com/rs/zerolog/log" + "github.com/zeta-chain/go-tss/p2p" . "gopkg.in/check.v1" - "gitlab.com/thorchain/tss/go-tss/common" - "gitlab.com/thorchain/tss/go-tss/conversion" - "gitlab.com/thorchain/tss/go-tss/keygen" - "gitlab.com/thorchain/tss/go-tss/keysign" + "github.com/zeta-chain/go-tss/common" + "github.com/zeta-chain/go-tss/conversion" + "github.com/zeta-chain/go-tss/keygen" + "github.com/zeta-chain/go-tss/keysign" ) type FourNodeScaleZetaSuite struct { - servers []*TssServer + servers []*Server ports []int preParams []*btsskeygen.LocalPreParams bootstrapPeers []maddr.Multiaddr @@ -39,18 +41,20 @@ var _ = Suite(&FourNodeScaleZetaSuite{}) // setup four nodes for test func (s *FourNodeScaleZetaSuite) SetUpSuite(c *C) { - var err error common.InitLog("info", true, "four_nodes_zeta_test") conversion.SetupBech32Prefix() s.tmpDir = path.Join(os.TempDir(), "4nodes_zeta_test") os.RemoveAll(s.tmpDir) - s.ports = []int{ - 21666, 21667, 21668, 21669, - } + + ports, err := p2p.GetFreePorts(4) + c.Assert(err, IsNil) + zlog.Info().Ints("ports", ports).Msg("Allocated ports for test") + s.ports = ports + s.bootstrapPeers, err = conversion.TestBootstrapAddrs(s.ports, testPubKeys) c.Assert(err, IsNil) s.preParams = getPreparams(c) - s.servers = make([]*TssServer, partyNum) + s.servers = make([]*Server, partyNum) s.tssConfig = common.TssConfig{ KeyGenTimeout: 90 * time.Second, KeySignTimeout: 90 * time.Second, @@ -221,7 +225,7 @@ func (s *FourNodeScaleZetaSuite) TearDownSuite(c *C) { os.RemoveAll(s.tmpDir) } -func (s *FourNodeScaleZetaSuite) getTssServer(c *C, index int, conf common.TssConfig) *TssServer { +func (s *FourNodeScaleZetaSuite) getTssServer(c *C, index int, conf common.TssConfig) *Server { priKey, err := conversion.GetPriKey(testPriKeyArr[index]) c.Assert(err, IsNil) baseHome := path.Join(s.tmpDir, strconv.Itoa(index)) @@ -235,7 +239,17 @@ func (s *FourNodeScaleZetaSuite) getTssServer(c *C, index int, conf common.TssCo c.Assert(err, IsNil) whitelistedPeers = append(whitelistedPeers, peer) } - instance, err := NewTss(s.bootstrapPeers, s.ports[index], priKey, baseHome, conf, s.preParams[index], "", "password", whitelistedPeers) + instance, err := New( + s.bootstrapPeers, + s.ports[index], + priKey, + baseHome, + conf, + s.preParams[index], + "", + "password", + whitelistedPeers, + ) c.Assert(err, IsNil) return instance }