From 75bf04cfb5433baf0c2cc937d0ce9e58927a58e8 Mon Sep 17 00:00:00 2001 From: Dreamer <745124335@qq.com> Date: Wed, 24 May 2023 16:13:12 +0800 Subject: [PATCH 1/5] bump up cosmos-sdk to v0.47 --- .github/workflows/sims.yaml | 46 +- Makefile | 23 +- buf.work.yaml | 3 +- contrib/devtools/Makefile | 108 +-- go.mod | 167 +++-- go.sum | 661 ++++-------------- .../client/testutil/grpc_query_test.go | 202 ++---- modules/coinswap/keeper/keeper_test.go | 10 +- .../coinswap/migrations/v1/migrate_test.go | 18 +- modules/coinswap/module.go | 24 - modules/coinswap/simulation/operations.go | 24 +- modules/coinswap/simulation/params.go | 25 - modules/coinswap/types/coinswap.pb.go | 4 +- modules/coinswap/types/genesis.pb.go | 4 +- modules/coinswap/types/query.pb.go | 6 +- modules/coinswap/types/tx.pb.go | 6 +- modules/farm/client/cli/cli_test.go | 133 ++-- .../farm/client/testutil/grpc_query_test.go | 63 +- modules/farm/client/testutil/test_helper.go | 69 +- modules/farm/module.go | 25 - modules/farm/simulation/operations.go | 28 +- modules/farm/types/farm.pb.go | 4 +- modules/farm/types/genesis.pb.go | 4 +- modules/farm/types/query.pb.go | 6 +- modules/farm/types/tx.pb.go | 6 +- modules/htlc/client/cli/cli_test.go | 258 +++---- .../htlc/client/testutil/grpc_query_test.go | 50 +- modules/htlc/client/testutil/test_helpers.go | 36 +- modules/htlc/keeper/querier.go | 93 --- modules/htlc/module.go | 24 - modules/htlc/simulation/operation.go | 12 +- modules/htlc/types/genesis.pb.go | 12 +- modules/htlc/types/htlc.pb.go | 18 +- modules/htlc/types/query.pb.go | 6 +- modules/htlc/types/tx.pb.go | 6 +- modules/mt/client/cli/cli_test.go | 208 ++---- modules/mt/client/testutil/grpc_query_test.go | 72 +- modules/mt/client/testutil/test_helpers.go | 125 +++- modules/mt/module.go | 24 - modules/mt/simulation/genesis_test.go | 5 +- modules/mt/simulation/operations.go | 28 +- modules/mt/types/genesis.pb.go | 4 +- modules/mt/types/mt.pb.go | 4 +- modules/mt/types/query.pb.go | 6 +- modules/mt/types/tx.pb.go | 6 +- modules/nft/client/cli/cli_test.go | 282 +++----- .../nft/client/testutil/grpc_query_test.go | 99 +-- modules/nft/client/testutil/test_helpers.go | 149 +++- modules/nft/migrations/v2/store_test.go | 4 +- modules/nft/module/module.go | 24 - modules/nft/simulation/operations.go | 28 +- modules/nft/types/genesis.pb.go | 4 +- modules/nft/types/nft.pb.go | 4 +- modules/nft/types/query.pb.go | 6 +- modules/nft/types/tx.pb.go | 6 +- modules/oracle/client/cli/cli_test.go | 194 ++--- .../oracle/client/testutil/grpc_query_test.go | 68 +- .../oracle/client/testutil/test-helpers.go | 69 +- modules/oracle/keeper/grpc_query.go | 18 + modules/oracle/keeper/querier.go | 107 --- modules/oracle/keeper/querier_test.go | 131 ---- modules/oracle/module.go | 24 - modules/oracle/simulation/operation.go | 16 +- modules/oracle/types/genesis.pb.go | 4 +- modules/oracle/types/oracle.pb.go | 12 +- modules/oracle/types/query.pb.go | 6 +- modules/oracle/types/tx.pb.go | 6 +- modules/random/client/cli/cli_test.go | 88 +-- .../random/client/testutil/grpc_query_test.go | 87 +-- .../random/client/testutil/test_helpers.go | 34 +- modules/random/keeper/grpc_query.go | 58 ++ modules/random/keeper/querier.go | 106 --- modules/random/keeper/querier_test.go | 76 -- modules/random/module.go | 24 - modules/random/simulation/operations.go | 6 +- modules/random/simulation/params.go | 15 - modules/random/types/genesis.pb.go | 4 +- modules/random/types/query.pb.go | 6 +- modules/random/types/random.pb.go | 4 +- modules/random/types/tx.pb.go | 6 +- modules/record/client/cli/cli_test.go | 39 +- .../record/client/testutil/grpc_query_test.go | 40 +- .../record/client/testutil/test_helpers.go | 26 +- modules/record/keeper/querier.go | 42 -- modules/record/module.go | 24 - modules/record/simulation/operations.go | 6 +- modules/record/types/genesis.pb.go | 4 +- modules/record/types/query.pb.go | 4 +- modules/record/types/record.pb.go | 4 +- modules/record/types/tx.pb.go | 6 +- modules/service/client/cli/cli_test.go | 264 +++---- .../client/testutil/grpc_query_test.go | 156 ++--- .../service/client/testutil/test_helpers.go | 204 ++++-- modules/service/client/utils/query.go | 8 +- modules/service/keeper/binding.go | 4 +- modules/service/keeper/fees.go | 4 +- modules/service/keeper/keeper_test.go | 4 +- modules/service/keeper/querier.go | 343 --------- modules/service/module.go | 24 - modules/service/simulation/operations.go | 58 +- modules/service/types/genesis.pb.go | 4 +- modules/service/types/query.pb.go | 6 +- modules/service/types/service.pb.go | 36 +- modules/service/types/tx.pb.go | 6 +- modules/token/client/cli/cli_test.go | 230 +++--- .../token/client/testutil/grpc_query_test.go | 60 +- modules/token/client/testutil/test_helpers.go | 106 ++- modules/token/module.go | 71 +- modules/token/simulation/operations.go | 229 ++++-- modules/token/simulation/params.go | 44 -- modules/token/types/v1/genesis.pb.go | 4 +- modules/token/types/v1/query.pb.go | 8 +- modules/token/types/v1/token.pb.go | 4 +- modules/token/types/v1/tx.pb.go | 6 +- modules/token/types/v1beta1/genesis.pb.go | 4 +- modules/token/types/v1beta1/query.pb.go | 8 +- modules/token/types/v1beta1/token.pb.go | 4 +- modules/token/types/v1beta1/tx.pb.go | 6 +- proto/buf.lock | 23 + proto/buf.yaml | 23 +- scripts/protocgen.sh | 11 +- simapp/app.go | 308 +++++--- simapp/encoding.go | 2 +- simapp/export.go | 5 +- simapp/network.go | 136 ++++ simapp/sim_bench_test.go | 40 +- simapp/sim_test.go | 107 +-- simapp/state.go | 10 +- simapp/test_helpers.go | 111 +-- .../base/query/v1beta1/pagination.proto | 49 -- .../proto/cosmos/base/v1beta1/coin.proto | 40 -- third_party/proto/cosmos_proto/cosmos.proto | 16 - third_party/proto/gogoproto/gogo.proto | 145 ---- .../proto/google/api/annotations.proto | 31 - third_party/proto/google/api/http.proto | 318 --------- third_party/proto/google/api/httpbody.proto | 78 --- third_party/proto/google/protobuf/any.proto | 161 ----- 137 files changed, 2980 insertions(+), 5175 deletions(-) delete mode 100644 modules/coinswap/simulation/params.go delete mode 100644 modules/htlc/keeper/querier.go delete mode 100644 modules/oracle/keeper/querier.go delete mode 100644 modules/oracle/keeper/querier_test.go delete mode 100644 modules/random/keeper/querier.go delete mode 100644 modules/random/keeper/querier_test.go delete mode 100644 modules/random/simulation/params.go delete mode 100644 modules/record/keeper/querier.go delete mode 100644 modules/service/keeper/querier.go delete mode 100644 modules/token/simulation/params.go create mode 100644 proto/buf.lock create mode 100644 simapp/network.go delete mode 100644 third_party/proto/cosmos/base/query/v1beta1/pagination.proto delete mode 100644 third_party/proto/cosmos/base/v1beta1/coin.proto delete mode 100644 third_party/proto/cosmos_proto/cosmos.proto delete mode 100644 third_party/proto/gogoproto/gogo.proto delete mode 100644 third_party/proto/google/api/annotations.proto delete mode 100644 third_party/proto/google/api/http.proto delete mode 100644 third_party/proto/google/api/httpbody.proto delete mode 100644 third_party/proto/google/protobuf/any.proto diff --git a/.github/workflows/sims.yaml b/.github/workflows/sims.yaml index 89708559..f1028a2b 100644 --- a/.github/workflows/sims.yaml +++ b/.github/workflows/sims.yaml @@ -11,27 +11,27 @@ jobs: - name: Setup go uses: actions/setup-go@v3 with: - go-version: '^1.18' # The Go version to download (if necessary) and use. + go-version: '^1.19' # The Go version to download (if necessary) and use. - run: make test-sim-nondeterminism-fast - test-sim-import-export: - name: Test AppImportExport - runs-on: ubuntu-latest - steps: - - name: Checkout source code - uses: actions/checkout@v3 - - name: Setup go - uses: actions/setup-go@v3 - with: - go-version: '^1.18' # The Go version to download (if necessary) and use. - - run: make test-sim-import-export - test-sim-after-import: - name: Test AppSimulationAfterImport - runs-on: ubuntu-latest - steps: - - name: Checkout source code - uses: actions/checkout@v3 - - name: Setup go - uses: actions/setup-go@v3 - with: - go-version: '^1.18' # The Go version to download (if necessary) and use. - - run: make test-sim-after-import \ No newline at end of file + # test-sim-import-export: + # name: Test AppImportExport + # runs-on: ubuntu-latest + # steps: + # - name: Checkout source code + # uses: actions/checkout@v3 + # - name: Setup go + # uses: actions/setup-go@v3 + # with: + # go-version: '^1.19' # The Go version to download (if necessary) and use. + # - run: make test-sim-import-export + # test-sim-after-import: + # name: Test AppSimulationAfterImport + # runs-on: ubuntu-latest + # steps: + # - name: Checkout source code + # uses: actions/checkout@v3 + # - name: Setup go + # uses: actions/setup-go@v3 + # with: + # go-version: '^1.19' # The Go version to download (if necessary) and use. + # - run: make test-sim-after-import \ No newline at end of file diff --git a/Makefile b/Makefile index 333639c7..61addf7f 100644 --- a/Makefile +++ b/Makefile @@ -43,32 +43,25 @@ distclean: clean ### Protobuf ### ############################################################################### -protoVer=v0.7 -protoImageName=tendermintdev/sdk-proto-gen:$(protoVer) -containerProtoGen=$(PROJECT_NAME)-proto-gen-$(protoVer) -containerProtoGenAny=$(PROJECT_NAME)-proto-gen-any-$(protoVer) -containerProtoGenSwagger=$(PROJECT_NAME)-proto-gen-swagger-$(protoVer) -containerProtoFmt=$(PROJECT_NAME)-proto-fmt-$(protoVer) +protoVer=0.11.2 +protoImageName=ghcr.io/cosmos/proto-builder:$(protoVer) +protoImage=$(DOCKER) run --rm -v $(CURDIR):/workspace --workdir /workspace $(protoImageName) -proto-all: proto-format proto-gen +proto-all: proto-format proto-lint proto-gen proto-gen: @echo "Generating Protobuf files" - @if docker ps -a --format '{{.Names}}' | grep -Eq "^${containerProtoGen}$$"; then docker start -a $(containerProtoGen); else docker run --name $(containerProtoGen) -v $(CURDIR):/workspace --workdir /workspace $(protoImageName) \ - sh ./scripts/protocgen.sh; fi + @$(protoImage) sh ./scripts/protocgen.sh proto-swagger-gen: @echo "Generating Protobuf Swagger" - @if docker ps -a --format '{{.Names}}' | grep -Eq "^${containerProtoGenSwagger}$$"; then docker start -a $(containerProtoGenSwagger); else docker run --name $(containerProtoGenSwagger) -v $(CURDIR):/workspace --workdir /workspace $(protoImageName) \ - sh ./scripts/protoc-swagger-gen.sh; fi + @$(protoImage) sh ./scripts/protoc-swagger-gen.sh proto-format: - @echo "Formatting Protobuf files" - @if docker ps -a --format '{{.Names}}' | grep -Eq "^${containerProtoFmt}$$"; then docker start -a $(containerProtoFmt); else docker run --name $(containerProtoFmt) -v $(CURDIR):/workspace --workdir /workspace tendermintdev/docker-build-proto \ - find ./ -not -path "./third_party/*" -name "*.proto" -exec clang-format -i {} \; ; fi + @$(protoImage) find ./ -name "*.proto" -exec clang-format -i {} \; proto-lint: - @$(DOCKER_BUF) lint --error-format=json + @$(protoImage) buf lint --error-format=json ######################################## ### Testing diff --git a/buf.work.yaml b/buf.work.yaml index dcc4fb9c..56378cde 100644 --- a/buf.work.yaml +++ b/buf.work.yaml @@ -5,5 +5,4 @@ # previous "buf.yaml" configuration. version: v1 directories: - - proto - - third_party/proto \ No newline at end of file + - proto \ No newline at end of file diff --git a/contrib/devtools/Makefile b/contrib/devtools/Makefile index 9f798ae6..f8a5de4e 100644 --- a/contrib/devtools/Makefile +++ b/contrib/devtools/Makefile @@ -15,13 +15,9 @@ ifeq ($(GO),) $(error could not find go. Is it in PATH? $(GO)) endif -GOPATH ?= $(shell $(GO) env GOPATH) -GITHUBDIR := $(GOPATH)$(FS)src$(FS)github.com -GOLANGCI_LINT_HASHSUM := 8d21cc95da8d3daf8321ac40091456fc26123c964d7c2281d339d431f2f4c840 - -### -# Functions -### +############################################################################### +### Functions ### +############################################################################### go_get = $(if $(findstring Windows_NT,$(OS)),\ IF NOT EXIST $(GITHUBDIR)$(FS)$(1)$(FS) ( mkdir $(GITHUBDIR)$(FS)$(1) ) else (cd .) &\ @@ -35,97 +31,39 @@ cd $(GITHUBDIR)$(FS)$(1)$(FS)$(2) && git fetch origin && git checkout -q $(3) mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) mkfile_dir := $(shell cd $(shell dirname $(mkfile_path)); pwd) -### -# tools -### + +############################################################################### +### Tools ### +############################################################################### PREFIX ?= /usr/local BIN ?= $(PREFIX)/bin UNAME_S ?= $(shell uname -s) UNAME_M ?= $(shell uname -m) -TOOLS_DESTDIR ?= $(GOPATH)/bin - -GOLANGCI_LINT = $(TOOLS_DESTDIR)/golangci-lint -STATIK = $(TOOLS_DESTDIR)/statik -RUNSIM = $(TOOLS_DESTDIR)/runsim +GOPATH ?= $(shell $(GO) env GOPATH) +GITHUBDIR := $(GOPATH)$(FS)src$(FS)github.com -all: tools +BUF_VERSION ?= 0.11.0 -tools: statik golangci-lint proto-tools +TOOLS_DESTDIR ?= $(GOPATH)/bin +STATIK = $(TOOLS_DESTDIR)/statik +RUNSIM = $(TOOLS_DESTDIR)/runsim -golangci-lint: $(GOLANGCI_LINT) -$(GOLANGCI_LINT): $(mkfile_dir)/install-golangci-lint.sh - @echo "Installing golangci-lint..." - @bash $(mkfile_dir)/install-golangci-lint.sh $(TOOLS_DESTDIR) $(GOLANGCI_LINT_HASHSUM) +tools: tools-stamp +tools-stamp: statik runsim + # Create dummy file to satisfy dependency and avoid + # rebuilding when this Makefile target is hit twice + # in a row. + touch $@ +# Install the runsim binary statik: $(STATIK) $(STATIK): @echo "Installing statik..." - @(cd /tmp && go get github.com/rakyll/statik@v0.1.6) - -PROTOC_VERSION ?= 3.13.0 -PROTOC_GRPC_GATEWAY_VERSION = 1.14.7 -ifeq ($(UNAME_S),Linux) - PROTOC_ZIP ?= protoc-3.13.0-linux-x86_64.zip - PROTOC_GRPC_GATEWAY_BIN ?= protoc-gen-grpc-gateway-v1.14.7-linux-x86_64 -endif -ifeq ($(UNAME_S),Darwin) - PROTOC_ZIP ?= protoc-3.13.0-osx-x86_64.zip - PROTOC_GRPC_GATEWAY_BIN ?= protoc-gen-grpc-gateway-v1.14.7-darwin-x86_64 -endif - -proto-tools: buf -ifeq (, $(shell which protoc)) - @echo "Installing protoc compiler..." - @(cd /tmp; \ - curl -OL "https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/${PROTOC_ZIP}"; \ - unzip -o ${PROTOC_ZIP} -d $(PREFIX) bin/protoc; \ - unzip -o ${PROTOC_ZIP} -d $(PREFIX) 'include/*'; \ - rm -f ${PROTOC_ZIP}) -else - @echo "protoc already installed; skipping..." -endif - -ifeq (, $(shell which protoc-gen-gocosmos)) - @echo "Installing protoc-gen-gocosmos..." - @go install github.com/regen-network/cosmos-proto/protoc-gen-gocosmos -else - @echo "protoc-gen-gocosmos already installed; skipping..." -endif - -ifeq (, $(shell which protoc-gen-grpc-gateway)) - @echo "Installing protoc-gen-grpc-gateway..." - @curl -o "${BIN}/protoc-gen-grpc-gateway" -L "https://github.com/grpc-ecosystem/grpc-gateway/releases/download/v${PROTOC_GRPC_GATEWAY_VERSION}/${PROTOC_GRPC_GATEWAY_BIN}" - @chmod +x "${BIN}/protoc-gen-grpc-gateway" -else - @echo "protoc-gen-grpc-gateway already installed; skipping..." -endif - -ifeq (, $(shell which protoc-gen-swagger)) - @echo "Installing protoc-gen-swagger..." - @go install github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger - @npm install -g swagger-combine -else - @echo "protoc-gen-grpc-gateway already installed; skipping..." -endif - -buf: buf-stamp - -buf-stamp: - @echo "Installing buf..." - @curl -sSL \ - "https://github.com/bufbuild/buf/releases/download/v${BUF_VERSION}/buf-${UNAME_S}-${UNAME_M}" \ - -o "${BIN}/buf" && \ - chmod +x "${BIN}/buf" - - touch $@ + @go install github.com/rakyll/statik@v0.1.6 -# Install the runsim binary with a temporary workaround of entering an outside -# directory as the "go get" command ignores the -mod option and will polute the -# go.{mod, sum} files. -# -# ref: https://github.com/golang/go/issues/30515 +# Install the runsim binary runsim: $(RUNSIM) $(RUNSIM): @echo "Installing runsim..." @@ -135,4 +73,4 @@ tools-clean: rm -f $(STATIK) $(GOLANGCI_LINT) $(RUNSIM) rm -f tools-stamp -.PHONY: tools-clean statik runsim +.PHONY: tools-clean statik runsim \ No newline at end of file diff --git a/go.mod b/go.mod index 579ac7f6..953eb542 100644 --- a/go.mod +++ b/go.mod @@ -1,137 +1,128 @@ -go 1.18 +go 1.19 module github.com/irisnet/irismod require ( - cosmossdk.io/math v1.0.0-beta.3 - github.com/cosmos/cosmos-sdk v0.46.9 - github.com/gogo/protobuf v1.3.3 + cosmossdk.io/api v0.2.6 + cosmossdk.io/math v1.0.0-beta.4 + cosmossdk.io/simapp v0.0.0-20221216140705-ee8890cf30e7 + github.com/cosmos/cosmos-proto v1.0.0-beta.1 + github.com/cosmos/cosmos-sdk v0.47.0-rc2 + github.com/cosmos/gogoproto v1.4.4 + github.com/gogo/protobuf v1.3.2 github.com/golang/protobuf v1.5.2 github.com/gorilla/mux v1.8.0 github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/rakyll/statik v0.1.7 - github.com/regen-network/cosmos-proto v0.3.1 github.com/spf13/cast v1.5.0 github.com/spf13/cobra v1.6.1 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.1 - github.com/tendermint/tendermint v0.34.26 + github.com/tendermint/tendermint v0.37.0-rc2 github.com/tendermint/tm-db v0.6.7 - github.com/tidwall/gjson v1.14.0 - google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a - google.golang.org/grpc v1.50.1 - google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8 + github.com/tidwall/gjson v1.14.4 + github.com/xeipuuv/gojsonschema v1.2.0 + google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6 + google.golang.org/grpc v1.52.3 + google.golang.org/protobuf v1.28.1 gopkg.in/yaml.v2 v2.4.0 ) require ( - cloud.google.com/go v0.102.1 // indirect - cloud.google.com/go/compute v1.7.0 // indirect - cloud.google.com/go/iam v0.4.0 // indirect - cloud.google.com/go/storage v1.22.1 // indirect + cloud.google.com/go v0.105.0 // indirect + cloud.google.com/go/compute v1.12.1 // indirect + cloud.google.com/go/compute/metadata v0.2.1 // indirect + cloud.google.com/go/iam v0.7.0 // indirect + cloud.google.com/go/storage v1.27.0 // indirect + cosmossdk.io/core v0.3.2 // indirect + cosmossdk.io/depinject v1.0.0-alpha.3 // indirect cosmossdk.io/errors v1.0.0-beta.7 // indirect + cosmossdk.io/tools/rosetta v0.2.0 // indirect + filippo.io/edwards25519 v1.0.0-rc.1 // 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 v0.0.0-20200405005733-88cbf1b4c40d // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/aws/aws-sdk-go v1.40.45 // indirect + github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect + github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/cenkalti/backoff/v4 v4.1.3 // indirect + github.com/cespare/xxhash v1.1.0 // indirect + github.com/cespare/xxhash/v2 v2.1.2 // indirect github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect github.com/cockroachdb/apd/v2 v2.0.2 // indirect github.com/confio/ics23/go v0.9.0 // indirect - github.com/cosmos/cosmos-proto v1.0.0-alpha7 // indirect - github.com/cosmos/gorocksdb v1.2.0 // indirect - github.com/creachadair/taskgroup v0.3.2 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect - github.com/go-kit/log v0.2.1 // indirect - github.com/go-logfmt/logfmt v0.5.1 // indirect - github.com/golang/glog v1.0.0 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/google/go-cmp v0.5.9 // indirect - github.com/google/uuid v1.3.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.1.0 // indirect - github.com/googleapis/gax-go/v2 v2.4.0 // indirect - github.com/googleapis/go-type-adapters v1.0.0 // indirect - github.com/gtank/merlin v0.1.1 // indirect - github.com/gtank/ristretto255 v0.1.2 // indirect - github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter v1.6.1 // indirect - github.com/hashicorp/go-safetemp v1.0.0 // indirect - github.com/hashicorp/go-version v1.6.0 // indirect - github.com/jmespath/go-jmespath v0.4.0 // indirect - github.com/manifoldco/promptui v0.9.0 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect - github.com/mitchellh/go-testing-interface v1.0.0 // indirect - github.com/onsi/ginkgo v1.16.1 // indirect - github.com/onsi/gomega v1.11.0 // indirect - github.com/pelletier/go-toml/v2 v2.0.5 // indirect - github.com/spf13/viper v1.13.0 // indirect - github.com/tidwall/btree v1.5.0 // indirect - github.com/ulikunitz/xz v0.5.8 // indirect - github.com/zondax/ledger-go v0.14.1 // indirect - go.opencensus.io v0.23.0 // indirect - golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect - golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2 // indirect - golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f // indirect - google.golang.org/api v0.93.0 // indirect - google.golang.org/appengine v1.6.7 // indirect - sigs.k8s.io/yaml v1.3.0 // indirect -) - -require ( - filippo.io/edwards25519 v1.0.0-rc.1 // indirect - github.com/99designs/keyring v1.2.1 // indirect - github.com/Workiva/go-datastructures v1.0.53 // indirect - github.com/beorn7/perks v1.0.1 // indirect - github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect - github.com/cespare/xxhash v1.1.0 // indirect - github.com/cespare/xxhash/v2 v2.1.2 // indirect - github.com/coinbase/rosetta-sdk-go v0.7.9 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/go-bip39 v1.0.0 // indirect - github.com/cosmos/iavl v0.19.5 // indirect - github.com/cosmos/ledger-cosmos-go v0.12.2 // indirect + github.com/cosmos/gogogateway v1.2.0 // indirect + github.com/cosmos/gorocksdb v1.2.0 // indirect + github.com/cosmos/iavl v0.19.5-rc.1 // indirect + github.com/cosmos/ledger-cosmos-go v0.12.1 // indirect + github.com/cosmos/rosetta-sdk-go v0.9.0 // indirect + github.com/creachadair/taskgroup v0.3.2 // indirect github.com/danieljoos/wincred v1.1.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect github.com/dgraph-io/badger/v2 v2.2007.4 // indirect - github.com/dgraph-io/ristretto v0.1.0 // indirect + github.com/dgraph-io/ristretto v0.1.1 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/dustin/go-humanize v1.0.0 // indirect github.com/dvsekhvalnov/jose2go v1.5.0 // indirect - github.com/felixge/httpsnoop v1.0.1 // indirect - github.com/fsnotify/fsnotify v1.5.4 // indirect - github.com/gin-gonic/gin v1.7.7 // indirect + github.com/felixge/httpsnoop v1.0.2 // indirect + github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/go-kit/kit v0.12.0 // indirect + github.com/go-kit/log v0.2.1 // indirect + github.com/go-logfmt/logfmt v0.5.1 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect - github.com/gogo/gateway v1.1.0 // indirect + github.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869 // indirect + github.com/golang/glog v1.0.0 // 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.0.1 // indirect + github.com/google/btree v1.1.2 // indirect + github.com/google/go-cmp v0.5.9 // indirect github.com/google/orderedcode v0.0.1 // indirect + github.com/google/uuid v1.3.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.2.0 // indirect + github.com/googleapis/gax-go/v2 v2.6.0 // indirect github.com/gorilla/handlers v1.5.1 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.3.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/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-getter v1.6.2 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect + github.com/hashicorp/go-safetemp v1.0.0 // indirect + github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 // indirect + github.com/huandu/skiplist v1.2.0 // indirect github.com/improbable-eng/grpc-web v0.15.0 // indirect github.com/inconshreveable/mousetrap v1.0.1 // indirect + github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect - github.com/klauspost/compress v1.15.11 // indirect - github.com/lib/pq v1.10.6 // indirect + github.com/klauspost/compress v1.15.12 // indirect + github.com/lib/pq v1.10.7 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/magiconair/properties v1.8.6 // indirect + github.com/manifoldco/promptui v0.9.0 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.16 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect + github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect github.com/minio/highwayhash v1.0.2 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/go-testing-interface v1.0.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect github.com/pelletier/go-toml v1.9.5 // indirect + github.com/pelletier/go-toml/v2 v2.0.5 // indirect github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect @@ -143,29 +134,35 @@ require ( github.com/rs/cors v1.8.2 // indirect github.com/rs/zerolog v1.28.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect - github.com/spf13/afero v1.8.2 // indirect + github.com/spf13/afero v1.9.2 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/viper v1.14.0 // indirect github.com/subosito/gotenv v1.4.1 // indirect github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect github.com/tendermint/go-amino v0.16.0 // indirect + github.com/tidwall/btree v1.5.2 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.0 // indirect + github.com/ulikunitz/xz v0.5.8 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect - github.com/xeipuuv/gojsonschema v1.2.0 github.com/zondax/hid v0.9.1 // indirect + github.com/zondax/ledger-go v0.14.0 // indirect go.etcd.io/bbolt v1.3.6 // indirect - golang.org/x/crypto v0.5.0 // indirect - golang.org/x/net v0.5.0 // indirect - golang.org/x/sys v0.4.0 // indirect - golang.org/x/term v0.4.0 // indirect - golang.org/x/text v0.6.0 // indirect + go.opencensus.io v0.23.0 // indirect + golang.org/x/crypto v0.4.0 // indirect + golang.org/x/exp v0.0.0-20221019170559-20944726eadf // indirect + golang.org/x/net v0.4.0 // indirect + golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 // indirect + golang.org/x/sys v0.3.0 // indirect + golang.org/x/term v0.3.0 // indirect + golang.org/x/text v0.5.0 // indirect + golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect + google.golang.org/api v0.102.0 // indirect + google.golang.org/appengine v1.6.7 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect nhooyr.io/websocket v1.8.6 // indirect + pgregory.net/rapid v0.5.3 // indirect + sigs.k8s.io/yaml v1.3.0 // indirect ) - -replace github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 - -// use informal system fork of tendermint -replace github.com/tendermint/tendermint => github.com/informalsystems/tendermint v0.34.26 diff --git a/go.sum b/go.sum index e313db43..69d8f929 100644 --- a/go.sum +++ b/go.sum @@ -1,14 +1,12 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg= 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.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= 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= @@ -19,40 +17,23 @@ cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHOb 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 v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= -cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= -cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= -cloud.google.com/go v0.102.1 h1:vpK6iQWv/2uUeFJth4/cBHsQAGjn1iIE6AAlxipRaA0= -cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= +cloud.google.com/go v0.105.0 h1:DNtEKRBAAzeS4KyIory52wWHuClNaXJ5x1F7xa4q+5Y= +cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= 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/bigtable v1.2.0/go.mod h1:JcVAOl45lrTmQfLj7T6TxyMzIN/3FGGcFm+2xVAli2o= -cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= -cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= -cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= -cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= -cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= -cloud.google.com/go/compute v1.7.0 h1:v/k9Eueb8aAJ0vZuxKMrgm6kPhCLZU9HxFU+AFDs9Uk= -cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= +cloud.google.com/go/compute v1.12.1 h1:gKVJMEyqV5c/UnpzjjQbo3Rjvvqpr9B1DFSbJC4OXr0= +cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute/metadata v0.2.1 h1:efOwf5ymceDhK6PKMnnrTHP4pppY5L22mle96M1yP48= +cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= 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/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= -cloud.google.com/go/iam v0.4.0 h1:YBYU00SCDzZJdHqVc4I5d6lsklcYIjQZa1YmEz4jlSE= -cloud.google.com/go/iam v0.4.0/go.mod h1:cbaZxyScUhxl7ZAkNWiALgihfP75wS/fUsVNaa1r3vA= +cloud.google.com/go/iam v0.7.0 h1:k4MuwOsS7zGJJ+QfZ5vBK8SgHBAvYN/23BWsiihJ1vs= +cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= +cloud.google.com/go/longrunning v0.3.0 h1:NjljC+FYPV3uh5/OwWT6pVU+doBqMg2x/rZlE+CamDs= 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= @@ -63,60 +44,53 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl 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= -cloud.google.com/go/storage v1.22.1 h1:F6IlQJZrZM++apn9V5/VfS3gbTUYg98PS3EMQAzqtfg= -cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= -collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= +cloud.google.com/go/storage v1.27.0 h1:YOO045NZI9RKfCj1c5A/ZtuuENUc8OAW+gHdGnDgyMQ= +cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= +cosmossdk.io/api v0.2.6 h1:AoNwaLLapcLsphhMK6+o0kZl+D6MMUaHVqSdwinASGU= +cosmossdk.io/api v0.2.6/go.mod h1:u/d+GAxil0nWpl1XnQL8nkziQDIWuBDhv8VnDm/s6dI= +cosmossdk.io/core v0.3.2 h1:KlQIufpJHJvOs7YLGTZsZcCo1WlkencDXepsr8STKZQ= +cosmossdk.io/core v0.3.2/go.mod h1:CO7vbe+evrBvHc0setFHL/u7nlY7HJGzdRSBkT/sirc= +cosmossdk.io/depinject v1.0.0-alpha.3 h1:6evFIgj//Y3w09bqOUOzEpFj5tsxBqdc5CfkO7z+zfw= +cosmossdk.io/depinject v1.0.0-alpha.3/go.mod h1:eRbcdQ7MRpIPEM5YUJh8k97nxHpYbc3sMUnEtt8HPWU= cosmossdk.io/errors v1.0.0-beta.7 h1:gypHW76pTQGVnHKo6QBkb4yFOJjC+sUGRc5Al3Odj1w= cosmossdk.io/errors v1.0.0-beta.7/go.mod h1:mz6FQMJRku4bY7aqS/Gwfcmr/ue91roMEKAmDUDpBfE= -cosmossdk.io/math v1.0.0-beta.3 h1:TbZxSopz2LqjJ7aXYfn7nJSb8vNaBklW6BLpcei1qwM= -cosmossdk.io/math v1.0.0-beta.3/go.mod h1:3LYasri3Zna4XpbrTNdKsWmD5fHHkaNAod/mNT9XdE4= +cosmossdk.io/math v1.0.0-beta.4 h1:JtKedVLGzA0vv84xjYmZ75RKG35Kf2WwcFu8IjRkIIw= +cosmossdk.io/math v1.0.0-beta.4/go.mod h1:An0MllWJY6PxibUpnwGk8jOm+a/qIxlKmL5Zyp9NnaM= +cosmossdk.io/simapp v0.0.0-20221216140705-ee8890cf30e7 h1:8uwZLyQ6NMZNT0janUI86Q4vF1sIIquSUsijmOkgmp8= +cosmossdk.io/simapp v0.0.0-20221216140705-ee8890cf30e7/go.mod h1:zvJ3aFHDzqQ6NvkCcCHyolr5Wh2BJ9Rg4qVcN1T6Re0= +cosmossdk.io/tools/rosetta v0.2.0 h1:Ae499UiZ9yPNCXvjOBO/R9I1pksCJfxoqWauEZgA/gs= +cosmossdk.io/tools/rosetta v0.2.0/go.mod h1:3mn8QuE2wLUdTi77/gbDXdFqXZdBdiBJhgAWUTSXPv8= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.0.0-rc.1 h1:m0VOOB23frXZvAOK44usCgLWvtsxIoMCTBGJZlpmGfU= filippo.io/edwards25519 v1.0.0-rc.1/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= -git.sr.ht/~sircmpwn/getopt v0.0.0-20191230200459-23622cc906b3/go.mod h1:wMEGFFFNuPos7vHmWXfszqImLppbc0wEhh6JBfJIUgw= -git.sr.ht/~sircmpwn/go-bare v0.0.0-20210406120253-ab86bc2846d9/go.mod h1:BVJwbDfVjCjoFiKrhkei6NdGcZYpkDkdyCdg1ukytRA= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= github.com/99designs/keyring v1.2.1 h1:tYLp1ULvO7i3fI5vE21ReQuj99QFSs7lGm0xWyJo87o= github.com/99designs/keyring v1.2.1/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= -github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= -github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0/go.mod h1:tPaiy8S5bQ+S5sOiDlINkp7+Ef339+Nz5L5XO+cnOHo= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= 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 h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= -github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= +github.com/Microsoft/go-winio v0.5.2 h1:a9IhgEQBCUEk6QCdml9CiJGhAws+YwffDHEMp1VMrpA= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= 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= -github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= -github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/Workiva/go-datastructures v1.0.53 h1:J6Y/52yX10Xc5JjXmGtWoSSxs3mZnGSaq37xZZh7Yig= -github.com/Workiva/go-datastructures v1.0.53/go.mod h1:1yZL+zfsztete+ePzZz/Zb1/t5BnDuE2Ya2MMGhzP6A= -github.com/Zilliqa/gozilliqa-sdk v1.2.1-0.20201201074141-dd0ecada1be6/go.mod h1:eSYp2T6f0apnuW8TzhV3f6Aff2SE8Dwio++U4ha4yEM= github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= -github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= -github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/alecthomas/participle/v2 v2.0.0-alpha7 h1:cK4vjj0VSgb3lN1nuKA5F7dw+1s1pWBe5bx7nNCnN+c= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= -github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= @@ -132,15 +106,6 @@ github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN github.com/aws/aws-sdk-go v1.40.45 h1:QN1nsY27ssD/JmW4s83qmSb+uL6DG4GmCDzjmJB4xUI= github.com/aws/aws-sdk-go v1.40.45/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/aws/aws-sdk-go-v2 v1.2.0/go.mod h1:zEQs02YRBw1DjK0PoJv3ygDYOFTre1ejlJWl8FwAuQo= -github.com/aws/aws-sdk-go-v2/config v1.1.1/go.mod h1:0XsVy9lBI/BCXm+2Tuvt39YmdHwS5unDQmxZOYe8F5Y= -github.com/aws/aws-sdk-go-v2/credentials v1.1.1/go.mod h1:mM2iIjwl7LULWtS6JCACyInboHirisUUdkBPoTHMOUo= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.2/go.mod h1:3hGg3PpiEjHnrkrlasTfxFqUsZ2GCk/fMUn4CbKgSkM= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.2/go.mod h1:45MfaXZ0cNbeuT0KQ1XJylq8A6+OpVV2E5kvY/Kq+u8= -github.com/aws/aws-sdk-go-v2/service/route53 v1.1.1/go.mod h1:rLiOUrPLW/Er5kRcQ7NkwbjlijluLsrIbu/iyl35RO4= -github.com/aws/aws-sdk-go-v2/service/sso v1.1.1/go.mod h1:SuZJxklHxLAXgLTc1iFXbEWkXs7QRTQpCLGaKIprQW0= -github.com/aws/aws-sdk-go-v2/service/sts v1.1.1/go.mod h1:Wi0EBZwiz/K44YliU0EKxqTCJGUfYTWXrrBwkq736bM= -github.com/aws/smithy-go v1.1.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -150,33 +115,10 @@ github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 h1:41iFGWnSlI2gVpmOtVTJZNodLdLQLn/KsJqFvXwnd/s= github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= -github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= -github.com/btcsuite/btcd v0.0.0-20190315201642-aa6e0f35703c/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8= -github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= -github.com/btcsuite/btcd v0.21.0-beta.0.20201114000516-e9c7a5ac6401/go.mod h1:Sv4JPQ3/M+teHz9Bo5jBpkNcP0x6r7rdihlNL/7tTAs= -github.com/btcsuite/btcd v0.22.1/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y= -github.com/btcsuite/btcd/btcec/v2 v2.1.2/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/btcutil v1.1.2 h1:XLMbX8JQEiwMcYft2EGi8zPUkoa0abKIU6/BJSRsjzQ= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= -github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= -github.com/btcsuite/btcutil v0.0.0-20190207003914-4c204d697803/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= -github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o= -github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= -github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= -github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= -github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= -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/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= -github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= 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= @@ -184,7 +126,6 @@ github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInq 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/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= 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= @@ -201,29 +142,21 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= 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/cloudflare/cloudflare-go v0.14.0/go.mod h1:EnwdgGMaFOruiPZRFSgn+TsQ3hQ7C/YWzIGLeu5c304= 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-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= 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/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= +github.com/cockroachdb/apd/v3 v3.1.0 h1:MK3Ow7LH0W8zkd5GMKA1PvS9qG3bWFI95WaVNfyZJ/w= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/coinbase/kryptology v1.8.0/go.mod h1:RYXOAPdzOGUe3qlSFkMGn58i3xUA8hmxYHksuq+8ciI= -github.com/coinbase/rosetta-sdk-go v0.7.9 h1:lqllBjMnazTjIqYrOGv8h8jxjg9+hJazIGZr9ZvoCcA= -github.com/coinbase/rosetta-sdk-go v0.7.9/go.mod h1:0/knutI7XGVqXmmH4OQD8OckFrbQ8yMsUZTG7FXCR2M= 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/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ= -github.com/consensys/bavard v0.1.8-0.20210915155054-088da2f7f54a/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= -github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q= -github.com/consensys/gnark-crypto v0.5.3/go.mod h1:hOdPlWQV1gDLp7faZVeg8Y0iEPFaOUnCc4XeCCk96p0= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= @@ -233,64 +166,55 @@ github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1 github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/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-alpha7 h1:yqYUOHF2jopwZh4dVQp3xgqwftE5/2hkrwIV6vkUbO0= -github.com/cosmos/cosmos-proto v1.0.0-alpha7/go.mod h1:dosO4pSAbJF8zWCzCoTWP7nNsjcvSUBQmniFxDg5daw= -github.com/cosmos/cosmos-sdk v0.46.9 h1:s19zY5vX0kjV2eJOzR0Y3P6EqgtgpwMdPmXM05TQsXM= -github.com/cosmos/cosmos-sdk v0.46.9/go.mod h1:ZFL/yjcIZq67H8FiWoLCnnaChkXnbRRYEEhGrFq8fzE= +github.com/cosmos/cosmos-proto v1.0.0-beta.1 h1:iDL5qh++NoXxG8hSy93FdYJut4XfgbShIocllGaXx/0= +github.com/cosmos/cosmos-proto v1.0.0-beta.1/go.mod h1:8k2GNZghi5sDRFw/scPL8gMSowT1vDA+5ouxL8GjaUE= +github.com/cosmos/cosmos-sdk v0.47.0-rc2 h1:BwQC41zQXG/pN9DdLaWzYJrC911St5lYOQIoW4Hf5wQ= +github.com/cosmos/cosmos-sdk v0.47.0-rc2/go.mod h1:e0ZEpY/nhVoXAkijdHPdFOJNOXCddfvyFrFLp2QmCCY= 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/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.4.4 h1:nVAsgLlAf5jeN0fV7hRlkZvf768zU+dy4pG+hxc2P34= +github.com/cosmos/gogoproto v1.4.4/go.mod h1:/yl6/nLwsZcZ2JY3OrqjRqvqCG9InUMcXRfRjQiF9DU= github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4Y= github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= -github.com/cosmos/iavl v0.19.5 h1:rGA3hOrgNxgRM5wYcSCxgQBap7fW82WZgY78V9po/iY= -github.com/cosmos/iavl v0.19.5/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw= -github.com/cosmos/ledger-cosmos-go v0.12.2 h1:/XYaBlE2BJxtvpkHiBm97gFGSGmYGKunKyF3nNqAXZA= -github.com/cosmos/ledger-cosmos-go v0.12.2/go.mod h1:ZcqYgnfNJ6lAXe4HPtWgarNEY+B74i+2/8MhZw4ziiI= +github.com/cosmos/iavl v0.19.5-rc.1 h1:4PjF2PdScyPbN1WbXpiQU21YtyonnrMU31xN74g8Rkg= +github.com/cosmos/iavl v0.19.5-rc.1/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw= +github.com/cosmos/ledger-cosmos-go v0.12.1 h1:sMBxza5p/rNK/06nBSNmsI/WDqI0pVJFVNihy1Y984w= +github.com/cosmos/ledger-cosmos-go v0.12.1/go.mod h1:dhO6kj+Y+AHIOgAe4L9HL/6NDdyyth4q238I9yFpD2g= +github.com/cosmos/rosetta-sdk-go v0.9.0 h1:3mj2naR+GUhUXabtb96WWSsPFZDCYkdtp6r0jffgugg= +github.com/cosmos/rosetta-sdk-go v0.9.0/go.mod h1:2v41yXL25xxAXrczVSnbDHcQH9CgildruDlGQGKW/JU= 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.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM= github.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk= 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/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= +github.com/cucumber/common/gherkin/go/v22 v22.0.0 h1:4K8NqptbvdOrjL9DEea6HFjSpbdT9+Q5kgLpmmsHYl0= +github.com/cucumber/common/messages/go/v17 v17.1.1 h1:RNqopvIFyLWnKv0LfATh34SWBhXeoFTJnSrgm9cT/Ts= 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/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= -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/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo= 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/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= -github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= -github.com/deepmap/oapi-codegen v1.6.0/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE9iAUlWl9Al3M= -github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw= +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/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.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= -github.com/dgraph-io/ristretto v0.0.3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= -github.com/dgraph-io/ristretto v0.1.0 h1:Jv3CGQHp9OjuMBSne1485aDpUkTKEcUqF+jm/LuerPI= -github.com/dgraph-io/ristretto v0.1.0/go.mod h1:fux0lOrBhrVCJd3lcTHsIJhq1T2rokOu6v9Vcb3Q9ug= +github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= +github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= -github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= -github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= -github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= -github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= -github.com/dop251/goja v0.0.0-20211011172007-d99e4b8cbf48/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= -github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= +github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= @@ -299,7 +223,6 @@ github.com/dvsekhvalnov/jose2go v1.5.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= 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= @@ -307,41 +230,29 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m 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.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= 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/ethereum/go-ethereum v1.10.17/go.mod h1:Lt5WzjM07XlXc95YzrhosmR4J9Ahd6X2wyEV2SvGhk0= 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/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= -github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o= +github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= 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/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 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= -github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= -github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= -github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= -github.com/getkin/kin-openapi v0.61.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= +github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= 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 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= -github.com/gin-gonic/gin v1.7.7 h1:3DoBmSbJbZAWqXJC3SLjAPfutPJJRN1U5pALB7EeTTs= -github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U= -github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= -github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= -github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= 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= @@ -359,22 +270,15 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V 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-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/validator/v10 v10.2.0 h1:KgJ0snyC2R9VXYN2rneOtQcw5aHQB1Vv0sFl1UcHBOY= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= -github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE= -github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= -github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.4.1/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= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= @@ -384,13 +288,16 @@ github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/E 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.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= -github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= +github.com/gofrs/uuid v4.2.0+incompatible h1:yyYWMnhkhrKwwr8gAOcOCYxOOscHgDS9yZgBrnJfGa0= github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= -github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= -github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= +github.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869 h1:kRpU4zq+Pzh4feET49aEWPOzwQy3U2SsbZEQ7QEcif0= +github.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= @@ -407,7 +314,6 @@ github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt 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.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= 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= @@ -426,19 +332,16 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/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/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= 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.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= -github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +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/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= @@ -451,20 +354,16 @@ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.4/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.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/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.1.1-0.20200604201612-c04b05f3adfa h1:Q75Upo5UN4JbPFURXZ8nLKYUvF85dyFRop/vQ0Rv+64= -github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= 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/martian/v3 v3.2.1 h1:d8MncMlErDFTwQGBK1xhv026j9kqhvw1Qv9IbWT1VLQ= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= 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= @@ -477,31 +376,17 @@ github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hf 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-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/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.1/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.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.1.0 h1:zO8WHNx/MYiAKJ3d5spxZXZE6KHmIQGQcAzwUzV7qQw= -github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.2.0 h1:y8Yozv7SZtlU//QXbezB6QkpuE6jMD2/gfzk4AftXjs= +github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= 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/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= -github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= -github.com/googleapis/gax-go/v2 v2.4.0 h1:dS9eYAjhrE2RjmzYw2XAPvcXfmcQLtFEQWn0CR82awk= -github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= -github.com/googleapis/go-type-adapters v1.0.0 h1:9XdMn+d/G57qq1s8dNc5IesGCXHf6V2HZ2JwRxfA2tA= -github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= +github.com/googleapis/gax-go/v2 v2.6.0 h1:SXk3ABtQYDT/OH8jAyvEOQ58mgawq5C4o/4/89qN2ZU= +github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= 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= @@ -513,16 +398,13 @@ github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/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/graph-gophers/graphql-go v1.3.0/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= 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.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-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.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= @@ -536,13 +418,12 @@ github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIv github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= 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-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.6.1 h1:NASsgP4q6tL94WH6nJxKWj8As2H/2kop/bB1d8JMyRY= -github.com/hashicorp/go-getter v1.6.1/go.mod h1:IZCrswsZPeWv9IkVnLElzRU/gz/QPi6pZHn4tv6vbwA= +github.com/hashicorp/go-getter v1.6.2 h1:7jX7xcB+uVCliddZgeKyNxv0xoT7qL5KDtH7rU4IqIk= +github.com/hashicorp/go-getter v1.6.2/go.mod h1:IZCrswsZPeWv9IkVnLElzRU/gz/QPi6pZHn4tv6vbwA= 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= @@ -574,12 +455,12 @@ github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2p github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 h1:aSVUgRRRtOrZOC1fYmY9gV0e9z/Iu+xNVSASWjsuyGU= github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3/go.mod h1:5PC6ZNPde8bBqU/ewGZig35+UIZtw9Ytxez8/q5ZyFE= -github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= -github.com/holiman/uint256 v1.2.0/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c= +github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U= +github.com/huandu/skiplist v1.2.0 h1:gox56QD77HzSC0w+Ws3MH3iie755GBJU1OER3h5VsYw= +github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/huin/goupnp v1.0.3-0.20220313090229-ca81a64b4204/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/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= @@ -587,24 +468,7 @@ github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPt 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/influxdata/flux v0.65.1/go.mod h1:J754/zds0vvpfwuq7Gc2wRdVwEodfpCFM7mYlOw2LqY= -github.com/influxdata/influxdb v1.8.3/go.mod h1:JugdFhsvvI8gadxOI6noqNeeBHvWNTbfYGtiAn+2jhI= -github.com/influxdata/influxdb-client-go/v2 v2.4.0/go.mod h1:vLNHdxTJkIf2mSLvGrpj8TCcISApPoXkaxP8g9uRlW8= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/influxdata/influxql v1.1.1-0.20200828144457-65d3ef77d385/go.mod h1:gHp9y86a/pxhjJ+zMjNXiQAA197Xk9wLxaz+fGG+kWk= -github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e/go.mod h1:4kt73NQhadE3daL3WhR5EJ/J2ocX0PZzwxQ0gXJ7oFE= -github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= -github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= -github.com/influxdata/promql/v2 v2.12.0/go.mod h1:fxOPu+DY0bqCTCECchSRtWfc+0X19ybifQhZoQNF5D8= -github.com/influxdata/roaring v0.4.13-0.20180809181101-fc520f41fab6/go.mod h1:bSgUQ7q5ZLSO+bKBGqJiCBGAl+9DxyW63zLTujjUlOE= -github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0= -github.com/influxdata/usage-client v0.0.0-20160829180054-6d3895376368/go.mod h1:Wbbw6tYNvwa5dlB6304Sd+82Z3f7PmVZHVKU637d4po= -github.com/informalsystems/tendermint v0.34.26 h1:89XvVexAy62geGWxmDmdmmJvfindx+Su2oTuwfSWMeU= -github.com/informalsystems/tendermint v0.34.26/go.mod h1:q3uAZ/t5+MblQhFuHSd4flqaLDx7iUtWpwWbwvHAFhs= -github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= -github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU= -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.12.1-0.20220721211354-060cc04fc18b h1:izTof8BKh/nE1wrKOrloNA5q4odOarjf+Xpe+4qow98= github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= @@ -616,7 +480,6 @@ github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= @@ -627,82 +490,54 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr 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/jsternberg/zap-logfmt v1.0.0/go.mod h1:uvPs/4X51zdkcm5jXl5SYoN+4RK21K8mysFmDaM/h+o= 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= -github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= -github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0= -github.com/karalabe/usb v0.0.2/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= 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.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.2/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/klauspost/compress v1.15.11 h1:Lcadnb3RKGin4FYM/orgq0qde+nc15E5Cbqg4B9Sx9c= -github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= -github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= +github.com/klauspost/compress v1.15.12 h1:YClS/PImqYbn+UILDnqxQCZ3RehC9N318SU3kElDUEM= +github.com/klauspost/compress v1.15.12/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= 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= github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= 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/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= -github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= -github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs= -github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= +github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= 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= 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/lucasjones/reggen v0.0.0-20180717132126-cdb49ff09d77/go.mod h1:5ELEyG+X8f+meRWHuqUOewBOhvHkl7M76pdGEansxW4= 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.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= -github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -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= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= @@ -722,11 +557,8 @@ github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS4 github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -734,16 +566,12 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN 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/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= -github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/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/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= -github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= 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= @@ -751,36 +579,28 @@ github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzE github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/neilotoole/errgroup v0.1.6/go.mod h1:Q2nLGf+594h0CLBs/Mbg6qOr7GtqDK7C2S41udRnToE= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= 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/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/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/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.16.1 h1:foqVmeWDD6yYpK+Yz3fHyNIxFYNxswxqNFjSKe+vI54= -github.com/onsi/ginkgo v1.16.1/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E= -github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.11.0 h1:+CqWgvj0OZycCaqclBD1pxKHAU+tOkHmQIWvDHq2aug= -github.com/onsi/gomega v1.11.0/go.mod h1:azGKhqFUon9Vuj0YmTfLSmx0FUwqXYSTl5re8lQLTUg= +github.com/onsi/gomega v1.20.0 h1:8W0cWlwFkflGPLltQvLRB7ZVD5HuP6ng320w2IS245Q= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= -github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= +github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799 h1:rc3tiVYb5z54aKaDfakKn0dDjIyPpTtszkjuMzyt7ec= github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.0.3-0.20180606204148-bd9c31933947/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= @@ -791,7 +611,6 @@ github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIw github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/paulbellamy/ratecounter v0.2.0/go.mod h1:Hfx1hDpSGoqxkVVpBi/IlYD7kChlfo5C6hzIHwPqfFE= 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= @@ -799,12 +618,8 @@ github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCko github.com/pelletier/go-toml/v2 v2.0.5 h1:ipoSadvV8oGUjnUbMub59IDPPwfxF694nG/jwbMiyQg= github.com/pelletier/go-toml/v2 v2.0.5/go.mod h1:OMHamSCAODeSsVrwwvcJOaoN0LIUIaFVNZzmWyNfXas= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= -github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 h1:q2e307iGHPdTGp0hoxKjt1H5pDo6utceo3dQVK3I5XQ= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= -github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= 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/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -813,7 +628,6 @@ 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/pkg/term v0.0.0-20180730021639-bffc007b7fd5/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ= 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/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= @@ -835,10 +649,8 @@ github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6T 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/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.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= 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= @@ -857,22 +669,16 @@ github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1 github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/regen-network/cosmos-proto v0.3.1 h1:rV7iM4SSFAagvy8RiyhiACbWEGotmqzywPxOvwMdxcg= -github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNwWejXC7QqCOnH3O0+YM= -github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= -github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= -github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc= -github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= +github.com/regen-network/gocuke v0.6.2 h1:pHviZ0kKAq2U2hN2q3smKNxct6hS0mGByFMHGnWA97M= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= 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.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= +github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg= 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.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= @@ -887,11 +693,6 @@ github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0 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/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= -github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= -github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= 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= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= @@ -906,8 +707,8 @@ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasO 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.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo= -github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= +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/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= @@ -923,9 +724,8 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.13.0 h1:BWSJ/M+f+3nmdz9bxB+bWX28kkALN2ok11D0rSo8EJU= -github.com/spf13/viper v1.13.0/go.mod h1:Icm2xNL3/8uyh/wFuB1jI7TiTNKp8632Nwegu+zgdYw= -github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= +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/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= @@ -934,7 +734,6 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -951,27 +750,20 @@ github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70 github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= +github.com/tendermint/tendermint v0.37.0-rc2 h1:2n1em+jfbhSv6QnBj8F6KHCpbIzZCB8KgcjidJUQNlY= +github.com/tendermint/tendermint v0.37.0-rc2/go.mod h1:uYQO9DRNPeZROa9X3hJOZpYcVREDC2/HST+EiU5g2+A= github.com/tendermint/tm-db v0.6.7 h1:fE00Cbl0jayAoqlExN6oyQJ7fR/ZtoVOmvPJ//+shu8= github.com/tendermint/tm-db v0.6.7/go.mod h1:byQDzFkZV1syXr/ReXS808NxA2xvyuuVgXOJ/088L6I= -github.com/tidwall/btree v1.5.0 h1:iV0yVY/frd7r6qGBXfEYs7DH0gTDgrKTrDjS7xt/IyQ= -github.com/tidwall/btree v1.5.0/go.mod h1:LGm8L/DZjPLmeWGjv5kFrY8dL4uVhMmzmmLYmsObdKE= -github.com/tidwall/gjson v1.12.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.14.0 h1:6aeJ0bzojgWLa82gDQHcx3S0Lr/O51I9bJ5nv6JFx5w= -github.com/tidwall/gjson v1.14.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/btree v1.5.2 h1:5eA83Gfki799V3d3bJo9sWk+yL2LRoTEah3O/SA6/8w= +github.com/tidwall/btree v1.5.2/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= +github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= +github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/tidwall/sjson v1.2.4/go.mod h1:098SZ494YoMWPmMO6ct4dcFnqxwj9r/gF0Etp19pSNM= -github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= -github.com/tinylib/msgp v1.1.5/go.mod h1:eQsjooMTnV42mHu917E26IogZ2930nFyBQdofk10Udg= -github.com/tklauser/go-sysconf v0.3.5/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI= -github.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31/go.mod h1:onvgF043R+lC5RZ8IT9rBXDaEDnpnw/Cl+HFiw+v/7Q= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= -github.com/tyler-smith/go-bip39 v1.0.2/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= @@ -981,13 +773,6 @@ github.com/ulikunitz/xz v0.5.8 h1:ERv8V6GKqVi23rgu5cj9pVfVzJbOqAY2Ntl88O6c2nQ= github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= 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/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= -github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= -github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= -github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= @@ -995,9 +780,7 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1: github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/ybbus/jsonrpc v2.1.2+incompatible/go.mod h1:XJrh1eMSzdIYFbM08flv0wp5G35eRniyeGut1z+LSiE= 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= @@ -1005,8 +788,8 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/zondax/hid v0.9.1 h1:gQe66rtmyZ8VeGFcOpbuH3r7erYtNEAezCAYu8LdkJo= github.com/zondax/hid v0.9.1/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= -github.com/zondax/ledger-go v0.14.1 h1:Pip65OOl4iJ84WTpA4BKChvOufMhhbxED3BaihoZN4c= -github.com/zondax/ledger-go v0.14.1/go.mod h1:fZ3Dqg6qcdXWSOJFKMG8GCTnD7slO/RL2feOQv8K320= +github.com/zondax/ledger-go v0.14.0 h1:dlMC7aO8Wss1CxBq2I96kZ69Nh1ligzbs8UWOtq/AsA= +github.com/zondax/ledger-go v0.14.0/go.mod h1:fZ3Dqg6qcdXWSOJFKMG8GCTnD7slO/RL2feOQv8K320= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= @@ -1028,37 +811,24 @@ go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= 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/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -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-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE= -golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= -golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/crypto v0.4.0 h1:UVQgzMY87xqpKNgb+kDsll2Igd33HszWHFLmpaRMq/8= +golang.org/x/crypto v0.4.0/go.mod h1:3quD/ATkf6oY+rnes5c3ExXTbLc8mueNue5/DoinL80= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/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= @@ -1069,9 +839,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 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-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA= -golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= -golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= +golang.org/x/exp v0.0.0-20221019170559-20944726eadf h1:nFVjjKDgNY37+ZSYCJmtYf7tOlfQswHqplG2eosjOMg= +golang.org/x/exp v0.0.0-20221019170559-20944726eadf/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= 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= @@ -1085,7 +854,6 @@ golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRu 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/lint v0.0.0-20210508222113-6edffad5e616/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= @@ -1097,8 +865,6 @@ 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.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA= -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= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1136,33 +902,20 @@ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81R 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-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= 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-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/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-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw= -golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= +golang.org/x/net v0.4.0 h1:Q5QPcMlvfxFTAPV0+07Xz/MpK9NTXu2VDUuy0FeMfaU= +golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= 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= @@ -1172,19 +925,10 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ 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/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2 h1:+jnHzr9VPj32ykQVai5DNahi9+NSp7yYuCsl5eAQtL0= -golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 h1:nt+Q6cXKz4MosCSpnbMtqiQ8Oz0pxTef2B4Vca2lvfk= +golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= 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= @@ -1196,7 +940,6 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ 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.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1208,7 +951,6 @@ golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1218,7 +960,6 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1229,7 +970,6 @@ golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7w 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-20200107162124-548cf772de50/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= @@ -1249,65 +989,38 @@ golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7w 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-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/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-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210420205809-ac73e9fd8988/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-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644/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-20210616094352-59db8d763f22/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-20210806184541-e5e7981a1069/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-20210816183151-1e6c022a8912/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-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/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-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211210111614-af8b64212486/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-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/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-20220502124256-b6088ccd6cba/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-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220517195934-5e4e11fc645e/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-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18= -golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +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.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 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.4.0 h1:O7UWfv5+A2qiuulQk30kVinPoMtoIPeVaKLEgLpVkvg= -golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= +golang.org/x/term v0.3.0 h1:qoo4akIqOcDME5bhc/NgxUdovd6BSS2uMsVjB56q1xI= +golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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= @@ -1317,19 +1030,17 @@ 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.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k= -golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM= +golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= 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= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -1354,7 +1065,6 @@ golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtn 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-20200108203644-89082a384178/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= @@ -1375,35 +1085,20 @@ golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc 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-20201022035929-9cf592e881e9/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= 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-20210106214847-113979e3529a/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.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.4.0 h1:7mTAgkunk3fr4GAloyyCasadO6h9zSsQZbwvcaIciV4= 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= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f h1:uF6paiQQebLeSXkrTqHqz0MXhXXS1KgF41eUdBNvxK0= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.6.0/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= -gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= @@ -1424,28 +1119,8 @@ google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz513 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/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= -google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= -google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= -google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= -google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= -google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= -google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= -google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= -google.golang.org/api v0.93.0 h1:T2xt9gi0gHdxdnRkVQhT8mIvPaXKNsDNWz+L696M66M= -google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.102.0 h1:JxJl2qQ85fRMPNvlZY/enexbxpCjLwGhZUtgfGeQ51I= +google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo= 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= @@ -1462,7 +1137,6 @@ google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= 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= @@ -1470,7 +1144,6 @@ google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvx 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-20200108215221-bd8f9a0ef82f/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= @@ -1479,7 +1152,6 @@ google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfG 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= @@ -1498,57 +1170,12 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D 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-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/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-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a h1:GH6UPn3ixhWcKDhpnEC55S75cerLPdpp3hrhfKYjZgw= -google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20220314164441-57ef72a4c106/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6 h1:a2S6M0+660BgMNl++4JPlcAO/CjkqYItDEZwkoDQK7c= +google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= 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= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1571,22 +1198,10 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv 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.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.50.1 h1:DS/BukOZWp8s6p4Dt/tOaJaTQyPyOoCcrjroHuCeLzY= -google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.52.3 h1:pf7sOysg4LdgBqduXveGKrcEwbStiK2rtfghdzlUYDQ= +google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= 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= @@ -1600,16 +1215,14 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba 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.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8 h1:KR8+MyP7/qOlV+8Af01LtjL04bu7on42eVsxT4EyBQk= -google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= 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= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= @@ -1617,12 +1230,9 @@ gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMy gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= -gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -1638,7 +1248,7 @@ 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/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= 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= @@ -1647,16 +1257,13 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh 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= -honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= -pgregory.net/rapid v0.4.7 h1:MTNRktPuv5FNqOO151TM9mDTa+XHcX6ypYeISDVD14g= -pgregory.net/rapid v0.4.7/go.mod h1:UYpPVyjFHzYBGHIxLFoupi8vwk6rXNzRY9OMvVxFIOU= +pgregory.net/rapid v0.5.3 h1:163N50IHFqr1phZens4FQOdPgfJscR7a562mjQqeo4M= +pgregory.net/rapid v0.5.3/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/modules/coinswap/client/testutil/grpc_query_test.go b/modules/coinswap/client/testutil/grpc_query_test.go index 85f53396..5214577f 100644 --- a/modules/coinswap/client/testutil/grpc_query_test.go +++ b/modules/coinswap/client/testutil/grpc_query_test.go @@ -11,15 +11,11 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" clienttx "github.com/cosmos/cosmos-sdk/client/tx" - codectype "github.com/cosmos/cosmos-sdk/codec/types" - "github.com/cosmos/cosmos-sdk/testutil/network" - "github.com/cosmos/cosmos-sdk/testutil/rest" + "github.com/cosmos/cosmos-sdk/testutil" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/tx" "github.com/cosmos/cosmos-sdk/types/tx/signing" authclient "github.com/cosmos/cosmos-sdk/x/auth/client" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" coinswaptypes "github.com/irisnet/irismod/modules/coinswap/types" tokencli "github.com/irisnet/irismod/modules/token/client/cli" @@ -29,24 +25,13 @@ import ( type IntegrationTestSuite struct { suite.Suite - - cfg network.Config - network *network.Network + network simapp.Network } func (s *IntegrationTestSuite) SetupSuite() { s.T().Log("setting up integration test suite") - cfg := simapp.NewConfig() - cfg.NumValidators = 1 - - s.cfg = cfg - var err error - s.network, err = network.New(s.T(), s.T().TempDir(), cfg) - - _, err = s.network.WaitForHeight(1) - s.Require().NoError(err) - + s.network = simapp.SetupNetwork(s.T()) sdk.SetCoinDenomRegex(func() string { return `[a-zA-Z][a-zA-Z0-9/\-]{2,127}` }) @@ -88,34 +73,17 @@ func (s *IntegrationTestSuite) TestCoinswap() { fmt.Sprintf("--%s=%t", tokencli.FlagMintable, mintable), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType := proto.Message(&sdk.TxResponse{}) - expectedCode := uint32(0) - bz, err := tokentestutil.IssueTokenExec(clientCtx, from.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp := respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + _ = tokentestutil.IssueTokenExec(s.T(), s.network, clientCtx, from.String(), args...) - respType = proto.Message(&banktypes.QueryAllBalancesResponse{}) - out, err := simapp.QueryBalancesExec(clientCtx, from.String()) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), respType)) - balances := respType.(*banktypes.QueryAllBalancesResponse) - fmt.Println(balances.Balances) - s.Require().Equal("100000000", balances.Balances.AmountOf(symbol).String()) - s.Require().Equal("399986975", balances.Balances.AmountOf(sdk.DefaultBondDenom).String()) + balances := simapp.QueryBalancesExec(s.T(), s.network, clientCtx, from.String()) + s.Require().Equal("100000000", balances.AmountOf(symbol).String()) + s.Require().Equal("399986975", balances.AmountOf(sdk.DefaultBondDenom).String()) - var account authtypes.AccountI - respType = proto.Message(&codectype.Any{}) - out, err = simapp.QueryAccountExec(clientCtx, from.String()) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), respType)) - err = clientCtx.InterfaceRegistry.UnpackAny(respType.(*codectype.Any), &account) - s.Require().NoError(err) + account := simapp.QueryAccountExec(s.T(), s.network, clientCtx, from.String()) // test add liquidity (poor not exist) status, err := clientCtx.Client.Status(context.Background()) @@ -132,7 +100,7 @@ func (s *IntegrationTestSuite) TestCoinswap() { // prepare txBuilder with msg txBuilder := val.ClientCtx.TxConfig.NewTxBuilder() - feeAmount := sdk.Coins{sdk.NewInt64Coin(s.cfg.BondDenom, 10)} + feeAmount := sdk.Coins{sdk.NewInt64Coin(s.network.BondDenom, 10)} err = txBuilder.SetMsgs(msgAddLiquidity) s.Require().NoError(err) txBuilder.SetFeeAmount(feeAmount) @@ -153,34 +121,28 @@ func (s *IntegrationTestSuite) TestCoinswap() { txBytes, err := val.ClientCtx.TxConfig.TxEncoder()(txBuilder.GetTx()) s.Require().NoError(err) req := &tx.BroadcastTxRequest{ - Mode: tx.BroadcastMode_BROADCAST_MODE_BLOCK, + Mode: tx.BroadcastMode_BROADCAST_MODE_SYNC, TxBytes: txBytes, } reqBz, err := val.ClientCtx.Codec.MarshalJSON(req) s.Require().NoError(err) - res, err := rest.PostRequest(fmt.Sprintf("%s/cosmos/tx/v1beta1/txs", baseURL), "application/json", reqBz) + res, err := testutil.PostRequest(fmt.Sprintf("%s/cosmos/tx/v1beta1/txs", baseURL), "application/json", reqBz) s.Require().NoError(err) var result tx.BroadcastTxResponse err = val.ClientCtx.Codec.UnmarshalJSON(res, &result) s.Require().NoError(err) s.Require().Equal(uint32(0), result.TxResponse.Code, "rawlog", result.TxResponse.RawLog) + s.network.WaitForNBlock(2) - respType = proto.Message(&banktypes.QueryAllBalancesResponse{}) - out, err = simapp.QueryBalancesExec(clientCtx, from.String()) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), respType)) - - balances = respType.(*banktypes.QueryAllBalancesResponse) - coins := balances.Balances - fmt.Println(coins) - s.Require().Equal("99999000", coins.AmountOf(symbol).String()) - s.Require().Equal("399980965", coins.AmountOf(sdk.DefaultBondDenom).String()) - s.Require().Equal("1000", coins.AmountOf(lptDenom).String()) + balances = simapp.QueryBalancesExec(s.T(), s.network, clientCtx, from.String()) + s.Require().Equal("99999000", balances.AmountOf(symbol).String()) + s.Require().Equal("399980965", balances.AmountOf(sdk.DefaultBondDenom).String()) + s.Require().Equal("1000", balances.AmountOf(lptDenom).String()) queryPoolResponse := proto.Message(&coinswaptypes.QueryLiquidityPoolResponse{}) url := fmt.Sprintf("%s/irismod/coinswap/pools/%s", baseURL, lptDenom) - resp, err := rest.GetRequest(url) + resp, err := testutil.GetRequest(url) s.Require().NoError(err) s.Require().NoError(clientCtx.Codec.UnmarshalJSON(resp, queryPoolResponse)) @@ -204,7 +166,7 @@ func (s *IntegrationTestSuite) TestCoinswap() { // prepare txBuilder with msg txBuilder = val.ClientCtx.TxConfig.NewTxBuilder() - feeAmount = sdk.Coins{sdk.NewInt64Coin(s.cfg.BondDenom, 10)} + feeAmount = sdk.Coins{sdk.NewInt64Coin(s.network.BondDenom, 10)} err = txBuilder.SetMsgs(msgAddLiquidity) s.Require().NoError(err) txBuilder.SetFeeAmount(feeAmount) @@ -225,32 +187,26 @@ func (s *IntegrationTestSuite) TestCoinswap() { txBytes, err = val.ClientCtx.TxConfig.TxEncoder()(txBuilder.GetTx()) s.Require().NoError(err) req = &tx.BroadcastTxRequest{ - Mode: tx.BroadcastMode_BROADCAST_MODE_BLOCK, + Mode: tx.BroadcastMode_BROADCAST_MODE_SYNC, TxBytes: txBytes, } reqBz, err = val.ClientCtx.Codec.MarshalJSON(req) s.Require().NoError(err) - res, err = rest.PostRequest(fmt.Sprintf("%s/cosmos/tx/v1beta1/txs", baseURL), "application/json", reqBz) + res, err = testutil.PostRequest(fmt.Sprintf("%s/cosmos/tx/v1beta1/txs", baseURL), "application/json", reqBz) s.Require().NoError(err) err = val.ClientCtx.Codec.UnmarshalJSON(res, &result) s.Require().NoError(err) s.Require().Equal(uint32(0), result.TxResponse.Code, "rawlog", result.TxResponse.RawLog) + s.network.WaitForNBlock(2) - respType = proto.Message(&banktypes.QueryAllBalancesResponse{}) - out, err = simapp.QueryBalancesExec(clientCtx, from.String()) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), respType)) - - balances = respType.(*banktypes.QueryAllBalancesResponse) - coins = balances.Balances - fmt.Println(coins) - s.Require().Equal("99996999", coins.AmountOf(symbol).String()) - s.Require().Equal("399978955", coins.AmountOf(sdk.DefaultBondDenom).String()) - s.Require().Equal("3000", coins.AmountOf(lptDenom).String()) + balances = simapp.QueryBalancesExec(s.T(), s.network, clientCtx, from.String()) + s.Require().Equal("99996999", balances.AmountOf(symbol).String()) + s.Require().Equal("399978955", balances.AmountOf(sdk.DefaultBondDenom).String()) + s.Require().Equal("3000", balances.AmountOf(lptDenom).String()) url = fmt.Sprintf("%s/irismod/coinswap/pools/%s", baseURL, lptDenom) - resp, err = rest.GetRequest(url) + resp, err = testutil.GetRequest(url) s.Require().NoError(err) s.Require().NoError(clientCtx.Codec.UnmarshalJSON(resp, queryPoolResponse)) @@ -266,7 +222,7 @@ func (s *IntegrationTestSuite) TestCoinswap() { }, Output: coinswaptypes.Output{ Address: from.String(), - Coin: sdk.NewInt64Coin(s.cfg.BondDenom, 748), + Coin: sdk.NewInt64Coin(s.network.BondDenom, 748), }, Deadline: deadline.Unix(), IsBuyOrder: false, @@ -274,7 +230,7 @@ func (s *IntegrationTestSuite) TestCoinswap() { // prepare txBuilder with msg txBuilder = val.ClientCtx.TxConfig.NewTxBuilder() - feeAmount = sdk.Coins{sdk.NewInt64Coin(s.cfg.BondDenom, 10)} + feeAmount = sdk.Coins{sdk.NewInt64Coin(s.network.BondDenom, 10)} err = txBuilder.SetMsgs(msgSellOrder) s.Require().NoError(err) txBuilder.SetFeeAmount(feeAmount) @@ -295,32 +251,26 @@ func (s *IntegrationTestSuite) TestCoinswap() { txBytes, err = val.ClientCtx.TxConfig.TxEncoder()(txBuilder.GetTx()) s.Require().NoError(err) req = &tx.BroadcastTxRequest{ - Mode: tx.BroadcastMode_BROADCAST_MODE_BLOCK, + Mode: tx.BroadcastMode_BROADCAST_MODE_SYNC, TxBytes: txBytes, } reqBz, err = val.ClientCtx.Codec.MarshalJSON(req) s.Require().NoError(err) - _, err = rest.PostRequest(fmt.Sprintf("%s/cosmos/tx/v1beta1/txs", baseURL), "application/json", reqBz) + _, err = testutil.PostRequest(fmt.Sprintf("%s/cosmos/tx/v1beta1/txs", baseURL), "application/json", reqBz) s.Require().NoError(err) err = val.ClientCtx.Codec.UnmarshalJSON(res, &result) s.Require().NoError(err) s.Require().Equal(uint32(0), result.TxResponse.Code, "rawlog", result.TxResponse.RawLog) + s.network.WaitForNextBlock() - respType = proto.Message(&banktypes.QueryAllBalancesResponse{}) - out, err = simapp.QueryBalancesExec(clientCtx, from.String()) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), respType)) - - balances = respType.(*banktypes.QueryAllBalancesResponse) - coins = balances.Balances - fmt.Println(coins) - s.Require().Equal("99995999", coins.AmountOf(symbol).String()) - s.Require().Equal("399979693", coins.AmountOf(sdk.DefaultBondDenom).String()) - s.Require().Equal("3000", coins.AmountOf(lptDenom).String()) + balances = simapp.QueryBalancesExec(s.T(), s.network, clientCtx, from.String()) + s.Require().Equal("99995999", balances.AmountOf(symbol).String()) + s.Require().Equal("399979693", balances.AmountOf(sdk.DefaultBondDenom).String()) + s.Require().Equal("3000", balances.AmountOf(lptDenom).String()) url = fmt.Sprintf("%s/irismod/coinswap/pools/%s", baseURL, lptDenom) - resp, err = rest.GetRequest(url) + resp, err = testutil.GetRequest(url) s.Require().NoError(err) s.Require().NoError(clientCtx.Codec.UnmarshalJSON(resp, queryPoolResponse)) @@ -332,7 +282,7 @@ func (s *IntegrationTestSuite) TestCoinswap() { msgBuyOrder := &coinswaptypes.MsgSwapOrder{ Input: coinswaptypes.Input{ Address: from.String(), - Coin: sdk.NewInt64Coin(s.cfg.BondDenom, 753), + Coin: sdk.NewInt64Coin(s.network.BondDenom, 753), }, Output: coinswaptypes.Output{ Address: from.String(), @@ -344,7 +294,7 @@ func (s *IntegrationTestSuite) TestCoinswap() { // prepare txBuilder with msg txBuilder = val.ClientCtx.TxConfig.NewTxBuilder() - feeAmount = sdk.Coins{sdk.NewInt64Coin(s.cfg.BondDenom, 10)} + feeAmount = sdk.Coins{sdk.NewInt64Coin(s.network.BondDenom, 10)} err = txBuilder.SetMsgs(msgBuyOrder) s.Require().NoError(err) txBuilder.SetFeeAmount(feeAmount) @@ -365,32 +315,26 @@ func (s *IntegrationTestSuite) TestCoinswap() { txBytes, err = val.ClientCtx.TxConfig.TxEncoder()(txBuilder.GetTx()) s.Require().NoError(err) req = &tx.BroadcastTxRequest{ - Mode: tx.BroadcastMode_BROADCAST_MODE_BLOCK, + Mode: tx.BroadcastMode_BROADCAST_MODE_SYNC, TxBytes: txBytes, } reqBz, err = val.ClientCtx.Codec.MarshalJSON(req) s.Require().NoError(err) - _, err = rest.PostRequest(fmt.Sprintf("%s/cosmos/tx/v1beta1/txs", baseURL), "application/json", reqBz) + _, err = testutil.PostRequest(fmt.Sprintf("%s/cosmos/tx/v1beta1/txs", baseURL), "application/json", reqBz) s.Require().NoError(err) err = val.ClientCtx.Codec.UnmarshalJSON(res, &result) s.Require().NoError(err) s.Require().Equal(uint32(0), result.TxResponse.Code, "rawlog", result.TxResponse.RawLog) + s.network.WaitForNextBlock() - respType = proto.Message(&banktypes.QueryAllBalancesResponse{}) - out, err = simapp.QueryBalancesExec(clientCtx, from.String()) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), respType)) - - balances = respType.(*banktypes.QueryAllBalancesResponse) - coins = balances.Balances - fmt.Println(coins) - s.Require().Equal("99996999", coins.AmountOf(symbol).String()) - s.Require().Equal("399978930", coins.AmountOf(sdk.DefaultBondDenom).String()) - s.Require().Equal("3000", coins.AmountOf(lptDenom).String()) + balances = simapp.QueryBalancesExec(s.T(), s.network, clientCtx, from.String()) + s.Require().Equal("99996999", balances.AmountOf(symbol).String()) + s.Require().Equal("399978930", balances.AmountOf(sdk.DefaultBondDenom).String()) + s.Require().Equal("3000", balances.AmountOf(lptDenom).String()) url = fmt.Sprintf("%s/irismod/coinswap/pools/%s", baseURL, lptDenom) - resp, err = rest.GetRequest(url) + resp, err = testutil.GetRequest(url) s.Require().NoError(err) s.Require().NoError(clientCtx.Codec.UnmarshalJSON(resp, queryPoolResponse)) @@ -409,7 +353,7 @@ func (s *IntegrationTestSuite) TestCoinswap() { // prepare txBuilder with msg txBuilder = val.ClientCtx.TxConfig.NewTxBuilder() - feeAmount = sdk.Coins{sdk.NewInt64Coin(s.cfg.BondDenom, 10)} + feeAmount = sdk.Coins{sdk.NewInt64Coin(s.network.BondDenom, 10)} err = txBuilder.SetMsgs(msgRemoveLiquidity) s.Require().NoError(err) txBuilder.SetFeeAmount(feeAmount) @@ -430,32 +374,26 @@ func (s *IntegrationTestSuite) TestCoinswap() { txBytes, err = val.ClientCtx.TxConfig.TxEncoder()(txBuilder.GetTx()) s.Require().NoError(err) req = &tx.BroadcastTxRequest{ - Mode: tx.BroadcastMode_BROADCAST_MODE_BLOCK, + Mode: tx.BroadcastMode_BROADCAST_MODE_SYNC, TxBytes: txBytes, } reqBz, err = val.ClientCtx.Codec.MarshalJSON(req) s.Require().NoError(err) - _, err = rest.PostRequest(fmt.Sprintf("%s/cosmos/tx/v1beta1/txs", baseURL), "application/json", reqBz) + _, err = testutil.PostRequest(fmt.Sprintf("%s/cosmos/tx/v1beta1/txs", baseURL), "application/json", reqBz) s.Require().NoError(err) err = val.ClientCtx.Codec.UnmarshalJSON(res, &result) s.Require().NoError(err) s.Require().Equal(uint32(0), result.TxResponse.Code, "rawlog", result.TxResponse.RawLog) + s.network.WaitForNextBlock() - respType = proto.Message(&banktypes.QueryAllBalancesResponse{}) - out, err = simapp.QueryBalancesExec(clientCtx, from.String()) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), respType)) - - balances = respType.(*banktypes.QueryAllBalancesResponse) - coins = balances.Balances - fmt.Println(coins) - s.Require().Equal("99998999", coins.AmountOf(symbol).String()) - s.Require().Equal("399980923", coins.AmountOf(sdk.DefaultBondDenom).String()) - s.Require().Equal("1000", coins.AmountOf(lptDenom).String()) + balances = simapp.QueryBalancesExec(s.T(), s.network, clientCtx, from.String()) + s.Require().Equal("99998999", balances.AmountOf(symbol).String()) + s.Require().Equal("399980923", balances.AmountOf(sdk.DefaultBondDenom).String()) + s.Require().Equal("1000", balances.AmountOf(lptDenom).String()) url = fmt.Sprintf("%s/irismod/coinswap/pools/%s", baseURL, lptDenom) - resp, err = rest.GetRequest(url) + resp, err = testutil.GetRequest(url) s.Require().NoError(err) s.Require().NoError(clientCtx.Codec.UnmarshalJSON(resp, queryPoolResponse)) @@ -474,7 +412,7 @@ func (s *IntegrationTestSuite) TestCoinswap() { // prepare txBuilder with msg txBuilder = val.ClientCtx.TxConfig.NewTxBuilder() - feeAmount = sdk.Coins{sdk.NewInt64Coin(s.cfg.BondDenom, 10)} + feeAmount = sdk.Coins{sdk.NewInt64Coin(s.network.BondDenom, 10)} err = txBuilder.SetMsgs(msgRemoveLiquidity) s.Require().NoError(err) txBuilder.SetFeeAmount(feeAmount) @@ -495,32 +433,26 @@ func (s *IntegrationTestSuite) TestCoinswap() { txBytes, err = val.ClientCtx.TxConfig.TxEncoder()(txBuilder.GetTx()) s.Require().NoError(err) req = &tx.BroadcastTxRequest{ - Mode: tx.BroadcastMode_BROADCAST_MODE_BLOCK, + Mode: tx.BroadcastMode_BROADCAST_MODE_SYNC, TxBytes: txBytes, } reqBz, err = val.ClientCtx.Codec.MarshalJSON(req) s.Require().NoError(err) - _, err = rest.PostRequest(fmt.Sprintf("%s/cosmos/tx/v1beta1/txs", baseURL), "application/json", reqBz) + _, err = testutil.PostRequest(fmt.Sprintf("%s/cosmos/tx/v1beta1/txs", baseURL), "application/json", reqBz) s.Require().NoError(err) err = val.ClientCtx.Codec.UnmarshalJSON(res, &result) s.Require().NoError(err) s.Require().Equal(uint32(0), result.TxResponse.Code, "rawlog", result.TxResponse.RawLog) + s.network.WaitForNextBlock() - respType = proto.Message(&banktypes.QueryAllBalancesResponse{}) - out, err = simapp.QueryBalancesExec(clientCtx, from.String()) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), respType)) - - balances = respType.(*banktypes.QueryAllBalancesResponse) - coins = balances.Balances - fmt.Println(coins) - s.Require().Equal("100000000", coins.AmountOf(symbol).String()) - s.Require().Equal("399981915", coins.AmountOf(sdk.DefaultBondDenom).String()) - s.Require().Equal("0", coins.AmountOf(lptDenom).String()) + balances = simapp.QueryBalancesExec(s.T(), s.network, clientCtx, from.String()) + s.Require().Equal("100000000", balances.AmountOf(symbol).String()) + s.Require().Equal("399981915", balances.AmountOf(sdk.DefaultBondDenom).String()) + s.Require().Equal("0", balances.AmountOf(lptDenom).String()) url = fmt.Sprintf("%s/irismod/coinswap/pools/%s", baseURL, lptDenom) - resp, err = rest.GetRequest(url) + resp, err = testutil.GetRequest(url) s.Require().NoError(err) s.Require().NoError(clientCtx.Codec.UnmarshalJSON(resp, queryPoolResponse)) @@ -530,7 +462,7 @@ func (s *IntegrationTestSuite) TestCoinswap() { queryPoolsResponse := proto.Message(&coinswaptypes.QueryLiquidityPoolsResponse{}) url = fmt.Sprintf("%s/irismod/coinswap/pools", baseURL) - resp, err = rest.GetRequest(url) + resp, err = testutil.GetRequest(url) s.Require().NoError(err) s.Require().NoError(clientCtx.Codec.UnmarshalJSON(resp, queryPoolsResponse)) diff --git a/modules/coinswap/keeper/keeper_test.go b/modules/coinswap/keeper/keeper_test.go index 96b0b714..6e088685 100644 --- a/modules/coinswap/keeper/keeper_test.go +++ b/modules/coinswap/keeper/keeper_test.go @@ -20,14 +20,14 @@ import ( ) const ( - denomStandard = sdk.DefaultBondDenom - denomBTC = "btc" - denomETH = "eth" + denomBTC = "btc" + denomETH = "eth" ) var ( - addrSender1 sdk.AccAddress - addrSender2 sdk.AccAddress + denomStandard = sdk.DefaultBondDenom + addrSender1 sdk.AccAddress + addrSender2 sdk.AccAddress ) // test that the params can be properly set and retrieved diff --git a/modules/coinswap/migrations/v1/migrate_test.go b/modules/coinswap/migrations/v1/migrate_test.go index 21894365..7baa3bb1 100644 --- a/modules/coinswap/migrations/v1/migrate_test.go +++ b/modules/coinswap/migrations/v1/migrate_test.go @@ -18,18 +18,18 @@ import ( ) const ( - denomStandard = sdk.DefaultBondDenom - denomBTC = "btc" - denomETH = "eth" - denomLptBTC = "swapbtc" - denomLptETH = "swapeth" + denomBTC = "btc" + denomETH = "eth" + denomLptBTC = "swapbtc" + denomLptETH = "swapeth" ) var ( - addrSender1 = sdk.AccAddress(tmhash.SumTruncated([]byte("addrSender1"))) - addrSender2 = sdk.AccAddress(tmhash.SumTruncated([]byte("addrSender2"))) - poolAddrBTC = v1.GetReservePoolAddr(denomLptBTC) - poolAddrETH = v1.GetReservePoolAddr(denomLptETH) + addrSender1 = sdk.AccAddress(tmhash.SumTruncated([]byte("addrSender1"))) + addrSender2 = sdk.AccAddress(tmhash.SumTruncated([]byte("addrSender2"))) + poolAddrBTC = v1.GetReservePoolAddr(denomLptBTC) + poolAddrETH = v1.GetReservePoolAddr(denomLptETH) + denomStandard = sdk.DefaultBondDenom ) type ( diff --git a/modules/coinswap/module.go b/modules/coinswap/module.go index bac93ed1..4f114907 100644 --- a/modules/coinswap/module.go +++ b/modules/coinswap/module.go @@ -4,7 +4,6 @@ import ( "context" "encoding/json" "fmt" - "math/rand" "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" @@ -123,19 +122,6 @@ func (am AppModule) RegisterServices(cfg module.Configurator) { // RegisterInvariants registers the coinswap module invariants. func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {} -// Route returns the message routing key for the coinswap module. -func (am AppModule) Route() sdk.Route { - return sdk.Route{} -} - -// QuerierRoute returns the coinswap module's querier route name. -func (AppModule) QuerierRoute() string { return "" } - -// LegacyQuerierHandler returns the coinswap module sdk.Querier. -func (am AppModule) LegacyQuerierHandler(_ *codec.LegacyAmino) sdk.Querier { - return nil -} - // InitGenesis performs genesis initialization for the coinswap module. It returns // no validator updates. func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { @@ -163,16 +149,6 @@ func (AppModule) GenerateGenesisState(simState *module.SimulationState) { simulation.RandomizedGenState(simState) } -// ProposalContents doesn't return any content functions for governance proposals. -func (AppModule) ProposalContents(simState module.SimulationState) []simtypes.WeightedProposalContent { - return nil -} - -// RandomizedParams creates randomized coinswap param changes for the simulator. -func (AppModule) RandomizedParams(r *rand.Rand) []simtypes.ParamChange { - return simulation.ParamChanges(r) -} - // RegisterStoreDecoder registers a decoder for coinswap module's types func (am AppModule) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry) { diff --git a/modules/coinswap/simulation/operations.go b/modules/coinswap/simulation/operations.go index dcdedce1..71a2744e 100644 --- a/modules/coinswap/simulation/operations.go +++ b/modules/coinswap/simulation/operations.go @@ -9,10 +9,10 @@ import ( "time" sdkmath "cosmossdk.io/math" + simappparams "cosmossdk.io/simapp/params" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/simapp/helpers" - simappparams "github.com/cosmos/cosmos-sdk/simapp/params" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" @@ -193,12 +193,12 @@ func SimulateMsgAddLiquidity(k keeper.Keeper, ak types.AccountKeeper, bk types.B txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -342,12 +342,12 @@ func SimulateMsgSwapOrder(k keeper.Keeper, ak types.AccountKeeper, bk types.Bank } txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -451,12 +451,12 @@ func SimulateMsgRemoveLiquidity(k keeper.Keeper, ak types.AccountKeeper, bk type txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -557,12 +557,12 @@ func SimulateMsgAddUnilateralLiquidity(k keeper.Keeper, ak types.AccountKeeper, } txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainId, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -676,12 +676,12 @@ func SimulateMsgRemoveUnilateralLiquidity(k keeper.Keeper, ak types.AccountKeepe txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainId, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, diff --git a/modules/coinswap/simulation/params.go b/modules/coinswap/simulation/params.go deleted file mode 100644 index c756d900..00000000 --- a/modules/coinswap/simulation/params.go +++ /dev/null @@ -1,25 +0,0 @@ -package simulation - -import ( - "fmt" - "math/rand" - - sdk "github.com/cosmos/cosmos-sdk/types" - simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/cosmos/cosmos-sdk/x/simulation" - - "github.com/irisnet/irismod/modules/coinswap/types" -) - -// ParamChanges defines the parameters that can be modified by param change proposals -// on the simulation -func ParamChanges(r *rand.Rand) []simtypes.ParamChange { - return []simtypes.ParamChange{ - simulation.NewSimParamChange( - types.ModuleName, string(types.KeyFee), - func(r *rand.Rand) string { - return fmt.Sprintf("\"%s\"", sdk.NewDecWithPrec(r.Int63n(2)+1, 3).String()) // 0.1%~0.3% - }, - ), - } -} diff --git a/modules/coinswap/types/coinswap.pb.go b/modules/coinswap/types/coinswap.pb.go index c97d262f..e5ba2540 100644 --- a/modules/coinswap/types/coinswap.pb.go +++ b/modules/coinswap/types/coinswap.pb.go @@ -7,8 +7,8 @@ import ( fmt "fmt" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" diff --git a/modules/coinswap/types/genesis.pb.go b/modules/coinswap/types/genesis.pb.go index b5e7f26f..f0537fbd 100644 --- a/modules/coinswap/types/genesis.pb.go +++ b/modules/coinswap/types/genesis.pb.go @@ -5,8 +5,8 @@ package types import ( fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" diff --git a/modules/coinswap/types/query.pb.go b/modules/coinswap/types/query.pb.go index a83b8c50..3c089232 100644 --- a/modules/coinswap/types/query.pb.go +++ b/modules/coinswap/types/query.pb.go @@ -8,9 +8,9 @@ import ( fmt "fmt" types "github.com/cosmos/cosmos-sdk/types" query "github.com/cosmos/cosmos-sdk/types/query" - _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" diff --git a/modules/coinswap/types/tx.pb.go b/modules/coinswap/types/tx.pb.go index c3eae04c..03f09c87 100644 --- a/modules/coinswap/types/tx.pb.go +++ b/modules/coinswap/types/tx.pb.go @@ -8,9 +8,9 @@ import ( fmt "fmt" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/modules/farm/client/cli/cli_test.go b/modules/farm/client/cli/cli_test.go index 6c89dcf4..8a15c86b 100644 --- a/modules/farm/client/cli/cli_test.go +++ b/modules/farm/client/cli/cli_test.go @@ -4,12 +4,9 @@ import ( "fmt" "testing" - "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/suite" - "github.com/tidwall/gjson" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/testutil/network" sdk "github.com/cosmos/cosmos-sdk/types" farmcli "github.com/irisnet/irismod/modules/farm/client/cli" @@ -21,23 +18,13 @@ import ( type IntegrationTestSuite struct { suite.Suite - cfg network.Config - network *network.Network + network simapp.Network } func (s *IntegrationTestSuite) SetupSuite() { s.T().Log("setting up integration test suite") - cfg := simapp.NewConfig() - cfg.NumValidators = 1 - - var err error - s.cfg = cfg - s.network, err = network.New(s.T(), s.T().TempDir(), cfg) - s.Require().NoError(err) - - _, err = s.network.WaitForHeight(1) - s.Require().NoError(err) + s.network = simapp.SetupNetwork(s.T()) } func (s *IntegrationTestSuite) TearDownSuite() { @@ -58,43 +45,36 @@ func (s *IntegrationTestSuite) TestFarm() { creator := val.Address description := "iris-atom farm pool" startHeight := s.LatestHeight() + 1 - rewardPerBlock := sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))) - lpTokenDenom := s.cfg.BondDenom - totalReward := sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(1000))) + rewardPerBlock := sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))) + totalReward := sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(1000))) editable := true globalFlags := []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } args := []string{ fmt.Sprintf("--%s=%s", farmcli.FlagDescription, description), fmt.Sprintf("--%s=%d", farmcli.FlagStartHeight, startHeight), fmt.Sprintf("--%s=%s", farmcli.FlagRewardPerBlock, rewardPerBlock), - fmt.Sprintf("--%s=%s", farmcli.FlagLPTokenDenom, lpTokenDenom), + fmt.Sprintf("--%s=%s", farmcli.FlagLPTokenDenom, s.network.BondDenom), fmt.Sprintf("--%s=%s", farmcli.FlagTotalReward, totalReward), fmt.Sprintf("--%s=%v", farmcli.FlagEditable, editable), } args = append(args, globalFlags...) - respType := proto.Message(&sdk.TxResponse{}) - expectedCode := uint32(0) - - bz, err := testutil.CreateFarmPoolExec( + txResult := testutil.CreateFarmPoolExec( + s.T(), + s.network, clientCtx, creator.String(), args..., ) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp := respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - poolId := gjson.Get(txResp.RawLog, "0.events.3.attributes.1.value").String() - respType = proto.Message(&farmtypes.QueryFarmPoolResponse{}) - expectedContents := farmtypes.FarmPoolEntry{ + poolId := s.network.GetAttribute(farmtypes.EventTypeCreatePool, farmtypes.AttributeValuePoolId, txResult.Events) + expectedContents := &farmtypes.FarmPoolEntry{ Id: poolId, Creator: creator.String(), Description: description, @@ -102,103 +82,90 @@ func (s *IntegrationTestSuite) TestFarm() { EndHeight: startHeight + 100, Editable: editable, Expired: false, - TotalLptLocked: sdk.NewCoin(lpTokenDenom, sdk.ZeroInt()), + TotalLptLocked: sdk.NewCoin(s.network.BondDenom, sdk.ZeroInt()), TotalReward: totalReward, RemainingReward: totalReward, RewardPerBlock: rewardPerBlock, } - bz, err = testutil.QueryFarmPoolExec(val.ClientCtx, poolId) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - result := respType.(*farmtypes.QueryFarmPoolResponse) - s.Require().EqualValues(expectedContents, *result.Pool) - - respType = proto.Message(&sdk.TxResponse{}) - reward := sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(1000))) + respType := testutil.QueryFarmPoolExec(s.T(), s.network, val.ClientCtx, poolId) + s.Require().EqualValues(expectedContents, respType.Pool) + reward := sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(1000))) args = []string{ fmt.Sprintf("--%s=%v", farmcli.FlagAdditionalReward, reward.String()), } args = append(args, globalFlags...) - bz, err = testutil.AppendRewardExec( + txResult = testutil.AppendRewardExec( + s.T(), + s.network, clientCtx, creator.String(), poolId, args..., ) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - - _, err = s.network.WaitForHeight(startHeight) - s.Require().NoError(err) - lpToken := sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(100)) - bz, err = testutil.StakeExec( + lpToken := sdk.NewCoin(s.network.BondDenom, sdk.NewInt(100)) + txResult = testutil.StakeExec( + s.T(), + s.network, clientCtx, creator.String(), poolId, lpToken.String(), globalFlags..., ) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - s.Require().Equal(expectedCode, txResp.Code) + beginHeight := txResult.Height - unstakeLPToken := sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(50)) - bz, err = testutil.UnstakeExec( + unstakeLPToken := sdk.NewCoin(s.network.BondDenom, sdk.NewInt(50)) + txResult = testutil.UnstakeExec( + s.T(), + s.network, clientCtx, creator.String(), poolId, unstakeLPToken.String(), globalFlags..., ) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - s.Require().Equal(expectedCode, txResp.Code) - rewardGot := gjson.Get(txResp.RawLog, "0.events.4.attributes.3.value").String() - s.Require().Equal(rewardPerBlock.String(), rewardGot) + endHeight := txResult.Height - bz, err = testutil.HarvestExec( + rewardGot := s.network.GetAttribute(farmtypes.EventTypeUnstake, farmtypes.AttributeValueReward, txResult.Events) + expectedReward := rewardPerBlock.MulInt(sdk.NewInt(endHeight - beginHeight)) + s.Require().Equal(expectedReward.String(), rewardGot) + + txResult = testutil.HarvestExec( + s.T(), + s.network, clientCtx, creator.String(), poolId, globalFlags..., ) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - s.Require().Equal(expectedCode, txResp.Code) - rewardGot = gjson.Get(txResp.RawLog, "0.events.2.attributes.2.value").String() - s.Require().Equal(rewardPerBlock.String(), rewardGot) + endHeight1 := txResult.Height + + rewardGot = s.network.GetAttribute(farmtypes.EventTypeHarvest, farmtypes.AttributeValueReward, txResult.Events) + expectedReward = rewardPerBlock.MulInt(sdk.NewInt(endHeight1 - endHeight)) + s.Require().Equal(expectedReward.String(), rewardGot) queryFarmerArgs := []string{ fmt.Sprintf("--%s=%s", farmcli.FlagFarmPool, poolId), } - expectFarmer := farmtypes.LockedInfo{ - PoolId: poolId, - Locked: lpToken.Sub(unstakeLPToken), - PendingReward: sdk.Coins{}, - } - queryFarmerRespType := proto.Message(&farmtypes.QueryFarmerResponse{}) - bz, err = testutil.QueryFarmerExec(val.ClientCtx, creator.String(), queryFarmerArgs...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), queryFarmerRespType)) - result1 := queryFarmerRespType.(*farmtypes.QueryFarmerResponse) - s.Require().EqualValues(expectFarmer, *result1.List[0]) + leftlpToken := lpToken.Sub(unstakeLPToken) + response := testutil.QueryFarmerExec( + s.T(), + s.network, + val.ClientCtx, creator.String(), queryFarmerArgs...) + s.Require().EqualValues(leftlpToken, response.List[0].Locked) - bz, err = testutil.DestroyExec( + txResult = testutil.DestroyExec( + s.T(), + s.network, clientCtx, creator.String(), poolId, globalFlags..., ) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - s.Require().Equal(expectedCode, txResp.Code) - } func (s *IntegrationTestSuite) LatestHeight() int64 { diff --git a/modules/farm/client/testutil/grpc_query_test.go b/modules/farm/client/testutil/grpc_query_test.go index 37cd9698..fb627e90 100644 --- a/modules/farm/client/testutil/grpc_query_test.go +++ b/modules/farm/client/testutil/grpc_query_test.go @@ -6,15 +6,13 @@ import ( "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/suite" - "github.com/tidwall/gjson" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/testutil/network" - "github.com/cosmos/cosmos-sdk/testutil/rest" + "github.com/cosmos/cosmos-sdk/testutil" sdk "github.com/cosmos/cosmos-sdk/types" farmcli "github.com/irisnet/irismod/modules/farm/client/cli" - "github.com/irisnet/irismod/modules/farm/client/testutil" + farmtestutil "github.com/irisnet/irismod/modules/farm/client/testutil" farmtypes "github.com/irisnet/irismod/modules/farm/types" "github.com/irisnet/irismod/simapp" ) @@ -22,23 +20,13 @@ import ( type IntegrationTestSuite struct { suite.Suite - cfg network.Config - network *network.Network + network simapp.Network } func (s *IntegrationTestSuite) SetupSuite() { s.T().Log("setting up integration test suite") - cfg := simapp.NewConfig() - cfg.NumValidators = 1 - - s.cfg = cfg - var err error - s.network, err = network.New(s.T(), s.T().TempDir(), cfg) - s.Require().NoError(err) - - _, err = s.network.WaitForHeight(1) - s.Require().NoError(err) + s.network = simapp.SetupNetwork(s.T()) } func (s *IntegrationTestSuite) TearDownSuite() { @@ -60,15 +48,15 @@ func (s *IntegrationTestSuite) TestRest() { creator := val.Address description := "iris-atom farm pool" startHeight := s.LatestHeight() + 1 - rewardPerBlock := sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))) - lpTokenDenom := s.cfg.BondDenom - totalReward := sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(1000))) + rewardPerBlock := sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))) + lpTokenDenom := s.network.BondDenom + totalReward := sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(1000))) editable := true globalFlags := []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } args := []string{ @@ -81,19 +69,15 @@ func (s *IntegrationTestSuite) TestRest() { } args = append(args, globalFlags...) - respType := proto.Message(&sdk.TxResponse{}) - expectedCode := uint32(0) - - bz, err := testutil.CreateFarmPoolExec(clientCtx, + txResult := farmtestutil.CreateFarmPoolExec( + s.T(), + s.network, + clientCtx, creator.String(), args..., ) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp := respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - poolId := gjson.Get(txResp.RawLog, "0.events.3.attributes.1.value").String() + poolId := s.network.GetAttribute(farmtypes.EventTypeCreatePool, farmtypes.AttributeValuePoolId, txResult.Events) expectedContents := farmtypes.FarmPoolEntry{ Id: poolId, Description: description, @@ -108,9 +92,9 @@ func (s *IntegrationTestSuite) TestRest() { RewardPerBlock: rewardPerBlock, } - respType = proto.Message(&farmtypes.QueryFarmPoolsResponse{}) + respType := proto.Message(&farmtypes.QueryFarmPoolsResponse{}) queryPoolURL := fmt.Sprintf("%s/irismod/farm/pools", baseURL) - resp, err := rest.GetRequest(queryPoolURL) + resp, err := testutil.GetRequest(queryPoolURL) s.Require().NoError(err) s.Require().NoError(clientCtx.Codec.UnmarshalJSON(resp, respType)) @@ -119,19 +103,18 @@ func (s *IntegrationTestSuite) TestRest() { _, err = s.network.WaitForHeight(startHeight) s.Require().NoError(err) + s.network.WaitForNextBlock() - respType = proto.Message(&sdk.TxResponse{}) - lpToken := sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(100)) - bz, err = testutil.StakeExec(clientCtx, + lpToken := sdk.NewCoin(s.network.BondDenom, sdk.NewInt(100)) + txResult = farmtestutil.StakeExec( + s.T(), + s.network, + clientCtx, creator.String(), poolId, lpToken.String(), globalFlags..., ) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) expectFarmer := farmtypes.LockedInfo{ PoolId: poolId, @@ -141,7 +124,7 @@ func (s *IntegrationTestSuite) TestRest() { queryFarmerRespType := proto.Message(&farmtypes.QueryFarmerResponse{}) queryFarmInfoURL := fmt.Sprintf("%s/irismod/farm/farmers/%s", baseURL, creator.String()) - resp, err = rest.GetRequest(queryFarmInfoURL) + resp, err = testutil.GetRequest(queryFarmInfoURL) s.Require().NoError(err) s.Require().NoError(clientCtx.Codec.UnmarshalJSON(resp, queryFarmerRespType)) farmer := queryFarmerRespType.(*farmtypes.QueryFarmerResponse) diff --git a/modules/farm/client/testutil/test_helper.go b/modules/farm/client/testutil/test_helper.go index a521008a..025fbced 100644 --- a/modules/farm/client/testutil/test_helper.go +++ b/modules/farm/client/testutil/test_helper.go @@ -2,131 +2,130 @@ package testutil import ( "fmt" + "testing" "github.com/tendermint/tendermint/libs/cli" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/testutil" - clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" farmcli "github.com/irisnet/irismod/modules/farm/client/cli" + farmtypes "github.com/irisnet/irismod/modules/farm/types" + "github.com/irisnet/irismod/simapp" ) // CreateFarmPoolExec creates a redelegate message. -func CreateFarmPoolExec(clientCtx client.Context, +func CreateFarmPoolExec(t *testing.T, network simapp.Network, clientCtx client.Context, creator string, - extraArgs ...string) (testutil.BufferWriter, error) { + extraArgs ...string) *simapp.ResponseTx { args := []string{ fmt.Sprintf("--%s=%s", flags.FlagFrom, creator), } args = append(args, extraArgs...) - - return clitestutil.ExecTestCLICmd(clientCtx, farmcli.GetCmdCreateFarmPool(), args) + return network.ExecTxCmdWithResult(t, clientCtx, farmcli.GetCmdCreateFarmPool(), args) } -func QueryFarmPoolsExec(clientCtx client.Context, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryFarmPoolsExec(t *testing.T, network simapp.Network, clientCtx client.Context, extraArgs ...string) *farmtypes.QueryFarmPoolsResponse { args := []string{ fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, farmcli.GetCmdQueryFarmPools(), args) + response := &farmtypes.QueryFarmPoolsResponse{} + network.ExecQueryCmd(t, clientCtx, farmcli.GetCmdQueryFarmPools(), args, response) + return response } -func QueryFarmPoolExec(clientCtx client.Context, poolId string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryFarmPoolExec(t *testing.T, network simapp.Network, clientCtx client.Context, poolId string, extraArgs ...string) *farmtypes.QueryFarmPoolResponse { args := []string{ poolId, fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - - return clitestutil.ExecTestCLICmd(clientCtx, farmcli.GetCmdQueryFarmPool(), args) + response := &farmtypes.QueryFarmPoolResponse{} + network.ExecQueryCmd(t, clientCtx, farmcli.GetCmdQueryFarmPool(), args, response) + return response } // AppendRewardExec creates a redelegate message. -func AppendRewardExec(clientCtx client.Context, +func AppendRewardExec(t *testing.T, network simapp.Network, clientCtx client.Context, creator, poolId string, - extraArgs ...string) (testutil.BufferWriter, error) { + extraArgs ...string) *simapp.ResponseTx { args := []string{ poolId, fmt.Sprintf("--%s=%s", flags.FlagFrom, creator), } args = append(args, extraArgs...) - - return clitestutil.ExecTestCLICmd(clientCtx, farmcli.GetCmdAdjustPool(), args) + return network.ExecTxCmdWithResult(t, clientCtx, farmcli.GetCmdAdjustPool(), args) } // StakeExec creates a redelegate message. -func StakeExec(clientCtx client.Context, +func StakeExec(t *testing.T, network simapp.Network, clientCtx client.Context, creator, poolId, lpToken string, - extraArgs ...string) (testutil.BufferWriter, error) { + extraArgs ...string) *simapp.ResponseTx { args := []string{ poolId, lpToken, fmt.Sprintf("--%s=%s", flags.FlagFrom, creator), } args = append(args, extraArgs...) - - return clitestutil.ExecTestCLICmd(clientCtx, farmcli.GetCmdStake(), args) + return network.ExecTxCmdWithResult(t, clientCtx, farmcli.GetCmdStake(), args) } // UnstakeExec creates a redelegate message. -func UnstakeExec(clientCtx client.Context, +func UnstakeExec(t *testing.T, network simapp.Network, clientCtx client.Context, creator, poolId, lpToken string, - extraArgs ...string) (testutil.BufferWriter, error) { + extraArgs ...string) *simapp.ResponseTx { args := []string{ poolId, lpToken, fmt.Sprintf("--%s=%s", flags.FlagFrom, creator), } args = append(args, extraArgs...) - - return clitestutil.ExecTestCLICmd(clientCtx, farmcli.GetCmdUnstake(), args) + return network.ExecTxCmdWithResult(t, clientCtx, farmcli.GetCmdUnstake(), args) } // HarvestExec creates a redelegate message. -func HarvestExec(clientCtx client.Context, +func HarvestExec(t *testing.T, network simapp.Network, clientCtx client.Context, creator, poolId string, - extraArgs ...string) (testutil.BufferWriter, error) { + extraArgs ...string) *simapp.ResponseTx { args := []string{ poolId, fmt.Sprintf("--%s=%s", flags.FlagFrom, creator), } args = append(args, extraArgs...) - - return clitestutil.ExecTestCLICmd(clientCtx, farmcli.GetCmdHarvest(), args) + return network.ExecTxCmdWithResult(t, clientCtx, farmcli.GetCmdHarvest(), args) } // DestroyExec creates a redelegate message. -func DestroyExec(clientCtx client.Context, +func DestroyExec(t *testing.T, network simapp.Network, clientCtx client.Context, creator, poolId string, - extraArgs ...string) (testutil.BufferWriter, error) { + extraArgs ...string) *simapp.ResponseTx { args := []string{ poolId, fmt.Sprintf("--%s=%s", flags.FlagFrom, creator), } args = append(args, extraArgs...) - - return clitestutil.ExecTestCLICmd(clientCtx, farmcli.GetCmdDestroyFarmPool(), args) + return network.ExecTxCmdWithResult(t, clientCtx, farmcli.GetCmdDestroyFarmPool(), args) } // QueryFarmerExec creates a redelegate message. -func QueryFarmerExec(clientCtx client.Context, +func QueryFarmerExec(t *testing.T, network simapp.Network, clientCtx client.Context, creator string, - extraArgs ...string) (testutil.BufferWriter, error) { + extraArgs ...string) *farmtypes.QueryFarmerResponse { args := []string{ creator, fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - - return clitestutil.ExecTestCLICmd(clientCtx, farmcli.GetCmdQueryFarmer(), args) + response := &farmtypes.QueryFarmerResponse{} + network.ExecQueryCmd(t, clientCtx, farmcli.GetCmdQueryFarmer(), args, response) + return response } diff --git a/modules/farm/module.go b/modules/farm/module.go index fbde2a12..5b6ba62e 100644 --- a/modules/farm/module.go +++ b/modules/farm/module.go @@ -4,7 +4,6 @@ import ( "context" "encoding/json" "fmt" - "math/rand" "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" @@ -125,20 +124,6 @@ func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) { keeper.RegisterInvariants(ir, am.keeper) } -// Route returns the message routing key for the farm module. -func (am AppModule) Route() sdk.Route { - return sdk.NewRoute(types.RouterKey, NewHandler(am.keeper)) -} - -// QuerierRoute returns the farm module's querier route name. -func (AppModule) QuerierRoute() string { return types.RouterKey } - -// LegacyQuerierHandler returns the farm module sdk.Querier. -func (am AppModule) LegacyQuerierHandler(legacyQuerierCdc *codec.LegacyAmino) sdk.Querier { - // - return nil -} - // InitGenesis performs genesis initialization for the farm module. It returns // no validator updates. func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { @@ -175,16 +160,6 @@ func (AppModule) GenerateGenesisState(simState *module.SimulationState) { simulation.RandomizedGenState(simState) } -// ProposalContents doesn't return any content functions for governance proposals. -func (AppModule) ProposalContents(simState module.SimulationState) []simtypes.WeightedProposalContent { - return nil -} - -// RandomizedParams creates randomized farm param changes for the simulator. -func (AppModule) RandomizedParams(r *rand.Rand) []simtypes.ParamChange { - return nil -} - // RegisterStoreDecoder registers a decoder for farm module's types func (am AppModule) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry) { sdr[types.StoreKey] = simulation.NewDecodeStore(am.cdc) diff --git a/modules/farm/simulation/operations.go b/modules/farm/simulation/operations.go index 292e5ff9..6b17b0bf 100644 --- a/modules/farm/simulation/operations.go +++ b/modules/farm/simulation/operations.go @@ -4,10 +4,10 @@ import ( "errors" "math/rand" + simappparams "cosmossdk.io/simapp/params" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/simapp/helpers" - simappparams "github.com/cosmos/cosmos-sdk/simapp/params" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" @@ -170,12 +170,12 @@ func SimulateMsgCreatePool(k keeper.Keeper, ak types.AccountKeeper, bk types.Ban } txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -266,12 +266,12 @@ func SimulateMsgAdjustPool(k keeper.Keeper, ak types.AccountKeeper, bk types.Ban } txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -340,12 +340,12 @@ func SimulateMsgStake(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKeep } txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -414,12 +414,12 @@ func SimulateMsgUnStake(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKe } txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -472,12 +472,12 @@ func SimulateMsgHarvest(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKe } txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -542,12 +542,12 @@ func SimulateMsgDestroyPool(k keeper.Keeper, ak types.AccountKeeper, bk types.Ba } txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, diff --git a/modules/farm/types/farm.pb.go b/modules/farm/types/farm.pb.go index 78244d12..272d7924 100644 --- a/modules/farm/types/farm.pb.go +++ b/modules/farm/types/farm.pb.go @@ -7,8 +7,8 @@ import ( fmt "fmt" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" diff --git a/modules/farm/types/genesis.pb.go b/modules/farm/types/genesis.pb.go index 417a9673..a21f8f53 100644 --- a/modules/farm/types/genesis.pb.go +++ b/modules/farm/types/genesis.pb.go @@ -5,8 +5,8 @@ package types import ( fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" diff --git a/modules/farm/types/query.pb.go b/modules/farm/types/query.pb.go index 6b206caa..35b6bee5 100644 --- a/modules/farm/types/query.pb.go +++ b/modules/farm/types/query.pb.go @@ -9,9 +9,9 @@ import ( github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" query "github.com/cosmos/cosmos-sdk/types/query" - _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" diff --git a/modules/farm/types/tx.pb.go b/modules/farm/types/tx.pb.go index d56bd006..a50ec246 100644 --- a/modules/farm/types/tx.pb.go +++ b/modules/farm/types/tx.pb.go @@ -8,9 +8,9 @@ import ( fmt "fmt" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/modules/htlc/client/cli/cli_test.go b/modules/htlc/client/cli/cli_test.go index 2187345f..580a1442 100644 --- a/modules/htlc/client/cli/cli_test.go +++ b/modules/htlc/client/cli/cli_test.go @@ -7,15 +7,12 @@ import ( "testing" "time" - "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/suite" tmbytes "github.com/tendermint/tendermint/libs/bytes" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/testutil/network" sdk "github.com/cosmos/cosmos-sdk/types" - banktestutil "github.com/cosmos/cosmos-sdk/x/bank/client/testutil" htlccli "github.com/irisnet/irismod/modules/htlc/client/cli" htlctestutil "github.com/irisnet/irismod/modules/htlc/client/testutil" @@ -49,8 +46,7 @@ DDzEQAPXBQflzNW6wbne9IfT651zCSm+j1MWaGk= type IntegrationTestSuite struct { suite.Suite - cfg network.Config - network *network.Network + network simapp.Network } func c(denom string, amount int64) sdk.Coin { @@ -73,14 +69,7 @@ func (s *IntegrationTestSuite) SetupSuite() { Deputy, _ = sdk.AccAddressFromBech32(DEPUTY_ADDR) cfg.GenesisState[htlctypes.ModuleName] = cfg.Codec.MustMarshalJSON(NewHTLTGenesis(Deputy)) - - var err error - s.cfg = cfg - s.network, err = network.New(s.T(), s.T().TempDir(), cfg) - s.Require().NoError(err) - - _, err = s.network.WaitForHeight(1) - s.Require().NoError(err) + s.network = simapp.SetupNetworkWithConfig(s.T(), cfg) } func (s *IntegrationTestSuite) TearDownSuite() { @@ -93,26 +82,26 @@ func TestIntegrationTestSuite(t *testing.T) { } func (s *IntegrationTestSuite) TestHTLC() { - // --------------------------------------------------------------- - ctx := s.network.Validators[0].ClientCtx err := ctx.Keyring.ImportPrivKey("deputy", DeputyArmor, "1234567890") s.Require().NoError(err) args := []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType := proto.Message(&sdk.TxResponse{}) - expectedCode := uint32(0) - bz, err := banktestutil.MsgSendExec(ctx, s.network.Validators[0].Address, Deputy, cs(c(sdk.DefaultBondDenom, 50000000)), args...) - s.Require().NoError(err) - s.Require().NoError(ctx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp := respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + _ = simapp.MsgSendExec( + s.T(), + s.network, + ctx, + s.network.Validators[0].Address, + Deputy, + cs(c(sdk.DefaultBondDenom, 50000000)), + args..., + ) // --------------------------------------------------------------- @@ -194,18 +183,17 @@ func (s *IntegrationTestSuite) TestHTLC() { fmt.Sprintf("--%s=%s", htlccli.FlagTransfer, strconv.FormatBool(testCases[0].args.transfer)), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) - - bz, err = htlctestutil.CreateHTLCExec(ctx, testCases[0].args.sender.String(), args...) - s.Require().NoError(err) - s.Require().NoError(ctx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + txResult := htlctestutil.CreateHTLCExec( + s.T(), + s.network, + ctx, + testCases[0].args.sender.String(), + args..., + ) // --------------------------------------------------------------- @@ -219,47 +207,52 @@ func (s *IntegrationTestSuite) TestHTLC() { Secret: "", HashLock: tmbytes.HexBytes(htlctypes.GetHashLock(testCases[0].args.secret, testCases[0].args.timestamp)).String(), Timestamp: testCases[0].args.timestamp, - ExpirationHeight: uint64(txResp.Height) + testCases[0].args.timeLock, + ExpirationHeight: uint64(txResult.Height) + testCases[0].args.timeLock, State: htlctypes.Open, ClosedBlock: 0, Transfer: testCases[0].args.transfer, Direction: testCases[0].args.direction, } - respType = proto.Message(&htlctypes.HTLC{}) - bz, err = htlctestutil.QueryHTLCExec(ctx, expectedhtlc.Id) - s.Require().NoError(err) - s.Require().NoError(ctx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - htlcItem := respType.(*htlctypes.HTLC) - s.Require().Equal(expectedhtlc.String(), htlcItem.String()) + respType := htlctestutil.QueryHTLCExec( + s.T(), + s.network, + ctx, + expectedhtlc.Id, + ) + s.Require().Equal(expectedhtlc.String(), respType.String()) // --------------------------------------------------------------- args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - - bz, err = htlctestutil.ClaimHTLCExec(ctx, testCases[0].args.sender.String(), expectedhtlc.Id, testCases[0].args.secret.String(), args...) - s.Require().NoError(err) - s.Require().NoError(ctx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - - respType = proto.Message(&htlctypes.HTLC{}) - bz, err = htlctestutil.QueryHTLCExec(ctx, expectedhtlc.Id) - s.Require().NoError(err) - s.Require().NoError(ctx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - htlcItem = respType.(*htlctypes.HTLC) - s.Require().Equal(htlctypes.Completed.String(), htlcItem.State.String()) - - coinType := proto.Message(&sdk.Coin{}) - out, err := simapp.QueryBalanceExec(ctx, testCases[0].args.receiver.String(), sdk.DefaultBondDenom) - s.Require().NoError(err) - s.Require().NoError(ctx.Codec.UnmarshalJSON(out.Bytes(), coinType)) - balance := coinType.(*sdk.Coin) + txResult = htlctestutil.ClaimHTLCExec( + s.T(), + s.network, + ctx, + testCases[0].args.sender.String(), + expectedhtlc.Id, + testCases[0].args.secret.String(), + args..., + ) + + respType = htlctestutil.QueryHTLCExec( + s.T(), + s.network, + ctx, + expectedhtlc.Id, + ) + s.Require().Equal(htlctypes.Completed.String(), respType.State.String()) + + balance := simapp.QueryBalanceExec( + s.T(), + s.network, + ctx, testCases[0].args.receiver.String(), + sdk.DefaultBondDenom, + ) s.Require().Equal("400001000stake", balance.String()) // --------------------------------------------------------------- @@ -277,18 +270,17 @@ func (s *IntegrationTestSuite) TestHTLC() { fmt.Sprintf("--%s=%s", htlccli.FlagTransfer, strconv.FormatBool(testCases[1].args.transfer)), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) - - bz, err = htlctestutil.CreateHTLCExec(ctx, testCases[1].args.sender.String(), args...) - s.Require().NoError(err) - s.Require().NoError(ctx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + txResult = htlctestutil.CreateHTLCExec( + s.T(), + s.network, + ctx, + testCases[1].args.sender.String(), + args..., + ) // --------------------------------------------------------------- @@ -302,41 +294,45 @@ func (s *IntegrationTestSuite) TestHTLC() { Secret: "", HashLock: tmbytes.HexBytes(htlctypes.GetHashLock(testCases[1].args.secret, testCases[1].args.timestamp)).String(), Timestamp: testCases[1].args.timestamp, - ExpirationHeight: uint64(txResp.Height) + testCases[1].args.timeLock, + ExpirationHeight: uint64(txResult.Height) + testCases[1].args.timeLock, State: htlctypes.Open, ClosedBlock: 0, Transfer: testCases[1].args.transfer, Direction: testCases[1].args.direction, } - respType = proto.Message(&htlctypes.HTLC{}) - bz, err = htlctestutil.QueryHTLCExec(ctx, expectedhtlt.Id) - s.Require().NoError(err) - s.Require().NoError(ctx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - htltItem := respType.(*htlctypes.HTLC) - s.Require().Equal(expectedhtlt.String(), htltItem.String()) + respType = htlctestutil.QueryHTLCExec( + s.T(), + s.network, + ctx, + expectedhtlt.Id, + ) + s.Require().Equal(expectedhtlt.String(), respType.String()) // --------------------------------------------------------------- args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - - bz, err = htlctestutil.ClaimHTLCExec(ctx, testCases[1].args.sender.String(), expectedhtlt.Id, testCases[1].args.secret.String(), args...) - s.Require().NoError(err) - s.Require().NoError(ctx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - - respType = proto.Message(&htlctypes.HTLC{}) - bz, err = htlctestutil.QueryHTLCExec(ctx, expectedhtlc.Id) - s.Require().NoError(err) - s.Require().NoError(ctx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - htltItem = respType.(*htlctypes.HTLC) - s.Require().Equal(htlctypes.Completed.String(), htltItem.State.String()) + txResult = htlctestutil.ClaimHTLCExec( + s.T(), + s.network, + ctx, + testCases[1].args.sender.String(), + expectedhtlt.Id, + testCases[1].args.secret.String(), + args..., + ) + + respType = htlctestutil.QueryHTLCExec( + s.T(), + s.network, + ctx, + expectedhtlc.Id, + ) + s.Require().Equal(htlctypes.Completed.String(), respType.State.String()) // --------------------------------------------------------------- // HTLT OUTGOING @@ -353,18 +349,17 @@ func (s *IntegrationTestSuite) TestHTLC() { fmt.Sprintf("--%s=%s", htlccli.FlagTransfer, strconv.FormatBool(testCases[2].args.transfer)), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) - - bz, err = htlctestutil.CreateHTLCExec(ctx, testCases[2].args.sender.String(), args...) - s.Require().NoError(err) - s.Require().NoError(ctx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + txResult = htlctestutil.CreateHTLCExec( + s.T(), + s.network, + ctx, + testCases[2].args.sender.String(), + args..., + ) // --------------------------------------------------------------- @@ -378,41 +373,46 @@ func (s *IntegrationTestSuite) TestHTLC() { Secret: "", HashLock: tmbytes.HexBytes(htlctypes.GetHashLock(testCases[2].args.secret, testCases[2].args.timestamp)).String(), Timestamp: testCases[2].args.timestamp, - ExpirationHeight: uint64(txResp.Height) + testCases[2].args.timeLock, + ExpirationHeight: uint64(txResult.Height) + testCases[2].args.timeLock, State: htlctypes.Open, ClosedBlock: 0, Transfer: testCases[2].args.transfer, Direction: testCases[2].args.direction, } - respType = proto.Message(&htlctypes.HTLC{}) - bz, err = htlctestutil.QueryHTLCExec(ctx, expectedhtlt.Id) - s.Require().NoError(err) - s.Require().NoError(ctx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - htltItem = respType.(*htlctypes.HTLC) - s.Require().Equal(expectedhtlt.String(), htltItem.String()) + + respType = htlctestutil.QueryHTLCExec( + s.T(), + s.network, + ctx, + expectedhtlc.Id, + ) + s.Require().Equal(htlctypes.Completed.String(), respType.State.String()) // --------------------------------------------------------------- args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - - bz, err = htlctestutil.ClaimHTLCExec(ctx, testCases[2].args.sender.String(), expectedhtlt.Id, testCases[2].args.secret.String(), args...) - s.Require().NoError(err) - s.Require().NoError(ctx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - - respType = proto.Message(&htlctypes.HTLC{}) - bz, err = htlctestutil.QueryHTLCExec(ctx, expectedhtlc.Id) - s.Require().NoError(err) - s.Require().NoError(ctx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - htltItem = respType.(*htlctypes.HTLC) - s.Require().Equal(htlctypes.Completed.String(), htltItem.State.String()) + txResult = htlctestutil.ClaimHTLCExec( + s.T(), + s.network, + ctx, + testCases[2].args.sender.String(), + expectedhtlt.Id, + testCases[2].args.secret.String(), + args..., + ) + + respType = htlctestutil.QueryHTLCExec( + s.T(), + s.network, + ctx, + expectedhtlc.Id, + ) + s.Require().Equal(htlctypes.Completed.String(), respType.State.String()) // --------------------------------------------------------------- } diff --git a/modules/htlc/client/testutil/grpc_query_test.go b/modules/htlc/client/testutil/grpc_query_test.go index 7b3e9b9f..e9e0cce3 100644 --- a/modules/htlc/client/testutil/grpc_query_test.go +++ b/modules/htlc/client/testutil/grpc_query_test.go @@ -4,13 +4,11 @@ import ( "fmt" "testing" - "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/suite" "github.com/tendermint/tendermint/crypto" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/testutil/network" sdk "github.com/cosmos/cosmos-sdk/types" htlccli "github.com/irisnet/irismod/modules/htlc/client/cli" @@ -21,24 +19,13 @@ import ( type IntegrationTestSuite struct { suite.Suite - cfg network.Config - network *network.Network + network simapp.Network } func (s *IntegrationTestSuite) SetupSuite() { s.T().Log("setting up integration test suite") - cfg := simapp.NewConfig() - cfg.NumValidators = 1 - - s.cfg = cfg - - var err error - s.network, err = network.New(s.T(), s.T().TempDir(), cfg) - s.Require().NoError(err) - - _, err = s.network.WaitForHeight(1) - s.Require().NoError(err) + s.network = simapp.SetupNetwork(s.T()) } func (s *IntegrationTestSuite) TearDownSuite() { @@ -73,30 +60,15 @@ func (s *IntegrationTestSuite) TestHtlc() { fmt.Sprintf("--%s=%d", htlccli.FlagTimestamp, timestamp), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType := proto.Message(&sdk.TxResponse{}) - expectedCode := uint32(0) - - bz, err := htlctestutil.CreateHTLCExec(val.ClientCtx, from.String(), args...) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp := respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - - //------test GetCmdQueryHTLC()------------- - //url := fmt.Sprintf("%s/irismod/htlc/htlcs/%s", baseURL, hashLock) - //resp, err := rest.GetRequest(url) - //respType = proto.Message(&htlctypes.QueryHTLCResponse{}) - //s.Require().NoError(err) - //s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, respType)) - //htlcResp := respType.(*htlctypes.QueryHTLCResponse) - //s.Require().Equal(amount, htlcResp.Htlc.Amount.String()) - //s.Require().Equal(from.String(), htlcResp.Htlc.Sender) - //s.Require().Equal(to.String(), htlcResp.Htlc.To) - //s.Require().Equal(receiverOnOtherChain, htlcResp.Htlc.ReceiverOnOtherChain) - //s.Require().Equal(timestamp, htlcResp.Htlc.Timestamp) - //s.Require().Equal(stateOpen, htlcResp.Htlc.State.String()) + _ = htlctestutil.CreateHTLCExec( + s.T(), + s.network, + val.ClientCtx, + from.String(), + args..., + ) } diff --git a/modules/htlc/client/testutil/test_helpers.go b/modules/htlc/client/testutil/test_helpers.go index 95621e0e..3c5e1ea0 100644 --- a/modules/htlc/client/testutil/test_helpers.go +++ b/modules/htlc/client/testutil/test_helpers.go @@ -2,44 +2,58 @@ package testutil import ( "fmt" + "testing" "github.com/tendermint/tendermint/libs/cli" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/testutil" - clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" htlccli "github.com/irisnet/irismod/modules/htlc/client/cli" + htlctypes "github.com/irisnet/irismod/modules/htlc/types" + "github.com/irisnet/irismod/simapp" ) // MsgRedelegateExec creates a redelegate message. -func CreateHTLCExec(clientCtx client.Context, from string, extraArgs ...string) (testutil.BufferWriter, error) { +func CreateHTLCExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + extraArgs ...string) *simapp.ResponseTx { args := []string{ fmt.Sprintf("--%s=%s", flags.FlagFrom, from), } args = append(args, extraArgs...) - - return clitestutil.ExecTestCLICmd(clientCtx, htlccli.GetCmdCreateHTLC(), args) + return network.ExecTxCmdWithResult(t, clientCtx, htlccli.GetCmdCreateHTLC(), args) } -func ClaimHTLCExec(clientCtx client.Context, from string, id string, secret string, extraArgs ...string) (testutil.BufferWriter, error) { +func ClaimHTLCExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + id string, + secret string, + extraArgs ...string) *simapp.ResponseTx { args := []string{ id, secret, fmt.Sprintf("--%s=%s", flags.FlagFrom, from), } args = append(args, extraArgs...) - - return clitestutil.ExecTestCLICmd(clientCtx, htlccli.GetCmdClaimHTLC(), args) + return network.ExecTxCmdWithResult(t, clientCtx, htlccli.GetCmdClaimHTLC(), args) } -func QueryHTLCExec(clientCtx client.Context, id string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryHTLCExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + id string, + extraArgs ...string) *htlctypes.HTLC { args := []string{ id, fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - - return clitestutil.ExecTestCLICmd(clientCtx, htlccli.GetCmdQueryHTLC(), args) + response := &htlctypes.HTLC{} + network.ExecQueryCmd(t, clientCtx, htlccli.GetCmdQueryHTLC(), args, response) + return response } diff --git a/modules/htlc/keeper/querier.go b/modules/htlc/keeper/querier.go deleted file mode 100644 index 213cf9d2..00000000 --- a/modules/htlc/keeper/querier.go +++ /dev/null @@ -1,93 +0,0 @@ -package keeper - -import ( - abci "github.com/tendermint/tendermint/abci/types" - - "github.com/cosmos/cosmos-sdk/codec" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - - "github.com/irisnet/irismod/modules/htlc/types" -) - -// NewQuerier creates a new HTLC Querier instance -func NewQuerier(k Keeper, legacyQuerierCdc *codec.LegacyAmino) sdk.Querier { - return func(ctx sdk.Context, path []string, req abci.RequestQuery) ([]byte, error) { - switch path[0] { - case types.QueryHTLC: - return queryHTLC(ctx, req, k, legacyQuerierCdc) - case types.QueryAssetSupply: - return queryAssetSupply(ctx, req, k, legacyQuerierCdc) - case types.QueryAssetSupplies: - return queryAssetSupplies(ctx, k, legacyQuerierCdc) - case types.QueryParameters: - return queryParams(ctx, k, legacyQuerierCdc) - - default: - return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unknown %s query path: %s", types.ModuleName, path[0]) - } - } -} - -func queryHTLC(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - var params types.QueryHTLCParams - if err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms); err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) - } - - htlc, found := k.GetHTLC(ctx, params.ID) - if !found { - return nil, sdkerrors.Wrap(types.ErrUnknownHTLC, params.ID.String()) - } - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, htlc) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} - -func queryAssetSupply(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - var requestParams types.QueryAssetSupplyParams - if err := legacyQuerierCdc.UnmarshalJSON(req.Data, &requestParams); err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) - } - - assetSupply, found := k.GetAssetSupply(ctx, requestParams.Denom) - if !found { - return nil, sdkerrors.Wrap(types.ErrAssetSupplyNotFound, string(requestParams.Denom)) - } - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, assetSupply) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} - -func queryAssetSupplies(ctx sdk.Context, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - assets := k.GetAllAssetSupplies(ctx) - if assets == nil { - assets = []types.AssetSupply{} - } - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, assets) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} - -func queryParams(ctx sdk.Context, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - params := k.GetParams(ctx) - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, params) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} diff --git a/modules/htlc/module.go b/modules/htlc/module.go index ca971160..54bb656e 100644 --- a/modules/htlc/module.go +++ b/modules/htlc/module.go @@ -4,7 +4,6 @@ import ( "context" "encoding/json" "fmt" - "math/rand" "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" @@ -117,19 +116,6 @@ func (am AppModule) RegisterServices(cfg module.Configurator) { // RegisterInvariants registers the HTLC module invariants. func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {} -// Route returns the message routing key for the HTLC module. -func (am AppModule) Route() sdk.Route { - return sdk.NewRoute(types.RouterKey, NewHandler(am.keeper)) -} - -// QuerierRoute returns the HTLC module's querier route name. -func (AppModule) QuerierRoute() string { return types.RouterKey } - -// LegacyQuerierHandler returns the HTLC module sdk.Querier. -func (am AppModule) LegacyQuerierHandler(legacyQuerierCdc *codec.LegacyAmino) sdk.Querier { - return keeper.NewQuerier(am.keeper, legacyQuerierCdc) -} - // InitGenesis performs genesis initialization for the HTLC module. It returns // no validator updates. func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { @@ -167,16 +153,6 @@ func (AppModule) GenerateGenesisState(simState *module.SimulationState) { simulation.RandomizedGenState(simState) } -// ProposalContents doesn't return any content functions for governance proposals. -func (AppModule) ProposalContents(_ module.SimulationState) []simtypes.WeightedProposalContent { - return nil -} - -// RandomizedParams creates randomized HTLC param changes for the simulator. -func (AppModule) RandomizedParams(r *rand.Rand) []simtypes.ParamChange { - return nil -} - // RegisterStoreDecoder registers a decoder for HTLC module's types func (am AppModule) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry) { sdr[types.StoreKey] = simulation.NewDecodeStore(am.cdc) diff --git a/modules/htlc/simulation/operation.go b/modules/htlc/simulation/operation.go index ff32eb37..ebbd84d5 100644 --- a/modules/htlc/simulation/operation.go +++ b/modules/htlc/simulation/operation.go @@ -7,10 +7,10 @@ import ( tmbytes "github.com/tendermint/tendermint/libs/bytes" + simappparams "cosmossdk.io/simapp/params" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/simapp/helpers" - simappparams "github.com/cosmos/cosmos-sdk/simapp/params" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" @@ -104,12 +104,12 @@ func SimulateMsgCreateHtlc(k keeper.Keeper, ak types.AccountKeeper, bk types.Ban } txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -162,12 +162,12 @@ func SimulateMsgClaimHtlc(k keeper.Keeper, ak types.AccountKeeper, bk types.Bank } txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, diff --git a/modules/htlc/types/genesis.pb.go b/modules/htlc/types/genesis.pb.go index 8876c519..ace67c07 100644 --- a/modules/htlc/types/genesis.pb.go +++ b/modules/htlc/types/genesis.pb.go @@ -5,9 +5,9 @@ package types import ( fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + github_com_cosmos_gogoproto_types "github.com/cosmos/gogoproto/types" _ "google.golang.org/protobuf/types/known/timestamppb" io "io" math "math" @@ -148,7 +148,7 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - n1, err1 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.PreviousBlockTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.PreviousBlockTime):]) + n1, err1 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.PreviousBlockTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.PreviousBlockTime):]) if err1 != nil { return 0, err1 } @@ -228,7 +228,7 @@ func (m *GenesisState) Size() (n int) { n += 1 + l + sovGenesis(uint64(l)) } } - l = github_com_gogo_protobuf_types.SizeOfStdTime(m.PreviousBlockTime) + l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.PreviousBlockTime) n += 1 + l + sovGenesis(uint64(l)) return n } @@ -398,7 +398,7 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.PreviousBlockTime, dAtA[iNdEx:postIndex]); err != nil { + if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.PreviousBlockTime, dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex diff --git a/modules/htlc/types/htlc.pb.go b/modules/htlc/types/htlc.pb.go index 8954f644..dfb6dc42 100644 --- a/modules/htlc/types/htlc.pb.go +++ b/modules/htlc/types/htlc.pb.go @@ -7,9 +7,9 @@ import ( fmt "fmt" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + github_com_cosmos_gogoproto_types "github.com/cosmos/gogoproto/types" _ "google.golang.org/protobuf/types/known/durationpb" io "io" math "math" @@ -718,7 +718,7 @@ func (m *AssetSupply) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - n1, err1 := github_com_gogo_protobuf_types.StdDurationMarshalTo(m.TimeElapsed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdDuration(m.TimeElapsed):]) + n1, err1 := github_com_cosmos_gogoproto_types.StdDurationMarshalTo(m.TimeElapsed, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdDuration(m.TimeElapsed):]) if err1 != nil { return 0, err1 } @@ -933,7 +933,7 @@ func (m *SupplyLimit) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x22 - n7, err7 := github_com_gogo_protobuf_types.StdDurationMarshalTo(m.TimePeriod, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdDuration(m.TimePeriod):]) + n7, err7 := github_com_cosmos_gogoproto_types.StdDurationMarshalTo(m.TimePeriod, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdDuration(m.TimePeriod):]) if err7 != nil { return 0, err7 } @@ -1050,7 +1050,7 @@ func (m *AssetSupply) Size() (n int) { n += 1 + l + sovHtlc(uint64(l)) l = m.TimeLimitedCurrentSupply.Size() n += 1 + l + sovHtlc(uint64(l)) - l = github_com_gogo_protobuf_types.SizeOfStdDuration(m.TimeElapsed) + l = github_com_cosmos_gogoproto_types.SizeOfStdDuration(m.TimeElapsed) n += 1 + l + sovHtlc(uint64(l)) return n } @@ -1115,7 +1115,7 @@ func (m *SupplyLimit) Size() (n int) { if m.TimeLimited { n += 2 } - l = github_com_gogo_protobuf_types.SizeOfStdDuration(m.TimePeriod) + l = github_com_cosmos_gogoproto_types.SizeOfStdDuration(m.TimePeriod) n += 1 + l + sovHtlc(uint64(l)) l = m.TimeBasedLimit.Size() n += 1 + l + sovHtlc(uint64(l)) @@ -1741,7 +1741,7 @@ func (m *AssetSupply) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := github_com_gogo_protobuf_types.StdDurationUnmarshal(&m.TimeElapsed, dAtA[iNdEx:postIndex]); err != nil { + if err := github_com_cosmos_gogoproto_types.StdDurationUnmarshal(&m.TimeElapsed, dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -2269,7 +2269,7 @@ func (m *SupplyLimit) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := github_com_gogo_protobuf_types.StdDurationUnmarshal(&m.TimePeriod, dAtA[iNdEx:postIndex]); err != nil { + if err := github_com_cosmos_gogoproto_types.StdDurationUnmarshal(&m.TimePeriod, dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex diff --git a/modules/htlc/types/query.pb.go b/modules/htlc/types/query.pb.go index e53662e7..d5b9b027 100644 --- a/modules/htlc/types/query.pb.go +++ b/modules/htlc/types/query.pb.go @@ -6,9 +6,9 @@ package types import ( context "context" fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" diff --git a/modules/htlc/types/tx.pb.go b/modules/htlc/types/tx.pb.go index cb079eba..8b4d40cc 100644 --- a/modules/htlc/types/tx.pb.go +++ b/modules/htlc/types/tx.pb.go @@ -8,9 +8,9 @@ import ( fmt "fmt" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/modules/mt/client/cli/cli_test.go b/modules/mt/client/cli/cli_test.go index 608f9b38..156c6044 100644 --- a/modules/mt/client/cli/cli_test.go +++ b/modules/mt/client/cli/cli_test.go @@ -4,14 +4,11 @@ import ( "fmt" "testing" - "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/suite" - "github.com/tidwall/gjson" "github.com/tendermint/tendermint/crypto" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/testutil/network" sdk "github.com/cosmos/cosmos-sdk/types" mtcli "github.com/irisnet/irismod/modules/mt/client/cli" @@ -23,24 +20,13 @@ import ( type IntegrationTestSuite struct { suite.Suite - cfg network.Config - network *network.Network + network simapp.Network } func (s *IntegrationTestSuite) SetupSuite() { s.T().Log("setting up integration test suite") - cfg := simapp.NewConfig() - cfg.NumValidators = 2 - - s.cfg = cfg - - var err error - s.network, err = network.New(s.T(), s.T().TempDir(), cfg) - s.Require().NoError(err) - - _, err = s.network.WaitForHeight(1) - s.Require().NoError(err) + s.network = simapp.SetupNetwork(s.T()) } func (s *IntegrationTestSuite) TearDownSuite() { @@ -55,6 +41,7 @@ func TestIntegrationTestSuite(t *testing.T) { func (s *IntegrationTestSuite) TestMT() { val := s.network.Validators[0] val2 := s.network.Validators[1] + clientCtx := val.ClientCtx // --------------------------------------------------------------------------- denomName := "name" @@ -64,44 +51,36 @@ func (s *IntegrationTestSuite) TestMT() { transferAmt := "5" burnAmt := "5" + expectedCode := uint32(0) + //------test GetCmdIssueDenom()------------- args := []string{ fmt.Sprintf("--%s=%s", mtcli.FlagName, denomName), fmt.Sprintf("--%s=%s", mtcli.FlagData, data), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType := proto.Message(&sdk.TxResponse{}) - expectedCode := uint32(0) - - bz, err := mttestutil.IssueDenomExec(val.ClientCtx, from.String(), args...) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp := respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - - denomID := gjson.Get(txResp.RawLog, "0.events.0.attributes.0.value").String() + txResult := mttestutil.IssueDenomExec( + s.T(), + s.network, + clientCtx, + from.String(), + args..., + ) + denomID := s.network.GetAttribute(mttypes.EventTypeIssueDenom, mttypes.AttributeKeyDenomID, txResult.Events) //------test GetCmdQueryDenom()------------- - respType = proto.Message(&mttypes.Denom{}) - bz, err = mttestutil.QueryDenomExec(val.ClientCtx, denomID) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - denomItem := respType.(*mttypes.Denom) - s.Require().Equal(denomName, denomItem.Name) - s.Require().Equal([]byte(data), denomItem.Data) + queryDenomRespType := mttestutil.QueryDenomExec(s.T(), s.network, clientCtx, denomID) + s.Require().Equal(denomName, queryDenomRespType.Name) + s.Require().Equal([]byte(data), queryDenomRespType.Data) //------test GetCmdQueryDenoms()------------- - respType = proto.Message(&mttypes.QueryDenomsResponse{}) - bz, err = mttestutil.QueryDenomsExec(val.ClientCtx) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - denomsResp := respType.(*mttypes.QueryDenomsResponse) - s.Require().Equal(1, len(denomsResp.Denoms)) - s.Require().Equal(denomID, denomsResp.Denoms[0].Id) + queryDenomsRespType := mttestutil.QueryDenomsExec(s.T(), s.network, clientCtx) + s.Require().Equal(1, len(queryDenomsRespType.Denoms)) + s.Require().Equal(denomID, queryDenomsRespType.Denoms[0].Id) //------test GetCmdMintMT()------------- args = []string{ @@ -109,43 +88,24 @@ func (s *IntegrationTestSuite) TestMT() { fmt.Sprintf("--%s=%s", mtcli.FlagAmount, mintAmt), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(100))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(100))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - - bz, err = mttestutil.MintMTExec(val.ClientCtx, from.String(), denomID, args...) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - - respType = proto.Message(&mttypes.QueryMTsResponse{}) - bz, err = mttestutil.QueryMTsExec(val.ClientCtx, denomID) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - mtsResp := respType.(*mttypes.QueryMTsResponse) - s.Require().Equal(1, len(mtsResp.Mts)) - - mtID := mtsResp.Mts[0].Id + txResult = mttestutil.MintMTExec(s.T(), + s.network, + clientCtx, from.String(), denomID, args...) + s.Require().Equal(expectedCode, txResult.Code) + mtID := s.network.GetAttribute(mttypes.EventTypeMintMT, mttypes.AttributeKeyMTID, txResult.Events) //------test GetCmdQueryMT()------------- - respType = proto.Message(&mttypes.MT{}) - bz, err = mttestutil.QueryMTExec(val.ClientCtx, denomID, mtID) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - mtItem := respType.(*mttypes.MT) - s.Require().Equal(mtID, mtItem.Id) + queryMTResponse := mttestutil.QueryMTExec(s.T(), s.network, clientCtx, denomID, mtID) + s.Require().Equal(mtID, queryMTResponse.Id) //-------test GetCmdQueryBalances()---------- - respType = proto.Message(&mttypes.QueryBalancesResponse{}) - bz, err = mttestutil.QueryBlancesExec(val.ClientCtx, from.String(), denomID) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - balancesItem := respType.(*mttypes.QueryBalancesResponse) - s.Require().Equal(1, len(balancesItem.Balance)) - s.Require().Equal(uint64(10), balancesItem.Balance[0].Amount) + queryBalancesResponse := mttestutil.QueryBlancesExec(s.T(), s.network, clientCtx, from.String(), denomID) + s.Require().Equal(1, len(queryBalancesResponse.Balance)) + s.Require().Equal(uint64(10), queryBalancesResponse.Balance[0].Amount) //------test GetCmdEditMT()------------- newTokenDate := "newdata" @@ -153,94 +113,66 @@ func (s *IntegrationTestSuite) TestMT() { fmt.Sprintf("--%s=%s", mtcli.FlagData, newTokenDate), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - - bz, err = mttestutil.EditMTExec(val.ClientCtx, from.String(), denomID, mtID, args...) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + txResult = mttestutil.EditMTExec(s.T(), + s.network, + clientCtx, from.String(), denomID, mtID, args...) + s.Require().Equal(expectedCode, txResult.Code) - respType = proto.Message(&mttypes.MT{}) - bz, err = mttestutil.QueryMTExec(val.ClientCtx, denomID, mtID) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - newMTItem := respType.(*mttypes.MT) - s.Require().Equal([]byte(newTokenDate), newMTItem.Data) + queryMTResponse = mttestutil.QueryMTExec(s.T(), s.network, clientCtx, denomID, mtID) + s.Require().Equal([]byte(newTokenDate), queryMTResponse.Data) //------test GetCmdTransferMT()------------- recipient := sdk.AccAddress(crypto.AddressHash([]byte("dgsbl"))) args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) + txResult = mttestutil.TransferMTExec(s.T(), + s.network, + clientCtx, from.String(), recipient.String(), denomID, mtID, transferAmt, args...) + s.Require().Equal(expectedCode, txResult.Code) - bz, err = mttestutil.TransferMTExec(val.ClientCtx, from.String(), recipient.String(), denomID, mtID, transferAmt, args...) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - - respType = proto.Message(&mttypes.MT{}) - bz, err = mttestutil.QueryMTExec(val.ClientCtx, denomID, mtID) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - mtItem = respType.(*mttypes.MT) - s.Require().Equal(mtID, mtItem.Id) - s.Require().Equal([]byte(newTokenDate), mtItem.Data) + queryMTResponse = mttestutil.QueryMTExec(s.T(), s.network, clientCtx, denomID, mtID) + s.Require().Equal(mtID, queryMTResponse.Id) + s.Require().Equal([]byte(newTokenDate), queryMTResponse.Data) //------test GetCmdBurnMT()------------- args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - - bz, err = mttestutil.BurnMTExec(val.ClientCtx, from.String(), denomID, mtID, burnAmt, args...) - s.Require().NoError(err) - s.Require().NoError(val2.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + txResult = mttestutil.BurnMTExec(s.T(), + s.network, + clientCtx, from.String(), denomID, mtID, burnAmt, args...) + s.Require().Equal(expectedCode, txResult.Code) - respType = proto.Message(&mttypes.MT{}) - bz, err = mttestutil.QueryMTExec(val.ClientCtx, denomID, mtID) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - mtItem2 := respType.(*mttypes.MT) - s.Require().Equal(mtID, mtItem2.Id) - s.Require().Equal([]byte(newTokenDate), mtItem2.Data) - s.Require().Equal(uint64(5), mtItem2.Supply) + queryMTResponse = mttestutil.QueryMTExec(s.T(), s.network, clientCtx, denomID, mtID) + s.Require().Equal(mtID, queryMTResponse.Id) + s.Require().Equal([]byte(newTokenDate), queryMTResponse.Data) + s.Require().Equal(uint64(5), queryMTResponse.Supply) //------test GetCmdTransferDenom()------------- args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - - bz, err = mttestutil.TransferDenomExec(val.ClientCtx, from.String(), val2.Address.String(), denomID, args...) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - - respType = proto.Message(&mttypes.Denom{}) - bz, err = mttestutil.QueryDenomExec(val.ClientCtx, denomID) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - denomItem2 := respType.(*mttypes.Denom) - s.Require().Equal(val2.Address.String(), denomItem2.Owner) - s.Require().Equal(denomName, denomItem2.Name) + txResult = mttestutil.TransferDenomExec(s.T(), + s.network, + clientCtx, from.String(), val2.Address.String(), denomID, args...) + s.Require().Equal(expectedCode, txResult.Code) + + queryDenomResponse := mttestutil.QueryDenomExec(s.T(), s.network, clientCtx, denomID) + s.Require().Equal(val2.Address.String(), queryDenomResponse.Owner) + s.Require().Equal(denomName, queryDenomResponse.Name) } diff --git a/modules/mt/client/testutil/grpc_query_test.go b/modules/mt/client/testutil/grpc_query_test.go index 52c23ec0..b6949518 100644 --- a/modules/mt/client/testutil/grpc_query_test.go +++ b/modules/mt/client/testutil/grpc_query_test.go @@ -2,18 +2,16 @@ package testutil_test import ( "fmt" - "github.com/cosmos/cosmos-sdk/testutil/rest" "testing" "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/testutil" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/gogo/protobuf/proto" mtcli "github.com/irisnet/irismod/modules/mt/client/cli" mttestutil "github.com/irisnet/irismod/modules/mt/client/testutil" mttypes "github.com/irisnet/irismod/modules/mt/types" - "github.com/tidwall/gjson" - "github.com/cosmos/cosmos-sdk/testutil/network" "github.com/irisnet/irismod/simapp" "github.com/stretchr/testify/suite" ) @@ -21,24 +19,11 @@ import ( type IntegrationTestSuite struct { suite.Suite - cfg network.Config - network *network.Network + network simapp.Network } func (s *IntegrationTestSuite) SetupSuite() { - s.T().Log("setting up integration test suite") - - cfg := simapp.NewConfig() - cfg.NumValidators = 2 - - s.cfg = cfg - - var err error - s.network, err = network.New(s.T(), s.T().TempDir(), cfg) - s.Require().NoError(err) - - _, err = s.network.WaitForHeight(1) - s.Require().NoError(err) + s.network = simapp.SetupNetwork(s.T()) } func (s *IntegrationTestSuite) TearDownSuite() { @@ -64,6 +49,7 @@ func (s *IntegrationTestSuite) TestMT() { baseURL := val.APIAddress expectedCode := uint32(0) + clientCtx := val.ClientCtx // Issue args := []string{ @@ -71,17 +57,18 @@ func (s *IntegrationTestSuite) TestMT() { fmt.Sprintf("--%s=%s", mtcli.FlagData, data), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - - respType := proto.Message(&sdk.TxResponse{}) - bz, err := mttestutil.IssueDenomExec(val.ClientCtx, from.String(), args...) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp := respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - denomID = gjson.Get(txResp.RawLog, "0.events.0.attributes.0.value").String() + txResult := mttestutil.IssueDenomExec( + s.T(), + s.network, + clientCtx, + from.String(), + args..., + ) + s.Require().Equal(expectedCode, txResult.Code) + denomID = s.network.GetAttribute(mttypes.EventTypeIssueDenom, mttypes.AttributeKeyDenomID, txResult.Events) // Mint args = []string{ @@ -89,22 +76,21 @@ func (s *IntegrationTestSuite) TestMT() { fmt.Sprintf("--%s=%s", mtcli.FlagAmount, mintAmt), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(100))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(100))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - bz, err = mttestutil.MintMTExec(val.ClientCtx, from.String(), denomID, args...) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - mtID = gjson.Get(txResp.RawLog, "0.events.1.attributes.0.value").String() + txResult = mttestutil.MintMTExec(s.T(), + s.network, + clientCtx, from.String(), denomID, args...) + s.Require().Equal(expectedCode, txResult.Code) + + mtID = s.network.GetAttribute(mttypes.EventTypeMintMT, mttypes.AttributeKeyMTID, txResult.Events) //Denom - respType = proto.Message(&mttypes.QueryDenomResponse{}) + respType := proto.Message(&mttypes.QueryDenomResponse{}) url := fmt.Sprintf("%s/irismod/mt/denoms/%s", baseURL, denomID) - resp, err := rest.GetRequest(url) + resp, err := testutil.GetRequest(url) s.Require().NoError(err) s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, respType)) @@ -116,7 +102,7 @@ func (s *IntegrationTestSuite) TestMT() { //Denoms respType = proto.Message(&mttypes.QueryDenomsResponse{}) url = fmt.Sprintf("%s/irismod/mt/denoms", baseURL) - resp, err = rest.GetRequest(url) + resp, err = testutil.GetRequest(url) s.Require().NoError(err) s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, respType)) @@ -128,7 +114,7 @@ func (s *IntegrationTestSuite) TestMT() { //MTSupply respType = proto.Message(&mttypes.QueryMTSupplyResponse{}) url = fmt.Sprintf("%s/irismod/mt/mts/%s/%s/supply", baseURL, denomID, mtID) - resp, err = rest.GetRequest(url) + resp, err = testutil.GetRequest(url) s.Require().NoError(err) s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, respType)) @@ -138,7 +124,7 @@ func (s *IntegrationTestSuite) TestMT() { //MT respType = proto.Message(&mttypes.QueryMTResponse{}) url = fmt.Sprintf("%s/irismod/mt/mts/%s/%s", baseURL, denomID, mtID) - resp, err = rest.GetRequest(url) + resp, err = testutil.GetRequest(url) s.Require().NoError(err) s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, respType)) @@ -148,7 +134,7 @@ func (s *IntegrationTestSuite) TestMT() { //MTs respType = proto.Message(&mttypes.QueryMTsResponse{}) url = fmt.Sprintf("%s/irismod/mt/mts/%s", baseURL, denomID) - resp, err = rest.GetRequest(url) + resp, err = testutil.GetRequest(url) s.Require().NoError(err) s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, respType)) diff --git a/modules/mt/client/testutil/test_helpers.go b/modules/mt/client/testutil/test_helpers.go index 57651e05..2d52e779 100644 --- a/modules/mt/client/testutil/test_helpers.go +++ b/modules/mt/client/testutil/test_helpers.go @@ -2,28 +2,44 @@ package testutil import ( "fmt" + "testing" + "github.com/gogo/protobuf/proto" "github.com/tendermint/tendermint/libs/cli" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/testutil" - clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" mtcli "github.com/irisnet/irismod/modules/mt/client/cli" + mttypes "github.com/irisnet/irismod/modules/mt/types" + "github.com/irisnet/irismod/simapp" ) // IssueDenomExec creates a redelegate message. -func IssueDenomExec(clientCtx client.Context, from string, extraArgs ...string) (testutil.BufferWriter, error) { +func IssueDenomExec( + t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ fmt.Sprintf("--%s=%s", flags.FlagFrom, from), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, mtcli.GetCmdIssueDenom(), args) + return network.ExecTxCmdWithResult(t, clientCtx, mtcli.GetCmdIssueDenom(), args) } -func BurnMTExec(clientCtx client.Context, from string, denomID string, mtID string, amount string, extraArgs ...string) (testutil.BufferWriter, error) { +func BurnMTExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + denomID string, + mtID string, + amount string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ denomID, mtID, @@ -32,20 +48,33 @@ func BurnMTExec(clientCtx client.Context, from string, denomID string, mtID stri } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, mtcli.GetCmdBurnMT(), args) + return network.ExecTxCmdWithResult(t, clientCtx, mtcli.GetCmdBurnMT(), args) } -func MintMTExec(clientCtx client.Context, from string, denomID string, extraArgs ...string) (testutil.BufferWriter, error) { +func MintMTExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + denomID string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ denomID, fmt.Sprintf("--%s=%s", flags.FlagFrom, from), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, mtcli.GetCmdMintMT(), args) + return network.ExecTxCmdWithResult(t, clientCtx, mtcli.GetCmdMintMT(), args) } -func EditMTExec(clientCtx client.Context, from string, denomID string, mtID string, extraArgs ...string) (testutil.BufferWriter, error) { +func EditMTExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + denomID string, + mtID string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ denomID, mtID, @@ -53,10 +82,19 @@ func EditMTExec(clientCtx client.Context, from string, denomID string, mtID stri } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, mtcli.GetCmdEditMT(), args) + return network.ExecTxCmdWithResult(t, clientCtx, mtcli.GetCmdEditMT(), args) } -func TransferMTExec(clientCtx client.Context, from string, recipient string, denomID string, mtID string, amount string, extraArgs ...string) (testutil.BufferWriter, error) { +func TransferMTExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + recipient string, + denomID string, + mtID string, + amount string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ from, recipient, @@ -66,50 +104,78 @@ func TransferMTExec(clientCtx client.Context, from string, recipient string, den } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, mtcli.GetCmdTransferMT(), args) + return network.ExecTxCmdWithResult(t, clientCtx, mtcli.GetCmdTransferMT(), args) } -func QueryDenomExec(clientCtx client.Context, denomID string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryDenomExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + denomID string, + extraArgs ...string) *mttypes.Denom { args := []string{ denomID, fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, mtcli.GetCmdQueryDenom(), args) + response := &mttypes.Denom{} + network.ExecQueryCmd(t, clientCtx, mtcli.GetCmdQueryDenom(), args, response) + return response } -func QueryDenomsExec(clientCtx client.Context, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryDenomsExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + extraArgs ...string) *mttypes.QueryDenomsResponse { args := []string{ fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, mtcli.GetCmdQueryDenoms(), args) + response := &mttypes.QueryDenomsResponse{} + network.ExecQueryCmd(t, clientCtx, mtcli.GetCmdQueryDenoms(), args, response) + return response } -func QueryMTsExec(clientCtx client.Context, denomID string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryMTsExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + denomID string, + resp proto.Message, + extraArgs ...string, +) { args := []string{ denomID, fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, mtcli.GetCmdQueryMTs(), args) + network.ExecQueryCmd(t, clientCtx, mtcli.GetCmdQueryMTs(), args, resp) } -func QueryMTExec(clientCtx client.Context, denomID string, mtID string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryMTExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + denomID string, + mtID string, + extraArgs ...string) *mttypes.MT { args := []string{ denomID, mtID, fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - - return clitestutil.ExecTestCLICmd(clientCtx, mtcli.GetCmdQueryMT(), args) + response := &mttypes.MT{} + network.ExecQueryCmd(t, clientCtx, mtcli.GetCmdQueryMT(), args, response) + return response } -func QueryBlancesExec(clientCtx client.Context, from string, denomID string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryBlancesExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + denomID string, + extraArgs ...string) *mttypes.QueryBalancesResponse { args := []string{ from, denomID, @@ -117,10 +183,19 @@ func QueryBlancesExec(clientCtx client.Context, from string, denomID string, ext } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, mtcli.GetCmdQueryBalances(), args) + response := &mttypes.QueryBalancesResponse{} + network.ExecQueryCmd(t, clientCtx, mtcli.GetCmdQueryBalances(), args, response) + return response } -func TransferDenomExec(clientCtx client.Context, from string, recipient string, denomID string, extraArgs ...string) (testutil.BufferWriter, error) { +func TransferDenomExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + recipient string, + denomID string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ from, recipient, @@ -128,5 +203,5 @@ func TransferDenomExec(clientCtx client.Context, from string, recipient string, } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, mtcli.GetCmdTransferDenom(), args) + return network.ExecTxCmdWithResult(t, clientCtx, mtcli.GetCmdTransferDenom(), args) } diff --git a/modules/mt/module.go b/modules/mt/module.go index 43bc34d2..81f63ad7 100644 --- a/modules/mt/module.go +++ b/modules/mt/module.go @@ -4,7 +4,6 @@ import ( "context" "encoding/json" "fmt" - "math/rand" "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" @@ -118,19 +117,6 @@ func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) { keeper.RegisterInvariants(ir, am.keeper) } -// Route returns the message routing key for the MT module. -func (am AppModule) Route() sdk.Route { - return sdk.NewRoute(types.RouterKey, NewHandler(am.keeper)) -} - -// QuerierRoute returns the MT module's querier route name. -func (AppModule) QuerierRoute() string { return types.RouterKey } - -// LegacyQuerierHandler returns the MT module sdk.Querier. -func (am AppModule) LegacyQuerierHandler(legacyQuerierCdc *codec.LegacyAmino) sdk.Querier { - return nil -} - // InitGenesis performs genesis initialization for the MT module. It returns // no validator updates. func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { @@ -168,16 +154,6 @@ func (AppModule) GenerateGenesisState(simState *module.SimulationState) { simulation.RandomizedGenState(simState) } -// ProposalContents doesn't return any content functions for governance proposals. -func (AppModule) ProposalContents(simState module.SimulationState) []simtypes.WeightedProposalContent { - return nil -} - -// RandomizedParams creates randomized MT param changes for the simulator. -func (AppModule) RandomizedParams(r *rand.Rand) []simtypes.ParamChange { - return nil -} - // RegisterStoreDecoder registers a decoder for MT module's types func (am AppModule) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry) { sdr[types.StoreKey] = simulation.NewDecodeStore(am.cdc) diff --git a/modules/mt/simulation/genesis_test.go b/modules/mt/simulation/genesis_test.go index 8c9b163f..f26c62ce 100644 --- a/modules/mt/simulation/genesis_test.go +++ b/modules/mt/simulation/genesis_test.go @@ -2,14 +2,15 @@ package simulation import ( "encoding/json" - mt "github.com/irisnet/irismod/modules/mt/types" "math/rand" "testing" + mt "github.com/irisnet/irismod/modules/mt/types" + "github.com/stretchr/testify/require" sdkmath "cosmossdk.io/math" - "github.com/cosmos/cosmos-sdk/simapp" + "cosmossdk.io/simapp" "github.com/cosmos/cosmos-sdk/types/module" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" ) diff --git a/modules/mt/simulation/operations.go b/modules/mt/simulation/operations.go index 71de1f78..1bde9459 100644 --- a/modules/mt/simulation/operations.go +++ b/modules/mt/simulation/operations.go @@ -3,10 +3,10 @@ package simulation import ( "math/rand" + simappparams "cosmossdk.io/simapp/params" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/simapp/helpers" - simappparams "github.com/cosmos/cosmos-sdk/simapp/params" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" @@ -133,12 +133,12 @@ func SimulateMsgIssueDenom(k keeper.Keeper, ak mt.AccountKeeper, bk mt.BankKeepe } txCfg := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txCfg, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{senderAcc.GetAccountNumber()}, []uint64{senderAcc.GetSequence()}, @@ -208,12 +208,12 @@ func SimulateMsgMintMT(k keeper.Keeper, ak mt.AccountKeeper, bk mt.BankKeeper) s } txCfg := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txCfg, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{senderAcc.GetAccountNumber()}, []uint64{senderAcc.GetSequence()}, @@ -276,12 +276,12 @@ func SimulateMsgEditMT(k keeper.Keeper, ak mt.AccountKeeper, bk mt.BankKeeper) s } txCfg := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txCfg, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{senderAcc.GetAccountNumber()}, []uint64{senderAcc.GetSequence()}, @@ -350,12 +350,12 @@ func SimulateMsgTransferMT(k keeper.Keeper, ak mt.AccountKeeper, bk mt.BankKeepe } txCfg := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txCfg, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{senderAcc.GetAccountNumber()}, []uint64{senderAcc.GetSequence()}, @@ -418,12 +418,12 @@ func SimulateMsgBurnMT(k keeper.Keeper, ak mt.AccountKeeper, bk mt.BankKeeper) s } txCfg := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txCfg, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{senderAcc.GetAccountNumber()}, []uint64{senderAcc.GetSequence()}, @@ -484,12 +484,12 @@ func SimulateMsgTransferDenom(k keeper.Keeper, ak mt.AccountKeeper, bk mt.BankKe } txCfg := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txCfg, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{senderAcc.GetAccountNumber()}, []uint64{senderAcc.GetSequence()}, diff --git a/modules/mt/types/genesis.pb.go b/modules/mt/types/genesis.pb.go index 0f3bb855..45d5f3fc 100644 --- a/modules/mt/types/genesis.pb.go +++ b/modules/mt/types/genesis.pb.go @@ -5,8 +5,8 @@ package types import ( fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" diff --git a/modules/mt/types/mt.pb.go b/modules/mt/types/mt.pb.go index 5af3e312..b370b3f9 100644 --- a/modules/mt/types/mt.pb.go +++ b/modules/mt/types/mt.pb.go @@ -6,8 +6,8 @@ package types import ( bytes "bytes" fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" diff --git a/modules/mt/types/query.pb.go b/modules/mt/types/query.pb.go index 092c6c16..38901378 100644 --- a/modules/mt/types/query.pb.go +++ b/modules/mt/types/query.pb.go @@ -7,9 +7,9 @@ import ( context "context" fmt "fmt" query "github.com/cosmos/cosmos-sdk/types/query" - _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" diff --git a/modules/mt/types/tx.pb.go b/modules/mt/types/tx.pb.go index 44a3eb7c..355c7d05 100644 --- a/modules/mt/types/tx.pb.go +++ b/modules/mt/types/tx.pb.go @@ -7,9 +7,9 @@ import ( bytes "bytes" context "context" fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/modules/nft/client/cli/cli_test.go b/modules/nft/client/cli/cli_test.go index 4cc0e4ba..98c87539 100644 --- a/modules/nft/client/cli/cli_test.go +++ b/modules/nft/client/cli/cli_test.go @@ -4,43 +4,28 @@ import ( "fmt" "testing" - "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/suite" - "github.com/tidwall/gjson" "github.com/tendermint/tendermint/crypto" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/testutil/network" sdk "github.com/cosmos/cosmos-sdk/types" nftcli "github.com/irisnet/irismod/modules/nft/client/cli" nfttestutil "github.com/irisnet/irismod/modules/nft/client/testutil" - nfttypes "github.com/irisnet/irismod/modules/nft/types" "github.com/irisnet/irismod/simapp" ) type IntegrationTestSuite struct { suite.Suite - cfg network.Config - network *network.Network + network simapp.Network } func (s *IntegrationTestSuite) SetupSuite() { s.T().Log("setting up integration test suite") - cfg := simapp.NewConfig() - cfg.NumValidators = 2 - - s.cfg = cfg - - var err error - s.network, err = network.New(s.T(), s.T().TempDir(), cfg) - s.Require().NoError(err) - - _, err = s.network.WaitForHeight(1) - s.Require().NoError(err) + s.network = simapp.SetupNetwork(s.T()) } func (s *IntegrationTestSuite) TearDownSuite() { @@ -55,6 +40,8 @@ func TestIntegrationTestSuite(t *testing.T) { func (s *IntegrationTestSuite) TestNft() { val := s.network.Validators[0] val2 := s.network.Validators[1] + clientCtx := val.ClientCtx + expectedCode := uint32(0) // --------------------------------------------------------------------------- @@ -67,7 +54,7 @@ func (s *IntegrationTestSuite) TestNft() { tokenID := "kitty" //owner := "owner" denomName := "name" - denom := "denom" + denomID := "denom" schema := "schema" symbol := "symbol" mintRestricted := true @@ -86,45 +73,31 @@ func (s *IntegrationTestSuite) TestNft() { fmt.Sprintf("--%s=%t", nftcli.FlagUpdateRestricted, updateRestricted), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType := proto.Message(&sdk.TxResponse{}) - expectedCode := uint32(0) - - bz, err := nfttestutil.IssueDenomExec(val.ClientCtx, from.String(), denom, args...) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp := respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - - denomID := gjson.Get(txResp.RawLog, "0.events.0.attributes.0.value").String() + txResult := nfttestutil.IssueDenomExec(s.T(), + s.network, + clientCtx, from.String(), denomID, args...) + s.Require().Equal(expectedCode, txResult.Code) //------test GetCmdQueryDenom()------------- - respType = proto.Message(&nfttypes.Denom{}) - bz, err = nfttestutil.QueryDenomExec(val.ClientCtx, denomID) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - denomItem := respType.(*nfttypes.Denom) - s.Require().Equal(denomName, denomItem.Name) - s.Require().Equal(schema, denomItem.Schema) - s.Require().Equal(symbol, denomItem.Symbol) - s.Require().Equal(uri, denomItem.Uri) - s.Require().Equal(uriHash, denomItem.UriHash) - s.Require().Equal(description, denomItem.Description) - s.Require().Equal(data, denomItem.Data) - s.Require().Equal(mintRestricted, denomItem.MintRestricted) - s.Require().Equal(updateRestricted, denomItem.UpdateRestricted) + queryDenomResponse := nfttestutil.QueryDenomExec(s.T(), s.network, clientCtx, denomID) + s.Require().Equal(denomName, queryDenomResponse.Name) + s.Require().Equal(schema, queryDenomResponse.Schema) + s.Require().Equal(symbol, queryDenomResponse.Symbol) + s.Require().Equal(uri, queryDenomResponse.Uri) + s.Require().Equal(uriHash, queryDenomResponse.UriHash) + s.Require().Equal(description, queryDenomResponse.Description) + s.Require().Equal(data, queryDenomResponse.Data) + s.Require().Equal(mintRestricted, queryDenomResponse.MintRestricted) + s.Require().Equal(updateRestricted, queryDenomResponse.UpdateRestricted) //------test GetCmdQueryDenoms()------------- - respType = proto.Message(&nfttypes.QueryDenomsResponse{}) - bz, err = nfttestutil.QueryDenomsExec(val.ClientCtx) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - denomsResp := respType.(*nfttypes.QueryDenomsResponse) - s.Require().Equal(1, len(denomsResp.Denoms)) - s.Require().Equal(denomID, denomsResp.Denoms[0].Id) + queryDenomsResponse := nfttestutil.QueryDenomsExec(s.T(), s.network, clientCtx) + s.Require().Equal(1, len(queryDenomsResponse.Denoms)) + s.Require().Equal(denomID, queryDenomsResponse.Denoms[0].Id) //------test GetCmdMintNFT()------------- args = []string{ @@ -135,56 +108,37 @@ func (s *IntegrationTestSuite) TestNft() { fmt.Sprintf("--%s=%s", nftcli.FlagTokenName, tokenName), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - - bz, err = nfttestutil.MintNFTExec(val.ClientCtx, from.String(), denomID, tokenID, args...) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + txResult = nfttestutil.MintNFTExec(s.T(), + s.network, + clientCtx, from.String(), denomID, tokenID, args...) + s.Require().Equal(expectedCode, txResult.Code) //------test GetCmdQuerySupply()------------- - respType = proto.Message(&nfttypes.QuerySupplyResponse{}) - bz, err = nfttestutil.QuerySupplyExec(val.ClientCtx, denomID) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - supplyResp := respType.(*nfttypes.QuerySupplyResponse) - s.Require().Equal(uint64(1), supplyResp.Amount) + querySupplyResponse := nfttestutil.QuerySupplyExec(s.T(), s.network, clientCtx, denomID) + s.Require().Equal(uint64(1), querySupplyResponse.Amount) //------test GetCmdQueryNFT()------------- - respType = proto.Message(&nfttypes.BaseNFT{}) - bz, err = nfttestutil.QueryNFTExec(val.ClientCtx, denomID, tokenID) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - nftItem := respType.(*nfttypes.BaseNFT) - s.Require().Equal(tokenID, nftItem.Id) - s.Require().Equal(tokenName, nftItem.Name) - s.Require().Equal(uri, nftItem.URI) - s.Require().Equal(uriHash, nftItem.UriHash) - s.Require().Equal(data, nftItem.Data) - s.Require().Equal(from.String(), nftItem.Owner) + queryNFTResponse := nfttestutil.QueryNFTExec(s.T(), s.network, clientCtx, denomID, tokenID) + s.Require().Equal(tokenID, queryNFTResponse.Id) + s.Require().Equal(tokenName, queryNFTResponse.Name) + s.Require().Equal(uri, queryNFTResponse.URI) + s.Require().Equal(uriHash, queryNFTResponse.UriHash) + s.Require().Equal(data, queryNFTResponse.Data) + s.Require().Equal(from.String(), queryNFTResponse.Owner) //------test GetCmdQueryOwner()------------- - respType = proto.Message(&nfttypes.QueryNFTsOfOwnerResponse{}) - bz, err = nfttestutil.QueryOwnerExec(val.ClientCtx, from.String()) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - ownerResp := respType.(*nfttypes.QueryNFTsOfOwnerResponse) - s.Require().Equal(from.String(), ownerResp.Owner.Address) - s.Require().Equal(denom, ownerResp.Owner.IDCollections[0].DenomId) - s.Require().Equal(tokenID, ownerResp.Owner.IDCollections[0].TokenIds[0]) + queryNFTsOfOwnerResponse := nfttestutil.QueryOwnerExec(s.T(), s.network, clientCtx, from.String()) + s.Require().Equal(from.String(), queryNFTsOfOwnerResponse.Owner.Address) + s.Require().Equal(denomID, queryNFTsOfOwnerResponse.Owner.IDCollections[0].DenomId) + s.Require().Equal(tokenID, queryNFTsOfOwnerResponse.Owner.IDCollections[0].TokenIds[0]) //------test GetCmdQueryCollection()------------- - respType = proto.Message(&nfttypes.QueryCollectionResponse{}) - bz, err = nfttestutil.QueryCollectionExec(val.ClientCtx, denomID) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - collectionItem := respType.(*nfttypes.QueryCollectionResponse) - s.Require().Equal(1, len(collectionItem.Collection.NFTs)) + queryCollectionResponse := nfttestutil.QueryCollectionExec(s.T(), s.network, clientCtx, denomID) + s.Require().Equal(1, len(queryCollectionResponse.Collection.NFTs)) //------test GetCmdEditNFT()------------- newTokenData := "{\"key1\":\"value1\",\"key2\":\"value2\"}" @@ -198,27 +152,20 @@ func (s *IntegrationTestSuite) TestNft() { fmt.Sprintf("--%s=%s", nftcli.FlagTokenName, newTokenName), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - - bz, err = nfttestutil.EditNFTExec(val.ClientCtx, from.String(), denomID, tokenID, args...) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + txResult = nfttestutil.EditNFTExec(s.T(), + s.network, + clientCtx, from.String(), denomID, tokenID, args...) + s.Require().Equal(expectedCode, txResult.Code) - respType = proto.Message(&nfttypes.BaseNFT{}) - bz, err = nfttestutil.QueryNFTExec(val.ClientCtx, denomID, tokenID) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - newNftItem := respType.(*nfttypes.BaseNFT) - s.Require().Equal(newTokenName, newNftItem.Name) - s.Require().Equal(newTokenURI, newNftItem.URI) - s.Require().Equal(newTokenURIHash, newNftItem.UriHash) - s.Require().Equal(newTokenData, newNftItem.Data) + queryNFTResponse = nfttestutil.QueryNFTExec(s.T(), s.network, clientCtx, denomID, tokenID) + s.Require().Equal(newTokenName, queryNFTResponse.Name) + s.Require().Equal(newTokenURI, queryNFTResponse.URI) + s.Require().Equal(newTokenURIHash, queryNFTResponse.UriHash) + s.Require().Equal(newTokenData, queryNFTResponse.Data) //------test GetCmdTransferNFT()------------- recipient := sdk.AccAddress(crypto.AddressHash([]byte("dgsbl"))) @@ -230,29 +177,22 @@ func (s *IntegrationTestSuite) TestNft() { fmt.Sprintf("--%s=%s", nftcli.FlagTokenName, tokenName), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - - bz, err = nfttestutil.TransferNFTExec(val.ClientCtx, from.String(), recipient.String(), denomID, tokenID, args...) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - - respType = proto.Message(&nfttypes.BaseNFT{}) - bz, err = nfttestutil.QueryNFTExec(val.ClientCtx, denomID, tokenID) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - nftItem = respType.(*nfttypes.BaseNFT) - s.Require().Equal(tokenID, nftItem.Id) - s.Require().Equal(tokenName, nftItem.Name) - s.Require().Equal(uri, nftItem.URI) - s.Require().Equal(uriHash, nftItem.UriHash) - s.Require().Equal(data, nftItem.Data) - s.Require().Equal(recipient.String(), nftItem.Owner) + txResult = nfttestutil.TransferNFTExec(s.T(), + s.network, + clientCtx, from.String(), recipient.String(), denomID, tokenID, args...) + s.Require().Equal(expectedCode, txResult.Code) + + queryNFTResponse = nfttestutil.QueryNFTExec(s.T(), s.network, clientCtx, denomID, tokenID) + s.Require().Equal(tokenID, queryNFTResponse.Id) + s.Require().Equal(tokenName, queryNFTResponse.Name) + s.Require().Equal(uri, queryNFTResponse.URI) + s.Require().Equal(uriHash, queryNFTResponse.UriHash) + s.Require().Equal(data, queryNFTResponse.Data) + s.Require().Equal(recipient.String(), queryNFTResponse.Owner) //------test GetCmdBurnNFT()------------- newTokenID := "dgsbl" @@ -263,68 +203,48 @@ func (s *IntegrationTestSuite) TestNft() { fmt.Sprintf("--%s=%s", nftcli.FlagTokenName, newTokenName), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - - bz, err = nfttestutil.MintNFTExec(val.ClientCtx, from.String(), denomID, newTokenID, args...) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + txResult = nfttestutil.MintNFTExec(s.T(), + s.network, + clientCtx, from.String(), denomID, newTokenID, args...) + s.Require().Equal(expectedCode, txResult.Code) - respType = proto.Message(&nfttypes.QuerySupplyResponse{}) - bz, err = nfttestutil.QuerySupplyExec(val.ClientCtx, denomID) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - supplyResp = respType.(*nfttypes.QuerySupplyResponse) - s.Require().Equal(uint64(2), supplyResp.Amount) + querySupplyResponse = nfttestutil.QuerySupplyExec(s.T(), s.network, clientCtx, denomID) + s.Require().Equal(uint64(2), querySupplyResponse.Amount) args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - bz, err = nfttestutil.BurnNFTExec(val.ClientCtx, from.String(), denomID, newTokenID, args...) - s.Require().NoError(err) - s.Require().NoError(val2.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - - respType = proto.Message(&nfttypes.QuerySupplyResponse{}) - bz, err = nfttestutil.QuerySupplyExec(val.ClientCtx, denomID) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - supplyResp = respType.(*nfttypes.QuerySupplyResponse) - s.Require().Equal(uint64(1), supplyResp.Amount) + txResult = nfttestutil.BurnNFTExec(s.T(), + s.network, + clientCtx, from.String(), denomID, newTokenID, args...) + s.Require().Equal(expectedCode, txResult.Code) + + querySupplyResponse = nfttestutil.QuerySupplyExec(s.T(), s.network, clientCtx, denomID) + s.Require().Equal(uint64(1), querySupplyResponse.Amount) //------test GetCmdTransferDenom()------------- args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - - bz, err = nfttestutil.TransferDenomExec(val.ClientCtx, from.String(), val2.Address.String(), denomID, args...) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - - respType = proto.Message(&nfttypes.Denom{}) - bz, err = nfttestutil.QueryDenomExec(val.ClientCtx, denomID) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - denomItem2 := respType.(*nfttypes.Denom) - s.Require().Equal(val2.Address.String(), denomItem2.Creator) - s.Require().Equal(denomName, denomItem2.Name) - s.Require().Equal(schema, denomItem2.Schema) - s.Require().Equal(symbol, denomItem2.Symbol) - s.Require().Equal(mintRestricted, denomItem2.MintRestricted) - s.Require().Equal(updateRestricted, denomItem2.UpdateRestricted) + txResult = nfttestutil.TransferDenomExec(s.T(), + s.network, + clientCtx, from.String(), val2.Address.String(), denomID, args...) + s.Require().Equal(expectedCode, txResult.Code) + + queryDenomResponse = nfttestutil.QueryDenomExec(s.T(), s.network, clientCtx, denomID) + s.Require().Equal(val2.Address.String(), queryDenomResponse.Creator) + s.Require().Equal(denomName, queryDenomResponse.Name) + s.Require().Equal(schema, queryDenomResponse.Schema) + s.Require().Equal(symbol, queryDenomResponse.Symbol) + s.Require().Equal(mintRestricted, queryDenomResponse.MintRestricted) + s.Require().Equal(updateRestricted, queryDenomResponse.UpdateRestricted) } diff --git a/modules/nft/client/testutil/grpc_query_test.go b/modules/nft/client/testutil/grpc_query_test.go index 1160fde1..6efca463 100644 --- a/modules/nft/client/testutil/grpc_query_test.go +++ b/modules/nft/client/testutil/grpc_query_test.go @@ -6,13 +6,9 @@ import ( "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/suite" - "github.com/tidwall/gjson" - - "github.com/tendermint/tendermint/crypto" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/testutil/network" - "github.com/cosmos/cosmos-sdk/testutil/rest" + "github.com/cosmos/cosmos-sdk/testutil" sdk "github.com/cosmos/cosmos-sdk/types" nftcli "github.com/irisnet/irismod/modules/nft/client/cli" @@ -24,24 +20,13 @@ import ( type IntegrationTestSuite struct { suite.Suite - cfg network.Config - network *network.Network + network simapp.Network } func (s *IntegrationTestSuite) SetupSuite() { s.T().Log("setting up integration test suite") - cfg := simapp.NewConfig() - cfg.NumValidators = 2 - - s.cfg = cfg - - var err error - s.network, err = network.New(s.T(), s.T().TempDir(), cfg) - s.Require().NoError(err) - - _, err = s.network.WaitForHeight(1) - s.Require().NoError(err) + s.network = simapp.SetupNetwork(s.T()) } func (s *IntegrationTestSuite) TearDownSuite() { @@ -55,7 +40,7 @@ func TestIntegrationTestSuite(t *testing.T) { func (s *IntegrationTestSuite) TestNft() { val := s.network.Validators[0] - recipient := sdk.AccAddress(crypto.AddressHash([]byte("dgsbl"))) + clientCtx := val.ClientCtx // --------------------------------------------------------------------------- from := val.Address @@ -67,7 +52,7 @@ func (s *IntegrationTestSuite) TestNft() { tokenID := "kitty" //owner := "owner" denomName := "name" - denom := "denom" + denomID := "denom" schema := "schema" symbol := "symbol" mintRestricted := true @@ -87,25 +72,21 @@ func (s *IntegrationTestSuite) TestNft() { fmt.Sprintf("--%s=%t", nftcli.FlagUpdateRestricted, updateRestricted), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType := proto.Message(&sdk.TxResponse{}) expectedCode := uint32(0) - bz, err := nfttestutil.IssueDenomExec(val.ClientCtx, from.String(), denom, args...) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp := respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - - denomID := gjson.Get(txResp.RawLog, "0.events.0.attributes.0.value").String() + txResult := nfttestutil.IssueDenomExec(s.T(), + s.network, + clientCtx, from.String(), denomID, args...) + s.Require().Equal(expectedCode, txResult.Code) //------test GetCmdQueryDenom()------------- url := fmt.Sprintf("%s/irismod/nft/denoms/%s", baseURL, denomID) - resp, err := rest.GetRequest(url) - respType = proto.Message(&nfttypes.QueryDenomResponse{}) + resp, err := testutil.GetRequest(url) + respType := proto.Message(&nfttypes.QueryDenomResponse{}) s.Require().NoError(err) s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, respType)) denomItem := respType.(*nfttypes.QueryDenomResponse) @@ -121,7 +102,7 @@ func (s *IntegrationTestSuite) TestNft() { //------test GetCmdQueryDenoms()------------- url = fmt.Sprintf("%s/irismod/nft/denoms", baseURL) - resp, err = rest.GetRequest(url) + resp, err = testutil.GetRequest(url) respType = proto.Message(&nfttypes.QueryDenomsResponse{}) s.Require().NoError(err) s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, respType)) @@ -138,21 +119,18 @@ func (s *IntegrationTestSuite) TestNft() { fmt.Sprintf("--%s=%s", nftcli.FlagTokenName, tokenName), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - - bz, err = nfttestutil.MintNFTExec(val.ClientCtx, from.String(), denomID, tokenID, args...) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + txResult = nfttestutil.MintNFTExec(s.T(), + s.network, + clientCtx, from.String(), denomID, tokenID, args...) + s.Require().Equal(expectedCode, txResult.Code) //------test GetCmdQuerySupply()------------- url = fmt.Sprintf("%s/irismod/nft/collections/%s/supply", baseURL, denomID) - resp, err = rest.GetRequest(url) + resp, err = testutil.GetRequest(url) respType = proto.Message(&nfttypes.QuerySupplyResponse{}) s.Require().NoError(err) s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, respType)) @@ -161,7 +139,7 @@ func (s *IntegrationTestSuite) TestNft() { //------test GetCmdQueryNFT()------------- url = fmt.Sprintf("%s/irismod/nft/nfts/%s/%s", baseURL, denomID, tokenID) - resp, err = rest.GetRequest(url) + resp, err = testutil.GetRequest(url) respType = proto.Message(&nfttypes.QueryNFTResponse{}) s.Require().NoError(err) s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, respType)) @@ -175,48 +153,21 @@ func (s *IntegrationTestSuite) TestNft() { //------test GetCmdQueryOwner()------------- url = fmt.Sprintf("%s/irismod/nft/nfts?owner=%s", baseURL, from.String()) - resp, err = rest.GetRequest(url) + resp, err = testutil.GetRequest(url) respType = proto.Message(&nfttypes.QueryNFTsOfOwnerResponse{}) s.Require().NoError(err) s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, respType)) ownerResp := respType.(*nfttypes.QueryNFTsOfOwnerResponse) s.Require().Equal(from.String(), ownerResp.Owner.Address) - s.Require().Equal(denom, ownerResp.Owner.IDCollections[0].DenomId) + s.Require().Equal(denomID, ownerResp.Owner.IDCollections[0].DenomId) s.Require().Equal(tokenID, ownerResp.Owner.IDCollections[0].TokenIds[0]) //------test GetCmdQueryCollection()------------- url = fmt.Sprintf("%s/irismod/nft/collections/%s", baseURL, denomID) - resp, err = rest.GetRequest(url) + resp, err = testutil.GetRequest(url) respType = proto.Message(&nfttypes.QueryCollectionResponse{}) s.Require().NoError(err) s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, respType)) collectionResp := respType.(*nfttypes.QueryCollectionResponse) s.Require().Equal(1, len(collectionResp.Collection.NFTs)) - - //------test GetCmdTransferDenom()------------- - args = []string{ - fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), - } - - respType = proto.Message(&sdk.TxResponse{}) - - bz, err = nfttestutil.TransferDenomExec(val.ClientCtx, from.String(), recipient.String(), denomID, args...) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - - respType = proto.Message(&nfttypes.Denom{}) - bz, err = nfttestutil.QueryDenomExec(val.ClientCtx, denomID) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - denomItem2 := respType.(*nfttypes.Denom) - s.Require().Equal(recipient.String(), denomItem2.Creator) - s.Require().Equal(denomName, denomItem2.Name) - s.Require().Equal(schema, denomItem2.Schema) - s.Require().Equal(symbol, denomItem2.Symbol) - s.Require().Equal(mintRestricted, denomItem2.MintRestricted) - s.Require().Equal(updateRestricted, denomItem2.UpdateRestricted) } diff --git a/modules/nft/client/testutil/test_helpers.go b/modules/nft/client/testutil/test_helpers.go index db6f57a8..ee6c05c3 100644 --- a/modules/nft/client/testutil/test_helpers.go +++ b/modules/nft/client/testutil/test_helpers.go @@ -2,29 +2,43 @@ package testutil import ( "fmt" + "testing" "github.com/tendermint/tendermint/libs/cli" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/testutil" - clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" nftcli "github.com/irisnet/irismod/modules/nft/client/cli" + nfttypes "github.com/irisnet/irismod/modules/nft/types" + "github.com/irisnet/irismod/simapp" ) // IssueDenomExec creates a redelegate message. -func IssueDenomExec(clientCtx client.Context, from string, denom string, extraArgs ...string) (testutil.BufferWriter, error) { +func IssueDenomExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + denom string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ denom, fmt.Sprintf("--%s=%s", flags.FlagFrom, from), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, nftcli.GetCmdIssueDenom(), args) + return network.ExecTxCmdWithResult(t, clientCtx, nftcli.GetCmdIssueDenom(), args) } -func BurnNFTExec(clientCtx client.Context, from string, denomID string, tokenID string, extraArgs ...string) (testutil.BufferWriter, error) { +func BurnNFTExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + denomID string, + tokenID string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ denomID, tokenID, @@ -32,10 +46,17 @@ func BurnNFTExec(clientCtx client.Context, from string, denomID string, tokenID } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, nftcli.GetCmdBurnNFT(), args) + return network.ExecTxCmdWithResult(t, clientCtx, nftcli.GetCmdBurnNFT(), args) } -func MintNFTExec(clientCtx client.Context, from string, denomID string, tokenID string, extraArgs ...string) (testutil.BufferWriter, error) { +func MintNFTExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + denomID string, + tokenID string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ denomID, tokenID, @@ -43,10 +64,17 @@ func MintNFTExec(clientCtx client.Context, from string, denomID string, tokenID } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, nftcli.GetCmdMintNFT(), args) + return network.ExecTxCmdWithResult(t, clientCtx, nftcli.GetCmdMintNFT(), args) } -func EditNFTExec(clientCtx client.Context, from string, denomID string, tokenID string, extraArgs ...string) (testutil.BufferWriter, error) { +func EditNFTExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + denomID string, + tokenID string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ denomID, tokenID, @@ -54,10 +82,18 @@ func EditNFTExec(clientCtx client.Context, from string, denomID string, tokenID } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, nftcli.GetCmdEditNFT(), args) + return network.ExecTxCmdWithResult(t, clientCtx, nftcli.GetCmdEditNFT(), args) } -func TransferNFTExec(clientCtx client.Context, from string, recipient string, denomID string, tokenID string, extraArgs ...string) (testutil.BufferWriter, error) { +func TransferNFTExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + recipient string, + denomID string, + tokenID string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ recipient, denomID, @@ -66,76 +102,119 @@ func TransferNFTExec(clientCtx client.Context, from string, recipient string, de } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, nftcli.GetCmdTransferNFT(), args) + return network.ExecTxCmdWithResult(t, clientCtx, nftcli.GetCmdTransferNFT(), args) } -func QueryDenomExec(clientCtx client.Context, denomID string, extraArgs ...string) (testutil.BufferWriter, error) { +func TransferDenomExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + recipient string, + denomID string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ + recipient, denomID, - fmt.Sprintf("--%s=json", cli.OutputFlag), + fmt.Sprintf("--%s=%s", flags.FlagFrom, from), } - args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, nftcli.GetCmdQueryDenom(), args) + args = append(args, extraArgs...) + return network.ExecTxCmdWithResult(t, clientCtx, nftcli.GetCmdTransferDenom(), args) } -func QueryCollectionExec(clientCtx client.Context, denomID string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryDenomExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + denomID string, + extraArgs ...string) *nfttypes.Denom { args := []string{ denomID, fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, nftcli.GetCmdQueryCollection(), args) + response := &nfttypes.Denom{} + network.ExecQueryCmd(t, clientCtx, nftcli.GetCmdQueryDenom(), args, response) + return response } -func QueryDenomsExec(clientCtx client.Context, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryCollectionExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + denomID string, + extraArgs ...string) *nfttypes.QueryCollectionResponse { args := []string{ + denomID, fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, nftcli.GetCmdQueryDenoms(), args) + response := &nfttypes.QueryCollectionResponse{} + network.ExecQueryCmd(t, clientCtx, nftcli.GetCmdQueryCollection(), args, response) + return response } -func QuerySupplyExec(clientCtx client.Context, denom string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryDenomsExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + extraArgs ...string) *nfttypes.QueryDenomsResponse { args := []string{ - denom, fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, nftcli.GetCmdQuerySupply(), args) + response := &nfttypes.QueryDenomsResponse{} + network.ExecQueryCmd(t, clientCtx, nftcli.GetCmdQueryDenoms(), args, response) + return response } -func QueryOwnerExec(clientCtx client.Context, address string, extraArgs ...string) (testutil.BufferWriter, error) { +func QuerySupplyExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + denom string, + extraArgs ...string) *nfttypes.QuerySupplyResponse { args := []string{ - address, + denom, fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, nftcli.GetCmdQueryOwner(), args) + response := &nfttypes.QuerySupplyResponse{} + network.ExecQueryCmd(t, clientCtx, nftcli.GetCmdQuerySupply(), args, response) + return response } -func QueryNFTExec(clientCtx client.Context, denomID string, tokenID string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryOwnerExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + address string, + extraArgs ...string) *nfttypes.QueryNFTsOfOwnerResponse { args := []string{ - denomID, - tokenID, + address, fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, nftcli.GetCmdQueryNFT(), args) + response := &nfttypes.QueryNFTsOfOwnerResponse{} + network.ExecQueryCmd(t, clientCtx, nftcli.GetCmdQueryOwner(), args, response) + return response } -func TransferDenomExec(clientCtx client.Context, from string, recipient string, denomID string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryNFTExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + denomID string, + tokenID string, + extraArgs ...string) *nfttypes.BaseNFT { args := []string{ - recipient, denomID, - fmt.Sprintf("--%s=%s", flags.FlagFrom, from), + tokenID, + fmt.Sprintf("--%s=json", cli.OutputFlag), } - args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, nftcli.GetCmdTransferDenom(), args) + + response := &nfttypes.BaseNFT{} + network.ExecQueryCmd(t, clientCtx, nftcli.GetCmdQueryNFT(), args, response) + return response } diff --git a/modules/nft/migrations/v2/store_test.go b/modules/nft/migrations/v2/store_test.go index 6d32ffcb..1b9d8647 100644 --- a/modules/nft/migrations/v2/store_test.go +++ b/modules/nft/migrations/v2/store_test.go @@ -2,12 +2,10 @@ package v2_test import ( "fmt" - - gogotypes "github.com/gogo/protobuf/types" - "math/rand" "testing" + gogotypes "github.com/gogo/protobuf/types" "github.com/stretchr/testify/require" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" diff --git a/modules/nft/module/module.go b/modules/nft/module/module.go index 945ddb04..cafe5523 100644 --- a/modules/nft/module/module.go +++ b/modules/nft/module/module.go @@ -4,7 +4,6 @@ import ( "context" "encoding/json" "fmt" - "math/rand" "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" @@ -119,19 +118,6 @@ func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) { keeper.RegisterInvariants(ir, am.keeper) } -// Route returns the message routing key for the NFT module. -func (am AppModule) Route() sdk.Route { - return sdk.Route{} -} - -// QuerierRoute returns the NFT module's querier route name. -func (AppModule) QuerierRoute() string { return "" } - -// LegacyQuerierHandler returns the NFT module sdk.Querier. -func (am AppModule) LegacyQuerierHandler(_ *codec.LegacyAmino) sdk.Querier { - return nil -} - // InitGenesis performs genesis initialization for the NFT module. It returns // no validator updates. func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { @@ -161,16 +147,6 @@ func (AppModule) GenerateGenesisState(simState *module.SimulationState) { simulation.RandomizedGenState(simState) } -// ProposalContents doesn't return any content functions for governance proposals. -func (AppModule) ProposalContents(simState module.SimulationState) []simtypes.WeightedProposalContent { - return nil -} - -// RandomizedParams creates randomized NFT param changes for the simulator. -func (AppModule) RandomizedParams(r *rand.Rand) []simtypes.ParamChange { - return nil -} - // RegisterStoreDecoder registers a decoder for NFT module's types func (am AppModule) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry) { sdr[types.StoreKey] = sdkbftsim.NewDecodeStore(am.cdc) diff --git a/modules/nft/simulation/operations.go b/modules/nft/simulation/operations.go index fede08ac..094224c8 100644 --- a/modules/nft/simulation/operations.go +++ b/modules/nft/simulation/operations.go @@ -5,10 +5,10 @@ import ( "math/rand" "strings" + simappparams "cosmossdk.io/simapp/params" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/simapp/helpers" - simappparams "github.com/cosmos/cosmos-sdk/simapp/params" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" @@ -151,12 +151,12 @@ func SimulateMsgTransferNFT(k keeper.Keeper, ak types.AccountKeeper, bk types.Ba } txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -210,12 +210,12 @@ func SimulateMsgEditNFT(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKe } txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -268,12 +268,12 @@ func SimulateMsgMintNFT(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKe } txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -319,12 +319,12 @@ func SimulateMsgBurnNFT(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKe } txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -380,12 +380,12 @@ func SimulateMsgTransferDenom(k keeper.Keeper, ak types.AccountKeeper, bk types. } txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -438,12 +438,12 @@ func SimulateMsgIssueDenom(k keeper.Keeper, ak types.AccountKeeper, bk types.Ban } txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, diff --git a/modules/nft/types/genesis.pb.go b/modules/nft/types/genesis.pb.go index c69e1134..1a404b7e 100644 --- a/modules/nft/types/genesis.pb.go +++ b/modules/nft/types/genesis.pb.go @@ -5,8 +5,8 @@ package types import ( fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" diff --git a/modules/nft/types/nft.pb.go b/modules/nft/types/nft.pb.go index db8953af..fece17c3 100644 --- a/modules/nft/types/nft.pb.go +++ b/modules/nft/types/nft.pb.go @@ -5,8 +5,8 @@ package types import ( fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" diff --git a/modules/nft/types/query.pb.go b/modules/nft/types/query.pb.go index 3c8f197f..4f010f26 100644 --- a/modules/nft/types/query.pb.go +++ b/modules/nft/types/query.pb.go @@ -7,9 +7,9 @@ import ( context "context" fmt "fmt" query "github.com/cosmos/cosmos-sdk/types/query" - _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" diff --git a/modules/nft/types/tx.pb.go b/modules/nft/types/tx.pb.go index 49dea56a..55e722e6 100644 --- a/modules/nft/types/tx.pb.go +++ b/modules/nft/types/tx.pb.go @@ -6,9 +6,9 @@ package types import ( context "context" fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/modules/oracle/client/cli/cli_test.go b/modules/oracle/client/cli/cli_test.go index 1d3f68eb..2a9c1f00 100644 --- a/modules/oracle/client/cli/cli_test.go +++ b/modules/oracle/client/cli/cli_test.go @@ -7,16 +7,13 @@ import ( "strconv" "testing" - "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/suite" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/testutil/network" sdk "github.com/cosmos/cosmos-sdk/types" oraclecli "github.com/irisnet/irismod/modules/oracle/client/cli" oracletestutil "github.com/irisnet/irismod/modules/oracle/client/testutil" - oracletypes "github.com/irisnet/irismod/modules/oracle/types" servicecli "github.com/irisnet/irismod/modules/service/client/cli" servicetestutil "github.com/irisnet/irismod/modules/service/client/testutil" servicetypes "github.com/irisnet/irismod/modules/service/types" @@ -26,23 +23,13 @@ import ( type IntegrationTestSuite struct { suite.Suite - cfg network.Config - network *network.Network + network simapp.Network } func (s *IntegrationTestSuite) SetupSuite() { s.T().Log("setting up integration test suite") - cfg := simapp.NewConfig() - cfg.NumValidators = 1 - - var err error - s.cfg = cfg - s.network, err = network.New(s.T(), s.T().TempDir(), cfg) - s.Require().NoError(err) - - _, err = s.network.WaitForHeight(1) - s.Require().NoError(err) + s.network = simapp.SetupNetwork(s.T()) } func (s *IntegrationTestSuite) TearDownSuite() { @@ -57,6 +44,7 @@ func TestIntegrationTestSuite(t *testing.T) { func (s *IntegrationTestSuite) TestOracle() { val := s.network.Validators[0] clientCtx := val.ClientCtx + expectedCode := uint32(0) // --------------------------------------------------------------------------- serviceName := "test-service" @@ -99,17 +87,12 @@ func (s *IntegrationTestSuite) TestOracle() { fmt.Sprintf("--%s=%s", servicecli.FlagSchemas, serviceSchemas), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType := proto.Message(&sdk.TxResponse{}) - expectedCode := uint32(0) - bz, err := servicetestutil.DefineServiceExec(clientCtx, author.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp := respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + txResult := servicetestutil.DefineServiceExec(s.T(), s.network, clientCtx, author.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) //------test GetCmdBindService()------------- args = []string{ @@ -121,16 +104,12 @@ func (s *IntegrationTestSuite) TestOracle() { fmt.Sprintf("--%s=%s", servicecli.FlagProvider, provider), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) - bz, err = servicetestutil.BindServiceExec(clientCtx, provider.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + + txResult = servicetestutil.BindServiceExec(s.T(), s.network, clientCtx, provider.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) //------test GetCmdCreateFeed()------------- args = []string{ @@ -149,138 +128,81 @@ func (s *IntegrationTestSuite) TestOracle() { fmt.Sprintf("--%s=%s", oraclecli.FlagCreator, creator), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) - - bz, err = oracletestutil.CreateFeedExec(clientCtx, creator.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + txResult = oracletestutil.CreateFeedExec(s.T(), s.network, clientCtx, creator.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) // ------test GetCmdQueryFeed()------------- - respType = proto.Message(&oracletypes.FeedContext{}) - bz, err = oracletestutil.QueryFeedExec(clientCtx, feedName) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - feedResp := respType.(*oracletypes.FeedContext) - s.Require().NoError(err) - s.Require().Equal(feedName, feedResp.Feed.FeedName) - s.Require().Equal(servicetypes.PAUSED, feedResp.State) + + feedContext := oracletestutil.QueryFeedExec(s.T(), s.network, clientCtx, feedName) + s.Require().Equal(feedName, feedContext.Feed.FeedName) + s.Require().Equal(servicetypes.PAUSED, feedContext.State) // ------test GetCmdQueryFeeds()------------- - respType = proto.Message(&oracletypes.QueryFeedsResponse{}) - bz, err = oracletestutil.QueryFeedsExec(clientCtx) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - feedsResp := respType.(*oracletypes.QueryFeedsResponse) - s.Require().NoError(err) + feedsResp := oracletestutil.QueryFeedsExec(s.T(), s.network, clientCtx) s.Require().Len(feedsResp.Feeds, 1) - s.Require().Equal(*feedResp, feedsResp.Feeds[0]) + s.Require().Equal(*feedContext, feedsResp.Feeds[0]) // ------test GetCmdStartFeed()------------- args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - bz, err = oracletestutil.StartFeedExec(clientCtx, creator.String(), feedName, args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + txResult = oracletestutil.StartFeedExec(s.T(), s.network, clientCtx, creator.String(), feedName, args...) + s.Require().Equal(expectedCode, txResult.Code) - respType = proto.Message(&oracletypes.FeedContext{}) - bz, err = oracletestutil.QueryFeedExec(clientCtx, feedName) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - feedResp = respType.(*oracletypes.FeedContext) - s.Require().NoError(err) - s.Require().Equal(servicetypes.RUNNING, feedResp.State) + feedContext = oracletestutil.QueryFeedExec(s.T(), s.network, clientCtx, feedName) + s.Require().Equal(servicetypes.RUNNING, feedContext.State) // ------test GetCmdPauseFeed()------------- - respType = proto.Message(&sdk.TxResponse{}) + txResult = oracletestutil.PauseFeedExec(s.T(), s.network, clientCtx, creator.String(), feedName, args...) + s.Require().Equal(expectedCode, txResult.Code) - bz, err = oracletestutil.PauseFeedExec(clientCtx, creator.String(), feedName, args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - - respType = proto.Message(&oracletypes.FeedContext{}) - bz, err = oracletestutil.QueryFeedExec(clientCtx, feedName) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - feedResp = respType.(*oracletypes.FeedContext) - s.Require().NoError(err) - s.Require().Equal(servicetypes.PAUSED, feedResp.State) + feedContext = oracletestutil.QueryFeedExec(s.T(), s.network, clientCtx, feedName) + s.Require().Equal(servicetypes.PAUSED, feedContext.State) // ------test GetCmdEditFeed()------------- args = []string{ fmt.Sprintf("--%s=%d", oraclecli.FlagTimeout, newTimeout), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - bz, err = oracletestutil.EditFeedExec(clientCtx, creator.String(), feedName, args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + txResult = oracletestutil.EditFeedExec(s.T(), s.network, clientCtx, creator.String(), feedName, args...) + s.Require().Equal(expectedCode, txResult.Code) - respType = proto.Message(&oracletypes.FeedContext{}) - bz, err = oracletestutil.QueryFeedExec(clientCtx, feedName) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - feedResp = respType.(*oracletypes.FeedContext) - s.Require().NoError(err) - s.Require().Equal(newTimeout, feedResp.Timeout) - s.Require().Equal(servicetypes.PAUSED, feedResp.State) + feedContext = oracletestutil.QueryFeedExec(s.T(), s.network, clientCtx, feedName) + s.Require().Equal(newTimeout, feedContext.Timeout) + s.Require().Equal(servicetypes.PAUSED, feedContext.State) // ------test GetCmdQueryFeedValue()------------- - respType = proto.Message(&oracletypes.QueryFeedValueResponse{}) - bz, err = oracletestutil.QueryFeedValueExec(clientCtx, feedName) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - feedValueResp := respType.(*oracletypes.QueryFeedValueResponse) - s.Require().NoError(err) + feedValueResp := oracletestutil.QueryFeedValueExec(s.T(), s.network, clientCtx, feedName) s.Require().Len(feedValueResp.FeedValues, 0) // ------restart Feed------------- args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - bz, err = oracletestutil.StartFeedExec(clientCtx, creator.String(), feedName, args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + txResult = oracletestutil.StartFeedExec(s.T(), s.network, clientCtx, creator.String(), feedName, args...) + s.Require().Equal(expectedCode, txResult.Code) - respType = proto.Message(&oracletypes.FeedContext{}) - bz, err = oracletestutil.QueryFeedExec(clientCtx, feedName) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - feedResp = respType.(*oracletypes.FeedContext) - s.Require().NoError(err) - s.Require().Equal(servicetypes.RUNNING, feedResp.State) + feedContext = oracletestutil.QueryFeedExec(s.T(), s.network, clientCtx, feedName) + s.Require().Equal(servicetypes.RUNNING, feedContext.State) // ------get request------------- - requestHeight := txResp.Height + requestHeight := txResult.Height - blockResult, err := clientCtx.Client.BlockResults(context.Background(), &requestHeight) + blockResult, err := val.RPCClient.BlockResults(context.Background(), &requestHeight) s.Require().NoError(err) var requestId string for _, event := range blockResult.EndBlockEvents { @@ -312,25 +234,15 @@ func (s *IntegrationTestSuite) TestOracle() { fmt.Sprintf("--%s=%s", servicecli.FlagData, respOutput), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) - bz, err = servicetestutil.RespondServiceExec(clientCtx, provider.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + txResult = servicetestutil.RespondServiceExec(s.T(), s.network, clientCtx, provider.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) // ------get feedValue------------- - respType = proto.Message(&oracletypes.QueryFeedValueResponse{}) - bz, err = oracletestutil.QueryFeedValueExec(clientCtx, feedName) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - feedValueResp = respType.(*oracletypes.QueryFeedValueResponse) - s.Require().NoError(err) + feedValueResp = oracletestutil.QueryFeedValueExec(s.T(), s.network, clientCtx, feedName) s.Require().Len(feedValueResp.FeedValues, 1) s.Require().Equal((strconv.FormatFloat(2, 'f', 8, 64)), feedValueResp.FeedValues[0].Data) } diff --git a/modules/oracle/client/testutil/grpc_query_test.go b/modules/oracle/client/testutil/grpc_query_test.go index 006c5d51..9c1ae5b7 100644 --- a/modules/oracle/client/testutil/grpc_query_test.go +++ b/modules/oracle/client/testutil/grpc_query_test.go @@ -8,8 +8,7 @@ import ( "github.com/stretchr/testify/suite" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/testutil/network" - "github.com/cosmos/cosmos-sdk/testutil/rest" + "github.com/cosmos/cosmos-sdk/testutil" sdk "github.com/cosmos/cosmos-sdk/types" oraclecli "github.com/irisnet/irismod/modules/oracle/client/cli" @@ -24,24 +23,13 @@ import ( type IntegrationTestSuite struct { suite.Suite - cfg network.Config - network *network.Network + network simapp.Network } func (s *IntegrationTestSuite) SetupSuite() { s.T().Log("setting up integration test suite") - cfg := simapp.NewConfig() - cfg.NumValidators = 1 - - s.cfg = cfg - - var err error - s.network, err = network.New(s.T(), s.T().TempDir(), cfg) - s.Require().NoError(err) - - _, err = s.network.WaitForHeight(1) - s.Require().NoError(err) + s.network = simapp.SetupNetwork(s.T()) } func (s *IntegrationTestSuite) TearDownSuite() { @@ -56,6 +44,7 @@ func TestIntegrationTestSuite(t *testing.T) { func (s *IntegrationTestSuite) TestOracle() { val := s.network.Validators[0] clientCtx := val.ClientCtx + expectedCode := uint32(0) // --------------------------------------------------------------------------- serviceName := "test-service" @@ -96,17 +85,12 @@ func (s *IntegrationTestSuite) TestOracle() { fmt.Sprintf("--%s=%s", servicecli.FlagSchemas, serviceSchemas), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType := proto.Message(&sdk.TxResponse{}) - expectedCode := uint32(0) - bz, err := servicetestutil.DefineServiceExec(clientCtx, author.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp := respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + txResult := servicetestutil.DefineServiceExec(s.T(), s.network, clientCtx, author.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) //------test GetCmdBindService()------------- args = []string{ @@ -118,16 +102,12 @@ func (s *IntegrationTestSuite) TestOracle() { fmt.Sprintf("--%s=%s", servicecli.FlagProvider, provider), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) - bz, err = servicetestutil.BindServiceExec(clientCtx, provider.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + + txResult = servicetestutil.BindServiceExec(s.T(), s.network, clientCtx, provider.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) //------test GetCmdCreateFeed()------------- args = []string{ @@ -146,24 +126,18 @@ func (s *IntegrationTestSuite) TestOracle() { fmt.Sprintf("--%s=%s", oraclecli.FlagCreator, creator), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) - - bz, err = oracletestutil.CreateFeedExec(clientCtx, creator.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + txResult = oracletestutil.CreateFeedExec(s.T(), s.network, clientCtx, creator.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) // ------test GetCmdQueryFeed()------------- url := fmt.Sprintf("%s/irismod/oracle/feeds/%s", baseURL, feedName) - resp, err := rest.GetRequest(url) + resp, err := testutil.GetRequest(url) s.Require().NoError(err) - respType = proto.Message(&oracletypes.QueryFeedResponse{}) + respType := proto.Message(&oracletypes.QueryFeedResponse{}) s.Require().NoError(clientCtx.Codec.UnmarshalJSON(resp, respType)) feedResp := respType.(*oracletypes.QueryFeedResponse) s.Require().NoError(err) @@ -172,7 +146,7 @@ func (s *IntegrationTestSuite) TestOracle() { // ------test GetCmdQueryFeeds()------------- url = fmt.Sprintf("%s/irismod/oracle/feeds", baseURL) - resp, err = rest.GetRequest(url) + resp, err = testutil.GetRequest(url) s.Require().NoError(err) respType = proto.Message(&oracletypes.QueryFeedsResponse{}) s.Require().NoError(clientCtx.Codec.UnmarshalJSON(resp, respType)) @@ -183,7 +157,7 @@ func (s *IntegrationTestSuite) TestOracle() { // ------test GetCmdQueryFeedValue()------------- url = fmt.Sprintf("%s/irismod/oracle/feeds/%s/values", baseURL, feedName) - resp, err = rest.GetRequest(url) + resp, err = testutil.GetRequest(url) respType = proto.Message(&oracletypes.QueryFeedValueResponse{}) s.Require().NoError(err) s.Require().NoError(clientCtx.Codec.UnmarshalJSON(resp, respType)) diff --git a/modules/oracle/client/testutil/test-helpers.go b/modules/oracle/client/testutil/test-helpers.go index 8b839ae2..4ae9b65c 100644 --- a/modules/oracle/client/testutil/test-helpers.go +++ b/modules/oracle/client/testutil/test-helpers.go @@ -2,82 +2,119 @@ package testutil import ( "fmt" + "testing" "github.com/tendermint/tendermint/libs/cli" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/testutil" - clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" oraclecli "github.com/irisnet/irismod/modules/oracle/client/cli" + oracletypes "github.com/irisnet/irismod/modules/oracle/types" + "github.com/irisnet/irismod/simapp" ) // MsgRedelegateExec creates a redelegate message. -func CreateFeedExec(clientCtx client.Context, from string, extraArgs ...string) (testutil.BufferWriter, error) { +func CreateFeedExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + extraArgs ...string) *simapp.ResponseTx { args := []string{ fmt.Sprintf("--%s=%s", flags.FlagFrom, from), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, oraclecli.GetCmdCreateFeed(), args) + return network.ExecTxCmdWithResult(t, clientCtx, oraclecli.GetCmdCreateFeed(), args) } -func EditFeedExec(clientCtx client.Context, from string, feedName string, extraArgs ...string) (testutil.BufferWriter, error) { +func EditFeedExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + feedName string, + extraArgs ...string) *simapp.ResponseTx { args := []string{ feedName, fmt.Sprintf("--%s=%s", flags.FlagFrom, from), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, oraclecli.GetCmdEditFeed(), args) + return network.ExecTxCmdWithResult(t, clientCtx, oraclecli.GetCmdEditFeed(), args) } -func StartFeedExec(clientCtx client.Context, from string, feedName string, extraArgs ...string) (testutil.BufferWriter, error) { +func StartFeedExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + feedName string, + extraArgs ...string) *simapp.ResponseTx { args := []string{ feedName, fmt.Sprintf("--%s=%s", flags.FlagFrom, from), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, oraclecli.GetCmdStartFeed(), args) + return network.ExecTxCmdWithResult(t, clientCtx, oraclecli.GetCmdStartFeed(), args) } -func PauseFeedExec(clientCtx client.Context, from string, feedName string, extraArgs ...string) (testutil.BufferWriter, error) { +func PauseFeedExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + feedName string, + extraArgs ...string) *simapp.ResponseTx { args := []string{ feedName, fmt.Sprintf("--%s=%s", flags.FlagFrom, from), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, oraclecli.GetCmdPauseFeed(), args) + return network.ExecTxCmdWithResult(t, clientCtx, oraclecli.GetCmdPauseFeed(), args) } -func QueryFeedExec(clientCtx client.Context, feedName string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryFeedExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + feedName string, + extraArgs ...string) *oracletypes.FeedContext { args := []string{ feedName, fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, oraclecli.GetCmdQueryFeed(), args) + response := &oracletypes.FeedContext{} + network.ExecQueryCmd(t, clientCtx, oraclecli.GetCmdQueryFeed(), args, response) + return response } -func QueryFeedsExec(clientCtx client.Context, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryFeedsExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + extraArgs ...string) *oracletypes.QueryFeedsResponse { args := []string{ fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, oraclecli.GetCmdQueryFeeds(), args) + response := &oracletypes.QueryFeedsResponse{} + network.ExecQueryCmd(t, clientCtx, oraclecli.GetCmdQueryFeeds(), args, response) + return response } -func QueryFeedValueExec(clientCtx client.Context, feedName string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryFeedValueExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + feedName string, + extraArgs ...string) *oracletypes.QueryFeedValueResponse { args := []string{ feedName, fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, oraclecli.GetCmdQueryFeedValue(), args) + response := &oracletypes.QueryFeedValueResponse{} + network.ExecQueryCmd(t, clientCtx, oraclecli.GetCmdQueryFeedValue(), args, response) + return response } diff --git a/modules/oracle/keeper/grpc_query.go b/modules/oracle/keeper/grpc_query.go index 071a6329..09362804 100644 --- a/modules/oracle/keeper/grpc_query.go +++ b/modules/oracle/keeper/grpc_query.go @@ -2,6 +2,7 @@ package keeper import ( "context" + "encoding/hex" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -84,3 +85,20 @@ func (k Keeper) FeedValue(c context.Context, req *types.QueryFeedValueRequest) ( result := k.GetFeedValues(ctx, req.FeedName) return &types.QueryFeedValueResponse{FeedValues: result}, nil } + +func BuildFeedContext(ctx sdk.Context, k Keeper, feed types.Feed) (feedCtx types.FeedContext) { + requestContextID, _ := hex.DecodeString(feed.RequestContextID) + reqCtx, found := k.sk.GetRequestContext(ctx, requestContextID) + if found { + feedCtx.Providers = reqCtx.Providers + feedCtx.ResponseThreshold = reqCtx.ResponseThreshold + feedCtx.ServiceName = reqCtx.ServiceName + feedCtx.Input = reqCtx.Input + feedCtx.RepeatedFrequency = reqCtx.RepeatedFrequency + feedCtx.ServiceFeeCap = reqCtx.ServiceFeeCap + feedCtx.Timeout = reqCtx.Timeout + feedCtx.State = reqCtx.State + } + feedCtx.Feed = &feed + return feedCtx +} diff --git a/modules/oracle/keeper/querier.go b/modules/oracle/keeper/querier.go deleted file mode 100644 index 837e1716..00000000 --- a/modules/oracle/keeper/querier.go +++ /dev/null @@ -1,107 +0,0 @@ -package keeper - -import ( - "encoding/hex" - - abci "github.com/tendermint/tendermint/abci/types" - - "github.com/cosmos/cosmos-sdk/codec" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - - "github.com/irisnet/irismod/modules/oracle/types" -) - -// NewQuerier creates a querier for the oracle module -func NewQuerier(k Keeper, legacyQuerierCdc *codec.LegacyAmino) sdk.Querier { - return func(ctx sdk.Context, path []string, req abci.RequestQuery) ([]byte, error) { - switch path[0] { - case types.QueryFeed: - return queryFeed(ctx, req, k, legacyQuerierCdc) - case types.QueryFeeds: - return queryFeeds(ctx, req, k, legacyQuerierCdc) - case types.QueryFeedValue: - return queryFeedValue(ctx, req, k, legacyQuerierCdc) - default: - return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unknown query path: %s", path[0]) - } - } -} - -func queryFeed(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - var params types.QueryFeedParams - if err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms); err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) - } - - feed, found := k.GetFeed(ctx, params.FeedName) - if !found { - return nil, sdkerrors.Wrapf(types.ErrUnknownFeedName, params.FeedName) - } - feedCtx := BuildFeedContext(ctx, k, feed) - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, feedCtx) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - return bz, nil -} - -func queryFeeds(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - var params types.QueryFeedsParams - if err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms); err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) - } - - var result types.FeedsContext - if len(params.State) == 0 { - k.IteratorFeeds(ctx, func(feed types.Feed) { - result = append(result, BuildFeedContext(ctx, k, feed)) - }) - } else { - state, err := types.RequestContextStateFromString(params.State) - if err != nil { - return nil, sdkerrors.Wrapf(sdkerrors.ErrInvalidRequest, err.Error()) - } - k.IteratorFeedsByState(ctx, state, func(feed types.Feed) { - result = append(result, BuildFeedContext(ctx, k, feed)) - }) - } - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, result) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - return bz, nil -} - -func queryFeedValue(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - var params types.QueryFeedValueParams - if err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms); err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) - } - - result := k.GetFeedValues(ctx, params.FeedName) - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, result) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - return bz, nil -} - -func BuildFeedContext(ctx sdk.Context, k Keeper, feed types.Feed) (feedCtx types.FeedContext) { - requestContextID, _ := hex.DecodeString(feed.RequestContextID) - reqCtx, found := k.sk.GetRequestContext(ctx, requestContextID) - if found { - feedCtx.Providers = reqCtx.Providers - feedCtx.ResponseThreshold = reqCtx.ResponseThreshold - feedCtx.ServiceName = reqCtx.ServiceName - feedCtx.Input = reqCtx.Input - feedCtx.RepeatedFrequency = reqCtx.RepeatedFrequency - feedCtx.ServiceFeeCap = reqCtx.ServiceFeeCap - feedCtx.Timeout = reqCtx.Timeout - feedCtx.State = reqCtx.State - } - feedCtx.Feed = &feed - return feedCtx -} diff --git a/modules/oracle/keeper/querier_test.go b/modules/oracle/keeper/querier_test.go deleted file mode 100644 index c4e65245..00000000 --- a/modules/oracle/keeper/querier_test.go +++ /dev/null @@ -1,131 +0,0 @@ -package keeper_test - -import ( - abci "github.com/tendermint/tendermint/abci/types" - - sdk "github.com/cosmos/cosmos-sdk/types" - - "github.com/irisnet/irismod/modules/oracle/keeper" - "github.com/irisnet/irismod/modules/oracle/types" - "github.com/irisnet/irismod/modules/service/exported" -) - -func (suite *KeeperTestSuite) TestNewQuerier() { - msg := &types.MsgCreateFeed{ - FeedName: "ethPrice", - ServiceName: "GetEthPrice", - AggregateFunc: "avg", - ValueJsonPath: "high", - LatestHistory: 5, - Providers: []string{addrs[1]}, - Input: "xxxx", - Timeout: 10, - ServiceFeeCap: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100))), - RepeatedFrequency: 1, - ResponseThreshold: 1, - Creator: addrs[0], - } - - // ================test CreateFeed start================ - err := suite.keeper.CreateFeed(suite.ctx, msg) - suite.NoError(err) - - // test QueryFeed - querier := keeper.NewQuerier(suite.keeper, suite.cdc) - - params := types.QueryFeedParams{ - FeedName: msg.FeedName, - } - bz := suite.cdc.MustMarshalJSON(params) - res, err := querier( - suite.ctx, - []string{types.QueryFeed}, - abci.RequestQuery{Data: bz}, - ) - suite.NoError(err) - - var feedCtx types.FeedContext - suite.cdc.MustUnmarshalJSON(res, &feedCtx) - - suite.EqualValues( - types.FeedContext{ - Feed: &types.Feed{ - FeedName: msg.FeedName, - AggregateFunc: msg.AggregateFunc, - ValueJsonPath: msg.ValueJsonPath, - LatestHistory: msg.LatestHistory, - RequestContextID: mockReqCtxID, - Creator: msg.Creator, - }, - ServiceName: msg.ServiceName, - Providers: msg.Providers, - Input: msg.Input, - Timeout: msg.Timeout, - ServiceFeeCap: msg.ServiceFeeCap, - RepeatedFrequency: msg.RepeatedFrequency, - ResponseThreshold: msg.ResponseThreshold, - State: exported.PAUSED, - }, - feedCtx, - ) - - // test QueryFeeds - params1 := types.QueryFeedsParams{ - State: "paused", - } - bz = suite.cdc.MustMarshalJSON(params1) - res, err = querier( - suite.ctx, - []string{types.QueryFeeds}, - abci.RequestQuery{Data: bz}, - ) - suite.NoError(err) - - var feedsCtx []types.FeedContext - suite.cdc.MustUnmarshalJSON(res, &feedsCtx) - suite.Len(feedsCtx, 1) - suite.EqualValues( - types.FeedContext{ - Feed: &types.Feed{ - FeedName: msg.FeedName, - AggregateFunc: msg.AggregateFunc, - ValueJsonPath: msg.ValueJsonPath, - LatestHistory: msg.LatestHistory, - RequestContextID: mockReqCtxID, - Creator: msg.Creator, - }, - ServiceName: msg.ServiceName, - Providers: msg.Providers, - Input: msg.Input, - Timeout: msg.Timeout, - ServiceFeeCap: msg.ServiceFeeCap, - RepeatedFrequency: msg.RepeatedFrequency, - ResponseThreshold: msg.ResponseThreshold, - State: exported.PAUSED, - }, - feedsCtx[0], - ) - - // ================test StartFeed start================ - err = suite.keeper.StartFeed(suite.ctx, &types.MsgStartFeed{ - FeedName: msg.FeedName, - Creator: addrs[0], - }) - suite.NoError(err) - - // test QueryValue - params2 := types.QueryFeedValueParams{ - FeedName: msg.FeedName, - } - bz = suite.cdc.MustMarshalJSON(params2) - res, err = querier( - suite.ctx, - []string{types.QueryFeedValue}, - abci.RequestQuery{Data: bz}, - ) - suite.NoError(err) - var feedValues types.FeedValues - suite.cdc.MustUnmarshalJSON(res, &feedValues) - suite.Len(feedsCtx, 1) - suite.Equal("250.00000000", feedValues[0].Data) -} diff --git a/modules/oracle/module.go b/modules/oracle/module.go index 674b0222..b20fb93c 100644 --- a/modules/oracle/module.go +++ b/modules/oracle/module.go @@ -4,7 +4,6 @@ import ( "context" "encoding/json" "fmt" - "math/rand" "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" @@ -117,19 +116,6 @@ func (am AppModule) RegisterServices(cfg module.Configurator) { // RegisterInvariants registers the oracle module invariants. func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {} -// Route returns the message routing key for the oracle module. -func (am AppModule) Route() sdk.Route { - return sdk.NewRoute(types.RouterKey, NewHandler(am.keeper)) -} - -// QuerierRoute returns the oracle module's querier route name. -func (AppModule) QuerierRoute() string { return types.RouterKey } - -// LegacyQuerierHandler returns the oracle module sdk.Querier. -func (am AppModule) LegacyQuerierHandler(legacyQuerierCdc *codec.LegacyAmino) sdk.Querier { - return keeper.NewQuerier(am.keeper, legacyQuerierCdc) -} - // InitGenesis performs genesis initialization for the oracle module. It returns // no validator updates. func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { @@ -165,16 +151,6 @@ func (AppModule) EndBlock(_ sdk.Context, _ abci.RequestEndBlock) []abci.Validato // GenerateGenesisState creates a randomized GenState of the oracle module. func (AppModule) GenerateGenesisState(simState *module.SimulationState) {} -// ProposalContents doesn't return any content functions for governance proposals. -func (AppModule) ProposalContents(simState module.SimulationState) []simtypes.WeightedProposalContent { - return nil -} - -// RandomizedParams creates randomized oracle param changes for the simulator. -func (AppModule) RandomizedParams(r *rand.Rand) []simtypes.ParamChange { - return nil -} - // RegisterStoreDecoder registers a decoder for oracle module's types func (am AppModule) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry) {} diff --git a/modules/oracle/simulation/operation.go b/modules/oracle/simulation/operation.go index fa8bc45d..02fadf4f 100644 --- a/modules/oracle/simulation/operation.go +++ b/modules/oracle/simulation/operation.go @@ -4,10 +4,10 @@ import ( "fmt" "math/rand" + simappparams "cosmossdk.io/simapp/params" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/simapp/helpers" - simappparams "github.com/cosmos/cosmos-sdk/simapp/params" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" @@ -133,7 +133,7 @@ func SimulateCreateFeed(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKe txConfig, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -183,12 +183,12 @@ func SimulateStartFeed(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKee } txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -240,12 +240,12 @@ func SimulatePauseFeed(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKee } txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -316,7 +316,7 @@ func SimulateEditFeed(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKeep txConfig, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, diff --git a/modules/oracle/types/genesis.pb.go b/modules/oracle/types/genesis.pb.go index 9324eb18..0276246f 100644 --- a/modules/oracle/types/genesis.pb.go +++ b/modules/oracle/types/genesis.pb.go @@ -5,8 +5,8 @@ package types import ( fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" types "github.com/irisnet/irismod/modules/service/types" io "io" math "math" diff --git a/modules/oracle/types/oracle.pb.go b/modules/oracle/types/oracle.pb.go index 787ff04d..5369acbe 100644 --- a/modules/oracle/types/oracle.pb.go +++ b/modules/oracle/types/oracle.pb.go @@ -5,9 +5,9 @@ package types import ( fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + github_com_cosmos_gogoproto_types "github.com/cosmos/gogoproto/types" _ "google.golang.org/protobuf/types/known/timestamppb" io "io" math "math" @@ -303,7 +303,7 @@ func (m *FeedValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - n1, err1 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Timestamp, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Timestamp):]) + n1, err1 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.Timestamp, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.Timestamp):]) if err1 != nil { return 0, err1 } @@ -378,7 +378,7 @@ func (m *FeedValue) Size() (n int) { if l > 0 { n += 1 + l + sovOracle(uint64(l)) } - l = github_com_gogo_protobuf_types.SizeOfStdTime(m.Timestamp) + l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.Timestamp) n += 1 + l + sovOracle(uint64(l)) return n } @@ -740,7 +740,7 @@ func (m *FeedValue) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.Timestamp, dAtA[iNdEx:postIndex]); err != nil { + if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.Timestamp, dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex diff --git a/modules/oracle/types/query.pb.go b/modules/oracle/types/query.pb.go index 5c4e4719..aff8c610 100644 --- a/modules/oracle/types/query.pb.go +++ b/modules/oracle/types/query.pb.go @@ -9,9 +9,9 @@ import ( github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" query "github.com/cosmos/cosmos-sdk/types/query" - _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" types1 "github.com/irisnet/irismod/modules/service/types" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" diff --git a/modules/oracle/types/tx.pb.go b/modules/oracle/types/tx.pb.go index 19513bf3..0c3f9f69 100644 --- a/modules/oracle/types/tx.pb.go +++ b/modules/oracle/types/tx.pb.go @@ -8,9 +8,9 @@ import ( fmt "fmt" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/modules/random/client/cli/cli_test.go b/modules/random/client/cli/cli_test.go index c09fd615..acc73d55 100644 --- a/modules/random/client/cli/cli_test.go +++ b/modules/random/client/cli/cli_test.go @@ -8,12 +8,10 @@ import ( "testing" "time" - "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/suite" "github.com/tidwall/gjson" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/testutil/network" sdk "github.com/cosmos/cosmos-sdk/types" randomcli "github.com/irisnet/irismod/modules/random/client/cli" @@ -28,22 +26,13 @@ import ( type IntegrationTestSuite struct { suite.Suite - cfg network.Config - network *network.Network + network simapp.Network } func (s *IntegrationTestSuite) SetupSuite() { s.T().Log("setting up integration test suite") - cfg := simapp.NewConfig() - cfg.NumValidators = 1 - - var err error - s.cfg = cfg - s.network, err = network.New(s.T(), s.T().TempDir(), cfg) - - _, err = s.network.WaitForHeight(1) - s.Require().NoError(err) + s.network = simapp.SetupNetwork(s.T()) } func (s *IntegrationTestSuite) TearDownSuite() { @@ -58,10 +47,11 @@ func TestIntegrationTestSuite(t *testing.T) { func (s *IntegrationTestSuite) TestRandom() { val := s.network.Validators[0] clientCtx := val.ClientCtx + expectedCode := uint32(0) // --------------------------------------------------------------------------- - serviceDeposit := fmt.Sprintf("50000%s", s.cfg.BondDenom) - servicePrices := fmt.Sprintf(`{"price": "50%s"}`, s.cfg.BondDenom) + serviceDeposit := fmt.Sprintf("50000%s", s.network.BondDenom) + servicePrices := fmt.Sprintf(`{"price": "50%s"}`, s.network.BondDenom) qos := int64(3) options := "{}" provider := val.Address @@ -69,7 +59,7 @@ func (s *IntegrationTestSuite) TestRandom() { from := val.Address blockInterval := 4 oracle := true - serviceFeeCap := fmt.Sprintf("50%s", s.cfg.BondDenom) + serviceFeeCap := fmt.Sprintf("50%s", s.network.BondDenom) respResult := `{"code":200,"message":""}` seedStr := "ABCDEF12ABCDEF12ABCDEF12ABCDEF12ABCDEF12ABCDEF12ABCDEF12ABCDEF12" @@ -85,16 +75,12 @@ func (s *IntegrationTestSuite) TestRandom() { fmt.Sprintf("--%s=%s", servicecli.FlagProvider, provider), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType := proto.Message(&sdk.TxResponse{}) - expectedCode := uint32(0) - bz, err := servicetestutil.BindServiceExec(clientCtx, provider.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp := respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + + txResult := servicetestutil.BindServiceExec(s.T(), s.network, clientCtx, provider.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) // ------test GetCmdRequestRandom()------------- args = []string{ @@ -103,36 +89,26 @@ func (s *IntegrationTestSuite) TestRandom() { fmt.Sprintf("--%s=%d", randomcli.FlagBlockInterval, blockInterval), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) + txResult = randomtestutil.RequestRandomExec(s.T(), s.network, clientCtx, from.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) - bz, err = randomtestutil.RequestRandomExec(clientCtx, from.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - requestID := gjson.Get(txResp.RawLog, "0.events.1.attributes.0.value").String() - requestHeight := gjson.Get(txResp.RawLog, "0.events.1.attributes.2.value").Int() + requestID := gjson.Get(txResult.Log, "0.events.1.attributes.0.value").String() + requestHeight := gjson.Get(txResult.Log, "0.events.1.attributes.2.value").Int() // ------test GetCmdQueryRandomRequestQueue()------------- - respType = proto.Message(&randomtypes.QueryRandomRequestQueueResponse{}) - bz, err = randomtestutil.QueryRandomRequestQueueExec(clientCtx, fmt.Sprintf("%d", requestHeight)) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - qrrResp := respType.(*randomtypes.QueryRandomRequestQueueResponse) - s.Require().NoError(err) + qrrResp := randomtestutil.QueryRandomRequestQueueExec(s.T(), s.network, clientCtx, fmt.Sprintf("%d", requestHeight)) s.Require().Len(qrrResp.Requests, 1) // ------get service request------------- requestHeight = requestHeight + 1 - _, err = s.network.WaitForHeightWithTimeout(requestHeight, time.Duration(int64(blockInterval+2)*int64(s.cfg.TimeoutCommit))) + _, err := s.network.WaitForHeightWithTimeout(requestHeight, time.Duration(int64(blockInterval+2)*int64(s.network.TimeoutCommit))) s.Require().NoError(err) - blockResult, err := clientCtx.Client.BlockResults(context.Background(), &requestHeight) + blockResult, err := val.RPCClient.BlockResults(context.Background(), &requestHeight) s.Require().NoError(err) var requestId string for _, event := range blockResult.EndBlockEvents { @@ -164,25 +140,17 @@ func (s *IntegrationTestSuite) TestRandom() { fmt.Sprintf("--%s=%s", servicecli.FlagData, respOutput), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) - bz, err = servicetestutil.RespondServiceExec(clientCtx, provider.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - generateHeight := txResp.Height + + txResult = servicetestutil.RespondServiceExec(s.T(), s.network, clientCtx, provider.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) + + generateHeight := txResult.Height // ------test GetCmdQueryRandom()------------- - respType = proto.Message(&randomtypes.Random{}) - bz, err = randomtestutil.QueryRandomExec(clientCtx, requestID) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - randomResp := respType.(*randomtypes.Random) - s.Require().NoError(err) + randomResp := randomtestutil.QueryRandomExec(s.T(), s.network, clientCtx, requestID) s.Require().NotNil(randomResp.Value) generateBLock, err := clientCtx.Client.Block(context.Background(), &generateHeight) diff --git a/modules/random/client/testutil/grpc_query_test.go b/modules/random/client/testutil/grpc_query_test.go index d9ec3942..d1b4eb8f 100644 --- a/modules/random/client/testutil/grpc_query_test.go +++ b/modules/random/client/testutil/grpc_query_test.go @@ -12,8 +12,7 @@ import ( "github.com/tidwall/gjson" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/testutil/network" - "github.com/cosmos/cosmos-sdk/testutil/rest" + "github.com/cosmos/cosmos-sdk/testutil" sdk "github.com/cosmos/cosmos-sdk/types" randomcli "github.com/irisnet/irismod/modules/random/client/cli" @@ -28,24 +27,13 @@ import ( type IntegrationTestSuite struct { suite.Suite - cfg network.Config - network *network.Network + network simapp.Network } func (s *IntegrationTestSuite) SetupSuite() { s.T().Log("setting up integration test suite") - cfg := simapp.NewConfig() - cfg.NumValidators = 1 - - s.cfg = cfg - - var err error - s.network, err = network.New(s.T(), s.T().TempDir(), cfg) - s.Require().NoError(err) - - _, err = s.network.WaitForHeight(1) - s.Require().NoError(err) + s.network = simapp.SetupNetwork(s.T()) } func (s *IntegrationTestSuite) TearDownSuite() { @@ -60,10 +48,11 @@ func TestIntegrationTestSuite(t *testing.T) { func (s *IntegrationTestSuite) TestRandom() { val := s.network.Validators[0] clientCtx := val.ClientCtx + expectedCode := uint32(0) // --------------------------------------------------------------------------- - serviceDeposit := fmt.Sprintf("50000%s", s.cfg.BondDenom) - servicePrices := fmt.Sprintf(`{"price": "50%s"}`, s.cfg.BondDenom) + serviceDeposit := fmt.Sprintf("50000%s", s.network.BondDenom) + servicePrices := fmt.Sprintf(`{"price": "50%s"}`, s.network.BondDenom) qos := int64(3) options := "{}" provider := val.Address @@ -72,7 +61,7 @@ func (s *IntegrationTestSuite) TestRandom() { from := val.Address blockInterval := 4 oracle := true - serviceFeeCap := fmt.Sprintf("50%s", s.cfg.BondDenom) + serviceFeeCap := fmt.Sprintf("50%s", s.network.BondDenom) respResult := `{"code":200,"message":""}` seedStr := "ABCDEF12ABCDEF12ABCDEF12ABCDEF12ABCDEF12ABCDEF12ABCDEF12ABCDEF12" @@ -88,16 +77,12 @@ func (s *IntegrationTestSuite) TestRandom() { fmt.Sprintf("--%s=%s", servicecli.FlagProvider, provider), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType := proto.Message(&sdk.TxResponse{}) - expectedCode := uint32(0) - bz, err := servicetestutil.BindServiceExec(clientCtx, provider.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp := respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + + txResult := servicetestutil.BindServiceExec(s.T(), s.network, clientCtx, provider.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) // ------test GetCmdRequestRandom()------------- args = []string{ @@ -106,25 +91,20 @@ func (s *IntegrationTestSuite) TestRandom() { fmt.Sprintf("--%s=%d", randomcli.FlagBlockInterval, blockInterval), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) + txResult = randomtestutil.RequestRandomExec(s.T(), s.network, clientCtx, from.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) - bz, err = randomtestutil.RequestRandomExec(clientCtx, from.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - requestID := gjson.Get(txResp.RawLog, "0.events.1.attributes.0.value").String() - requestHeight := gjson.Get(txResp.RawLog, "0.events.1.attributes.2.value").Int() + requestID := gjson.Get(txResult.Log, "0.events.1.attributes.0.value").String() + requestHeight := gjson.Get(txResult.Log, "0.events.1.attributes.2.value").Int() // ------test GetCmdQueryRandomRequestQueue()------------- url := fmt.Sprintf("%s/irismod/random/queue", baseURL) - resp, err := rest.GetRequest(url) - respType = proto.Message(&randomtypes.QueryRandomRequestQueueResponse{}) + resp, err := testutil.GetRequest(url) + respType := proto.Message(&randomtypes.QueryRandomRequestQueueResponse{}) s.Require().NoError(err) s.Require().NoError(clientCtx.Codec.UnmarshalJSON(resp, respType)) qrrResp := respType.(*randomtypes.QueryRandomRequestQueueResponse) @@ -133,10 +113,12 @@ func (s *IntegrationTestSuite) TestRandom() { // ------get service request------------- requestHeight = requestHeight + 1 - _, err = s.network.WaitForHeightWithTimeout(requestHeight, time.Duration(int64(blockInterval+2)*int64(s.cfg.TimeoutCommit))) - s.Require().NoError(err) + _, err = s.network.WaitForHeightWithTimeout(requestHeight, time.Duration(int64(blockInterval+2)*int64(s.network.TimeoutCommit))) + if err != nil { + s.network.WaitForNBlock(2) + } - blockResult, err := clientCtx.Client.BlockResults(context.Background(), &requestHeight) + blockResult, err := val.RPCClient.BlockResults(context.Background(), &requestHeight) s.Require().NoError(err) var requestId string for _, event := range blockResult.EndBlockEvents { @@ -146,7 +128,7 @@ func (s *IntegrationTestSuite) TestRandom() { var requestsBz []byte for _, attribute := range event.Attributes { if string(attribute.Key) == servicetypes.AttributeKeyRequests { - requestsBz = attribute.GetValue() + requestsBz = []byte(attribute.Value) found = true } } @@ -159,7 +141,7 @@ func (s *IntegrationTestSuite) TestRandom() { requestId = requestIds[0] } } - s.Require().NotNil(requestId) + s.Require().NotEmpty(requestId) // ------respond service request------------- args = []string{ @@ -168,21 +150,16 @@ func (s *IntegrationTestSuite) TestRandom() { fmt.Sprintf("--%s=%s", servicecli.FlagData, respOutput), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) - bz, err = servicetestutil.RespondServiceExec(clientCtx, provider.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + txResult = servicetestutil.RespondServiceExec(s.T(), s.network, clientCtx, provider.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) // ------test GetCmdQueryRandom()------------- url = fmt.Sprintf("%s/irismod/random/randoms/%s", baseURL, requestID) - resp, err = rest.GetRequest(url) + resp, err = testutil.GetRequest(url) respType = proto.Message(&randomtypes.QueryRandomResponse{}) s.Require().NoError(err) s.Require().NoError(clientCtx.Codec.UnmarshalJSON(resp, respType)) diff --git a/modules/random/client/testutil/test_helpers.go b/modules/random/client/testutil/test_helpers.go index ec81e47f..47728df6 100644 --- a/modules/random/client/testutil/test_helpers.go +++ b/modules/random/client/testutil/test_helpers.go @@ -2,43 +2,61 @@ package testutil import ( "fmt" + "testing" "github.com/tendermint/tendermint/libs/cli" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/testutil" - clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" randomcli "github.com/irisnet/irismod/modules/random/client/cli" + randomtypes "github.com/irisnet/irismod/modules/random/types" + "github.com/irisnet/irismod/simapp" ) // MsgRedelegateExec creates a redelegate message. -func RequestRandomExec(clientCtx client.Context, from string, extraArgs ...string) (testutil.BufferWriter, error) { +func RequestRandomExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ fmt.Sprintf("--%s=%s", flags.FlagFrom, from), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, randomcli.GetCmdRequestRandom(), args) + return network.ExecTxCmdWithResult(t, clientCtx, randomcli.GetCmdRequestRandom(), args) } -func QueryRandomExec(clientCtx client.Context, requestID string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryRandomExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + requestID string, + extraArgs ...string) *randomtypes.Random { args := []string{ requestID, fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, randomcli.GetCmdQueryRandom(), args) + response := &randomtypes.Random{} + network.ExecQueryCmd(t, clientCtx, randomcli.GetCmdQueryRandom(), args, response) + return response } -func QueryRandomRequestQueueExec(clientCtx client.Context, genHeight string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryRandomRequestQueueExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + genHeight string, + extraArgs ...string) *randomtypes.QueryRandomRequestQueueResponse { args := []string{ genHeight, fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, randomcli.GetCmdQueryRandomRequestQueue(), args) + response := &randomtypes.QueryRandomRequestQueueResponse{} + network.ExecQueryCmd(t, clientCtx, randomcli.GetCmdQueryRandomRequestQueue(), args, response) + return response } diff --git a/modules/random/keeper/grpc_query.go b/modules/random/keeper/grpc_query.go index 29c2867a..06cceffd 100644 --- a/modules/random/keeper/grpc_query.go +++ b/modules/random/keeper/grpc_query.go @@ -4,10 +4,13 @@ import ( "context" "encoding/hex" + "cosmossdk.io/api/tendermint/abci" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" + "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/irisnet/irismod/modules/random/types" ) @@ -58,3 +61,58 @@ func (k Keeper) RandomRequestQueue(c context.Context, req *types.QueryRandomRequ return &types.QueryRandomRequestQueueResponse{Requests: requests}, nil } + +func queryRandomRequestQueue(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { + var params types.QueryRandomRequestQueueParams + if err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms); err != nil { + return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) + } + + if params.Height < 0 { + return nil, sdkerrors.Wrap(types.ErrInvalidHeight, string(rune(params.Height))) + } + + var requests []types.Request + + if params.Height == 0 { + // query all pending requests + requests = queryAllRandomRequestsInQueue(ctx, k) + } else { + // query the pending requests by the specified height + requests = queryRandomRequestQueueByHeight(ctx, params.Height, k) + } + + bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, requests) + if err != nil { + return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) + } + + return bz, nil +} + +func queryRandomRequestQueueByHeight(ctx sdk.Context, height int64, k Keeper) []types.Request { + var requests = make([]types.Request, 0) + + iterator := k.IterateRandomRequestQueueByHeight(ctx, height) + defer iterator.Close() + + for ; iterator.Valid(); iterator.Next() { + var request types.Request + k.cdc.MustUnmarshal(iterator.Value(), &request) + + requests = append(requests, request) + } + + return requests +} + +func queryAllRandomRequestsInQueue(ctx sdk.Context, k Keeper) []types.Request { + var requests = make([]types.Request, 0) + + k.IterateRandomRequestQueue(ctx, func(h int64, reqID []byte, r types.Request) (stop bool) { + requests = append(requests, r) + return false + }) + + return requests +} diff --git a/modules/random/keeper/querier.go b/modules/random/keeper/querier.go deleted file mode 100644 index 9dc7bede..00000000 --- a/modules/random/keeper/querier.go +++ /dev/null @@ -1,106 +0,0 @@ -package keeper - -import ( - "encoding/hex" - - abci "github.com/tendermint/tendermint/abci/types" - - "github.com/cosmos/cosmos-sdk/codec" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - - "github.com/irisnet/irismod/modules/random/types" -) - -// NewQuerier creates a new random Querier instance -func NewQuerier(k Keeper, legacyQuerierCdc *codec.LegacyAmino) sdk.Querier { - return func(ctx sdk.Context, path []string, req abci.RequestQuery) ([]byte, error) { - switch path[0] { - case types.QueryRandom: - return queryRandom(ctx, req, k, legacyQuerierCdc) - case types.QueryRandomRequestQueue: - return queryRandomRequestQueue(ctx, req, k, legacyQuerierCdc) - default: - return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unknown query path: %s", path[0]) - } - } -} - -func queryRandom(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - var params types.QueryRandomParams - if err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms); err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) - } - - reqID, err := hex.DecodeString(params.ReqID) - if err != nil { - return nil, sdkerrors.Wrap(types.ErrInvalidReqID, params.ReqID) - } - - random, err2 := k.GetRandom(ctx, reqID) - if err2 != nil { - return nil, err2 - } - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, random) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} - -func queryRandomRequestQueue(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - var params types.QueryRandomRequestQueueParams - if err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms); err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) - } - - if params.Height < 0 { - return nil, sdkerrors.Wrap(types.ErrInvalidHeight, string(rune(params.Height))) - } - - var requests []types.Request - - if params.Height == 0 { - // query all pending requests - requests = queryAllRandomRequestsInQueue(ctx, k) - } else { - // query the pending requests by the specified height - requests = queryRandomRequestQueueByHeight(ctx, params.Height, k) - } - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, requests) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} - -func queryRandomRequestQueueByHeight(ctx sdk.Context, height int64, k Keeper) []types.Request { - var requests = make([]types.Request, 0) - - iterator := k.IterateRandomRequestQueueByHeight(ctx, height) - defer iterator.Close() - - for ; iterator.Valid(); iterator.Next() { - var request types.Request - k.cdc.MustUnmarshal(iterator.Value(), &request) - - requests = append(requests, request) - } - - return requests -} - -func queryAllRandomRequestsInQueue(ctx sdk.Context, k Keeper) []types.Request { - var requests = make([]types.Request, 0) - - k.IterateRandomRequestQueue(ctx, func(h int64, reqID []byte, r types.Request) (stop bool) { - requests = append(requests, r) - return false - }) - - return requests -} diff --git a/modules/random/keeper/querier_test.go b/modules/random/keeper/querier_test.go deleted file mode 100644 index 05683a2c..00000000 --- a/modules/random/keeper/querier_test.go +++ /dev/null @@ -1,76 +0,0 @@ -package keeper_test - -import ( - "encoding/hex" - "fmt" - "math/big" - "testing" - - "github.com/stretchr/testify/suite" - - abci "github.com/tendermint/tendermint/abci/types" - - sdk "github.com/cosmos/cosmos-sdk/types" - - "github.com/irisnet/irismod/modules/random/keeper" - "github.com/irisnet/irismod/modules/random/types" -) - -func TestQuerierSuite(t *testing.T) { - suite.Run(t, new(KeeperTestSuite)) -} - -func (suite *KeeperTestSuite) TestNewQuerier() { - req := abci.RequestQuery{ - Path: "", - Data: []byte{}, - } - querier := keeper.NewQuerier(suite.keeper, suite.cdc) - res, err := querier(suite.ctx, []string{"other"}, req) - suite.Error(err) - suite.Nil(res) - - // init random - random := types.NewRandom( - hex.EncodeToString(types.SHA256(testTxBytes)), - testHeight, - big.NewRat(testRandomNumerator, testRandomDenomiator).FloatString(types.RandPrec), - ) - suite.keeper.SetRandom(suite.ctx, testReqID, random) - - storedRandom, err := suite.keeper.GetRandom(suite.ctx, testReqID) - suite.NoError(err) - - // test queryRandom - - bz, errRes := suite.cdc.MarshalJSON(types.QueryRandomParams{ReqID: hex.EncodeToString(testReqID)}) - suite.NoError(errRes) - - req.Path = fmt.Sprintf("custom/%s/%s", types.QuerierRoute, types.QueryRandom) - req.Data = bz - - res, err = querier(suite.ctx, []string{types.QueryRandom}, req) - suite.NoError(err) - - var resultRandom types.Random - errRes = suite.cdc.UnmarshalJSON(res, &resultRandom) - suite.NoError(errRes) - suite.Equal(storedRandom, resultRandom) - - // test queryRandomRequestQueue - request, _ := suite.keeper.RequestRandom(suite.ctx, testConsumer, testBlockInterval, false, sdk.NewCoins()) - - bz, errRes = suite.cdc.MarshalJSON(types.QueryRandomRequestQueueParams{Height: int64(testBlockInterval)}) - suite.NoError(errRes) - - req.Path = fmt.Sprintf("custom/%s/%s", types.QuerierRoute, types.QueryRandomRequestQueue) - req.Data = bz - - res, err = querier(suite.ctx, []string{types.QueryRandomRequestQueue}, req) - suite.NoError(err) - - var resultRequests []types.Request - errRes = suite.cdc.UnmarshalJSON(res, &resultRequests) - suite.NoError(errRes) - suite.Equal([]types.Request{request}, resultRequests) -} diff --git a/modules/random/module.go b/modules/random/module.go index 63e613a6..6de04fd5 100644 --- a/modules/random/module.go +++ b/modules/random/module.go @@ -4,7 +4,6 @@ import ( "context" "encoding/json" "fmt" - "math/rand" "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" @@ -117,19 +116,6 @@ func (am AppModule) RegisterServices(cfg module.Configurator) { // RegisterInvariants registers the random module invariants. func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {} -// Route returns the message routing key for the random module. -func (am AppModule) Route() sdk.Route { - return sdk.NewRoute(types.RouterKey, NewHandler(am.keeper)) -} - -// QuerierRoute returns the random module's querier route name. -func (AppModule) QuerierRoute() string { return types.RouterKey } - -// LegacyQuerierHandler returns the random module sdk.Querier. -func (am AppModule) LegacyQuerierHandler(legacyQuerierCdc *codec.LegacyAmino) sdk.Querier { - return keeper.NewQuerier(am.keeper, legacyQuerierCdc) -} - // InitGenesis performs genesis initialization for the random module. It returns // no validator updates. func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { @@ -167,16 +153,6 @@ func (AppModule) EndBlock(_ sdk.Context, _ abci.RequestEndBlock) []abci.Validato // GenerateGenesisState creates a randomized GenState of the random module. func (AppModule) GenerateGenesisState(simState *module.SimulationState) {} -// ProposalContents doesn't return any content functions for governance proposals. -func (AppModule) ProposalContents(simState module.SimulationState) []simtypes.WeightedProposalContent { - return nil -} - -// RandomizedParams creates randomized random param changes for the simulator. -func (AppModule) RandomizedParams(r *rand.Rand) []simtypes.ParamChange { - return nil -} - // RegisterStoreDecoder registers a decoder for random module's types func (am AppModule) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry) { sdr[types.StoreKey] = simulation.NewDecodeStore(am.cdc) diff --git a/modules/random/simulation/operations.go b/modules/random/simulation/operations.go index 816abeb3..8518b6ee 100644 --- a/modules/random/simulation/operations.go +++ b/modules/random/simulation/operations.go @@ -3,9 +3,9 @@ package simulation import ( "math/rand" + simappparams "cosmossdk.io/simapp/params" "github.com/cosmos/cosmos-sdk/baseapp" - "github.com/cosmos/cosmos-sdk/simapp/helpers" - simappparams "github.com/cosmos/cosmos-sdk/simapp/params" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" @@ -46,7 +46,7 @@ func WeightedOperations(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKe txConfig, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, diff --git a/modules/random/simulation/params.go b/modules/random/simulation/params.go deleted file mode 100644 index 424fc69c..00000000 --- a/modules/random/simulation/params.go +++ /dev/null @@ -1,15 +0,0 @@ -package simulation - -// DONTCOVER - -import ( - "math/rand" - - "github.com/cosmos/cosmos-sdk/x/simulation" -) - -// ParamChanges defines the parameters that can be modified by param change proposals -// on the simulation -func ParamChanges(r *rand.Rand) []simulation.ParamChange { - return []simulation.ParamChange{} -} diff --git a/modules/random/types/genesis.pb.go b/modules/random/types/genesis.pb.go index 6e1e921a..b4f6324a 100644 --- a/modules/random/types/genesis.pb.go +++ b/modules/random/types/genesis.pb.go @@ -5,8 +5,8 @@ package types import ( fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" diff --git a/modules/random/types/query.pb.go b/modules/random/types/query.pb.go index 0dc286eb..c1454f6c 100644 --- a/modules/random/types/query.pb.go +++ b/modules/random/types/query.pb.go @@ -6,9 +6,9 @@ package types import ( context "context" fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" diff --git a/modules/random/types/random.pb.go b/modules/random/types/random.pb.go index 1d7f0cab..500069de 100644 --- a/modules/random/types/random.pb.go +++ b/modules/random/types/random.pb.go @@ -7,8 +7,8 @@ import ( fmt "fmt" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" diff --git a/modules/random/types/tx.pb.go b/modules/random/types/tx.pb.go index cb370ed8..fbdf5b99 100644 --- a/modules/random/types/tx.pb.go +++ b/modules/random/types/tx.pb.go @@ -8,9 +8,9 @@ import ( fmt "fmt" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/modules/record/client/cli/cli_test.go b/modules/record/client/cli/cli_test.go index e332b43e..d19b32ff 100644 --- a/modules/record/client/cli/cli_test.go +++ b/modules/record/client/cli/cli_test.go @@ -4,12 +4,9 @@ import ( "fmt" "testing" - "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/suite" - "github.com/tidwall/gjson" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/testutil/network" sdk "github.com/cosmos/cosmos-sdk/types" recordcli "github.com/irisnet/irismod/modules/record/client/cli" @@ -21,22 +18,13 @@ import ( type IntegrationTestSuite struct { suite.Suite - cfg network.Config - network *network.Network + network simapp.Network } func (s *IntegrationTestSuite) SetupSuite() { s.T().Log("setting up integration test suite") - cfg := simapp.NewConfig() - cfg.NumValidators = 1 - - var err error - s.cfg = cfg - s.network, err = network.New(s.T(), s.T().TempDir(), cfg) - - _, err = s.network.WaitForHeight(1) - s.Require().NoError(err) + s.network = simapp.SetupNetwork(s.T()) } func (s *IntegrationTestSuite) TearDownSuite() { @@ -65,24 +53,22 @@ func (s *IntegrationTestSuite) TestRecord() { fmt.Sprintf("--%s=%s", recordcli.FlagMeta, meta), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType := proto.Message(&sdk.TxResponse{}) expectedCode := uint32(0) - bz, err := recordtestutil.MsgCreateRecordExec(clientCtx, from.String(), digest, digestAlgo, args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp := respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + txResult := recordtestutil.CreateRecordExec(s.T(), + s.network, + clientCtx, from.String(), digest, digestAlgo, args...) + s.Require().Equal(expectedCode, txResult.Code) - recordID := gjson.Get(txResp.RawLog, "0.events.0.attributes.1.value").String() + recordID := s.network.GetAttribute(recordtypes.EventTypeCreateRecord, recordtypes.AttributeKeyRecordID, txResult.Events) // --------------------------------------------------------------------------- - respType = proto.Message(&recordtypes.Record{}) + record := &recordtypes.Record{} expectedContents := []recordtypes.Content{{ Digest: digest, DigestAlgo: digestAlgo, @@ -90,9 +76,6 @@ func (s *IntegrationTestSuite) TestRecord() { Meta: meta, }} - bz, err = recordtestutil.QueryRecordExec(val.ClientCtx, recordID) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - record := respType.(*recordtypes.Record) + recordtestutil.QueryRecordExec(s.T(), s.network, clientCtx, recordID, record) s.Require().Equal(expectedContents, record.Contents) } diff --git a/modules/record/client/testutil/grpc_query_test.go b/modules/record/client/testutil/grpc_query_test.go index 8a140afb..630add76 100644 --- a/modules/record/client/testutil/grpc_query_test.go +++ b/modules/record/client/testutil/grpc_query_test.go @@ -6,11 +6,9 @@ import ( "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/suite" - "github.com/tidwall/gjson" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/testutil/network" - "github.com/cosmos/cosmos-sdk/testutil/rest" + "github.com/cosmos/cosmos-sdk/testutil" sdk "github.com/cosmos/cosmos-sdk/types" recordcli "github.com/irisnet/irismod/modules/record/client/cli" @@ -22,24 +20,13 @@ import ( type IntegrationTestSuite struct { suite.Suite - cfg network.Config - network *network.Network + network simapp.Network } func (s *IntegrationTestSuite) SetupSuite() { s.T().Log("setting up integration test suite") - cfg := simapp.NewConfig() - cfg.NumValidators = 1 - - s.cfg = cfg - - var err error - s.network, err = network.New(s.T(), s.T().TempDir(), cfg) - s.Require().NoError(err) - - _, err = s.network.WaitForHeight(1) - s.Require().NoError(err) + s.network = simapp.SetupNetwork(s.T()) } func (s *IntegrationTestSuite) TearDownSuite() { @@ -68,27 +55,24 @@ func (s *IntegrationTestSuite) TestQueryRecordGRPC() { fmt.Sprintf("--%s=%s", recordcli.FlagMeta, meta), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType := proto.Message(&sdk.TxResponse{}) expectedCode := uint32(0) - bz, err := recordtestutil.MsgCreateRecordExec(clientCtx, from.String(), digest, digestAlgo, args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp := respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - - recordID := gjson.Get(txResp.RawLog, "0.events.0.attributes.1.value").String() + txResult := recordtestutil.CreateRecordExec(s.T(), + s.network, + clientCtx, from.String(), digest, digestAlgo, args...) + s.Require().Equal(expectedCode, txResult.Code) + recordID := s.network.GetAttribute(recordtypes.EventTypeCreateRecord, recordtypes.AttributeKeyRecordID, txResult.Events) // --------------------------------------------------------------------------- baseURL := val.APIAddress url := fmt.Sprintf("%s/irismod/record/records/%s", baseURL, recordID) - respType = proto.Message(&recordtypes.QueryRecordResponse{}) + respType := proto.Message(&recordtypes.QueryRecordResponse{}) expectedContents := []recordtypes.Content{{ Digest: digest, DigestAlgo: digestAlgo, @@ -96,7 +80,7 @@ func (s *IntegrationTestSuite) TestQueryRecordGRPC() { Meta: meta, }} - resp, err := rest.GetRequest(url) + resp, err := testutil.GetRequest(url) s.Require().NoError(err) s.Require().NoError(clientCtx.Codec.UnmarshalJSON(resp, respType)) record := respType.(*recordtypes.QueryRecordResponse).Record diff --git a/modules/record/client/testutil/test_helpers.go b/modules/record/client/testutil/test_helpers.go index 7d19f01d..66ecae93 100644 --- a/modules/record/client/testutil/test_helpers.go +++ b/modules/record/client/testutil/test_helpers.go @@ -2,19 +2,26 @@ package testutil import ( "fmt" + "testing" + "github.com/gogo/protobuf/proto" "github.com/tendermint/tendermint/libs/cli" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/testutil" - clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" recordcli "github.com/irisnet/irismod/modules/record/client/cli" + "github.com/irisnet/irismod/simapp" ) -// MsgRedelegateExec creates a redelegate message. -func MsgCreateRecordExec(clientCtx client.Context, from string, digest string, digestAlgo string, extraArgs ...string) (testutil.BufferWriter, error) { +// CreateRecordExec creates a redelegate message. +func CreateRecordExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + digest string, + digestAlgo string, + extraArgs ...string) *simapp.ResponseTx { args := []string{ digest, digestAlgo, @@ -22,15 +29,20 @@ func MsgCreateRecordExec(clientCtx client.Context, from string, digest string, d } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, recordcli.GetCmdCreateRecord(), args) + return network.ExecTxCmdWithResult(t, clientCtx, recordcli.GetCmdCreateRecord(), args) } -func QueryRecordExec(clientCtx client.Context, recordID string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryRecordExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + recordID string, + resp proto.Message, + extraArgs ...string) { args := []string{ recordID, fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, recordcli.GetCmdQueryRecord(), args) + network.ExecQueryCmd(t, clientCtx, recordcli.GetCmdQueryRecord(), args, resp) } diff --git a/modules/record/keeper/querier.go b/modules/record/keeper/querier.go deleted file mode 100644 index fd17df4d..00000000 --- a/modules/record/keeper/querier.go +++ /dev/null @@ -1,42 +0,0 @@ -package keeper - -import ( - abci "github.com/tendermint/tendermint/abci/types" - - "github.com/cosmos/cosmos-sdk/codec" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - - "github.com/irisnet/irismod/modules/record/types" -) - -// NewQuerier creates a querier for record REST endpoints -func NewQuerier(k Keeper, legacyQuerierCdc *codec.LegacyAmino) sdk.Querier { - return func(ctx sdk.Context, path []string, req abci.RequestQuery) ([]byte, error) { - switch path[0] { - case types.QueryRecord: - return queryRecord(ctx, k, req, legacyQuerierCdc) - default: - return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unknown query path: %s", path[0]) - } - } -} - -func queryRecord(ctx sdk.Context, k Keeper, req abci.RequestQuery, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - var params types.QueryRecordParams - if err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms); err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) - } - - record, found := k.GetRecord(ctx, params.RecordID) - if !found { - return nil, types.ErrUnknownRecord - } - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, types.RecordOutput(record)) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} diff --git a/modules/record/module.go b/modules/record/module.go index 7756c890..b7b36ab1 100644 --- a/modules/record/module.go +++ b/modules/record/module.go @@ -4,7 +4,6 @@ import ( "context" "encoding/json" "fmt" - "math/rand" "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" @@ -118,19 +117,6 @@ func (am AppModule) RegisterServices(cfg module.Configurator) { // RegisterInvariants registers the record module invariants. func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {} -// Route returns the message routing key for the record module. -func (am AppModule) Route() sdk.Route { - return sdk.NewRoute(types.RouterKey, NewHandler(am.keeper)) -} - -// QuerierRoute returns the record module's querier route name. -func (AppModule) QuerierRoute() string { return types.RouterKey } - -// LegacyQuerierHandler returns the record module sdk.Querier. -func (am AppModule) LegacyQuerierHandler(legacyQuerierCdc *codec.LegacyAmino) sdk.Querier { - return keeper.NewQuerier(am.keeper, legacyQuerierCdc) -} - // InitGenesis performs genesis initialization for the record module. It returns // no validator updates. func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { @@ -168,16 +154,6 @@ func (AppModule) GenerateGenesisState(simState *module.SimulationState) { simulation.RandomizedGenState(simState) } -// ProposalContents doesn't return any content functions for governance proposals. -func (AppModule) ProposalContents(simState module.SimulationState) []simtypes.WeightedProposalContent { - return nil -} - -// RandomizedParams creates randomized record param changes for the simulator. -func (AppModule) RandomizedParams(r *rand.Rand) []simtypes.ParamChange { - return nil -} - // RegisterStoreDecoder registers a decoder for record module's types func (am AppModule) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry) { sdr[types.StoreKey] = simulation.NewDecodeStore(am.cdc) diff --git a/modules/record/simulation/operations.go b/modules/record/simulation/operations.go index e05cd52f..9f6cf1d3 100644 --- a/modules/record/simulation/operations.go +++ b/modules/record/simulation/operations.go @@ -6,10 +6,10 @@ import ( tmbytes "github.com/tendermint/tendermint/libs/bytes" + simappparams "cosmossdk.io/simapp/params" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/simapp/helpers" - simappparams "github.com/cosmos/cosmos-sdk/simapp/params" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" @@ -80,7 +80,7 @@ func SimulateCreateRecord(ak types.AccountKeeper, bk types.BankKeeper) simtypes. txConfig, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, diff --git a/modules/record/types/genesis.pb.go b/modules/record/types/genesis.pb.go index 0c555414..907877b2 100644 --- a/modules/record/types/genesis.pb.go +++ b/modules/record/types/genesis.pb.go @@ -5,8 +5,8 @@ package types import ( fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" diff --git a/modules/record/types/query.pb.go b/modules/record/types/query.pb.go index 2b3a3d97..bad0cf3e 100644 --- a/modules/record/types/query.pb.go +++ b/modules/record/types/query.pb.go @@ -6,8 +6,8 @@ package types import ( context "context" fmt "fmt" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" diff --git a/modules/record/types/record.pb.go b/modules/record/types/record.pb.go index affd8b13..94be292e 100644 --- a/modules/record/types/record.pb.go +++ b/modules/record/types/record.pb.go @@ -5,8 +5,8 @@ package types import ( fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" diff --git a/modules/record/types/tx.pb.go b/modules/record/types/tx.pb.go index 2204c909..2f78916d 100644 --- a/modules/record/types/tx.pb.go +++ b/modules/record/types/tx.pb.go @@ -6,9 +6,9 @@ package types import ( context "context" fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/modules/service/client/cli/cli_test.go b/modules/service/client/cli/cli_test.go index a48c2584..d9aa28f3 100644 --- a/modules/service/client/cli/cli_test.go +++ b/modules/service/client/cli/cli_test.go @@ -7,20 +7,15 @@ import ( "testing" "time" - "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/suite" - "github.com/tidwall/gjson" "github.com/tendermint/tendermint/crypto" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/crypto/hd" "github.com/cosmos/cosmos-sdk/crypto/keyring" - "github.com/cosmos/cosmos-sdk/testutil/network" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - banktestutil "github.com/cosmos/cosmos-sdk/x/bank/client/testutil" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" servicecli "github.com/irisnet/irismod/modules/service/client/cli" servicetestutil "github.com/irisnet/irismod/modules/service/client/testutil" @@ -32,8 +27,7 @@ import ( type IntegrationTestSuite struct { suite.Suite - cfg network.Config - network *network.Network + network simapp.Network } func (s *IntegrationTestSuite) SetupSuite() { @@ -49,12 +43,7 @@ func (s *IntegrationTestSuite) SetupSuite() { serviceGenesisState.Params.ComplaintRetrospect = time.Duration(time.Second) cfg.GenesisState[servicetypes.ModuleName] = cfg.Codec.MustMarshalJSON(&serviceGenesisState) - var err error - s.cfg = cfg - s.network, err = network.New(s.T(), s.T().TempDir(), cfg) - - _, err = s.network.WaitForHeight(1) - s.Require().NoError(err) + s.network = simapp.SetupNetworkWithConfig(s.T(), cfg) } func (s *IntegrationTestSuite) TearDownSuite() { @@ -69,6 +58,7 @@ func TestIntegrationTestSuite(t *testing.T) { func (s *IntegrationTestSuite) TestService() { val := s.network.Validators[0] clientCtx := val.ClientCtx + expectedCode := uint32(0) // --------------------------------------------------------------------------- serviceName := "test-service" @@ -111,23 +101,15 @@ func (s *IntegrationTestSuite) TestService() { fmt.Sprintf("--%s=%s", servicecli.FlagSchemas, serviceSchemas), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType := proto.Message(&sdk.TxResponse{}) - expectedCode := uint32(0) - bz, err := servicetestutil.DefineServiceExec(clientCtx, author.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp := respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + + txResult := servicetestutil.DefineServiceExec(s.T(), s.network, clientCtx, author.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) //------test GetCmdQueryServiceDefinition()------------- - respType = proto.Message(&servicetypes.ServiceDefinition{}) - bz, err = servicetestutil.QueryServiceDefinitionExec(val.ClientCtx, serviceName) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - serviceDefinition := respType.(*servicetypes.ServiceDefinition) + serviceDefinition := servicetestutil.QueryServiceDefinitionExec(s.T(), s.network, clientCtx, serviceName) s.Require().Equal(serviceName, serviceDefinition.Name) //------test GetCmdBindService()------------- @@ -140,74 +122,46 @@ func (s *IntegrationTestSuite) TestService() { fmt.Sprintf("--%s=%s", servicecli.FlagProvider, provider), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) - bz, err = servicetestutil.BindServiceExec(clientCtx, provider.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + + txResult = servicetestutil.BindServiceExec(s.T(), s.network, clientCtx, provider.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) //------test GetCmdQueryServiceBinding()------------- - respType = proto.Message(&servicetypes.ServiceBinding{}) - bz, err = servicetestutil.QueryServiceBindingExec(val.ClientCtx, serviceName, provider.String()) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - serviceBinding := respType.(*servicetypes.ServiceBinding) + serviceBinding := servicetestutil.QueryServiceBindingExec(s.T(), s.network, clientCtx, serviceName, provider.String()) s.Require().Equal(serviceName, serviceBinding.ServiceName) s.Require().Equal(provider.String(), serviceBinding.Provider) //------test GetCmdQueryServiceBindings()------------- - respType = proto.Message(&servicetypes.QueryBindingsResponse{}) - bz, err = servicetestutil.QueryServiceBindingsExec(val.ClientCtx, serviceName) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - serviceBindings := respType.(*servicetypes.QueryBindingsResponse) + serviceBindings := servicetestutil.QueryServiceBindingsExec(s.T(), s.network, clientCtx, serviceName) s.Require().Len(serviceBindings.ServiceBindings, 1) //------test GetCmdDisableServiceBinding()------------- args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) - bz, err = servicetestutil.DisableServiceExec(clientCtx, serviceName, provider.String(), provider.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - respType = proto.Message(&servicetypes.ServiceBinding{}) - bz, err = servicetestutil.QueryServiceBindingExec(val.ClientCtx, serviceName, provider.String()) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - serviceBinding = respType.(*servicetypes.ServiceBinding) + txResult = servicetestutil.DisableServiceExec(s.T(), s.network, clientCtx, serviceName, provider.String(), provider.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) + + serviceBinding = servicetestutil.QueryServiceBindingExec(s.T(), s.network, clientCtx, serviceName, provider.String()) s.Require().False(serviceBinding.Available) //------test GetCmdRefundServiceDeposit()------------- args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) - bz, err = servicetestutil.RefundDepositExec(clientCtx, serviceName, provider.String(), provider.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - respType = proto.Message(&servicetypes.ServiceBinding{}) - bz, err = servicetestutil.QueryServiceBindingExec(val.ClientCtx, serviceName, provider.String()) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - serviceBinding = respType.(*servicetypes.ServiceBinding) + txResult = servicetestutil.RefundDepositExec(s.T(), s.network, clientCtx, serviceName, provider.String(), provider.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) + + serviceBinding = servicetestutil.QueryServiceBindingExec(s.T(), s.network, clientCtx, serviceName, provider.String()) s.Require().True(serviceBinding.Deposit.IsZero()) //------test GetCmdEnableServiceBinding()------------- @@ -215,22 +169,14 @@ func (s *IntegrationTestSuite) TestService() { fmt.Sprintf("--%s=%s", servicecli.FlagDeposit, serviceDeposit), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) - bz, err = servicetestutil.EnableServiceExec(clientCtx, serviceName, provider.String(), provider.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - respType = proto.Message(&servicetypes.ServiceBinding{}) - bz, err = servicetestutil.QueryServiceBindingExec(val.ClientCtx, serviceName, provider.String()) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - serviceBinding = respType.(*servicetypes.ServiceBinding) + txResult = servicetestutil.EnableServiceExec(s.T(), s.network, clientCtx, serviceName, provider.String(), provider.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) + + serviceBinding = servicetestutil.QueryServiceBindingExec(s.T(), s.network, clientCtx, serviceName, provider.String()) s.Require().Equal(serviceDeposit, serviceBinding.Deposit.String()) //------send token to consumer------------------------ @@ -239,17 +185,12 @@ func (s *IntegrationTestSuite) TestService() { ) args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) - bz, err = banktestutil.MsgSendExec(clientCtx, provider, consumer, amount, args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + txResult = simapp.MsgSendExec(s.T(), s.network, clientCtx, provider, consumer, amount, args...) + s.Require().Equal(expectedCode, txResult.Code) //------test GetCmdCallService()------------- args = []string{ @@ -260,20 +201,17 @@ func (s *IntegrationTestSuite) TestService() { fmt.Sprintf("--%s=%d", servicecli.FlagTimeout, timeout), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) - bz, err = servicetestutil.CallServiceExec(clientCtx, consumer.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - requestContextId := gjson.Get(txResp.RawLog, "0.events.0.attributes.0.value").String() - requestHeight := txResp.Height - blockResult, err := clientCtx.Client.BlockResults(context.Background(), &requestHeight) + txResult = servicetestutil.CallServiceExec(s.T(), s.network, clientCtx, consumer.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) + + requestContextId := s.network.GetAttribute(servicetypes.EventTypeCreateContext, servicetypes.AttributeKeyRequestContextID, txResult.Events) + requestHeight := txResult.Height + + blockResult, err := val.RPCClient.BlockResults(context.Background(), &requestHeight) s.Require().NoError(err) var compactRequest servicetypes.CompactRequest for _, event := range blockResult.EndBlockEvents { @@ -302,117 +240,79 @@ func (s *IntegrationTestSuite) TestService() { s.Require().Equal(requestContextId, compactRequest.RequestContextId) //------test GetCmdQueryServiceRequests()------------- - respType = proto.Message(&servicetypes.QueryRequestsResponse{}) - bz, err = servicetestutil.QueryServiceRequestsExec(val.ClientCtx, serviceName, provider.String()) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - requests := respType.(*servicetypes.QueryRequestsResponse).Requests - s.Require().Len(requests, 1) - s.Require().Equal(requestContextId, requests[0].RequestContextId) + queryRequestsResponse := servicetestutil.QueryServiceRequestsExec(s.T(), s.network, clientCtx, serviceName, provider.String()) + s.Require().Len(queryRequestsResponse.Requests, 1) + s.Require().Equal(requestContextId, queryRequestsResponse.Requests[0].RequestContextId) //------test GetCmdQueryServiceRequests()------------- - respType = proto.Message(&servicetypes.QueryRequestsResponse{}) - bz, err = servicetestutil.QueryServiceRequestsByReqCtx(val.ClientCtx, requests[0].RequestContextId, fmt.Sprint(requests[0].RequestContextBatchCounter)) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - requests = respType.(*servicetypes.QueryRequestsResponse).Requests - s.Require().Len(requests, 1) - s.Require().Equal(requestContextId, requests[0].RequestContextId) + queryRequestsResponse = servicetestutil.QueryServiceRequestsByReqCtx( + s.T(), + s.network, + clientCtx, + queryRequestsResponse.Requests[0].RequestContextId, + fmt.Sprint(queryRequestsResponse.Requests[0].RequestContextBatchCounter), + ) + s.Require().Len(queryRequestsResponse.Requests, 1) + s.Require().Equal(requestContextId, queryRequestsResponse.Requests[0].RequestContextId) //------test GetCmdRespondService()------------- - request := requests[0] + request := queryRequestsResponse.Requests[0] args = []string{ fmt.Sprintf("--%s=%s", servicecli.FlagRequestID, request.Id), fmt.Sprintf("--%s=%s", servicecli.FlagResult, respResult), fmt.Sprintf("--%s=%s", servicecli.FlagData, respOutput), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) - bz, err = servicetestutil.RespondServiceExec(clientCtx, provider.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + + txResult = servicetestutil.RespondServiceExec(s.T(), s.network, clientCtx, provider.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) //------test GetCmdQueryEarnedFees()------------- - respType = proto.Message(&servicetypes.QueryEarnedFeesResponse{}) - bz, err = servicetestutil.QueryEarnedFeesExec(val.ClientCtx, provider.String()) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - earnedFees := respType.(*servicetypes.QueryEarnedFeesResponse).Fees - s.Require().Equal(expectedEarnedFees, earnedFees.String()) + queryEarnedFeesResponse := servicetestutil.QueryEarnedFeesExec(s.T(), s.network, clientCtx, provider.String()) + s.Require().Equal(expectedEarnedFees, queryEarnedFeesResponse.Fees.String()) //------GetCmdSetWithdrawAddr()------------- args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) - bz, err = servicetestutil.SetWithdrawAddrExec(clientCtx, withdrawalAddress.String(), provider.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + + txResult = servicetestutil.SetWithdrawAddrExec(s.T(), s.network, clientCtx, withdrawalAddress.String(), provider.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) //------GetCmdWithdrawEarnedFees()------------- args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) - bz, err = servicetestutil.WithdrawEarnedFeesExec(clientCtx, provider.String(), provider.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - respType = proto.Message(&banktypes.QueryAllBalancesResponse{}) - bz, err = banktestutil.QueryBalancesExec(val.ClientCtx, withdrawalAddress) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - withdrawalFees := respType.(*banktypes.QueryAllBalancesResponse).Balances + txResult = servicetestutil.WithdrawEarnedFeesExec(s.T(), s.network, clientCtx, provider.String(), provider.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) + + withdrawalFees := simapp.QueryBalancesExec(s.T(), s.network, clientCtx, withdrawalAddress.String()) s.Require().Equal(expectedEarnedFees, withdrawalFees.String()) //------check service tax------------- - bz, err = banktestutil.QueryBalancesExec(val.ClientCtx, authtypes.NewModuleAddress(servicetypes.FeeCollectorName)) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - taxFees := respType.(*banktypes.QueryAllBalancesResponse).Balances + taxFees := simapp.QueryBalancesExec(s.T(), s.network, clientCtx, authtypes.NewModuleAddress(servicetypes.FeeCollectorName).String()) s.Require().Equal(expectedTaxFees, taxFees.String()) //------GetCmdQueryRequestContext()------------- contextId := request.RequestContextId - respType = proto.Message(&servicetypes.RequestContext{}) - bz, err = servicetestutil.QueryRequestContextExec(val.ClientCtx, contextId) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - contextResp := respType.(*servicetypes.RequestContext) + contextResp := servicetestutil.QueryRequestContextExec(s.T(), s.network, clientCtx, contextId) s.Require().False(contextResp.Empty()) //------GetCmdQueryServiceRequest()------------- requestId := request.Id - respType = proto.Message(&servicetypes.Request{}) - bz, err = servicetestutil.QueryServiceRequestExec(val.ClientCtx, requestId) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - requestResp := respType.(*servicetypes.Request) + requestResp := servicetestutil.QueryServiceRequestExec(s.T(), s.network, clientCtx, requestId) s.Require().False(requestResp.Empty()) s.Require().Equal(requestId, requestResp.Id) //------GetCmdQueryServiceResponse()------------- - respType = proto.Message(&servicetypes.Response{}) - bz, err = servicetestutil.QueryServiceResponseExec(val.ClientCtx, requestId) - s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - responseResp := respType.(*servicetypes.Response) + responseResp := servicetestutil.QueryServiceResponseExec(s.T(), s.network, clientCtx, requestId) s.Require().False(responseResp.Empty()) - } diff --git a/modules/service/client/testutil/grpc_query_test.go b/modules/service/client/testutil/grpc_query_test.go index f41cb606..f26b3728 100644 --- a/modules/service/client/testutil/grpc_query_test.go +++ b/modules/service/client/testutil/grpc_query_test.go @@ -7,18 +7,14 @@ import ( "testing" "time" - "github.com/cosmos/cosmos-sdk/testutil/rest" - "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/suite" - "github.com/tidwall/gjson" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/crypto/hd" "github.com/cosmos/cosmos-sdk/crypto/keyring" - "github.com/cosmos/cosmos-sdk/testutil/network" + "github.com/cosmos/cosmos-sdk/testutil" sdk "github.com/cosmos/cosmos-sdk/types" - banktestutil "github.com/cosmos/cosmos-sdk/x/bank/client/testutil" servicecli "github.com/irisnet/irismod/modules/service/client/cli" servicetestutil "github.com/irisnet/irismod/modules/service/client/testutil" @@ -30,8 +26,7 @@ import ( type IntegrationTestSuite struct { suite.Suite - cfg network.Config - network *network.Network + network simapp.Network } func (s *IntegrationTestSuite) SetupSuite() { @@ -47,13 +42,7 @@ func (s *IntegrationTestSuite) SetupSuite() { serviceGenesisState.Params.ComplaintRetrospect = time.Duration(time.Second) cfg.GenesisState[servicetypes.ModuleName] = cfg.Codec.MustMarshalJSON(&serviceGenesisState) - s.cfg = cfg - var err error - s.network, err = network.New(s.T(), s.T().TempDir(), cfg) - s.Require().NoError(err) - - _, err = s.network.WaitForHeight(1) - s.Require().NoError(err) + s.network = simapp.SetupNetworkWithConfig(s.T(), cfg) } func (s *IntegrationTestSuite) TearDownSuite() { @@ -68,6 +57,7 @@ func TestIntegrationTestSuite(t *testing.T) { func (s *IntegrationTestSuite) TestService() { val := s.network.Validators[0] clientCtx := val.ClientCtx + expectedCode := uint32(0) // --------------------------------------------------------------------------- serviceName := "test-service" @@ -108,21 +98,17 @@ func (s *IntegrationTestSuite) TestService() { fmt.Sprintf("--%s=%s", servicecli.FlagSchemas, serviceSchemas), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType := proto.Message(&sdk.TxResponse{}) - expectedCode := uint32(0) - bz, err := servicetestutil.DefineServiceExec(clientCtx, author.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp := respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + + txResult := servicetestutil.DefineServiceExec(s.T(), s.network, clientCtx, author.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) //------test GetCmdQueryServiceDefinition()------------- url := fmt.Sprintf("%s/irismod/service/definitions/%s", baseURL, serviceName) - resp, err := rest.GetRequest(url) - respType = proto.Message(&servicetypes.QueryDefinitionResponse{}) + resp, err := testutil.GetRequest(url) + respType := proto.Message(&servicetypes.QueryDefinitionResponse{}) s.Require().NoError(err) s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, respType)) serviceDefinitionResp := respType.(*servicetypes.QueryDefinitionResponse) @@ -138,20 +124,16 @@ func (s *IntegrationTestSuite) TestService() { fmt.Sprintf("--%s=%s", servicecli.FlagProvider, provider), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) - bz, err = servicetestutil.BindServiceExec(clientCtx, provider.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + + txResult = servicetestutil.BindServiceExec(s.T(), s.network, clientCtx, provider.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) //------test GetCmdQueryServiceBinding()------------- url = fmt.Sprintf("%s/irismod/service/bindings/%s/%s", baseURL, serviceName, provider.String()) - resp, err = rest.GetRequest(url) + resp, err = testutil.GetRequest(url) respType = proto.Message(&servicetypes.QueryBindingResponse{}) s.Require().NoError(err) s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, respType)) @@ -161,7 +143,7 @@ func (s *IntegrationTestSuite) TestService() { //------test GetCmdQueryServiceBindings()------------- url = fmt.Sprintf("%s/irismod/service/bindings/%s", baseURL, serviceName) - resp, err = rest.GetRequest(url) + resp, err = testutil.GetRequest(url) respType = proto.Message(&servicetypes.QueryBindingsResponse{}) s.Require().NoError(err) s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, respType)) @@ -171,19 +153,15 @@ func (s *IntegrationTestSuite) TestService() { //------test GetCmdDisableServiceBinding()------------- args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) - bz, err = servicetestutil.DisableServiceExec(clientCtx, serviceName, provider.String(), provider.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + + txResult = servicetestutil.DisableServiceExec(s.T(), s.network, clientCtx, serviceName, provider.String(), provider.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) url = fmt.Sprintf("%s/irismod/service/bindings/%s/%s", baseURL, serviceName, provider.String()) - resp, err = rest.GetRequest(url) + resp, err = testutil.GetRequest(url) respType = proto.Message(&servicetypes.QueryBindingResponse{}) s.Require().NoError(err) s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, respType)) @@ -193,19 +171,15 @@ func (s *IntegrationTestSuite) TestService() { //------test GetCmdRefundServiceDeposit()------------- args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) - bz, err = servicetestutil.RefundDepositExec(clientCtx, serviceName, provider.String(), provider.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + + txResult = servicetestutil.RefundDepositExec(s.T(), s.network, clientCtx, serviceName, provider.String(), provider.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) url = fmt.Sprintf("%s/irismod/service/bindings/%s/%s", baseURL, serviceName, provider.String()) - resp, err = rest.GetRequest(url) + resp, err = testutil.GetRequest(url) respType = proto.Message(&servicetypes.QueryBindingResponse{}) s.Require().NoError(err) s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, respType)) @@ -217,19 +191,15 @@ func (s *IntegrationTestSuite) TestService() { fmt.Sprintf("--%s=%s", servicecli.FlagDeposit, serviceDeposit), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) - bz, err = servicetestutil.EnableServiceExec(clientCtx, serviceName, provider.String(), provider.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + + txResult = servicetestutil.EnableServiceExec(s.T(), s.network, clientCtx, serviceName, provider.String(), provider.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) url = fmt.Sprintf("%s/irismod/service/bindings/%s/%s", baseURL, serviceName, provider.String()) - resp, err = rest.GetRequest(url) + resp, err = testutil.GetRequest(url) respType = proto.Message(&servicetypes.QueryBindingResponse{}) s.Require().NoError(err) s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, respType)) @@ -242,17 +212,12 @@ func (s *IntegrationTestSuite) TestService() { ) args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) - bz, err = banktestutil.MsgSendExec(clientCtx, provider, consumer, amount, args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + txResult = simapp.MsgSendExec(s.T(), s.network, clientCtx, provider, consumer, amount, args...) + s.Require().Equal(expectedCode, txResult.Code) //------test GetCmdCallService()------------- args = []string{ @@ -263,20 +228,17 @@ func (s *IntegrationTestSuite) TestService() { fmt.Sprintf("--%s=%d", servicecli.FlagTimeout, timeout), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) - bz, err = servicetestutil.CallServiceExec(clientCtx, consumer.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - requestContextId := gjson.Get(txResp.RawLog, "0.events.0.attributes.0.value").String() - requestHeight := txResp.Height - blockResult, err := clientCtx.Client.BlockResults(context.Background(), &requestHeight) + txResult = servicetestutil.CallServiceExec(s.T(), s.network, clientCtx, consumer.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) + + requestContextId := s.network.GetAttribute(servicetypes.EventTypeCreateContext, servicetypes.AttributeKeyRequestContextID, txResult.Events) + requestHeight := txResult.Height + + blockResult, err := val.RPCClient.BlockResults(context.Background(), &requestHeight) s.Require().NoError(err) var compactRequest servicetypes.CompactRequest for _, event := range blockResult.EndBlockEvents { @@ -286,7 +248,7 @@ func (s *IntegrationTestSuite) TestService() { var requestsBz []byte for _, attribute := range event.Attributes { if string(attribute.Key) == types.AttributeKeyRequests { - requestsBz = attribute.GetValue() + requestsBz = []byte(attribute.Value) } if string(attribute.Key) == types.AttributeKeyRequestContextID && string(attribute.GetValue()) == requestContextId { @@ -306,7 +268,7 @@ func (s *IntegrationTestSuite) TestService() { //------test GetCmdQueryServiceRequests()------------- url = fmt.Sprintf("%s/irismod/service/requests/%s/%s", baseURL, serviceName, provider.String()) - resp, err = rest.GetRequest(url) + resp, err = testutil.GetRequest(url) respType = proto.Message(&servicetypes.QueryRequestsResponse{}) s.Require().NoError(err) s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, respType)) @@ -322,20 +284,16 @@ func (s *IntegrationTestSuite) TestService() { fmt.Sprintf("--%s=%s", servicecli.FlagData, respOutput), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), } - respType = proto.Message(&sdk.TxResponse{}) - expectedCode = uint32(0) - bz, err = servicetestutil.RespondServiceExec(clientCtx, provider.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) + + txResult = servicetestutil.RespondServiceExec(s.T(), s.network, clientCtx, provider.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) //------test GetCmdQueryEarnedFees()------------- url = fmt.Sprintf("%s/irismod/service/fees/%s", baseURL, provider.String()) - resp, err = rest.GetRequest(url) + resp, err = testutil.GetRequest(url) respType = proto.Message(&servicetypes.QueryEarnedFeesResponse{}) s.Require().NoError(err) s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, respType)) diff --git a/modules/service/client/testutil/test_helpers.go b/modules/service/client/testutil/test_helpers.go index 1fb63540..ac8a744a 100644 --- a/modules/service/client/testutil/test_helpers.go +++ b/modules/service/client/testutil/test_helpers.go @@ -2,45 +2,68 @@ package testutil import ( "fmt" + "testing" "github.com/tendermint/tendermint/libs/cli" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/testutil" - clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" servicecli "github.com/irisnet/irismod/modules/service/client/cli" + servicetypes "github.com/irisnet/irismod/modules/service/types" + "github.com/irisnet/irismod/simapp" ) -func DefineServiceExec(clientCtx client.Context, from string, extraArgs ...string) (testutil.BufferWriter, error) { +func DefineServiceExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ fmt.Sprintf("--%s=%s", flags.FlagFrom, from), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, servicecli.GetCmdDefineService(), args) + return network.ExecTxCmdWithResult(t, clientCtx, servicecli.GetCmdDefineService(), args) } -func BindServiceExec(clientCtx client.Context, from string, extraArgs ...string) (testutil.BufferWriter, error) { +func BindServiceExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ fmt.Sprintf("--%s=%s", flags.FlagFrom, from), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, servicecli.GetCmdBindService(), args) + return network.ExecTxCmdWithResult(t, clientCtx, servicecli.GetCmdBindService(), args) } -func UpdateBindingExec(clientCtx client.Context, from string, extraArgs ...string) (testutil.BufferWriter, error) { +func UpdateBindingExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ fmt.Sprintf("--%s=%s", flags.FlagFrom, from), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, servicecli.GetCmdUpdateServiceBinding(), args) + return network.ExecTxCmdWithResult(t, clientCtx, servicecli.GetCmdUpdateServiceBinding(), args) } -func RefundDepositExec(clientCtx client.Context, serviceName, provider, from string, extraArgs ...string) (testutil.BufferWriter, error) { +func RefundDepositExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + serviceName, + provider, + from string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ serviceName, provider, @@ -48,10 +71,17 @@ func RefundDepositExec(clientCtx client.Context, serviceName, provider, from str } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, servicecli.GetCmdRefundServiceDeposit(), args) + return network.ExecTxCmdWithResult(t, clientCtx, servicecli.GetCmdRefundServiceDeposit(), args) } -func DisableServiceExec(clientCtx client.Context, serviceName, provider, from string, extraArgs ...string) (testutil.BufferWriter, error) { +func DisableServiceExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + serviceName, + provider, + from string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ serviceName, provider, @@ -59,10 +89,17 @@ func DisableServiceExec(clientCtx client.Context, serviceName, provider, from st } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, servicecli.GetCmdDisableServiceBinding(), args) + return network.ExecTxCmdWithResult(t, clientCtx, servicecli.GetCmdDisableServiceBinding(), args) } -func EnableServiceExec(clientCtx client.Context, serviceName, provider, from string, extraArgs ...string) (testutil.BufferWriter, error) { +func EnableServiceExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + serviceName, + provider, + from string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ serviceName, provider, @@ -70,58 +107,93 @@ func EnableServiceExec(clientCtx client.Context, serviceName, provider, from str } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, servicecli.GetCmdEnableServiceBinding(), args) + return network.ExecTxCmdWithResult(t, clientCtx, servicecli.GetCmdEnableServiceBinding(), args) } -func CallServiceExec(clientCtx client.Context, from string, extraArgs ...string) (testutil.BufferWriter, error) { +func CallServiceExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ fmt.Sprintf("--%s=%s", flags.FlagFrom, from), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, servicecli.GetCmdCallService(), args) + return network.ExecTxCmdWithResult(t, clientCtx, servicecli.GetCmdCallService(), args) } -func RespondServiceExec(clientCtx client.Context, from string, extraArgs ...string) (testutil.BufferWriter, error) { +func RespondServiceExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ fmt.Sprintf("--%s=%s", flags.FlagFrom, from), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, servicecli.GetCmdRespondService(), args) + return network.ExecTxCmdWithResult(t, clientCtx, servicecli.GetCmdRespondService(), args) } -func SetWithdrawAddrExec(clientCtx client.Context, withdrawalAddress, from string, extraArgs ...string) (testutil.BufferWriter, error) { +func SetWithdrawAddrExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + withdrawalAddress, + from string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ withdrawalAddress, fmt.Sprintf("--%s=%s", flags.FlagFrom, from), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, servicecli.GetCmdSetWithdrawAddr(), args) + return network.ExecTxCmdWithResult(t, clientCtx, servicecli.GetCmdSetWithdrawAddr(), args) } -func WithdrawEarnedFeesExec(clientCtx client.Context, provider, from string, extraArgs ...string) (testutil.BufferWriter, error) { +func WithdrawEarnedFeesExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + provider, + from string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ provider, fmt.Sprintf("--%s=%s", flags.FlagFrom, from), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, servicecli.GetCmdWithdrawEarnedFees(), args) + return network.ExecTxCmdWithResult(t, clientCtx, servicecli.GetCmdWithdrawEarnedFees(), args) } -func QueryServiceDefinitionExec(clientCtx client.Context, serviceName string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryServiceDefinitionExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + serviceName string, + extraArgs ...string, +) *servicetypes.ServiceDefinition { args := []string{ serviceName, fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, servicecli.GetCmdQueryServiceDefinition(), args) + response := &servicetypes.ServiceDefinition{} + network.ExecQueryCmd(t, clientCtx, servicecli.GetCmdQueryServiceDefinition(), args, response) + return response } -func QueryServiceBindingExec(clientCtx client.Context, serviceName, provider string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryServiceBindingExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + serviceName, + provider string, + extraArgs ...string, +) *servicetypes.ServiceBinding { args := []string{ serviceName, provider, @@ -129,20 +201,34 @@ func QueryServiceBindingExec(clientCtx client.Context, serviceName, provider str } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, servicecli.GetCmdQueryServiceBinding(), args) + response := &servicetypes.ServiceBinding{} + network.ExecQueryCmd(t, clientCtx, servicecli.GetCmdQueryServiceBinding(), args, response) + return response } -func QueryServiceBindingsExec(clientCtx client.Context, serviceName string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryServiceBindingsExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + serviceName string, + extraArgs ...string, +) *servicetypes.QueryBindingsResponse { args := []string{ serviceName, fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, servicecli.GetCmdQueryServiceBindings(), args) + response := &servicetypes.QueryBindingsResponse{} + network.ExecQueryCmd(t, clientCtx, servicecli.GetCmdQueryServiceBindings(), args, response) + return response } -func QueryServiceRequestsExec(clientCtx client.Context, serviceName, provider string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryServiceRequestsExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + serviceName, + provider string, + extraArgs ...string) *servicetypes.QueryRequestsResponse { args := []string{ serviceName, provider, @@ -150,10 +236,18 @@ func QueryServiceRequestsExec(clientCtx client.Context, serviceName, provider st } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, servicecli.GetCmdQueryServiceRequests(), args) + response := &servicetypes.QueryRequestsResponse{} + network.ExecQueryCmd(t, clientCtx, servicecli.GetCmdQueryServiceRequests(), args, response) + return response } -func QueryServiceRequestsByReqCtx(clientCtx client.Context, requestContextID, batchCounter string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryServiceRequestsByReqCtx(t *testing.T, + network simapp.Network, + clientCtx client.Context, + requestContextID, + batchCounter string, + extraArgs ...string, +) *servicetypes.QueryRequestsResponse { args := []string{ requestContextID, batchCounter, @@ -161,44 +255,74 @@ func QueryServiceRequestsByReqCtx(clientCtx client.Context, requestContextID, ba } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, servicecli.GetCmdQueryServiceRequests(), args) + response := &servicetypes.QueryRequestsResponse{} + network.ExecQueryCmd(t, clientCtx, servicecli.GetCmdQueryServiceRequests(), args, response) + return response + } -func QueryEarnedFeesExec(clientCtx client.Context, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryEarnedFeesExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + extraArgs ...string, +) *servicetypes.QueryEarnedFeesResponse { args := []string{ fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, servicecli.GetCmdQueryEarnedFees(), args) + response := &servicetypes.QueryEarnedFeesResponse{} + network.ExecQueryCmd(t, clientCtx, servicecli.GetCmdQueryEarnedFees(), args, response) + return response } -func QueryRequestContextExec(clientCtx client.Context, contextId string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryRequestContextExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + contextId string, + extraArgs ...string, +) *servicetypes.RequestContext { args := []string{ contextId, fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, servicecli.GetCmdQueryRequestContext(), args) + response := &servicetypes.RequestContext{} + network.ExecQueryCmd(t, clientCtx, servicecli.GetCmdQueryRequestContext(), args, response) + return response } -func QueryServiceRequestExec(clientCtx client.Context, requestId string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryServiceRequestExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + requestId string, + extraArgs ...string, +) *servicetypes.Request { args := []string{ requestId, fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, servicecli.GetCmdQueryServiceRequest(), args) + response := &servicetypes.Request{} + network.ExecQueryCmd(t, clientCtx, servicecli.GetCmdQueryServiceRequest(), args, response) + return response } -func QueryServiceResponseExec(clientCtx client.Context, requestId string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryServiceResponseExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + requestId string, + extraArgs ...string, +) *servicetypes.Response { args := []string{ requestId, fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, servicecli.GetCmdQueryServiceResponse(), args) + response := &servicetypes.Response{} + network.ExecQueryCmd(t, clientCtx, servicecli.GetCmdQueryServiceResponse(), args, response) + return response } diff --git a/modules/service/client/utils/query.go b/modules/service/client/utils/query.go index c5b0a5b7..c54f1959 100644 --- a/modules/service/client/utils/query.go +++ b/modules/service/client/utils/query.go @@ -8,6 +8,7 @@ import ( "strconv" tmbytes "github.com/tendermint/tendermint/libs/bytes" + rpcclient "github.com/tendermint/tendermint/rpc/client" "github.com/cosmos/cosmos-sdk/client" sdk "github.com/cosmos/cosmos-sdk/types" @@ -139,7 +140,12 @@ func QueryRequestByTxQuery( return request, err } - blockResult, err := node.BlockResults(context.Background(), &requestHeight) + rpcClient, ok := node.(rpcclient.Client) + if !ok { + return request, fmt.Errorf("unsupport client") + } + + blockResult, err := rpcClient.BlockResults(context.Background(), &requestHeight) if err != nil { return request, err } diff --git a/modules/service/keeper/binding.go b/modules/service/keeper/binding.go index e3d2e0cd..2c3f4e4e 100644 --- a/modules/service/keeper/binding.go +++ b/modules/service/keeper/binding.go @@ -8,7 +8,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - v042 "github.com/cosmos/cosmos-sdk/x/auth/migrations/v042" + v1 "github.com/cosmos/cosmos-sdk/x/auth/migrations/v1" "github.com/irisnet/irismod/modules/service/types" ) @@ -438,7 +438,7 @@ func (k Keeper) GetOwnerServiceBindings(ctx sdk.Context, owner sdk.AccAddress, s defer iterator.Close() for ; iterator.Valid(); iterator.Next() { - bindingKey := iterator.Key()[v042.AddrLen+1:] + bindingKey := iterator.Key()[v1.AddrLen+1:] sepIndex := bytes.Index(bindingKey, types.Delimiter) serviceName := string(bindingKey[0:sepIndex]) provider := sdk.AccAddress(bindingKey[sepIndex+1:]) diff --git a/modules/service/keeper/fees.go b/modules/service/keeper/fees.go index 9c023b30..b027aebb 100644 --- a/modules/service/keeper/fees.go +++ b/modules/service/keeper/fees.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - v042 "github.com/cosmos/cosmos-sdk/x/auth/migrations/v042" + v1 "github.com/cosmos/cosmos-sdk/x/auth/migrations/v1" "github.com/irisnet/irismod/modules/service/types" ) @@ -154,7 +154,7 @@ func (k Keeper) WithdrawEarnedFees(ctx sdk.Context, owner, provider sdk.AccAddre defer iterator.Close() for ; iterator.Valid(); iterator.Next() { - provider := sdk.AccAddress(iterator.Key()[v042.AddrLen+1:]) + provider := sdk.AccAddress(iterator.Key()[v1.AddrLen+1:]) k.DeleteEarnedFees(ctx, provider) } diff --git a/modules/service/keeper/keeper_test.go b/modules/service/keeper/keeper_test.go index a6e0d984..9eacd925 100644 --- a/modules/service/keeper/keeper_test.go +++ b/modules/service/keeper/keeper_test.go @@ -9,13 +9,13 @@ import ( "github.com/stretchr/testify/suite" "github.com/tidwall/gjson" - v042 "github.com/cosmos/cosmos-sdk/x/auth/migrations/v042" abci "github.com/tendermint/tendermint/abci/types" tmbytes "github.com/tendermint/tendermint/libs/bytes" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" + v1 "github.com/cosmos/cosmos-sdk/x/auth/migrations/v1" minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" "github.com/irisnet/irismod/modules/service/keeper" @@ -186,7 +186,7 @@ func (suite *KeeperTestSuite) TestBindService() { defer iterator.Close() for ; iterator.Valid(); iterator.Next() { - suite.Equal(testProvider, sdk.AccAddress(iterator.Key()[v042.AddrLen+1:])) + suite.Equal(testProvider, sdk.AccAddress(iterator.Key()[v1.AddrLen+1:])) } // update binding diff --git a/modules/service/keeper/querier.go b/modules/service/keeper/querier.go deleted file mode 100644 index 7d61bce4..00000000 --- a/modules/service/keeper/querier.go +++ /dev/null @@ -1,343 +0,0 @@ -package keeper - -import ( - gogotypes "github.com/gogo/protobuf/types" - - abci "github.com/tendermint/tendermint/abci/types" - - "github.com/cosmos/cosmos-sdk/codec" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - - "github.com/irisnet/irismod/modules/service/types" -) - -// NewQuerier creates a new service Querier instance -func NewQuerier(k Keeper, legacyQuerierCdc *codec.LegacyAmino) sdk.Querier { - return func(ctx sdk.Context, path []string, req abci.RequestQuery) ([]byte, error) { - switch path[0] { - case types.QueryDefinition: - return queryServiceDefinition(ctx, path[1:], req, k, legacyQuerierCdc) - - case types.QueryBinding: - return queryBinding(ctx, req, k, legacyQuerierCdc) - - case types.QueryBindings: - return queryBindings(ctx, req, k, legacyQuerierCdc) - - case types.QueryWithdrawAddress: - return queryWithdrawAddress(ctx, req, k, legacyQuerierCdc) - - case types.QueryRequest: - return queryRequest(ctx, req, k, legacyQuerierCdc) - - case types.QueryRequests: - return queryRequests(ctx, req, k, legacyQuerierCdc) - - case types.QueryResponse: - return queryResponse(ctx, req, k, legacyQuerierCdc) - - case types.QueryRequestContext: - return queryRequestContext(ctx, req, k, legacyQuerierCdc) - - case types.QueryRequestsByReqCtx: - return queryRequestsByReqCtx(ctx, req, k, legacyQuerierCdc) - - case types.QueryResponses: - return queryResponses(ctx, req, k, legacyQuerierCdc) - - case types.QueryEarnedFees: - return queryEarnedFees(ctx, req, k, legacyQuerierCdc) - - case types.QuerySchema: - return querySchema(ctx, req, k, legacyQuerierCdc) - - case types.QueryParameters: - return queryParams(ctx, k, legacyQuerierCdc) - - default: - return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unknown %s query path: %s", types.ModuleName, path[0]) - } - } -} - -func queryServiceDefinition(ctx sdk.Context, path []string, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - var params types.QueryDefinitionParams - if err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms); err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) - } - - definition, found := k.GetServiceDefinition(ctx, params.ServiceName) - if !found { - return nil, sdkerrors.Wrap(types.ErrUnknownServiceDefinition, params.ServiceName) - } - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, definition) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} - -func queryBinding(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - var params types.QueryBindingParams - if err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms); err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) - } - - svcBinding, found := k.GetServiceBinding(ctx, params.ServiceName, params.Provider) - if !found { - return nil, sdkerrors.Wrap(types.ErrUnknownServiceBinding, "") - } - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, svcBinding) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} - -func queryBindings(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - var params types.QueryBindingsParams - if err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms); err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) - } - - bindings := make([]*types.ServiceBinding, 0) - - if params.Owner.Empty() { - iterator := k.ServiceBindingsIterator(ctx, params.ServiceName) - defer iterator.Close() - - for ; iterator.Valid(); iterator.Next() { - var binding types.ServiceBinding - k.cdc.MustUnmarshal(iterator.Value(), &binding) - - bindings = append(bindings, &binding) - } - } else { - bindings = k.GetOwnerServiceBindings(ctx, params.Owner, params.ServiceName) - } - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, bindings) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} - -func queryWithdrawAddress(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - var params types.QueryWithdrawAddressParams - if err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms); err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) - } - - withdrawAddr := k.GetWithdrawAddress(ctx, params.Owner) - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, withdrawAddr) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} - -func queryRequest(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - var params types.QueryRequestParams - if err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms); err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) - } - - if len(params.RequestID) != types.RequestIDLen/2 { - return nil, sdkerrors.Wrapf( - types.ErrInvalidRequestID, - "invalid length in bytes, expected: %d, got: %d", - types.RequestIDLen/2, len(params.RequestID), - ) - } - - request, _ := k.GetRequest(ctx, params.RequestID) - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, request) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} - -func queryRequests(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - var params types.QueryRequestsParams - if err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms); err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) - } - - iterator := k.ActiveRequestsIterator(ctx, params.ServiceName, params.Provider) - defer iterator.Close() - - requests := make([]types.Request, 0) - - for ; iterator.Valid(); iterator.Next() { - var requestID gogotypes.BytesValue - - k.cdc.MustUnmarshal(iterator.Value(), &requestID) - - request, _ := k.GetRequest(ctx, requestID.Value) - requests = append(requests, request) - } - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, requests) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} - -func queryResponse(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - var params types.QueryResponseParams - if err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms); err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) - } - - if len(params.RequestID) != types.RequestIDLen/2 { - return nil, sdkerrors.Wrapf(types.ErrInvalidRequestID, "invalid length in bytes, expected: %d, got: %d", - types.RequestIDLen/2, len(params.RequestID)) - } - - response, _ := k.GetResponse(ctx, params.RequestID) - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, response) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} - -func queryRequestContext(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - var params types.QueryRequestContextParams - if err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms); err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) - } - - requestContext, _ := k.GetRequestContext(ctx, params.RequestContextID) - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, requestContext) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} - -func queryRequestsByReqCtx(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - var params types.QueryRequestsByReqCtxParams - if err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms); err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) - } - - iterator := k.RequestsIteratorByReqCtx(ctx, params.RequestContextID, params.BatchCounter) - defer iterator.Close() - - requests := make([]types.Request, 0) - - for ; iterator.Valid(); iterator.Next() { - requestID := iterator.Key()[1:] - request, _ := k.GetRequest(ctx, requestID) - - requests = append(requests, request) - } - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, requests) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} - -func queryResponses(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - var params types.QueryResponsesParams - if err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms); err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) - } - - iterator := k.ResponsesIteratorByReqCtx(ctx, params.RequestContextID, params.BatchCounter) - defer iterator.Close() - - responses := make([]types.Response, 0) - - for ; iterator.Valid(); iterator.Next() { - var response types.Response - k.cdc.MustUnmarshal(iterator.Value(), &response) - - responses = append(responses, response) - } - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, responses) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} - -func queryEarnedFees(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - var params types.QueryEarnedFeesParams - if err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms); err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) - } - - fees, found := k.GetEarnedFees(ctx, params.Provider) - if !found { - return nil, sdkerrors.Wrapf( - types.ErrNoEarnedFees, "no earned fees for %s", params.Provider.String(), - ) - } - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, fees) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} - -func querySchema(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - var params types.QuerySchemaParams - if err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms); err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) - } - - var schema string - - switch params.SchemaName { - case "pricing": - schema = types.PricingSchema - case "result": - schema = types.ResultSchema - default: - return nil, sdkerrors.Wrap(types.ErrInvalidSchemaName, schema) - } - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, schema) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} - -func queryParams(ctx sdk.Context, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - params := k.GetParams(ctx) - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, params) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} diff --git a/modules/service/module.go b/modules/service/module.go index fe077a75..0b97b9c7 100644 --- a/modules/service/module.go +++ b/modules/service/module.go @@ -4,7 +4,6 @@ import ( "context" "encoding/json" "fmt" - "math/rand" "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" @@ -118,19 +117,6 @@ func (am AppModule) RegisterServices(cfg module.Configurator) { // RegisterInvariants registers the service module invariants. func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {} -// Route returns the message routing key for the service module. -func (am AppModule) Route() sdk.Route { - return sdk.NewRoute(types.RouterKey, NewHandler(am.keeper)) -} - -// QuerierRoute returns the service module's querier route name. -func (AppModule) QuerierRoute() string { return types.RouterKey } - -// LegacyQuerierHandler returns the service module sdk.Querier. -func (am AppModule) LegacyQuerierHandler(legacyQuerierCdc *codec.LegacyAmino) sdk.Querier { - return keeper.NewQuerier(am.keeper, legacyQuerierCdc) -} - // InitGenesis performs genesis initialization for the service module. It returns // no validator updates. func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { @@ -171,16 +157,6 @@ func (am AppModule) EndBlock(ctx sdk.Context, _ abci.RequestEndBlock) []abci.Val // GenerateGenesisState creates a randomized GenState of the service module. func (AppModule) GenerateGenesisState(simState *module.SimulationState) {} -// ProposalContents doesn't return any content functions for governance proposals. -func (AppModule) ProposalContents(simState module.SimulationState) []simtypes.WeightedProposalContent { - return nil -} - -// RandomizedParams creates randomized service param changes for the simulator. -func (AppModule) RandomizedParams(r *rand.Rand) []simtypes.ParamChange { - return nil -} - // RegisterStoreDecoder registers a decoder for service module's types func (am AppModule) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry) { sdr[types.StoreKey] = simulation.NewDecodeStore(am.cdc) diff --git a/modules/service/simulation/operations.go b/modules/service/simulation/operations.go index be5f5247..2b1b08be 100644 --- a/modules/service/simulation/operations.go +++ b/modules/service/simulation/operations.go @@ -7,10 +7,10 @@ import ( tmbytes "github.com/tendermint/tendermint/libs/bytes" + cosmossimappparams "cosmossdk.io/simapp/params" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/simapp/helpers" - cosmossimappparams "github.com/cosmos/cosmos-sdk/simapp/params" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" @@ -238,12 +238,12 @@ func SimulateMsgDefineService(ak types.AccountKeeper, bk types.BankKeeper, k kee } txGen := cosmossimappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -327,12 +327,12 @@ func SimulateMsgBindService(ak types.AccountKeeper, bk types.BankKeeper, k keepe } txGen := cosmossimappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -399,12 +399,12 @@ func SimulateMsgUpdateServiceBinding(ak types.AccountKeeper, bk types.BankKeeper } txGen := cosmossimappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -454,12 +454,12 @@ func SimulateMsgSetWithdrawAddress(ak types.AccountKeeper, bk types.BankKeeper, } txGen := cosmossimappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -510,12 +510,12 @@ func SimulateMsgDisableServiceBinding(ak types.AccountKeeper, bk types.BankKeepe } txGen := cosmossimappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -581,12 +581,12 @@ func SimulateMsgEnableServiceBinding(ak types.AccountKeeper, bk types.BankKeeper } txGen := cosmossimappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -647,12 +647,12 @@ func SimulateMsgRefundServiceDeposit(ak types.AccountKeeper, bk types.BankKeeper } txGen := cosmossimappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -720,7 +720,7 @@ func SimulateMsgCallService(ak types.AccountKeeper, bk types.BankKeeper, k keepe txConfig, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -772,12 +772,12 @@ func SimulateMsgRespondService(ak types.AccountKeeper, bk types.BankKeeper, k ke } txGen := cosmossimappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -834,12 +834,12 @@ func SimulateMsgPauseRequestContext(ak types.AccountKeeper, bk types.BankKeeper, } txGen := cosmossimappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -900,12 +900,12 @@ func SimulateMsgStartRequestContext(ak types.AccountKeeper, bk types.BankKeeper, } txGen := cosmossimappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -965,12 +965,12 @@ func SimulateMsgKillRequestContext(ak types.AccountKeeper, bk types.BankKeeper, } txGen := cosmossimappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -1047,12 +1047,12 @@ func SimulateMsgUpdateRequestContext(ak types.AccountKeeper, bk types.BankKeeper } txGen := cosmossimappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -1101,12 +1101,12 @@ func SimulateMsgWithdrawEarnedFees(ak types.AccountKeeper, bk types.BankKeeper, } txGen := cosmossimappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, diff --git a/modules/service/types/genesis.pb.go b/modules/service/types/genesis.pb.go index 51afc62c..124aa4fc 100644 --- a/modules/service/types/genesis.pb.go +++ b/modules/service/types/genesis.pb.go @@ -5,8 +5,8 @@ package types import ( fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" diff --git a/modules/service/types/query.pb.go b/modules/service/types/query.pb.go index ba399ee3..60de6f97 100644 --- a/modules/service/types/query.pb.go +++ b/modules/service/types/query.pb.go @@ -9,9 +9,9 @@ import ( github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" query "github.com/cosmos/cosmos-sdk/types/query" - _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" diff --git a/modules/service/types/service.pb.go b/modules/service/types/service.pb.go index cbcc5c5b..d1d8eae0 100644 --- a/modules/service/types/service.pb.go +++ b/modules/service/types/service.pb.go @@ -7,9 +7,9 @@ import ( fmt "fmt" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + github_com_cosmos_gogoproto_types "github.com/cosmos/gogoproto/types" _ "google.golang.org/protobuf/types/known/durationpb" _ "google.golang.org/protobuf/types/known/timestamppb" io "io" @@ -827,7 +827,7 @@ func (m *ServiceBinding) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x4a } - n1, err1 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.DisabledTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.DisabledTime):]) + n1, err1 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.DisabledTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.DisabledTime):]) if err1 != nil { return 0, err1 } @@ -1351,7 +1351,7 @@ func (m *PromotionByTime) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x1a - n2, err2 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.EndTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.EndTime):]) + n2, err2 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.EndTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.EndTime):]) if err2 != nil { return 0, err2 } @@ -1359,7 +1359,7 @@ func (m *PromotionByTime) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintService(dAtA, i, uint64(n2)) i-- dAtA[i] = 0x12 - n3, err3 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.StartTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.StartTime):]) + n3, err3 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.StartTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.StartTime):]) if err3 != nil { return 0, err3 } @@ -1450,7 +1450,7 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x40 } - n4, err4 := github_com_gogo_protobuf_types.StdDurationMarshalTo(m.ArbitrationTimeLimit, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdDuration(m.ArbitrationTimeLimit):]) + n4, err4 := github_com_cosmos_gogoproto_types.StdDurationMarshalTo(m.ArbitrationTimeLimit, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdDuration(m.ArbitrationTimeLimit):]) if err4 != nil { return 0, err4 } @@ -1458,7 +1458,7 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintService(dAtA, i, uint64(n4)) i-- dAtA[i] = 0x3a - n5, err5 := github_com_gogo_protobuf_types.StdDurationMarshalTo(m.ComplaintRetrospect, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdDuration(m.ComplaintRetrospect):]) + n5, err5 := github_com_cosmos_gogoproto_types.StdDurationMarshalTo(m.ComplaintRetrospect, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdDuration(m.ComplaintRetrospect):]) if err5 != nil { return 0, err5 } @@ -1593,7 +1593,7 @@ func (m *ServiceBinding) Size() (n int) { if m.Available { n += 2 } - l = github_com_gogo_protobuf_types.SizeOfStdTime(m.DisabledTime) + l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.DisabledTime) n += 1 + l + sovService(uint64(l)) l = len(m.Owner) if l > 0 { @@ -1817,9 +1817,9 @@ func (m *PromotionByTime) Size() (n int) { } var l int _ = l - l = github_com_gogo_protobuf_types.SizeOfStdTime(m.StartTime) + l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.StartTime) n += 1 + l + sovService(uint64(l)) - l = github_com_gogo_protobuf_types.SizeOfStdTime(m.EndTime) + l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.EndTime) n += 1 + l + sovService(uint64(l)) l = m.Discount.Size() n += 1 + l + sovService(uint64(l)) @@ -1862,9 +1862,9 @@ func (m *Params) Size() (n int) { n += 1 + l + sovService(uint64(l)) l = m.SlashFraction.Size() n += 1 + l + sovService(uint64(l)) - l = github_com_gogo_protobuf_types.SizeOfStdDuration(m.ComplaintRetrospect) + l = github_com_cosmos_gogoproto_types.SizeOfStdDuration(m.ComplaintRetrospect) n += 1 + l + sovService(uint64(l)) - l = github_com_gogo_protobuf_types.SizeOfStdDuration(m.ArbitrationTimeLimit) + l = github_com_cosmos_gogoproto_types.SizeOfStdDuration(m.ArbitrationTimeLimit) n += 1 + l + sovService(uint64(l)) if m.TxSizeLimit != 0 { n += 1 + sovService(uint64(m.TxSizeLimit)) @@ -2386,7 +2386,7 @@ func (m *ServiceBinding) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.DisabledTime, dAtA[iNdEx:postIndex]); err != nil { + if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.DisabledTime, dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -3874,7 +3874,7 @@ func (m *PromotionByTime) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.StartTime, dAtA[iNdEx:postIndex]); err != nil { + if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.StartTime, dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -3907,7 +3907,7 @@ func (m *PromotionByTime) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.EndTime, dAtA[iNdEx:postIndex]); err != nil { + if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.EndTime, dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -4267,7 +4267,7 @@ func (m *Params) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := github_com_gogo_protobuf_types.StdDurationUnmarshal(&m.ComplaintRetrospect, dAtA[iNdEx:postIndex]); err != nil { + if err := github_com_cosmos_gogoproto_types.StdDurationUnmarshal(&m.ComplaintRetrospect, dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -4300,7 +4300,7 @@ func (m *Params) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := github_com_gogo_protobuf_types.StdDurationUnmarshal(&m.ArbitrationTimeLimit, dAtA[iNdEx:postIndex]); err != nil { + if err := github_com_cosmos_gogoproto_types.StdDurationUnmarshal(&m.ArbitrationTimeLimit, dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex diff --git a/modules/service/types/tx.pb.go b/modules/service/types/tx.pb.go index 7ed4a601..5b965b6a 100644 --- a/modules/service/types/tx.pb.go +++ b/modules/service/types/tx.pb.go @@ -8,9 +8,9 @@ import ( fmt "fmt" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/modules/token/client/cli/cli_test.go b/modules/token/client/cli/cli_test.go index 394bf85f..f57b44d5 100644 --- a/modules/token/client/cli/cli_test.go +++ b/modules/token/client/cli/cli_test.go @@ -5,43 +5,28 @@ import ( "fmt" "testing" - "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/suite" - "github.com/tidwall/gjson" - "github.com/tendermint/tendermint/crypto" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/codec/types" - "github.com/cosmos/cosmos-sdk/testutil/network" sdk "github.com/cosmos/cosmos-sdk/types" tokencli "github.com/irisnet/irismod/modules/token/client/cli" tokentestutil "github.com/irisnet/irismod/modules/token/client/testutil" - v1 "github.com/irisnet/irismod/modules/token/types/v1" + tokentypes "github.com/irisnet/irismod/modules/token/types" "github.com/irisnet/irismod/simapp" ) type IntegrationTestSuite struct { suite.Suite - cfg network.Config - network *network.Network + network simapp.Network } func (s *IntegrationTestSuite) SetupSuite() { s.T().Log("setting up integration test suite") - cfg := simapp.NewConfig() - cfg.NumValidators = 1 - - var err error - s.cfg = cfg - s.network, err = network.New(s.T(), s.T().TempDir(), cfg) - s.Require().NoError(err) - - _, err = s.network.WaitForHeight(1) - s.Require().NoError(err) + s.network = simapp.SetupNetwork(s.T()) } func (s *IntegrationTestSuite) TearDownSuite() { @@ -78,66 +63,53 @@ func (s *IntegrationTestSuite) TestToken() { fmt.Sprintf("--%s=%t", tokencli.FlagMintable, mintable), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } - respType := proto.Message(&sdk.TxResponse{}) expectedCode := uint32(0) - bz, err := tokentestutil.IssueTokenExec(clientCtx, from.String(), args...) + txResult := tokentestutil.IssueTokenExec(s.T(), s.network, clientCtx, from.String(), args...) + s.Require().Equal(expectedCode, txResult.Code) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp := respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - tokenSymbol := gjson.Get(txResp.RawLog, "0.events.4.attributes.0.value").String() + tokenSymbol := s.network.GetAttribute( + tokentypes.EventTypeIssueToken, + tokentypes.AttributeKeySymbol, + txResult.Events, + ) //------test GetCmdQueryTokens()------------- - tokens := &[]v1.TokenI{} - bz, err = tokentestutil.QueryTokensExec(clientCtx, from.String()) - s.Require().NoError(err) - s.Require().NoError(clientCtx.LegacyAmino.UnmarshalJSON(bz.Bytes(), tokens)) - s.Require().Equal(1, len(*tokens)) + tokens := tokentestutil.QueryTokensExec(s.T(), s.network, clientCtx, from.String()) + s.Require().Equal(1, len(tokens)) //------test GetCmdQueryToken()------------- - var token v1.TokenI - respType = proto.Message(&types.Any{}) - bz, err = tokentestutil.QueryTokenExec(clientCtx, tokenSymbol) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - err = clientCtx.InterfaceRegistry.UnpackAny(respType.(*types.Any), &token) - s.Require().NoError(err) + token := tokentestutil.QueryTokenExec(s.T(), s.network, clientCtx, tokenSymbol) s.Require().Equal(name, token.GetName()) s.Require().Equal(symbol, token.GetSymbol()) s.Require().Equal(uint64(initialSupply), token.GetInitialSupply()) //------test GetCmdQueryFee()------------- - respType = proto.Message(&v1.QueryFeesResponse{}) - bz, err = tokentestutil.QueryFeeExec(clientCtx, symbol) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - feeResp := respType.(*v1.QueryFeesResponse) - s.Require().NoError(err) + queryFeeResponse := tokentestutil.QueryFeeExec(s.T(), s.network, clientCtx, symbol) expectedFeeResp := "{\"exist\":true,\"issue_fee\":{\"denom\":\"stake\",\"amount\":\"13015\"},\"mint_fee\":{\"denom\":\"stake\",\"amount\":\"1301\"}}" - result, _ := json.Marshal(feeResp) + result, _ := json.Marshal(queryFeeResponse) s.Require().Equal(expectedFeeResp, string(result)) //------test GetCmdQueryParams()------------- - respType = proto.Message(&v1.Params{}) - bz, err = tokentestutil.QueryParamsExec(clientCtx) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - params := respType.(*v1.Params) - s.Require().NoError(err) + queryParamsResponse := tokentestutil.QueryParamsExec(s.T(), s.network, clientCtx) expectedParams := "{\"token_tax_rate\":\"0.400000000000000000\",\"issue_token_base_fee\":{\"denom\":\"stake\",\"amount\":\"60000\"},\"mint_token_fee_ratio\":\"0.100000000000000000\"}" - result, _ = json.Marshal(params) + result, _ = json.Marshal(queryParamsResponse) s.Require().Equal(expectedParams, string(result)) //------test GetCmdMintToken()------------- - coinType := proto.Message(&sdk.Coin{}) - out, err := simapp.QueryBalanceExec(clientCtx, from.String(), symbol) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), coinType)) - balance := coinType.(*sdk.Coin) + balance := simapp.QueryBalanceExec( + s.T(), + s.network, + clientCtx, + from.String(), + symbol, + ) initAmount := balance.Amount.Int64() mintAmount := int64(50000000) @@ -145,22 +117,30 @@ func (s *IntegrationTestSuite) TestToken() { fmt.Sprintf("--%s=%s", tokencli.FlagTo, from.String()), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } - coinMintedStr := fmt.Sprintf("%d%s", mintAmount, symbol) - respType = proto.Message(&sdk.TxResponse{}) - bz, err = tokentestutil.MintTokenExec(clientCtx, from.String(), coinMintedStr, args...) - - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - - out, err = simapp.QueryBalanceExec(clientCtx, from.String(), symbol) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), coinType)) - balance = coinType.(*sdk.Coin) + + txResult = tokentestutil.MintTokenExec( + s.T(), + s.network, + clientCtx, + from.String(), + symbol, + args...) + s.Require().Equal(expectedCode, txResult.Code) + + balance = simapp.QueryBalanceExec( + s.T(), + s.network, + clientCtx, + from.String(), + symbol, + ) exceptedAmount := initAmount + mintAmount s.Require().Equal(exceptedAmount, balance.Amount.Int64()) @@ -170,23 +150,30 @@ func (s *IntegrationTestSuite) TestToken() { args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } - coinBurntStr := fmt.Sprintf("%d%s", burnAmount, symbol) - respType = proto.Message(&sdk.TxResponse{}) - bz, err = tokentestutil.BurnTokenExec(clientCtx, from.String(), coinBurntStr, args...) - - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - - out, err = simapp.QueryBalanceExec(clientCtx, from.String(), symbol) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), coinType)) - balance = coinType.(*sdk.Coin) + txResult = tokentestutil.BurnTokenExec( + s.T(), + s.network, + clientCtx, + from.String(), + symbol, + args...) + s.Require().Equal(expectedCode, txResult.Code) + + balance = simapp.QueryBalanceExec( + s.T(), + s.network, + clientCtx, + from.String(), + symbol, + ) exceptedAmount = exceptedAmount - burnAmount s.Require().Equal(exceptedAmount, balance.Amount.Int64()) @@ -201,25 +188,24 @@ func (s *IntegrationTestSuite) TestToken() { fmt.Sprintf("--%s=%t", tokencli.FlagMintable, newMintable), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } - respType = proto.Message(&sdk.TxResponse{}) - bz, err = tokentestutil.EditTokenExec(clientCtx, from.String(), symbol, args...) - - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - - var token2 v1.TokenI - respType = proto.Message(&types.Any{}) - bz, err = tokentestutil.QueryTokenExec(clientCtx, tokenSymbol) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - err = clientCtx.InterfaceRegistry.UnpackAny(respType.(*types.Any), &token2) - s.Require().NoError(err) + txResult = tokentestutil.EditTokenExec( + s.T(), + s.network, + clientCtx, + from.String(), + symbol, + args...) + s.Require().Equal(expectedCode, txResult.Code) + + token2 := tokentestutil.QueryTokenExec(s.T(), s.network, clientCtx, tokenSymbol) s.Require().Equal(newName, token2.GetName()) s.Require().Equal(uint64(newMaxSupply), token2.GetMaxSupply()) s.Require().Equal(newMintable, token2.GetMintable()) @@ -231,24 +217,24 @@ func (s *IntegrationTestSuite) TestToken() { fmt.Sprintf("--%s=%s", tokencli.FlagTo, to.String()), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } - respType = proto.Message(&sdk.TxResponse{}) - bz, err = tokentestutil.TransferTokenOwnerExec(clientCtx, from.String(), symbol, args...) - - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp = respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - - var token3 v1.TokenI - respType = proto.Message(&types.Any{}) - bz, err = tokentestutil.QueryTokenExec(clientCtx, tokenSymbol) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) - err = clientCtx.InterfaceRegistry.UnpackAny(respType.(*types.Any), &token3) - s.Require().NoError(err) + + txResult = tokentestutil.TransferTokenOwnerExec( + s.T(), + s.network, + clientCtx, + from.String(), + symbol, + args...) + s.Require().Equal(expectedCode, txResult.Code) + + token3 := tokentestutil.QueryTokenExec(s.T(), s.network, clientCtx, tokenSymbol) s.Require().Equal(to, token3.GetOwner()) // --------------------------------------------------------------------------- } diff --git a/modules/token/client/testutil/grpc_query_test.go b/modules/token/client/testutil/grpc_query_test.go index 341399fe..04fda16d 100644 --- a/modules/token/client/testutil/grpc_query_test.go +++ b/modules/token/client/testutil/grpc_query_test.go @@ -7,15 +7,14 @@ import ( "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/suite" - "github.com/tidwall/gjson" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/testutil/network" - "github.com/cosmos/cosmos-sdk/testutil/rest" + "github.com/cosmos/cosmos-sdk/testutil" sdk "github.com/cosmos/cosmos-sdk/types" tokencli "github.com/irisnet/irismod/modules/token/client/cli" tokentestutil "github.com/irisnet/irismod/modules/token/client/testutil" + tokentypes "github.com/irisnet/irismod/modules/token/types" v1 "github.com/irisnet/irismod/modules/token/types/v1" "github.com/irisnet/irismod/simapp" ) @@ -23,24 +22,13 @@ import ( type IntegrationTestSuite struct { suite.Suite - cfg network.Config - network *network.Network + network simapp.Network } func (s *IntegrationTestSuite) SetupSuite() { s.T().Log("setting up integration test suite") - cfg := simapp.NewConfig() - cfg.NumValidators = 1 - - s.cfg = cfg - - var err error - s.network, err = network.New(s.T(), s.T().TempDir(), cfg) - s.Require().NoError(err) - - _, err = s.network.WaitForHeight(1) - s.Require().NoError(err) + s.network = simapp.SetupNetwork(s.T()) } func (s *IntegrationTestSuite) TearDownSuite() { @@ -78,31 +66,33 @@ func (s *IntegrationTestSuite) TestToken() { fmt.Sprintf("--%s=%t", tokencli.FlagMintable, mintable), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } - respType := proto.Message(&sdk.TxResponse{}) - expectedCode := uint32(0) - bz, err := tokentestutil.IssueTokenExec(clientCtx, from.String(), args...) + txResult := tokentestutil.IssueTokenExec(s.T(), s.network, clientCtx, from.String(), args...) - s.Require().NoError(err) - s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) - txResp := respType.(*sdk.TxResponse) - s.Require().Equal(expectedCode, txResp.Code) - tokenSymbol := gjson.Get(txResp.RawLog, "0.events.4.attributes.0.value").String() + tokenSymbol := s.network.GetAttribute( + tokentypes.EventTypeIssueToken, + tokentypes.AttributeKeySymbol, + txResult.Events, + ) //------test GetCmdQueryTokens()------------- - url := fmt.Sprintf("%s/irismod/token/v1/tokens", baseURL) - resp, err := rest.GetRequest(url) - respType = proto.Message(&v1.QueryTokensResponse{}) + url := fmt.Sprintf("%s/irismod/token/tokens", baseURL) + resp, err := testutil.GetRequest(url) + respType := proto.Message(&v1.QueryTokensResponse{}) s.Require().NoError(err) s.Require().NoError(clientCtx.Codec.UnmarshalJSON(resp, respType)) tokensResp := respType.(*v1.QueryTokensResponse) s.Require().Equal(2, len(tokensResp.Tokens)) //------test GetCmdQueryToken()------------- - url = fmt.Sprintf("%s/irismod/token/v1/tokens/%s", baseURL, tokenSymbol) - resp, err = rest.GetRequest(url) + url = fmt.Sprintf("%s/irismod/token/tokens/%s", baseURL, tokenSymbol) + resp, err = testutil.GetRequest(url) respType = proto.Message(&v1.QueryTokenResponse{}) var token v1.TokenI s.Require().NoError(err) @@ -115,8 +105,8 @@ func (s *IntegrationTestSuite) TestToken() { s.Require().Equal(uint64(initialSupply), token.GetInitialSupply()) //------test GetCmdQueryFee()------------- - url = fmt.Sprintf("%s/irismod/token/v1/tokens/%s/fees", baseURL, tokenSymbol) - resp, err = rest.GetRequest(url) + url = fmt.Sprintf("%s/irismod/token/tokens/%s/fees", baseURL, tokenSymbol) + resp, err = testutil.GetRequest(url) respType = proto.Message(&v1.QueryFeesResponse{}) s.Require().NoError(err) s.Require().NoError(clientCtx.Codec.UnmarshalJSON(resp, respType)) @@ -126,8 +116,8 @@ func (s *IntegrationTestSuite) TestToken() { s.Require().Equal(expectedFeeResp, string(result)) //------test GetCmdQueryParams()------------- - url = fmt.Sprintf("%s/irismod/token/v1/params", baseURL) - resp, err = rest.GetRequest(url) + url = fmt.Sprintf("%s/irismod/token/params", baseURL) + resp, err = testutil.GetRequest(url) respType = proto.Message(&v1.QueryParamsResponse{}) s.Require().NoError(err) s.Require().NoError(clientCtx.Codec.UnmarshalJSON(resp, respType)) diff --git a/modules/token/client/testutil/test_helpers.go b/modules/token/client/testutil/test_helpers.go index e1c984b4..d3dc9503 100644 --- a/modules/token/client/testutil/test_helpers.go +++ b/modules/token/client/testutil/test_helpers.go @@ -2,101 +2,167 @@ package testutil import ( "fmt" + "testing" + "github.com/gogo/protobuf/proto" + "github.com/stretchr/testify/require" "github.com/tendermint/tendermint/libs/cli" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/testutil" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" tokencli "github.com/irisnet/irismod/modules/token/client/cli" + v1 "github.com/irisnet/irismod/modules/token/types/v1" + "github.com/irisnet/irismod/simapp" ) -func IssueTokenExec(clientCtx client.Context, from string, extraArgs ...string) (testutil.BufferWriter, error) { +func IssueTokenExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ fmt.Sprintf("--%s=%s", flags.FlagFrom, from), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, tokencli.GetCmdIssueToken(), args) + return network.ExecTxCmdWithResult(t, clientCtx, tokencli.GetCmdIssueToken(), args) } -func EditTokenExec(clientCtx client.Context, from string, symbol string, extraArgs ...string) (testutil.BufferWriter, error) { +func EditTokenExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + symbol string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ symbol, fmt.Sprintf("--%s=%s", flags.FlagFrom, from), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, tokencli.GetCmdEditToken(), args) + return network.ExecTxCmdWithResult(t, clientCtx, tokencli.GetCmdEditToken(), args) } -func MintTokenExec(clientCtx client.Context, from string, coinStr string, extraArgs ...string) (testutil.BufferWriter, error) { +func MintTokenExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + coinStr string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ coinStr, fmt.Sprintf("--%s=%s", flags.FlagFrom, from), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, tokencli.GetCmdMintToken(), args) + return network.ExecTxCmdWithResult(t, clientCtx, tokencli.GetCmdMintToken(), args) } -func BurnTokenExec(clientCtx client.Context, from string, coinStr string, extraArgs ...string) (testutil.BufferWriter, error) { +func BurnTokenExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + coinStr string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ coinStr, fmt.Sprintf("--%s=%s", flags.FlagFrom, from), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, tokencli.GetCmdBurnToken(), args) + return network.ExecTxCmdWithResult(t, clientCtx, tokencli.GetCmdBurnToken(), args) } -func TransferTokenOwnerExec(clientCtx client.Context, from string, symbol string, extraArgs ...string) (testutil.BufferWriter, error) { +func TransferTokenOwnerExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + from string, + symbol string, + extraArgs ...string, +) *simapp.ResponseTx { args := []string{ symbol, fmt.Sprintf("--%s=%s", flags.FlagFrom, from), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, tokencli.GetCmdTransferTokenOwner(), args) + return network.ExecTxCmdWithResult(t, clientCtx, tokencli.GetCmdTransferTokenOwner(), args) } -func QueryTokenExec(clientCtx client.Context, denom string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryTokenExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + denom string, + extraArgs ...string, +) v1.TokenI { args := []string{ denom, fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, tokencli.GetCmdQueryToken(), args) + respType := proto.Message(&codectypes.Any{}) + network.ExecQueryCmd(t, clientCtx, tokencli.GetCmdQueryToken(), args, respType) + + var token v1.TokenI + err := clientCtx.InterfaceRegistry.UnpackAny(respType.(*codectypes.Any), &token) + require.NoError(t, err, "QueryTokenExec failed") + return token } -func QueryTokensExec(clientCtx client.Context, owner string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryTokensExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + owner string, + extraArgs ...string, +) []v1.TokenI { args := []string{ owner, fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - - return clitestutil.ExecTestCLICmd(clientCtx, tokencli.GetCmdQueryTokens(), args) + tokens := []v1.TokenI{} + buf, err := clitestutil.ExecTestCLICmd(clientCtx, tokencli.GetCmdQueryTokens(), args) + require.NoError(t, err, "QueryTokensExec failed") + require.NoError(t, clientCtx.LegacyAmino.UnmarshalJSON(buf.Bytes(), &tokens)) + return tokens } -func QueryFeeExec(clientCtx client.Context, symbol string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryFeeExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + symbol string, + extraArgs ...string, +) *v1.QueryFeesResponse { args := []string{ symbol, fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, tokencli.GetCmdQueryFee(), args) + response := &v1.QueryFeesResponse{} + network.ExecQueryCmd(t, clientCtx, tokencli.GetCmdQueryFee(), args, response) + return response } -func QueryParamsExec(clientCtx client.Context, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryParamsExec(t *testing.T, + network simapp.Network, + clientCtx client.Context, + extraArgs ...string, +) *v1.Params { args := []string{ fmt.Sprintf("--%s=json", cli.OutputFlag), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, tokencli.GetCmdQueryParams(), args) + response := &v1.Params{} + network.ExecQueryCmd(t, clientCtx, tokencli.GetCmdQueryParams(), args, response) + return response } diff --git a/modules/token/module.go b/modules/token/module.go index c22331c7..fc42c577 100644 --- a/modules/token/module.go +++ b/modules/token/module.go @@ -4,7 +4,6 @@ import ( "context" "encoding/json" "fmt" - "math/rand" "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" @@ -53,7 +52,11 @@ func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { } // ValidateGenesis performs genesis state validation for the token module. -func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error { +func (AppModuleBasic) ValidateGenesis( + cdc codec.JSONCodec, + config client.TxEncodingConfig, + bz json.RawMessage, +) error { var data v1.GenesisState if err := cdc.UnmarshalJSON(bz, &data); err != nil { return fmt.Errorf("failed to unmarshal %s genesis state: %w", types.ModuleName, err) @@ -68,7 +71,11 @@ func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Rout // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the token module. func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { _ = v1.RegisterQueryHandlerClient(context.Background(), mux, v1.NewQueryClient(clientCtx)) - _ = v1beta1.RegisterQueryHandlerClient(context.Background(), mux, v1beta1.NewQueryClient(clientCtx)) + _ = v1beta1.RegisterQueryHandlerClient( + context.Background(), + mux, + v1beta1.NewQueryClient(clientCtx), + ) } // GetTxCmd returns the root tx command for the token module. @@ -99,7 +106,12 @@ type AppModule struct { } // NewAppModule creates a new AppModule object -func NewAppModule(cdc codec.Codec, keeper keeper.Keeper, ak types.AccountKeeper, bk types.BankKeeper) AppModule { +func NewAppModule( + cdc codec.Codec, + keeper keeper.Keeper, + ak types.AccountKeeper, + bk types.BankKeeper, +) AppModule { return AppModule{ AppModuleBasic: AppModuleBasic{cdc: cdc}, keeper: keeper, @@ -117,30 +129,27 @@ func (am AppModule) RegisterServices(cfg module.Configurator) { v1.RegisterMsgServer(cfg.MsgServer(), v1MsgServer) v1.RegisterQueryServer(cfg.QueryServer(), am.keeper) - v1beta1.RegisterMsgServer(cfg.MsgServer(), keeper.NewLegacyMsgServerImpl(v1MsgServer, am.keeper)) - v1beta1.RegisterQueryServer(cfg.QueryServer(), keeper.NewLegacyQueryServer(am.keeper, am.keeper.Codec())) + v1beta1.RegisterMsgServer( + cfg.MsgServer(), + keeper.NewLegacyMsgServerImpl(v1MsgServer, am.keeper), + ) + v1beta1.RegisterQueryServer( + cfg.QueryServer(), + keeper.NewLegacyQueryServer(am.keeper, am.keeper.Codec()), + ) } // RegisterInvariants registers the token module invariants. func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {} -// Route returns the message routing key for the token module. -func (am AppModule) Route() sdk.Route { - return sdk.NewRoute(types.RouterKey, NewHandler(am.keeper)) -} - -// QuerierRoute returns the token module's querier route name. -func (AppModule) QuerierRoute() string { return types.RouterKey } - -// LegacyQuerierHandler returns the token module sdk.Querier. -func (am AppModule) LegacyQuerierHandler(legacyQuerierCdc *codec.LegacyAmino) sdk.Querier { - return nil -} - // InitGenesis performs genesis initialization for the token module. It returns // no validator updates. -func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { +func (am AppModule) InitGenesis( + ctx sdk.Context, + cdc codec.JSONCodec, + data json.RawMessage, +) []abci.ValidatorUpdate { var genesisState v1.GenesisState cdc.MustUnmarshalJSON(data, &genesisState) @@ -175,22 +184,20 @@ func (AppModule) GenerateGenesisState(simState *module.SimulationState) { simulation.RandomizedGenState(simState) } -// ProposalContents doesn't return any content functions for governance proposals. -func (AppModule) ProposalContents(_ module.SimulationState) []simtypes.WeightedProposalContent { - return nil -} - -// RandomizedParams creates randomized token param changes for the simulator. -func (AppModule) RandomizedParams(r *rand.Rand) []simtypes.ParamChange { - return simulation.ParamChanges(r) -} - // RegisterStoreDecoder registers a decoder for token module's types func (am AppModule) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry) { sdr[types.StoreKey] = simulation.NewDecodeStore(am.cdc) } // WeightedOperations returns the all the token module operations with their respective weights. -func (am AppModule) WeightedOperations(simState module.SimulationState) []simtypes.WeightedOperation { - return simulation.WeightedOperations(simState.AppParams, simState.Cdc, am.keeper, am.accountKeeper, am.bankKeeper) +func (am AppModule) WeightedOperations( + simState module.SimulationState, +) []simtypes.WeightedOperation { + return simulation.WeightedOperations( + simState.AppParams, + simState.Cdc, + am.keeper, + am.accountKeeper, + am.bankKeeper, + ) } diff --git a/modules/token/simulation/operations.go b/modules/token/simulation/operations.go index d7ea639c..6f0265d8 100644 --- a/modules/token/simulation/operations.go +++ b/modules/token/simulation/operations.go @@ -6,10 +6,10 @@ import ( "strings" sdkmath "cosmossdk.io/math" + simappparams "cosmossdk.io/simapp/params" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/simapp/helpers" - simappparams "github.com/cosmos/cosmos-sdk/simapp/params" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" @@ -97,7 +97,11 @@ func WeightedOperations( } // SimulateIssueToken tests and runs a single msg issue a new token -func SimulateIssueToken(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKeeper) simtypes.Operation { +func SimulateIssueToken( + k keeper.Keeper, + ak types.AccountKeeper, + bk types.BankKeeper, +) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, @@ -110,34 +114,58 @@ func SimulateIssueToken(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKe error, ) { token, maxFees := genToken(ctx, r, k, ak, bk, accs) - msg := v1.NewMsgIssueToken(token.Symbol, token.MinUnit, token.Name, token.Scale, token.InitialSupply, token.MaxSupply, token.Mintable, token.GetOwner().String()) + msg := v1.NewMsgIssueToken( + token.Symbol, + token.MinUnit, + token.Name, + token.Scale, + token.InitialSupply, + token.MaxSupply, + token.Mintable, + token.GetOwner().String(), + ) simAccount, found := simtypes.FindAccount(accs, token.GetOwner()) if !found { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), fmt.Sprintf("account %s not found", token.Owner)), nil, fmt.Errorf("account %s not found", token.Owner) + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + fmt.Sprintf("account %s not found", token.Owner), + ), nil, fmt.Errorf( + "account %s not found", + token.Owner, + ) } owner, _ := sdk.AccAddressFromBech32(msg.Owner) account := ak.GetAccount(ctx, owner) fees, err := simtypes.RandomFees(r, ctx, maxFees) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate fees"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate fees", + ), nil, err } txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, simAccount.PrivKey, ) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate mock tx", + ), nil, err } if _, _, err = app.SimDeliver(txGen.TxEncoder(), tx); err != nil { @@ -149,7 +177,11 @@ func SimulateIssueToken(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKe } // SimulateEditToken tests and runs a single msg edit a existed token -func SimulateEditToken(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKeeper) simtypes.Operation { +func SimulateEditToken( + k keeper.Keeper, + ak types.AccountKeeper, + bk types.BankKeeper, +) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, @@ -157,13 +189,30 @@ func SimulateEditToken(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKee token, _, skip := selectOneToken(ctx, k, ak, bk, false) if skip { - return simtypes.NoOpMsg(types.ModuleName, v1.TypeMsgEditToken, "skip edit token"), nil, nil - } - msg := v1.NewMsgEditToken(token.GetName(), token.GetSymbol(), token.GetMaxSupply(), types.True, token.GetOwner().String()) + return simtypes.NoOpMsg( + types.ModuleName, + v1.TypeMsgEditToken, + "skip edit token", + ), nil, nil + } + msg := v1.NewMsgEditToken( + token.GetName(), + token.GetSymbol(), + token.GetMaxSupply(), + types.True, + token.GetOwner().String(), + ) simAccount, found := simtypes.FindAccount(accs, token.GetOwner()) if !found { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), fmt.Sprintf("account %s not found", token.GetOwner())), nil, fmt.Errorf("account %s not found", token.GetOwner()) + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + fmt.Sprintf("account %s not found", token.GetOwner()), + ), nil, fmt.Errorf( + "account %s not found", + token.GetOwner(), + ) } owner, _ := sdk.AccAddressFromBech32(msg.Owner) @@ -172,23 +221,31 @@ func SimulateEditToken(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKee fees, err := simtypes.RandomFees(r, ctx, spendable) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate fees"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate fees", + ), nil, err } txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, simAccount.PrivKey, ) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate mock tx", + ), nil, err } if _, _, err = app.SimDeliver(txGen.TxEncoder(), tx); err != nil { @@ -200,7 +257,11 @@ func SimulateEditToken(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKee } // SimulateMintToken tests and runs a single msg mint a existed token -func SimulateMintToken(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKeeper) simtypes.Operation { +func SimulateMintToken( + k keeper.Keeper, + ak types.AccountKeeper, + bk types.BankKeeper, +) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, @@ -208,7 +269,11 @@ func SimulateMintToken(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKee token, maxFee, skip := selectOneToken(ctx, k, ak, bk, true) if skip { - return simtypes.NoOpMsg(types.ModuleName, v1.TypeMsgMintToken, "skip mint token"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + v1.TypeMsgMintToken, + "skip mint token", + ), nil, nil } simToAccount, _ := simtypes.RandomAcc(r, accs) msg := &v1.MsgMintToken{ @@ -222,30 +287,45 @@ func SimulateMintToken(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKee ownerAccount, found := simtypes.FindAccount(accs, token.GetOwner()) if !found { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), fmt.Sprintf("account %s not found", token.GetOwner())), nil, fmt.Errorf("account %s not found", token.GetOwner()) + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + fmt.Sprintf("account %s not found", token.GetOwner()), + ), nil, fmt.Errorf( + "account %s not found", + token.GetOwner(), + ) } owner, _ := sdk.AccAddressFromBech32(msg.Owner) account := ak.GetAccount(ctx, owner) fees, err := simtypes.RandomFees(r, ctx, maxFee) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate fees"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate fees", + ), nil, err } txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, ownerAccount.PrivKey, ) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate mock tx", + ), nil, err } if _, _, err = app.SimDeliver(txGen.TxEncoder(), tx); err != nil { @@ -257,7 +337,11 @@ func SimulateMintToken(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKee } // SimulateTransferTokenOwner tests and runs a single msg transfer to others -func SimulateTransferTokenOwner(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKeeper) simtypes.Operation { +func SimulateTransferTokenOwner( + k keeper.Keeper, + ak types.AccountKeeper, + bk types.BankKeeper, +) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, @@ -265,18 +349,33 @@ func SimulateTransferTokenOwner(k keeper.Keeper, ak types.AccountKeeper, bk type token, _, skip := selectOneToken(ctx, k, ak, bk, false) if skip { - return simtypes.NoOpMsg(types.ModuleName, v1.TypeMsgTransferTokenOwner, "skip TransferTokenOwner"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + v1.TypeMsgTransferTokenOwner, + "skip TransferTokenOwner", + ), nil, nil } var simToAccount, _ = simtypes.RandomAcc(r, accs) for simToAccount.Address.Equals(token.GetOwner()) { simToAccount, _ = simtypes.RandomAcc(r, accs) } - msg := v1.NewMsgTransferTokenOwner(token.GetOwner().String(), simToAccount.Address.String(), token.GetSymbol()) + msg := v1.NewMsgTransferTokenOwner( + token.GetOwner().String(), + simToAccount.Address.String(), + token.GetSymbol(), + ) simAccount, found := simtypes.FindAccount(accs, token.GetOwner()) if !found { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), fmt.Sprintf("account %s not found", token.GetOwner())), nil, fmt.Errorf("account %s not found", token.GetOwner()) + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + fmt.Sprintf("account %s not found", token.GetOwner()), + ), nil, fmt.Errorf( + "account %s not found", + token.GetOwner(), + ) } srcOwner, _ := sdk.AccAddressFromBech32(msg.SrcOwner) @@ -285,23 +384,31 @@ func SimulateTransferTokenOwner(k keeper.Keeper, ak types.AccountKeeper, bk type fees, err := simtypes.RandomFees(r, ctx, spendable) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate fees"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate fees", + ), nil, err } txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, simAccount.PrivKey, ) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate mock tx", + ), nil, err } if _, _, err = app.SimDeliver(txGen.TxEncoder(), tx); err != nil { @@ -313,7 +420,11 @@ func SimulateTransferTokenOwner(k keeper.Keeper, ak types.AccountKeeper, bk type } // SimulateBurnToken tests and runs a single msg burn a existed token -func SimulateBurnToken(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKeeper) simtypes.Operation { +func SimulateBurnToken( + k keeper.Keeper, + ak types.AccountKeeper, + bk types.BankKeeper, +) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, @@ -321,7 +432,11 @@ func SimulateBurnToken(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKee token, _, skip := selectOneToken(ctx, k, ak, bk, false) if skip { - return simtypes.NoOpMsg(types.ModuleName, v1.TypeMsgTransferTokenOwner, "skip burnToken"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + v1.TypeMsgTransferTokenOwner, + "skip burnToken", + ), nil, nil } owner, _ := sdk.AccAddressFromBech32(token.GetOwner().String()) @@ -329,14 +444,23 @@ func SimulateBurnToken(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKee spendable := bk.SpendableCoins(ctx, account.GetAddress()) amount := spendable.AmountOf(token.GetMinUnit()) if !amount.IsPositive() { - return simtypes.NoOpMsg(types.ModuleName, v1.TypeMsgBurnToken, "Insufficient funds"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + v1.TypeMsgBurnToken, + "Insufficient funds", + ), nil, nil } amount2 := simtypes.RandomAmount(r, amount) - spendable, hasNeg := spendable.SafeSub(sdk.Coins{sdk.NewCoin(token.GetMinUnit(), amount2)}...) + spendable, hasNeg := spendable.SafeSub( + sdk.Coins{sdk.NewCoin(token.GetMinUnit(), amount2)}...) if hasNeg { - return simtypes.NoOpMsg(types.ModuleName, v1.TypeMsgBurnToken, "Insufficient funds"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + v1.TypeMsgBurnToken, + "Insufficient funds", + ), nil, nil } msg := &v1.MsgBurnToken{ @@ -349,28 +473,43 @@ func SimulateBurnToken(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKee ownerAccount, found := simtypes.FindAccount(accs, token.GetOwner()) if !found { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), fmt.Sprintf("account %s not found", token.GetOwner())), nil, fmt.Errorf("account %s not found", token.GetOwner()) + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + fmt.Sprintf("account %s not found", token.GetOwner()), + ), nil, fmt.Errorf( + "account %s not found", + token.GetOwner(), + ) } fees, err := simtypes.RandomFees(r, ctx, spendable) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate fees"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate fees", + ), nil, err } txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, ownerAccount.PrivKey, ) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate mock tx", + ), nil, err } if _, _, err = app.SimDeliver(txGen.TxEncoder(), tx); err != nil { @@ -412,7 +551,9 @@ func selectOneToken( if spendableStake.IsZero() || spendableStake.LT(mintFee.Amount) { continue } - maxFees = sdk.NewCoins(sdk.NewCoin(v1.GetNativeToken().MinUnit, spendableStake).Sub(mintFee)) + maxFees = sdk.NewCoins( + sdk.NewCoin(v1.GetNativeToken().MinUnit, spendableStake).Sub(mintFee), + ) token = t return } diff --git a/modules/token/simulation/params.go b/modules/token/simulation/params.go deleted file mode 100644 index dcdc49b9..00000000 --- a/modules/token/simulation/params.go +++ /dev/null @@ -1,44 +0,0 @@ -package simulation - -import ( - "encoding/json" - "fmt" - "math/rand" - - sdk "github.com/cosmos/cosmos-sdk/types" - simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/cosmos/cosmos-sdk/x/simulation" - - "github.com/irisnet/irismod/modules/token/types" - v1 "github.com/irisnet/irismod/modules/token/types/v1" -) - -const ( - keyTokenTaxRate = "TokenTaxRate" - keyIssueTokenBaseFee = "IssueTokenBaseFee" - keyMintTokenFeeRatio = "MintTokenFeeRatio" -) - -// ParamChanges defines the parameters that can be modified by param change proposals -// on the simulation -func ParamChanges(r *rand.Rand) []simtypes.ParamChange { - return []simtypes.ParamChange{ - simulation.NewSimParamChange(types.ModuleName, keyTokenTaxRate, - func(r *rand.Rand) string { - return fmt.Sprintf("\"%s\"", RandomDec(r).String()) - }, - ), - simulation.NewSimParamChange(types.ModuleName, keyIssueTokenBaseFee, - func(r *rand.Rand) string { - fee := sdk.NewCoin(v1.GetNativeToken().Symbol, RandomInt(r)) - bz, _ := json.Marshal(fee) - return string(bz) - }, - ), - simulation.NewSimParamChange(types.ModuleName, keyMintTokenFeeRatio, - func(r *rand.Rand) string { - return fmt.Sprintf("\"%s\"", RandomDec(r).String()) - }, - ), - } -} diff --git a/modules/token/types/v1/genesis.pb.go b/modules/token/types/v1/genesis.pb.go index 54bae235..aaa294c6 100644 --- a/modules/token/types/v1/genesis.pb.go +++ b/modules/token/types/v1/genesis.pb.go @@ -6,8 +6,8 @@ package v1 import ( fmt "fmt" types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" diff --git a/modules/token/types/v1/query.pb.go b/modules/token/types/v1/query.pb.go index d161da30..8f2fa254 100644 --- a/modules/token/types/v1/query.pb.go +++ b/modules/token/types/v1/query.pb.go @@ -6,14 +6,14 @@ package v1 import ( context "context" fmt "fmt" + _ "github.com/cosmos/cosmos-proto" types "github.com/cosmos/cosmos-sdk/codec/types" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types1 "github.com/cosmos/cosmos-sdk/types" query "github.com/cosmos/cosmos-sdk/types/query" - _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" - _ "github.com/regen-network/cosmos-proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" diff --git a/modules/token/types/v1/token.pb.go b/modules/token/types/v1/token.pb.go index ae4c6efa..cdc5eb56 100644 --- a/modules/token/types/v1/token.pb.go +++ b/modules/token/types/v1/token.pb.go @@ -7,8 +7,8 @@ import ( fmt "fmt" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" diff --git a/modules/token/types/v1/tx.pb.go b/modules/token/types/v1/tx.pb.go index e442cbce..7e58c07a 100644 --- a/modules/token/types/v1/tx.pb.go +++ b/modules/token/types/v1/tx.pb.go @@ -7,9 +7,9 @@ import ( context "context" fmt "fmt" types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" github_com_irisnet_irismod_modules_token_types "github.com/irisnet/irismod/modules/token/types" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" diff --git a/modules/token/types/v1beta1/genesis.pb.go b/modules/token/types/v1beta1/genesis.pb.go index de952323..e11189f3 100644 --- a/modules/token/types/v1beta1/genesis.pb.go +++ b/modules/token/types/v1beta1/genesis.pb.go @@ -6,8 +6,8 @@ package v1beta1 import ( fmt "fmt" types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" diff --git a/modules/token/types/v1beta1/query.pb.go b/modules/token/types/v1beta1/query.pb.go index 61067b56..15dfb405 100644 --- a/modules/token/types/v1beta1/query.pb.go +++ b/modules/token/types/v1beta1/query.pb.go @@ -6,14 +6,14 @@ package v1beta1 import ( context "context" fmt "fmt" + _ "github.com/cosmos/cosmos-proto" types "github.com/cosmos/cosmos-sdk/codec/types" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types1 "github.com/cosmos/cosmos-sdk/types" query "github.com/cosmos/cosmos-sdk/types/query" - _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" - _ "github.com/regen-network/cosmos-proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" diff --git a/modules/token/types/v1beta1/token.pb.go b/modules/token/types/v1beta1/token.pb.go index d7f85b7a..088a7ed3 100644 --- a/modules/token/types/v1beta1/token.pb.go +++ b/modules/token/types/v1beta1/token.pb.go @@ -7,8 +7,8 @@ import ( fmt "fmt" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" diff --git a/modules/token/types/v1beta1/tx.pb.go b/modules/token/types/v1beta1/tx.pb.go index 61e036b5..1ffeac49 100644 --- a/modules/token/types/v1beta1/tx.pb.go +++ b/modules/token/types/v1beta1/tx.pb.go @@ -6,9 +6,9 @@ package v1beta1 import ( context "context" fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" github_com_irisnet_irismod_modules_token_types "github.com/irisnet/irismod/modules/token/types" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" diff --git a/proto/buf.lock b/proto/buf.lock new file mode 100644 index 00000000..7c5bd180 --- /dev/null +++ b/proto/buf.lock @@ -0,0 +1,23 @@ +# Generated by buf. DO NOT EDIT. +version: v1 +deps: + - remote: buf.build + owner: cosmos + repository: cosmos-proto + commit: 1935555c206d4afb9e94615dfd0fad31 + - remote: buf.build + owner: cosmos + repository: cosmos-sdk + commit: 7ea623782a4d4f11b35627913a7bc481 + - remote: buf.build + owner: cosmos + repository: gogo-proto + commit: 34d970b699f84aa382f3c29773a60836 + - remote: buf.build + owner: cosmos + repository: ics23 + commit: 55085f7c710a45f58fa09947208eb70b + - remote: buf.build + owner: googleapis + repository: googleapis + commit: 8d7204855ec14631a499bd7393ce1970 diff --git a/proto/buf.yaml b/proto/buf.yaml index 9a6d727f..419cb185 100644 --- a/proto/buf.yaml +++ b/proto/buf.yaml @@ -1,7 +1,24 @@ version: v1 +name: buf.build/irisnet/irismod +deps: + # TODO: update sdk buf dependency when v0.47.0 is tagged and pushed to BSR + # see: (https://github.com/cosmos/cosmos-sdk/tree/main/proto#sdk-x-buf) + - buf.build/cosmos/cosmos-sdk:7ea623782a4d4f11b35627913a7bc481 + - buf.build/cosmos/cosmos-proto:1935555c206d4afb9e94615dfd0fad31 + - buf.build/cosmos/gogo-proto:a14993478f40695898ed8a86931094b6656e8a5d + - buf.build/googleapis/googleapis:8d7204855ec14631a499bd7393ce1970 + - buf.build/cosmos/ics23:b1abd8678aab07165efd453c96796a179eb3131f +breaking: + use: + - FILE lint: use: - DEFAULT -breaking: - use: - - FILE \ No newline at end of file + - COMMENTS + - FILE_LOWER_SNAKE_CASE + except: + - UNARY_RPC + - COMMENT_FIELD + - SERVICE_SUFFIX + - PACKAGE_VERSION_SUFFIX + - RPC_REQUEST_STANDARD_NAME \ No newline at end of file diff --git a/scripts/protocgen.sh b/scripts/protocgen.sh index 071b05bc..db1f0c67 100755 --- a/scripts/protocgen.sh +++ b/scripts/protocgen.sh @@ -4,15 +4,8 @@ set -eo pipefail echo "Generating gogo proto code" cd proto -proto_dirs=$(find ./ -path -prune -o -name '*.proto' -print0 | xargs -0 -n1 dirname | sort | uniq) -for dir in $proto_dirs; do - # shellcheck disable=SC2044 - for file in $(find "${dir}" -maxdepth 1 -name '*.proto'); do - if grep "option go_package" $file &> /dev/null ; then - buf generate --template buf.gen.gogo.yaml $file - fi - done -done + +buf generate --template buf.gen.gogo.yaml $file cd .. diff --git a/simapp/app.go b/simapp/app.go index c63d0c3e..9fb6e565 100644 --- a/simapp/app.go +++ b/simapp/app.go @@ -7,25 +7,31 @@ import ( "os" "path/filepath" + simappparams "cosmossdk.io/simapp/params" "github.com/gorilla/mux" "github.com/rakyll/statik/fs" "github.com/spf13/cast" abci "github.com/tendermint/tendermint/abci/types" "github.com/tendermint/tendermint/libs/log" - tmos "github.com/tendermint/tendermint/libs/os" dbm "github.com/tendermint/tm-db" + autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" + reflectionv1 "cosmossdk.io/api/cosmos/reflection/v1" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node" "github.com/cosmos/cosmos-sdk/client/grpc/tmservice" "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/codec/types" + "github.com/cosmos/cosmos-sdk/runtime" + runtimeservices "github.com/cosmos/cosmos-sdk/runtime/services" + "github.com/cosmos/cosmos-sdk/server" "github.com/cosmos/cosmos-sdk/server/api" "github.com/cosmos/cosmos-sdk/server/config" servertypes "github.com/cosmos/cosmos-sdk/server/types" - "github.com/cosmos/cosmos-sdk/simapp" - simappparams "github.com/cosmos/cosmos-sdk/simapp/params" + "github.com/cosmos/cosmos-sdk/std" storetypes "github.com/cosmos/cosmos-sdk/store/types" "github.com/cosmos/cosmos-sdk/testutil/testdata" sdk "github.com/cosmos/cosmos-sdk/types" @@ -34,6 +40,7 @@ import ( "github.com/cosmos/cosmos-sdk/x/auth" "github.com/cosmos/cosmos-sdk/x/auth/ante" authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" + "github.com/cosmos/cosmos-sdk/x/auth/posthandler" authsims "github.com/cosmos/cosmos-sdk/x/auth/simulation" authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" @@ -45,11 +52,13 @@ import ( "github.com/cosmos/cosmos-sdk/x/capability" capabilitykeeper "github.com/cosmos/cosmos-sdk/x/capability/keeper" capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" + "github.com/cosmos/cosmos-sdk/x/consensus" + consensusparamkeeper "github.com/cosmos/cosmos-sdk/x/consensus/keeper" + consensusparamtypes "github.com/cosmos/cosmos-sdk/x/consensus/types" "github.com/cosmos/cosmos-sdk/x/crisis" crisiskeeper "github.com/cosmos/cosmos-sdk/x/crisis/keeper" crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" distr "github.com/cosmos/cosmos-sdk/x/distribution" - distrclient "github.com/cosmos/cosmos-sdk/x/distribution/client" distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" "github.com/cosmos/cosmos-sdk/x/evidence" @@ -140,7 +149,7 @@ var ( gov.NewAppModuleBasic( []govclient.ProposalHandler{ paramsclient.ProposalHandler, - distrclient.ProposalHandler, + //distrclient.ProposalHandler, TODO upgradeclient.LegacyProposalHandler, upgradeclient.LegacyCancelProposalHandler, }, @@ -152,6 +161,7 @@ var ( upgrade.AppModuleBasic{}, evidence.AppModuleBasic{}, vesting.AppModuleBasic{}, + consensus.AppModuleBasic{}, token.AppModuleBasic{}, record.AppModuleBasic{}, @@ -188,7 +198,7 @@ var ( ) var ( - _ simapp.App = (*SimApp)(nil) + _ runtime.AppI = (*SimApp)(nil) _ servertypes.Application = (*SimApp)(nil) ) @@ -201,27 +211,26 @@ type SimApp struct { appCodec codec.Codec interfaceRegistry types.InterfaceRegistry - invCheckPeriod uint - // keys to access the substores keys map[string]*storetypes.KVStoreKey tkeys map[string]*storetypes.TransientStoreKey memKeys map[string]*storetypes.MemoryStoreKey // keepers - AccountKeeper authkeeper.AccountKeeper - BankKeeper bankkeeper.Keeper - CapabilityKeeper *capabilitykeeper.Keeper - StakingKeeper stakingkeeper.Keeper - SlashingKeeper slashingkeeper.Keeper - MintKeeper mintkeeper.Keeper - DistrKeeper distrkeeper.Keeper - GovKeeper govkeeper.Keeper - CrisisKeeper crisiskeeper.Keeper - UpgradeKeeper upgradekeeper.Keeper - ParamsKeeper paramskeeper.Keeper - EvidenceKeeper evidencekeeper.Keeper - FeeGrantKeeper feegrantkeeper.Keeper + AccountKeeper authkeeper.AccountKeeper + BankKeeper bankkeeper.Keeper + CapabilityKeeper *capabilitykeeper.Keeper + StakingKeeper *stakingkeeper.Keeper + SlashingKeeper slashingkeeper.Keeper + MintKeeper mintkeeper.Keeper + DistrKeeper distrkeeper.Keeper + GovKeeper govkeeper.Keeper + CrisisKeeper *crisiskeeper.Keeper + UpgradeKeeper *upgradekeeper.Keeper + ParamsKeeper paramskeeper.Keeper + EvidenceKeeper *evidencekeeper.Keeper + FeeGrantKeeper feegrantkeeper.Keeper + ConsensusParamsKeeper consensusparamkeeper.Keeper // make scoped keepers public for test purposes TokenKeeper tokenkeeper.Keeper @@ -256,10 +265,14 @@ func init() { // NewSimApp returns a reference to an initialized SimApp. func NewSimApp( - logger log.Logger, db dbm.DB, traceStore io.Writer, loadLatest bool, skipUpgradeHeights map[int64]bool, - homePath string, invCheckPeriod uint, encodingConfig simappparams.EncodingConfig, - appOpts servertypes.AppOptions, baseAppOptions ...func(*baseapp.BaseApp), + logger log.Logger, + db dbm.DB, + traceStore io.Writer, + loadLatest bool, + appOpts servertypes.AppOptions, + baseAppOptions ...func(*baseapp.BaseApp), ) *SimApp { + encodingConfig := makeEncodingConfig() // TODO: Remove cdc in favor of appCodec once all modules are migrated. appCodec := encodingConfig.Codec @@ -272,14 +285,14 @@ func NewSimApp( bApp.SetInterfaceRegistry(interfaceRegistry) keys := sdk.NewKVStoreKeys( - authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey, + authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey, crisistypes.StoreKey, minttypes.StoreKey, distrtypes.StoreKey, slashingtypes.StoreKey, govtypes.StoreKey, paramstypes.StoreKey, upgradetypes.StoreKey, feegrant.StoreKey, evidencetypes.StoreKey, capabilitytypes.StoreKey, tokentypes.StoreKey, nfttypes.StoreKey, mttypes.StoreKey, htlctypes.StoreKey, recordtypes.StoreKey, coinswaptypes.StoreKey, servicetypes.StoreKey, oracletypes.StoreKey, - randomtypes.StoreKey, farmtypes.StoreKey, + randomtypes.StoreKey, farmtypes.StoreKey, consensusparamtypes.StoreKey, ) tkeys := sdk.NewTransientStoreKeys(paramstypes.TStoreKey) memKeys := sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey) @@ -289,7 +302,6 @@ func NewSimApp( legacyAmino: legacyAmino, appCodec: appCodec, interfaceRegistry: interfaceRegistry, - invCheckPeriod: invCheckPeriod, keys: keys, tkeys: tkeys, memKeys: memKeys, @@ -298,51 +310,102 @@ func NewSimApp( app.ParamsKeeper = initParamsKeeper(appCodec, legacyAmino, keys[paramstypes.StoreKey], tkeys[paramstypes.TStoreKey]) // set the BaseApp's parameter store - bApp.SetParamStore(app.ParamsKeeper.Subspace(baseapp.Paramspace).WithKeyTable(paramstypes.ConsensusParamsKeyTable())) + app.ConsensusParamsKeeper = consensusparamkeeper.NewKeeper(appCodec, keys[upgradetypes.StoreKey], authtypes.NewModuleAddress(govtypes.ModuleName).String()) + bApp.SetParamStore(&app.ConsensusParamsKeeper) // add capability keeper and ScopeToModule for ibc module app.CapabilityKeeper = capabilitykeeper.NewKeeper(appCodec, keys[capabilitytypes.StoreKey], memKeys[capabilitytypes.MemStoreKey]) // add keepers app.AccountKeeper = authkeeper.NewAccountKeeper( - appCodec, keys[authtypes.StoreKey], app.GetSubspace(authtypes.ModuleName), authtypes.ProtoBaseAccount, maccPerms, sdk.Bech32MainPrefix, + appCodec, + keys[authtypes.StoreKey], + authtypes.ProtoBaseAccount, + maccPerms, + sdk.Bech32MainPrefix, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) + app.BankKeeper = bankkeeper.NewBaseKeeper( - appCodec, keys[banktypes.StoreKey], app.AccountKeeper, app.GetSubspace(banktypes.ModuleName), app.ModuleAccountAddrs(), + appCodec, + keys[banktypes.StoreKey], + app.AccountKeeper, + BlockedAddresses(), + authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) - stakingKeeper := stakingkeeper.NewKeeper( - appCodec, keys[stakingtypes.StoreKey], app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName), + + app.StakingKeeper = stakingkeeper.NewKeeper( + appCodec, + keys[stakingtypes.StoreKey], + app.AccountKeeper, + app.BankKeeper, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) + app.MintKeeper = mintkeeper.NewKeeper( - appCodec, keys[minttypes.StoreKey], app.GetSubspace(minttypes.ModuleName), &stakingKeeper, - app.AccountKeeper, app.BankKeeper, authtypes.FeeCollectorName, + appCodec, + keys[minttypes.StoreKey], + app.StakingKeeper, + app.AccountKeeper, + app.BankKeeper, + authtypes.FeeCollectorName, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) + app.DistrKeeper = distrkeeper.NewKeeper( - appCodec, keys[distrtypes.StoreKey], app.GetSubspace(distrtypes.ModuleName), app.AccountKeeper, app.BankKeeper, - &stakingKeeper, authtypes.FeeCollectorName, + appCodec, + keys[distrtypes.StoreKey], + app.AccountKeeper, + app.BankKeeper, + app.StakingKeeper, + authtypes.FeeCollectorName, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) + app.SlashingKeeper = slashingkeeper.NewKeeper( - appCodec, keys[slashingtypes.StoreKey], &stakingKeeper, app.GetSubspace(slashingtypes.ModuleName), + appCodec, + legacyAmino, + keys[slashingtypes.StoreKey], + app.StakingKeeper, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) + invCheckPeriod := cast.ToUint(appOpts.Get(server.FlagInvCheckPeriod)) app.CrisisKeeper = crisiskeeper.NewKeeper( - app.GetSubspace(crisistypes.ModuleName), invCheckPeriod, app.BankKeeper, authtypes.FeeCollectorName, + appCodec, + keys[crisistypes.StoreKey], + invCheckPeriod, + app.BankKeeper, + authtypes.FeeCollectorName, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) + app.FeeGrantKeeper = feegrantkeeper.NewKeeper(appCodec, keys[feegrant.StoreKey], app.AccountKeeper) // set the governance module account as the authority for conducting upgrades - app.UpgradeKeeper = upgradekeeper.NewKeeper(skipUpgradeHeights, keys[upgradetypes.StoreKey], appCodec, homePath, app.BaseApp, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + homePath := cast.ToString(appOpts.Get(flags.FlagHome)) + // get skipUpgradeHeights from the app options + skipUpgradeHeights := map[int64]bool{} + for _, h := range cast.ToIntSlice(appOpts.Get(server.FlagUnsafeSkipUpgrades)) { + skipUpgradeHeights[int64(h)] = true + } + app.UpgradeKeeper = upgradekeeper.NewKeeper( + skipUpgradeHeights, + keys[upgradetypes.StoreKey], + appCodec, + homePath, + app.BaseApp, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) // register the staking hooks // NOTE: stakingKeeper above is passed by reference, so that it will contain these hooks - app.StakingKeeper = *stakingKeeper.SetHooks( + app.StakingKeeper.SetHooks( stakingtypes.NewMultiStakingHooks(app.DistrKeeper.Hooks(), app.SlashingKeeper.Hooks()), ) - // create evidence keeper with router - evidenceKeeper := evidencekeeper.NewKeeper( - appCodec, keys[evidencetypes.StoreKey], &app.StakingKeeper, app.SlashingKeeper, - ) // If evidence needs to be handled for the app, set routes in router here and seal - app.EvidenceKeeper = *evidenceKeeper + app.EvidenceKeeper = evidencekeeper.NewKeeper( + appCodec, keys[evidencetypes.StoreKey], app.StakingKeeper, app.SlashingKeeper, + ) app.TokenKeeper = tokenkeeper.NewKeeper( appCodec, @@ -405,7 +468,9 @@ func NewSimApp( app.BankKeeper, app.AccountKeeper, app.DistrKeeper, - &app.GovKeeper, + // TODO + //app.GovKeeper, + nil, func(ctx sdk.Context, lpTokenDenom string) error { return nil }, app.GetSubspace(farmtypes.ModuleName), authtypes.FeeCollectorName, @@ -416,17 +481,26 @@ func NewSimApp( govRouter := govv1beta1.NewRouter() govRouter.AddRoute(govtypes.RouterKey, govv1beta1.ProposalHandler). AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(app.ParamsKeeper)). - AddRoute(distrtypes.RouterKey, distr.NewCommunityPoolSpendProposalHandler(app.DistrKeeper)). + //TODO + //AddRoute(distrtypes.RouterKey, distr.NewCommunityPoolSpendProposalHandler(app.DistrKeeper)). AddRoute(upgradetypes.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(app.UpgradeKeeper)). AddRoute(farmtypes.RouterKey, farm.NewCommunityPoolCreateFarmProposalHandler(app.FarmKeeper)) govConfig := govtypes.DefaultConfig() - govHooks := govtypes.NewMultiGovHooks(farmkeeper.NewGovHook(app.FarmKeeper)) - app.GovKeeper = govkeeper.NewKeeper( - appCodec, keys[govtypes.StoreKey], app.GetSubspace(govtypes.ModuleName), app.AccountKeeper, app.BankKeeper, - &stakingKeeper, govRouter, app.MsgServiceRouter(), govConfig, + govKeeper := govkeeper.NewKeeper( + appCodec, keys[govtypes.StoreKey], app.AccountKeeper, app.BankKeeper, + app.StakingKeeper, app.MsgServiceRouter(), govConfig, authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) + + // Set legacy router for backwards compatibility with gov v1beta1 + govKeeper.SetLegacyRouter(govRouter) + + app.GovKeeper = *govKeeper.SetHooks( + govtypes.NewMultiGovHooks( + // register the governance hooks + farmkeeper.NewGovHook(app.FarmKeeper), + ), ) - app.GovKeeper.SetHooks(govHooks) app.RandomKeeper = randomkeeper.NewKeeper(appCodec, keys[randomtypes.StoreKey], app.BankKeeper, app.ServiceKeeper) @@ -443,19 +517,19 @@ func NewSimApp( app.AccountKeeper, app.StakingKeeper, app.BaseApp.DeliverTx, encodingConfig.TxConfig, ), - auth.NewAppModule(appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts), + auth.NewAppModule(appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)), vesting.NewAppModule(app.AccountKeeper, app.BankKeeper), - bank.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper), - capability.NewAppModule(appCodec, *app.CapabilityKeeper), - crisis.NewAppModule(&app.CrisisKeeper, skipGenesisInvariants), + bank.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper, app.GetSubspace(banktypes.ModuleName)), + capability.NewAppModule(appCodec, *app.CapabilityKeeper, false), + crisis.NewAppModule(app.CrisisKeeper, skipGenesisInvariants, app.GetSubspace(crisistypes.ModuleName)), feegrantmodule.NewAppModule(appCodec, app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper, app.interfaceRegistry), - gov.NewAppModule(appCodec, app.GovKeeper, app.AccountKeeper, app.BankKeeper), - mint.NewAppModule(appCodec, app.MintKeeper, app.AccountKeeper, nil), - slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper), - distr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper), - staking.NewAppModule(appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper), + gov.NewAppModule(appCodec, &app.GovKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(govtypes.ModuleName)), + mint.NewAppModule(appCodec, app.MintKeeper, app.AccountKeeper, nil, app.GetSubspace(minttypes.ModuleName)), + slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(slashingtypes.ModuleName)), + distr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(distrtypes.ModuleName)), + staking.NewAppModule(appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)), upgrade.NewAppModule(app.UpgradeKeeper), - evidence.NewAppModule(app.EvidenceKeeper), + evidence.NewAppModule(*app.EvidenceKeeper), params.NewAppModule(app.ParamsKeeper), token.NewAppModule(appCodec, app.TokenKeeper, app.AccountKeeper, app.BankKeeper), record.NewAppModule(appCodec, app.RecordKeeper, app.AccountKeeper, app.BankKeeper), @@ -467,6 +541,7 @@ func NewSimApp( oracle.NewAppModule(appCodec, app.OracleKeeper, app.AccountKeeper, app.BankKeeper), random.NewAppModule(appCodec, app.RandomKeeper, app.AccountKeeper, app.BankKeeper), farm.NewAppModule(appCodec, app.FarmKeeper, app.AccountKeeper, app.BankKeeper), + consensus.NewAppModule(appCodec, app.ConsensusParamsKeeper), ) // During begin block slashing happens after distr.BeginBlocker so that @@ -483,7 +558,7 @@ func NewSimApp( nfttypes.ModuleName, mttypes.ModuleName, htlctypes.ModuleName, recordtypes.ModuleName, coinswaptypes.ModuleName, servicetypes.ModuleName, oracletypes.ModuleName, - randomtypes.ModuleName, farmtypes.ModuleName, feegrant.ModuleName, + randomtypes.ModuleName, farmtypes.ModuleName, feegrant.ModuleName, consensusparamtypes.ModuleName, ) app.mm.SetOrderEndBlockers( capabilitytypes.ModuleName, authtypes.ModuleName, banktypes.ModuleName, @@ -495,7 +570,7 @@ func NewSimApp( nfttypes.ModuleName, mttypes.ModuleName, htlctypes.ModuleName, recordtypes.ModuleName, coinswaptypes.ModuleName, servicetypes.ModuleName, oracletypes.ModuleName, - randomtypes.ModuleName, farmtypes.ModuleName, feegrant.ModuleName, + randomtypes.ModuleName, farmtypes.ModuleName, feegrant.ModuleName, consensusparamtypes.ModuleName, ) // NOTE: The genutils module must occur after staking so that pools are @@ -513,40 +588,34 @@ func NewSimApp( nfttypes.ModuleName, mttypes.ModuleName, htlctypes.ModuleName, recordtypes.ModuleName, coinswaptypes.ModuleName, servicetypes.ModuleName, oracletypes.ModuleName, - randomtypes.ModuleName, farmtypes.ModuleName, feegrant.ModuleName, crisistypes.ModuleName, + randomtypes.ModuleName, farmtypes.ModuleName, feegrant.ModuleName, crisistypes.ModuleName, consensusparamtypes.ModuleName, ) - app.mm.RegisterInvariants(&app.CrisisKeeper) - app.mm.RegisterRoutes(app.Router(), app.QueryRouter(), encodingConfig.Amino) + app.mm.RegisterInvariants(app.CrisisKeeper) app.configurator = module.NewConfigurator(app.appCodec, app.MsgServiceRouter(), app.GRPCQueryRouter()) app.mm.RegisterServices(app.configurator) // add test gRPC service for testing gRPC queries in isolation testdata.RegisterQueryServer(app.GRPCQueryRouter(), testdata.QueryImpl{}) + autocliv1.RegisterQueryServer(app.GRPCQueryRouter(), runtimeservices.NewAutoCLIQueryService(app.mm.Modules)) + reflectionSvc, err := runtimeservices.NewReflectionService() + if err != nil { + panic(err) + } + reflectionv1.RegisterReflectionServiceServer(app.GRPCQueryRouter(), reflectionSvc) + + // add test gRPC service for testing gRPC queries in isolation + // testdata_pulsar.RegisterQueryServer(app.GRPCQueryRouter(), testdata_pulsar.QueryImpl{}) + // create the simulation manager and define the order of the modules for deterministic simulations // // NOTE: this is not required apps that don't use the simulator for fuzz testing // transactions - app.sm = module.NewSimulationManager( - auth.NewAppModule(appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts), - bank.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper), - feegrantmodule.NewAppModule(appCodec, app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper, app.interfaceRegistry), - mint.NewAppModule(appCodec, app.MintKeeper, app.AccountKeeper, nil), - staking.NewAppModule(appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper), - distr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper), - slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper), - token.NewAppModule(appCodec, app.TokenKeeper, app.AccountKeeper, app.BankKeeper), - record.NewAppModule(appCodec, app.RecordKeeper, app.AccountKeeper, app.BankKeeper), - nft.NewAppModule(appCodec, app.NFTKeeper, app.AccountKeeper, app.BankKeeper), - mt.NewAppModule(appCodec, app.MTKeeper, app.AccountKeeper, app.BankKeeper), - //htlc.NewAppModule(appCodec, app.HTLCKeeper, app.AccountKeeper, app.BankKeeper), - //coinswap.NewAppModule(appCodec, app.CoinswapKeeper, app.AccountKeeper, app.BankKeeper), - //service.NewAppModule(appCodec, app.ServiceKeeper, app.AccountKeeper, app.BankKeeper), - //oracle.NewAppModule(appCodec, app.OracleKeeper, app.AccountKeeper, app.BankKeeper), - //random.NewAppModule(appCodec, app.RandomKeeper, app.AccountKeeper, app.BankKeeper), - //farm.NewAppModule(appCodec, app.FarmKeeper, app.AccountKeeper, app.BankKeeper), - ) + overrideModules := map[string]module.AppModuleSimulation{ + authtypes.ModuleName: auth.NewAppModule(app.appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)), + } + app.sm = module.NewSimulationManagerFromAppModules(app.mm.Modules, overrideModules) app.sm.RegisterStoreDecoders() @@ -558,6 +627,7 @@ func NewSimApp( // initialize BaseApp app.SetInitChainer(app.InitChainer) app.SetBeginBlocker(app.BeginBlocker) + app.SetEndBlocker(app.EndBlocker) anteHandler, err := ante.NewAnteHandler( ante.HandlerOptions{ AccountKeeper: app.AccountKeeper, @@ -571,11 +641,31 @@ func NewSimApp( panic(err) } app.SetAnteHandler(anteHandler) - app.SetEndBlocker(app.EndBlocker) + + // In v0.46, the SDK introduces _postHandlers_. PostHandlers are like + // antehandlers, but are run _after_ the `runMsgs` execution. They are also + // defined as a chain, and have the same signature as antehandlers. + // + // In baseapp, postHandlers are run in the same store branch as `runMsgs`, + // meaning that both `runMsgs` and `postHandler` state will be committed if + // both are successful, and both will be reverted if any of the two fails. + // + // The SDK exposes a default postHandlers chain, which comprises of only + // one decorator: the Transaction Tips decorator. However, some chains do + // not need it by default, so feel free to comment the next line if you do + // not need tips. + // To read more about tips: + // https://docs.cosmos.network/main/core/tips.html + // + // Please note that changing any of the anteHandler or postHandler chain is + // likely to be a state-machine breaking change, which needs a coordinated + // upgrade. + app.setPostHandler() if loadLatest { if err := app.LoadLatestVersion(); err != nil { - tmos.Exit(err.Error()) + logger.Error("error on loading last version", "err", err) + os.Exit(1) } } @@ -684,6 +774,11 @@ func (app *SimApp) SimulationManager() *module.SimulationManager { return app.sm } +// DefaultGenesis returns a default genesis from the registered AppModuleBasic's. +func (a *SimApp) DefaultGenesis() map[string]json.RawMessage { + return ModuleBasics.DefaultGenesis(a.appCodec) +} + // RegisterAPIRoutes registers all application module routes with the provided // API server. func (app *SimApp) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APIConfig) { @@ -707,6 +802,10 @@ func (app *SimApp) RegisterTxService(clientCtx client.Context) { authtx.RegisterTxService(app.BaseApp.GRPCQueryRouter(), clientCtx, app.BaseApp.Simulate, app.interfaceRegistry) } +func (app *SimApp) RegisterNodeService(clientCtx client.Context) { + nodeservice.RegisterNodeService(clientCtx, app.GRPCQueryRouter()) +} + // RegisterTendermintService implements the Application.RegisterTendermintService method. func (app *SimApp) RegisterTendermintService(clientCtx client.Context) { tmservice.RegisterTendermintService( @@ -717,6 +816,17 @@ func (app *SimApp) RegisterTendermintService(clientCtx client.Context) { ) } +func (app *SimApp) setPostHandler() { + postHandler, err := posthandler.NewPostHandler( + posthandler.HandlerOptions{}, + ) + if err != nil { + panic(err) + } + + app.SetPostHandler(postHandler) +} + // RegisterSwaggerAPI registers swagger route with API Server func RegisterSwaggerAPI(ctx client.Context, rtr *mux.Router) { statikFS, err := fs.New() @@ -737,6 +847,28 @@ func GetMaccPerms() map[string][]string { return dupMaccPerms } +// BlockedAddresses returns all the app's blocked account addresses. +func BlockedAddresses() map[string]bool { + modAccAddrs := make(map[string]bool) + for acc := range GetMaccPerms() { + modAccAddrs[authtypes.NewModuleAddress(acc).String()] = true + } + + // allow the following addresses to receive funds + delete(modAccAddrs, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + return modAccAddrs +} + +func makeEncodingConfig() simappparams.EncodingConfig { + encodingConfig := simappparams.MakeTestEncodingConfig() + std.RegisterLegacyAminoCodec(encodingConfig.Amino) + std.RegisterInterfaces(encodingConfig.InterfaceRegistry) + ModuleBasics.RegisterLegacyAminoCodec(encodingConfig.Amino) + ModuleBasics.RegisterInterfaces(encodingConfig.InterfaceRegistry) + return encodingConfig +} + // initParamsKeeper init params keeper and its subspaces func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino, key, tkey storetypes.StoreKey) paramskeeper.Keeper { paramsKeeper := paramskeeper.NewKeeper(appCodec, legacyAmino, key, tkey) diff --git a/simapp/encoding.go b/simapp/encoding.go index 8a90ff85..c2fb5369 100644 --- a/simapp/encoding.go +++ b/simapp/encoding.go @@ -1,7 +1,7 @@ package simapp import ( - simappparams "github.com/cosmos/cosmos-sdk/simapp/params" + simappparams "cosmossdk.io/simapp/params" "github.com/cosmos/cosmos-sdk/std" ) diff --git a/simapp/export.go b/simapp/export.go index bcbe0c69..e602ad08 100644 --- a/simapp/export.go +++ b/simapp/export.go @@ -21,7 +21,7 @@ import ( // ExportAppStateAndValidators exports the state of the application for a genesis // file. func (app *SimApp) ExportAppStateAndValidators( - forZeroHeight bool, jailAllowedAddrs []string, + forZeroHeight bool, jailAllowedAddrs []string, modulesToExport []string, ) (servertypes.ExportedApp, error) { // as if they could withdraw from the start of the next block ctx := app.NewContext(true, tmproto.Header{Height: app.LastBlockHeight()}) @@ -51,7 +51,8 @@ func (app *SimApp) ExportAppStateAndValidators( // prepare for fresh start at zero height // NOTE zero height genesis is a temporary feature which will be deprecated -// in favour of export at a block height +// +// in favour of export at a block height func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []string) { applyAllowedAddrs := false diff --git a/simapp/network.go b/simapp/network.go new file mode 100644 index 00000000..32bb59ea --- /dev/null +++ b/simapp/network.go @@ -0,0 +1,136 @@ +package simapp + +import ( + "context" + "encoding/hex" + "strings" + "testing" + + "github.com/cosmos/cosmos-sdk/client" + clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" + "github.com/cosmos/cosmos-sdk/testutil/network" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/gogo/protobuf/proto" + "github.com/spf13/cobra" + "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" + coretypes "github.com/tendermint/tendermint/rpc/core/types" +) + +type Network struct { + *network.Network + network.Config +} + +type ResponseTx struct { + abci.ResponseDeliverTx + Height int64 +} + +func SetupNetwork(t *testing.T) Network { + cfg := NewConfig() + cfg.NumValidators = 4 + + network, err := network.New(t, t.TempDir(), cfg) + require.NoError(t, err, "SetupNetwork failed") + + n := Network{ + Network: network, + Config: cfg, + } + n.WaitForNBlock(2) + return n +} + +func SetupNetworkWithConfig(t *testing.T, cfg network.Config) Network { + network, err := network.New(t, t.TempDir(), cfg) + require.NoError(t, err, "SetupNetwork failed") + + _, err = network.WaitForHeight(1) + require.NoError(t, err) + return Network{ + Network: network, + Config: cfg, + } +} + +func (n Network) ExecTxCmdWithResult(t *testing.T, + clientCtx client.Context, + cmd *cobra.Command, + extraArgs []string, +) *ResponseTx { + buf, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, extraArgs) + require.NoError(t, err, "ExecTestCLICmd failed") + + n.WaitForNextBlock() + + respType := proto.Message(&sdk.TxResponse{}) + require.NoError(t, clientCtx.Codec.UnmarshalJSON(buf.Bytes(), respType), buf.String()) + + txResp := respType.(*sdk.TxResponse) + require.Equal(t, uint32(0), txResp.Code) + return n.QueryTx(t, clientCtx, txResp.TxHash) +} + +func (n Network) ExecQueryCmd(t *testing.T, + clientCtx client.Context, + cmd *cobra.Command, + extraArgs []string, + resp proto.Message, +) { + buf, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, extraArgs) + require.NoError(t, err, "ExecTestCLICmd failed") + require.NoError(t, clientCtx.Codec.UnmarshalJSON(buf.Bytes(), resp), buf.String()) +} + +func (n Network) WaitForNBlock(wait int64) error { + lastBlock, err := n.LatestHeight() + if err != nil { + return err + } + + _, err = n.WaitForHeight(lastBlock + wait) + if err != nil { + return err + } + + return err +} + +func (n Network) QueryTx(t *testing.T, + clientCtx client.Context, + txHash string, +) *ResponseTx { + var ( + result *coretypes.ResultTx + err error + tryCnt = 3 + ) + + txHashBz, err := hex.DecodeString(txHash) + require.NoError(t, err, "hex.DecodeString failed") + +reTry: + result, err = clientCtx.Client.Tx(context.Background(), txHashBz, false) + if err != nil && strings.Contains(err.Error(), "not found") && tryCnt > 0 { + n.WaitForNextBlock() + tryCnt-- + goto reTry + } + + require.NoError(t, err, "query tx failed") + return &ResponseTx{result.TxResult, result.Height} +} + +func (n Network) GetAttribute(typ, key string, events []abci.Event) string { + for _, event := range events { + if event.Type == typ { + for _, attribute := range event.Attributes { + if attribute.Key == key { + return attribute.Value + } + } + } + } + return "" +} diff --git a/simapp/sim_bench_test.go b/simapp/sim_bench_test.go index 7838e26d..c9e30c87 100644 --- a/simapp/sim_bench_test.go +++ b/simapp/sim_bench_test.go @@ -8,16 +8,23 @@ import ( "github.com/stretchr/testify/require" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - sdksimapp "github.com/cosmos/cosmos-sdk/simapp" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/server" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" + simcli "github.com/cosmos/cosmos-sdk/x/simulation/client/cli" ) // Profile with: // /usr/local/go/bin/go test -benchmem -run=^$ cosmossdk.io/simapp -bench ^BenchmarkFullAppSimulation$ -Commit=true -cpuprofile cpu.out func BenchmarkFullAppSimulation(b *testing.B) { b.ReportAllocs() - config, db, dir, logger, skip, err := sdksimapp.SetupSimulation("goleveldb-app-sim", "Simulation") + + config := simcli.NewConfigFromFlags() + config.ChainID = SimAppChainID + + db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", simcli.FlagVerboseValue, simcli.FlagEnabledValue) if err != nil { b.Fatalf("simulation setup failed: %s", err.Error()) } @@ -31,7 +38,11 @@ func BenchmarkFullAppSimulation(b *testing.B) { require.NoError(b, os.RemoveAll(dir)) }() - app := NewSimApp(logger, db, nil, true, map[int64]bool{}, DefaultNodeHome, sdksimapp.FlagPeriodValue, MakeTestEncodingConfig(), EmptyAppOptions{}, interBlockCacheOpt()) + appOptions := make(simtestutil.AppOptionsMap, 0) + appOptions[flags.FlagHome] = DefaultNodeHome + appOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue + + app := NewSimApp(logger, db, nil, true, appOptions, interBlockCacheOpt()) // run randomized simulation _, simParams, simErr := simulation.SimulateFromSeed( @@ -40,14 +51,14 @@ func BenchmarkFullAppSimulation(b *testing.B) { app.BaseApp, AppStateFn(app.AppCodec(), app.SimulationManager()), simtypes.RandomAccounts, // Replace with own random account function if using keys other than secp256k1 - sdksimapp.SimulationOperations(app, app.AppCodec(), config), + simtestutil.SimulationOperations(app, app.AppCodec(), config), app.ModuleAccountAddrs(), config, app.AppCodec(), ) // export state and simParams before the simulation error is checked - if err = sdksimapp.CheckExportSimulation(app, config, simParams); err != nil { + if err = simtestutil.CheckExportSimulation(app, config, simParams); err != nil { b.Fatal(err) } @@ -56,13 +67,16 @@ func BenchmarkFullAppSimulation(b *testing.B) { } if config.Commit { - sdksimapp.PrintStats(db) + simtestutil.PrintStats(db) } } func BenchmarkInvariants(b *testing.B) { b.ReportAllocs() - config, db, dir, logger, skip, err := sdksimapp.SetupSimulation("leveldb-app-invariant-bench", "Simulation") + config := simcli.NewConfigFromFlags() + config.ChainID = SimAppChainID + + db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", simcli.FlagVerboseValue, simcli.FlagEnabledValue) if err != nil { b.Fatalf("simulation setup failed: %s", err.Error()) } @@ -78,7 +92,11 @@ func BenchmarkInvariants(b *testing.B) { require.NoError(b, os.RemoveAll(dir)) }() - app := NewSimApp(logger, db, nil, true, map[int64]bool{}, DefaultNodeHome, sdksimapp.FlagPeriodValue, MakeTestEncodingConfig(), EmptyAppOptions{}, interBlockCacheOpt()) + appOptions := make(simtestutil.AppOptionsMap, 0) + appOptions[flags.FlagHome] = DefaultNodeHome + appOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue + + app := NewSimApp(logger, db, nil, true, appOptions, interBlockCacheOpt()) // run randomized simulation _, simParams, simErr := simulation.SimulateFromSeed( @@ -87,14 +105,14 @@ func BenchmarkInvariants(b *testing.B) { app.BaseApp, AppStateFn(app.AppCodec(), app.SimulationManager()), simtypes.RandomAccounts, // Replace with own random account function if using keys other than secp256k1 - sdksimapp.SimulationOperations(app, app.AppCodec(), config), + simtestutil.SimulationOperations(app, app.AppCodec(), config), app.ModuleAccountAddrs(), config, app.AppCodec(), ) // export state and simParams before the simulation error is checked - if err = sdksimapp.CheckExportSimulation(app, config, simParams); err != nil { + if err = simtestutil.CheckExportSimulation(app, config, simParams); err != nil { b.Fatal(err) } @@ -103,7 +121,7 @@ func BenchmarkInvariants(b *testing.B) { } if config.Commit { - sdksimapp.PrintStats(db) + simtestutil.PrintStats(db) } ctx := app.NewContext(true, tmproto.Header{Height: app.LastBlockHeight() + 1}) diff --git a/simapp/sim_test.go b/simapp/sim_test.go index 4073bd14..d3632fee 100644 --- a/simapp/sim_test.go +++ b/simapp/sim_test.go @@ -17,9 +17,11 @@ import ( dbm "github.com/tendermint/tm-db" "github.com/cosmos/cosmos-sdk/baseapp" - sdksimapp "github.com/cosmos/cosmos-sdk/simapp" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/server" "github.com/cosmos/cosmos-sdk/store" storetypes "github.com/cosmos/cosmos-sdk/store/types" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" @@ -31,6 +33,7 @@ import ( minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" "github.com/cosmos/cosmos-sdk/x/simulation" + simcli "github.com/cosmos/cosmos-sdk/x/simulation/client/cli" slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" @@ -45,9 +48,12 @@ import ( "github.com/irisnet/irismod/simapp/helpers" ) +// SimAppChainID hardcoded chainID for simulation +const SimAppChainID = "simulation-app" + // Get flags every time the simulator is run func init() { - sdksimapp.GetSimulatorFlags() + simcli.GetSimulatorFlags() } type StoreKeysPrefixes struct { @@ -69,18 +75,25 @@ func interBlockCacheOpt() func(*baseapp.BaseApp) { } func TestFullAppSimulation(t *testing.T) { - config, db, dir, logger, skip, err := sdksimapp.SetupSimulation("leveldb-app-sim", "Simulation") + config := simcli.NewConfigFromFlags() + config.ChainID = SimAppChainID + + db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", simcli.FlagVerboseValue, simcli.FlagEnabledValue) if skip { t.Skip("skipping application simulation") } require.NoError(t, err, "simulation setup failed") defer func() { - db.Close() + require.NoError(t, db.Close()) require.NoError(t, os.RemoveAll(dir)) }() - app := NewSimApp(logger, db, nil, true, map[int64]bool{}, DefaultNodeHome, sdksimapp.FlagPeriodValue, MakeTestEncodingConfig(), EmptyAppOptions{}, fauxMerkleModeOpt) + appOptions := make(simtestutil.AppOptionsMap, 0) + appOptions[flags.FlagHome] = DefaultNodeHome + appOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue + + app := NewSimApp(logger, db, nil, true, appOptions, fauxMerkleModeOpt) require.Equal(t, "SimApp", app.Name()) // run randomized simulation @@ -90,26 +103,29 @@ func TestFullAppSimulation(t *testing.T) { app.BaseApp, AppStateFn(app.AppCodec(), app.SimulationManager()), simtypes.RandomAccounts, // Replace with own random account function if using keys other than secp256k1 - sdksimapp.SimulationOperations(app, app.AppCodec(), config), + simtestutil.SimulationOperations(app, app.AppCodec(), config), app.ModuleAccountAddrs(), config, app.AppCodec(), ) // export state and simParams before the simulation error is checked - err = sdksimapp.CheckExportSimulation(app, config, simParams) + err = simtestutil.CheckExportSimulation(app, config, simParams) require.NoError(t, err) require.NoError(t, simErr) if config.Commit { - sdksimapp.PrintStats(db) + simtestutil.PrintStats(db) } } func TestAppImportExport(t *testing.T) { - config, db, dir, logger, skip, err := sdksimapp.SetupSimulation("leveldb-app-sim", "Simulation") + config := simcli.NewConfigFromFlags() + config.ChainID = SimAppChainID + + db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", simcli.FlagVerboseValue, simcli.FlagEnabledValue) if skip { - t.Skip("skipping application import/export simulation") + t.Skip("skipping application simulation") } require.NoError(t, err, "simulation setup failed") @@ -118,7 +134,11 @@ func TestAppImportExport(t *testing.T) { require.NoError(t, os.RemoveAll(dir)) }() - app := NewSimApp(logger, db, nil, true, map[int64]bool{}, DefaultNodeHome, sdksimapp.FlagPeriodValue, MakeTestEncodingConfig(), EmptyAppOptions{}, fauxMerkleModeOpt) + appOptions := make(simtestutil.AppOptionsMap, 0) + appOptions[flags.FlagHome] = DefaultNodeHome + appOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue + + app := NewSimApp(logger, db, nil, true, appOptions, fauxMerkleModeOpt) require.Equal(t, "SimApp", app.Name()) // Run randomized simulation @@ -128,37 +148,37 @@ func TestAppImportExport(t *testing.T) { app.BaseApp, AppStateFn(app.AppCodec(), app.SimulationManager()), simtypes.RandomAccounts, // Replace with own random account function if using keys other than secp256k1 - sdksimapp.SimulationOperations(app, app.AppCodec(), config), + simtestutil.SimulationOperations(app, app.AppCodec(), config), app.ModuleAccountAddrs(), config, app.AppCodec(), ) // export state and simParams before the simulation error is checked - err = sdksimapp.CheckExportSimulation(app, config, simParams) + err = simtestutil.CheckExportSimulation(app, config, simParams) require.NoError(t, err) require.NoError(t, simErr) if config.Commit { - sdksimapp.PrintStats(db) + simtestutil.PrintStats(db) } fmt.Printf("exporting genesis...\n") - exported, err := app.ExportAppStateAndValidators(false, []string{}) + exported, err := app.ExportAppStateAndValidators(false, []string{}, []string{}) require.NoError(t, err) fmt.Printf("importing genesis...\n") - _, newDB, newDir, _, _, err := sdksimapp.SetupSimulation("leveldb-app-sim-2", "Simulation-2") + newDB, newDir, _, _, err := simtestutil.SetupSimulation(config, "leveldb-app-sim-2", "Simulation-2", simcli.FlagVerboseValue, simcli.FlagEnabledValue) require.NoError(t, err, "simulation setup failed") defer func() { - newDB.Close() + require.NoError(t, newDB.Close()) require.NoError(t, os.RemoveAll(newDir)) }() - newApp := NewSimApp(log.NewNopLogger(), newDB, nil, true, map[int64]bool{}, DefaultNodeHome, sdksimapp.FlagPeriodValue, MakeTestEncodingConfig(), EmptyAppOptions{}, fauxMerkleModeOpt) + newApp := NewSimApp(log.NewNopLogger(), newDB, nil, true, appOptions, fauxMerkleModeOpt) require.Equal(t, "SimApp", newApp.Name()) var genesisState GenesisState @@ -223,23 +243,30 @@ func TestAppImportExport(t *testing.T) { for _, kv := range failedKVAs { fmt.Printf("storeKey: %s,\n failedKVBs: %v,\n ", skp.A.Name(), kv.Key) } - require.Equal(t, 0, len(failedKVAs), sdksimapp.GetSimulationLog(skp.A.Name(), app.SimulationManager().StoreDecoders, failedKVAs, failedKVBs)) + require.Equal(t, 0, len(failedKVAs), simtestutil.GetSimulationLog(skp.A.Name(), app.SimulationManager().StoreDecoders, failedKVAs, failedKVBs)) } } func TestAppSimulationAfterImport(t *testing.T) { - config, db, dir, logger, skip, err := sdksimapp.SetupSimulation("leveldb-app-sim", "Simulation") + config := simcli.NewConfigFromFlags() + config.ChainID = SimAppChainID + + db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", simcli.FlagVerboseValue, simcli.FlagEnabledValue) if skip { - t.Skip("skipping application simulation after import") + t.Skip("skipping application simulation") } require.NoError(t, err, "simulation setup failed") defer func() { - db.Close() + require.NoError(t, db.Close()) require.NoError(t, os.RemoveAll(dir)) }() - app := NewSimApp(logger, db, nil, true, map[int64]bool{}, DefaultNodeHome, sdksimapp.FlagPeriodValue, MakeTestEncodingConfig(), EmptyAppOptions{}, fauxMerkleModeOpt) + appOptions := make(simtestutil.AppOptionsMap, 0) + appOptions[flags.FlagHome] = DefaultNodeHome + appOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue + + app := NewSimApp(logger, db, nil, true, appOptions, fauxMerkleModeOpt) require.Equal(t, "SimApp", app.Name()) // Run randomized simulation @@ -249,19 +276,19 @@ func TestAppSimulationAfterImport(t *testing.T) { app.BaseApp, AppStateFn(app.AppCodec(), app.SimulationManager()), simtypes.RandomAccounts, // Replace with own random account function if using keys other than secp256k1 - sdksimapp.SimulationOperations(app, app.AppCodec(), config), + simtestutil.SimulationOperations(app, app.AppCodec(), config), app.ModuleAccountAddrs(), config, app.AppCodec(), ) // export state and simParams before the simulation error is checked - err = sdksimapp.CheckExportSimulation(app, config, simParams) + err = simtestutil.CheckExportSimulation(app, config, simParams) require.NoError(t, err) require.NoError(t, simErr) if config.Commit { - sdksimapp.PrintStats(db) + simtestutil.PrintStats(db) } if stopEarly { @@ -271,34 +298,32 @@ func TestAppSimulationAfterImport(t *testing.T) { fmt.Printf("exporting genesis...\n") - exported, err := app.ExportAppStateAndValidators(true, []string{}) + exported, err := app.ExportAppStateAndValidators(true, []string{}, []string{}) require.NoError(t, err) fmt.Printf("importing genesis...\n") - _, newDB, newDir, _, _, err := sdksimapp.SetupSimulation("leveldb-app-sim-2", "Simulation-2") + newDB, newDir, _, _, err := simtestutil.SetupSimulation(config, "leveldb-app-sim-2", "Simulation-2", simcli.FlagVerboseValue, simcli.FlagEnabledValue) require.NoError(t, err, "simulation setup failed") defer func() { - newDB.Close() + require.NoError(t, newDB.Close()) require.NoError(t, os.RemoveAll(newDir)) }() - newApp := NewSimApp(log.NewNopLogger(), newDB, nil, true, map[int64]bool{}, DefaultNodeHome, sdksimapp.FlagPeriodValue, MakeTestEncodingConfig(), EmptyAppOptions{}, fauxMerkleModeOpt) + newApp := NewSimApp(log.NewNopLogger(), newDB, nil, true, appOptions, fauxMerkleModeOpt) require.Equal(t, "SimApp", newApp.Name()) - fmt.Println("exported AppState:\n", string(exported.AppState)) newApp.InitChain(abci.RequestInitChain{ AppStateBytes: exported.AppState, }) - _, _, err = simulation.SimulateFromSeed( t, os.Stdout, newApp.BaseApp, AppStateFn(app.AppCodec(), app.SimulationManager()), simtypes.RandomAccounts, // Replace with own random account function if using keys other than secp256k1 - sdksimapp.SimulationOperations(newApp, newApp.AppCodec(), config), + simtestutil.SimulationOperations(newApp, newApp.AppCodec(), config), app.ModuleAccountAddrs(), config, app.AppCodec(), @@ -309,11 +334,11 @@ func TestAppSimulationAfterImport(t *testing.T) { // TODO: Make another test for the fuzzer itself, which just has noOp txs // and doesn't depend on the application. func TestAppStateDeterminism(t *testing.T) { - if !sdksimapp.FlagEnabledValue { + if !simcli.FlagEnabledValue { t.Skip("skipping application simulation") } - config := sdksimapp.NewConfigFromFlags() + config := simcli.NewConfigFromFlags() config.InitialBlockHeight = 1 config.ExportParamsPath = "" config.OnOperation = false @@ -324,19 +349,23 @@ func TestAppStateDeterminism(t *testing.T) { numTimesToRunPerSeed := 5 appHashList := make([]json.RawMessage, numTimesToRunPerSeed) + appOptions := make(simtestutil.AppOptionsMap, 0) + appOptions[flags.FlagHome] = DefaultNodeHome + appOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue + for i := 0; i < numSeeds; i++ { config.Seed = rand.Int63() for j := 0; j < numTimesToRunPerSeed; j++ { var logger log.Logger - if sdksimapp.FlagVerboseValue { + if simcli.FlagVerboseValue { logger = log.TestingLogger() } else { logger = log.NewNopLogger() } db := dbm.NewMemDB() - app := NewSimApp(logger, db, nil, true, map[int64]bool{}, DefaultNodeHome, sdksimapp.FlagPeriodValue, MakeTestEncodingConfig(), EmptyAppOptions{}, interBlockCacheOpt()) + app := NewSimApp(logger, db, nil, true, appOptions, interBlockCacheOpt()) fmt.Printf( "running non-determinism simulation; seed %d: %d/%d, attempt: %d/%d\n", @@ -349,7 +378,7 @@ func TestAppStateDeterminism(t *testing.T) { app.BaseApp, AppStateFn(app.AppCodec(), app.SimulationManager()), simtypes.RandomAccounts, // Replace with own random account function if using keys other than secp256k1 - sdksimapp.SimulationOperations(app, app.AppCodec(), config), + simtestutil.SimulationOperations(app, app.AppCodec(), config), app.ModuleAccountAddrs(), config, app.AppCodec(), @@ -357,7 +386,7 @@ func TestAppStateDeterminism(t *testing.T) { require.NoError(t, err) if config.Commit { - sdksimapp.PrintStats(db) + simtestutil.PrintStats(db) } appHash := app.LastCommitID().Hash diff --git a/simapp/state.go b/simapp/state.go index 10a3ce02..254ff5c7 100644 --- a/simapp/state.go +++ b/simapp/state.go @@ -12,15 +12,15 @@ import ( tmtypes "github.com/tendermint/tendermint/types" sdkmath "cosmossdk.io/math" + simappparams "cosmossdk.io/simapp/params" "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" - sdksimapp "github.com/cosmos/cosmos-sdk/simapp" - simappparams "github.com/cosmos/cosmos-sdk/simapp/params" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + simcli "github.com/cosmos/cosmos-sdk/x/simulation/client/cli" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ) @@ -34,10 +34,10 @@ func AppStateFn(cdc codec.JSONCodec, simManager *module.SimulationManager) simty appState json.RawMessage, simAccs []simtypes.Account, chainID string, genesisTimestamp time.Time, ) { - if sdksimapp.FlagGenesisTimeValue == 0 { + if simcli.FlagGenesisTimeValue == 0 { genesisTimestamp = simtypes.RandTimestamp(r) } else { - genesisTimestamp = time.Unix(sdksimapp.FlagGenesisTimeValue, 0) + genesisTimestamp = time.Unix(simcli.FlagGenesisTimeValue, 0) } chainID = config.ChainID @@ -49,7 +49,7 @@ func AppStateFn(cdc codec.JSONCodec, simManager *module.SimulationManager) simty // override the default chain-id from simapp to set it later to the config genesisDoc, accounts := AppStateFromGenesisFileFn(r, cdc, config.GenesisFile) - if sdksimapp.FlagGenesisTimeValue == 0 { + if simcli.FlagGenesisTimeValue == 0 { // use genesis timestamp if no custom timestamp is provided (i.e no random timestamp) genesisTimestamp = genesisDoc.GenesisTime } diff --git a/simapp/test_helpers.go b/simapp/test_helpers.go index ee0cfb9f..f40da43d 100644 --- a/simapp/test_helpers.go +++ b/simapp/test_helpers.go @@ -2,6 +2,7 @@ package simapp import ( "bytes" + "context" "encoding/hex" "encoding/json" "fmt" @@ -10,6 +11,8 @@ import ( "testing" "time" + "cosmossdk.io/simapp" + "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/require" abci "github.com/tendermint/tendermint/abci/types" "github.com/tendermint/tendermint/libs/log" @@ -19,22 +22,25 @@ import ( bam "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/codec" + codectype "github.com/cosmos/cosmos-sdk/codec/types" codectypes "github.com/cosmos/cosmos-sdk/codec/types" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" + "github.com/cosmos/cosmos-sdk/server" servertypes "github.com/cosmos/cosmos-sdk/server/types" - "github.com/cosmos/cosmos-sdk/simapp/helpers" - "github.com/cosmos/cosmos-sdk/testutil" clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" "github.com/cosmos/cosmos-sdk/testutil/mock" "github.com/cosmos/cosmos-sdk/testutil/network" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/errors" authcli "github.com/cosmos/cosmos-sdk/x/auth/client/cli" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + "github.com/cosmos/cosmos-sdk/x/bank/client/cli" bankcli "github.com/cosmos/cosmos-sdk/x/bank/client/cli" bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" @@ -42,31 +48,23 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ) -// DefaultConsensusParams defines the default Tendermint consensus params used in -// SimApp testing. -var DefaultConsensusParams = &abci.ConsensusParams{ - Block: &abci.BlockParams{ - MaxBytes: 200000, - MaxGas: 2000000, - }, - Evidence: &tmproto.EvidenceParams{ - MaxAgeNumBlocks: 302400, - MaxAgeDuration: 504 * time.Hour, // 3 weeks is the max duration - MaxBytes: 10000, - }, - Validator: &tmproto.ValidatorParams{ - PubKeyTypes: []string{ - tmtypes.ABCIPubKeyTypeEd25519, - }, - }, +// SetupOptions defines arguments that are passed into `Simapp` constructor. +type SetupOptions struct { + Logger log.Logger + DB *dbm.MemDB + AppOpts servertypes.AppOptions } func setup(withGenesis bool, invCheckPeriod uint) (*SimApp, GenesisState) { db := dbm.NewMemDB() - encCdc := MakeTestEncodingConfig() - app := NewSimApp(log.NewNopLogger(), db, nil, true, map[int64]bool{}, DefaultNodeHome, invCheckPeriod, encCdc, EmptyAppOptions{}) + + appOptions := make(simtestutil.AppOptionsMap, 0) + appOptions[flags.FlagHome] = DefaultNodeHome + appOptions[server.FlagInvCheckPeriod] = invCheckPeriod + + app := NewSimApp(log.NewNopLogger(), db, nil, true, appOptions) if withGenesis { - return app, NewDefaultGenesisState(encCdc.Codec) + return app, app.DefaultGenesis() } return app, GenesisState{} } @@ -129,7 +127,7 @@ func SetupWithGenesisStateFn(t *testing.T, merge func(cdc codec.Codec, state Gen app.InitChain( abci.RequestInitChain{ Validators: []abci.ValidatorUpdate{}, - ConsensusParams: DefaultConsensusParams, + ConsensusParams: simtestutil.DefaultConsensusParams, AppStateBytes: stateBytes, }, ) @@ -145,7 +143,7 @@ func SetupWithGenesisStateFn(t *testing.T, merge func(cdc codec.Codec, state Gen } func NewConfig() network.Config { - cfg := network.DefaultConfig() + cfg := network.DefaultConfig(simapp.NewTestNetworkFixture) encCfg := MakeTestEncodingConfig() // redundant cfg.Codec = encCfg.Codec cfg.TxConfig = encCfg.TxConfig @@ -156,11 +154,10 @@ func NewConfig() network.Config { return cfg } -func SimAppConstructor(val network.Validator) servertypes.Application { +func SimAppConstructor(val network.ValidatorI) servertypes.Application { return NewSimApp( - val.Ctx.Logger, dbm.NewMemDB(), nil, true, make(map[int64]bool), - val.Ctx.Config.RootDir, 0, MakeTestEncodingConfig(), EmptyAppOptions{}, - bam.SetMinGasPrices(val.AppConfig.MinGasPrices), + val.GetCtx().Logger, dbm.NewMemDB(), nil, true, EmptyAppOptions{}, + bam.SetMinGasPrices(val.GetAppConfig().MinGasPrices), ) } @@ -222,7 +219,7 @@ func genesisStateWithValSet(t *testing.T, }) // update total supply - bankGenesis := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, totalSupply, []banktypes.Metadata{}) + bankGenesis := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, totalSupply, []banktypes.Metadata{}, []banktypes.SendEnabled{}) genesisState[banktypes.ModuleName] = app.AppCodec().MustMarshalJSON(bankGenesis) return genesisState @@ -245,7 +242,7 @@ func SetupWithGenesisValSet(t *testing.T, valSet *tmtypes.ValidatorSet, genAccs app.InitChain( abci.RequestInitChain{ Validators: []abci.ValidatorUpdate{}, - ConsensusParams: DefaultConsensusParams, + ConsensusParams: simtestutil.DefaultConsensusParams, AppStateBytes: stateBytes, }, ) @@ -447,12 +444,12 @@ func SignCheckDeliver( chainID string, accNums, accSeqs []uint64, expSimPass, expPass bool, priv ...cryptotypes.PrivKey, ) (sdk.GasInfo, *sdk.Result, error) { - tx, err := helpers.GenSignedMockTx( + tx, err := simtestutil.GenSignedMockTx( rand.New(rand.NewSource(time.Now().UnixNano())), txCfg, msgs, sdk.Coins{sdk.NewInt64Coin(sdk.DefaultBondDenom, 0)}, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, accNums, accSeqs, @@ -498,12 +495,12 @@ func GenSequenceOfTxs(txGen client.TxConfig, msgs []sdk.Msg, accNums []uint64, i txs := make([]sdk.Tx, numToGenerate) var err error for i := 0; i < numToGenerate; i++ { - txs[i], err = helpers.GenSignedMockTx( + txs[i], err = simtestutil.GenSignedMockTx( rand.New(rand.NewSource(time.Now().UnixNano())), txGen, msgs, sdk.Coins{sdk.NewInt64Coin(sdk.DefaultBondDenom, 0)}, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, "", accNums, initSeqNums, @@ -589,17 +586,19 @@ func FundModuleAccount(bankKeeper bankkeeper.Keeper, ctx sdk.Context, recipientM return bankKeeper.SendCoinsFromModuleToModule(ctx, minttypes.ModuleName, recipientMod, amounts) } -func QueryBalancesExec(clientCtx client.Context, address string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryBalancesExec(t *testing.T, network Network, clientCtx client.Context, address string, extraArgs ...string) sdk.Coins { args := []string{ address, fmt.Sprintf("--%s=json", "output"), } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, bankcli.GetBalancesCmd(), args) + result := &banktypes.QueryAllBalancesResponse{} + network.ExecQueryCmd(t, clientCtx, bankcli.GetBalancesCmd(), args, result) + return result.Balances } -func QueryBalanceExec(clientCtx client.Context, address string, denom string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryBalanceExec(t *testing.T, network Network, clientCtx client.Context, address string, denom string, extraArgs ...string) *sdk.Coin { args := []string{ address, fmt.Sprintf("--%s=%s", bankcli.FlagDenom, denom), @@ -607,15 +606,47 @@ func QueryBalanceExec(clientCtx client.Context, address string, denom string, ex } args = append(args, extraArgs...) - return clitestutil.ExecTestCLICmd(clientCtx, bankcli.GetBalancesCmd(), args) + result := &sdk.Coin{} + network.ExecQueryCmd(t, clientCtx, bankcli.GetBalancesCmd(), args, result) + return result } -func QueryAccountExec(clientCtx client.Context, address string, extraArgs ...string) (testutil.BufferWriter, error) { +func QueryAccountExec(t *testing.T, network Network, clientCtx client.Context, address string, extraArgs ...string) authtypes.AccountI { args := []string{ address, fmt.Sprintf("--%s=json", "output"), } args = append(args, extraArgs...) + out, err := clitestutil.ExecTestCLICmd(clientCtx, authcli.GetAccountCmd(), args) + require.NoError(t, err, "QueryAccountExec failed") + + respType := proto.Message(&codectype.Any{}) + require.NoError(t, clientCtx.Codec.UnmarshalJSON(out.Bytes(), respType)) + + var account authtypes.AccountI + err = clientCtx.InterfaceRegistry.UnpackAny(respType.(*codectype.Any), &account) + require.NoError(t, err, "UnpackAccount failed") + + return account +} + +func MsgSendExec(t *testing.T, network Network, clientCtx client.Context, from, to, amount fmt.Stringer, extraArgs ...string) *ResponseTx { + args := []string{from.String(), to.String(), amount.String()} + args = append(args, extraArgs...) + + return network.ExecTxCmdWithResult(t, clientCtx, cli.NewSendTxCmd(), args) +} + +func QueryTx(t *testing.T, clientCtx client.Context, txHash string) abci.ResponseDeliverTx { + txResult, _ := QueryTxWithHeight(t, clientCtx, txHash) + return txResult +} + +func QueryTxWithHeight(t *testing.T, clientCtx client.Context, txHash string) (abci.ResponseDeliverTx, int64) { + txHashBz, err := hex.DecodeString(txHash) + require.NoError(t, err, "query tx failed") - return clitestutil.ExecTestCLICmd(clientCtx, authcli.GetAccountCmd(), args) + txResult, err := clientCtx.Client.Tx(context.Background(), txHashBz, false) + require.NoError(t, err, "query tx failed") + return txResult.TxResult, txResult.Height } diff --git a/third_party/proto/cosmos/base/query/v1beta1/pagination.proto b/third_party/proto/cosmos/base/query/v1beta1/pagination.proto deleted file mode 100644 index b46c0516..00000000 --- a/third_party/proto/cosmos/base/query/v1beta1/pagination.proto +++ /dev/null @@ -1,49 +0,0 @@ -syntax = "proto3"; -package cosmos.base.query.v1beta1; - -option go_package = "github.com/cosmos/cosmos-sdk/types/query"; - -// PageRequest is to be embedded in gRPC request messages for efficient -// pagination. Ex: -// -// message SomeRequest { -// Foo some_parameter = 1; -// PageRequest page = 2; -// } -message PageRequest { - // key is a value returned in PageResponse.next_key to begin - // querying the next page most efficiently. Only one of offset or key - // should be set. - bytes key = 1; - - // offset is a numeric offset that can be used when key is unavailable. - // It is less efficient than using key. Only one of offset or key should - // be set. - uint64 offset = 2; - - // limit is the total number of results to be returned in the result page. - // If left empty it will default to a value to be set by each app. - uint64 limit = 3; - - // count_total is set to true to indicate that the result set should include - // a count of the total number of items available for pagination in UIs. count_total - // is only respected when offset is used. It is ignored when key is set. - bool count_total = 4; -} - -// PageResponse is to be embedded in gRPC response messages where the corresponding -// request message has used PageRequest -// -// message SomeResponse { -// repeated Bar results = 1; -// PageResponse page = 2; -// } -message PageResponse { - // next_key is the key to be passed to PageRequest.key to - // query the next page most efficiently - bytes next_key = 1; - - // total is total number of results available if PageRequest.count_total - // was set, its value is undefined otherwise - uint64 total = 2; -} diff --git a/third_party/proto/cosmos/base/v1beta1/coin.proto b/third_party/proto/cosmos/base/v1beta1/coin.proto deleted file mode 100644 index fab75284..00000000 --- a/third_party/proto/cosmos/base/v1beta1/coin.proto +++ /dev/null @@ -1,40 +0,0 @@ -syntax = "proto3"; -package cosmos.base.v1beta1; - -import "gogoproto/gogo.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/types"; -option (gogoproto.goproto_stringer_all) = false; -option (gogoproto.stringer_all) = false; - -// Coin defines a token with a denomination and an amount. -// -// NOTE: The amount field is an Int which implements the custom method -// signatures required by gogoproto. -message Coin { - option (gogoproto.equal) = true; - - string denom = 1; - string amount = 2 [(gogoproto.customtype) = "Int", (gogoproto.nullable) = false]; -} - -// DecCoin defines a token with a denomination and a decimal amount. -// -// NOTE: The amount field is an Dec which implements the custom method -// signatures required by gogoproto. -message DecCoin { - option (gogoproto.equal) = true; - - string denom = 1; - string amount = 2 [(gogoproto.customtype) = "Dec", (gogoproto.nullable) = false]; -} - -// IntProto defines a Protobuf wrapper around an Int object. -message IntProto { - string int = 1 [(gogoproto.customtype) = "Int", (gogoproto.nullable) = false]; -} - -// DecProto defines a Protobuf wrapper around a Dec object. -message DecProto { - string dec = 1 [(gogoproto.customtype) = "Dec", (gogoproto.nullable) = false]; -} diff --git a/third_party/proto/cosmos_proto/cosmos.proto b/third_party/proto/cosmos_proto/cosmos.proto deleted file mode 100644 index 167b1707..00000000 --- a/third_party/proto/cosmos_proto/cosmos.proto +++ /dev/null @@ -1,16 +0,0 @@ -syntax = "proto3"; -package cosmos_proto; - -import "google/protobuf/descriptor.proto"; - -option go_package = "github.com/regen-network/cosmos-proto"; - -extend google.protobuf.MessageOptions { - string interface_type = 93001; - - string implements_interface = 93002; -} - -extend google.protobuf.FieldOptions { - string accepts_interface = 93001; -} diff --git a/third_party/proto/gogoproto/gogo.proto b/third_party/proto/gogoproto/gogo.proto deleted file mode 100644 index 49e78f99..00000000 --- a/third_party/proto/gogoproto/gogo.proto +++ /dev/null @@ -1,145 +0,0 @@ -// Protocol Buffers for Go with Gadgets -// -// Copyright (c) 2013, The GoGo Authors. All rights reserved. -// http://github.com/gogo/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto2"; -package gogoproto; - -import "google/protobuf/descriptor.proto"; - -option java_package = "com.google.protobuf"; -option java_outer_classname = "GoGoProtos"; -option go_package = "github.com/gogo/protobuf/gogoproto"; - -extend google.protobuf.EnumOptions { - optional bool goproto_enum_prefix = 62001; - optional bool goproto_enum_stringer = 62021; - optional bool enum_stringer = 62022; - optional string enum_customname = 62023; - optional bool enumdecl = 62024; -} - -extend google.protobuf.EnumValueOptions { - optional string enumvalue_customname = 66001; -} - -extend google.protobuf.FileOptions { - optional bool goproto_getters_all = 63001; - optional bool goproto_enum_prefix_all = 63002; - optional bool goproto_stringer_all = 63003; - optional bool verbose_equal_all = 63004; - optional bool face_all = 63005; - optional bool gostring_all = 63006; - optional bool populate_all = 63007; - optional bool stringer_all = 63008; - optional bool onlyone_all = 63009; - - optional bool equal_all = 63013; - optional bool description_all = 63014; - optional bool testgen_all = 63015; - optional bool benchgen_all = 63016; - optional bool marshaler_all = 63017; - optional bool unmarshaler_all = 63018; - optional bool stable_marshaler_all = 63019; - - optional bool sizer_all = 63020; - - optional bool goproto_enum_stringer_all = 63021; - optional bool enum_stringer_all = 63022; - - optional bool unsafe_marshaler_all = 63023; - optional bool unsafe_unmarshaler_all = 63024; - - optional bool goproto_extensions_map_all = 63025; - optional bool goproto_unrecognized_all = 63026; - optional bool gogoproto_import = 63027; - optional bool protosizer_all = 63028; - optional bool compare_all = 63029; - optional bool typedecl_all = 63030; - optional bool enumdecl_all = 63031; - - optional bool goproto_registration = 63032; - optional bool messagename_all = 63033; - - optional bool goproto_sizecache_all = 63034; - optional bool goproto_unkeyed_all = 63035; -} - -extend google.protobuf.MessageOptions { - optional bool goproto_getters = 64001; - optional bool goproto_stringer = 64003; - optional bool verbose_equal = 64004; - optional bool face = 64005; - optional bool gostring = 64006; - optional bool populate = 64007; - optional bool stringer = 67008; - optional bool onlyone = 64009; - - optional bool equal = 64013; - optional bool description = 64014; - optional bool testgen = 64015; - optional bool benchgen = 64016; - optional bool marshaler = 64017; - optional bool unmarshaler = 64018; - optional bool stable_marshaler = 64019; - - optional bool sizer = 64020; - - optional bool unsafe_marshaler = 64023; - optional bool unsafe_unmarshaler = 64024; - - optional bool goproto_extensions_map = 64025; - optional bool goproto_unrecognized = 64026; - - optional bool protosizer = 64028; - optional bool compare = 64029; - - optional bool typedecl = 64030; - - optional bool messagename = 64033; - - optional bool goproto_sizecache = 64034; - optional bool goproto_unkeyed = 64035; -} - -extend google.protobuf.FieldOptions { - optional bool nullable = 65001; - optional bool embed = 65002; - optional string customtype = 65003; - optional string customname = 65004; - optional string jsontag = 65005; - optional string moretags = 65006; - optional string casttype = 65007; - optional string castkey = 65008; - optional string castvalue = 65009; - - optional bool stdtime = 65010; - optional bool stdduration = 65011; - optional bool wktpointer = 65012; - - optional string castrepeated = 65013; -} diff --git a/third_party/proto/google/api/annotations.proto b/third_party/proto/google/api/annotations.proto deleted file mode 100644 index 85c361b4..00000000 --- a/third_party/proto/google/api/annotations.proto +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) 2015, Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -import "google/api/http.proto"; -import "google/protobuf/descriptor.proto"; - -option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; -option java_multiple_files = true; -option java_outer_classname = "AnnotationsProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - -extend google.protobuf.MethodOptions { - // See `HttpRule`. - HttpRule http = 72295728; -} diff --git a/third_party/proto/google/api/http.proto b/third_party/proto/google/api/http.proto deleted file mode 100644 index 2bd3a19b..00000000 --- a/third_party/proto/google/api/http.proto +++ /dev/null @@ -1,318 +0,0 @@ -// Copyright 2018 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -option cc_enable_arenas = true; -option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; -option java_multiple_files = true; -option java_outer_classname = "HttpProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - - -// Defines the HTTP configuration for an API service. It contains a list of -// [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method -// to one or more HTTP REST API methods. -message Http { - // A list of HTTP configuration rules that apply to individual API methods. - // - // **NOTE:** All service configuration rules follow "last one wins" order. - repeated HttpRule rules = 1; - - // When set to true, URL path parmeters will be fully URI-decoded except in - // cases of single segment matches in reserved expansion, where "%2F" will be - // left encoded. - // - // The default behavior is to not decode RFC 6570 reserved characters in multi - // segment matches. - bool fully_decode_reserved_expansion = 2; -} - -// `HttpRule` defines the mapping of an RPC method to one or more HTTP -// REST API methods. The mapping specifies how different portions of the RPC -// request message are mapped to URL path, URL query parameters, and -// HTTP request body. The mapping is typically specified as an -// `google.api.http` annotation on the RPC method, -// see "google/api/annotations.proto" for details. -// -// The mapping consists of a field specifying the path template and -// method kind. The path template can refer to fields in the request -// message, as in the example below which describes a REST GET -// operation on a resource collection of messages: -// -// -// service Messaging { -// rpc GetMessage(GetMessageRequest) returns (Message) { -// option (google.api.http).get = "/v1/messages/{message_id}/{sub.subfield}"; -// } -// } -// message GetMessageRequest { -// message SubMessage { -// string subfield = 1; -// } -// string message_id = 1; // mapped to the URL -// SubMessage sub = 2; // `sub.subfield` is url-mapped -// } -// message Message { -// string text = 1; // content of the resource -// } -// -// The same http annotation can alternatively be expressed inside the -// `GRPC API Configuration` YAML file. -// -// http: -// rules: -// - selector: .Messaging.GetMessage -// get: /v1/messages/{message_id}/{sub.subfield} -// -// This definition enables an automatic, bidrectional mapping of HTTP -// JSON to RPC. Example: -// -// HTTP | RPC -// -----|----- -// `GET /v1/messages/123456/foo` | `GetMessage(message_id: "123456" sub: SubMessage(subfield: "foo"))` -// -// In general, not only fields but also field paths can be referenced -// from a path pattern. Fields mapped to the path pattern cannot be -// repeated and must have a primitive (non-message) type. -// -// Any fields in the request message which are not bound by the path -// pattern automatically become (optional) HTTP query -// parameters. Assume the following definition of the request message: -// -// -// service Messaging { -// rpc GetMessage(GetMessageRequest) returns (Message) { -// option (google.api.http).get = "/v1/messages/{message_id}"; -// } -// } -// message GetMessageRequest { -// message SubMessage { -// string subfield = 1; -// } -// string message_id = 1; // mapped to the URL -// int64 revision = 2; // becomes a parameter -// SubMessage sub = 3; // `sub.subfield` becomes a parameter -// } -// -// -// This enables a HTTP JSON to RPC mapping as below: -// -// HTTP | RPC -// -----|----- -// `GET /v1/messages/123456?revision=2&sub.subfield=foo` | `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield: "foo"))` -// -// Note that fields which are mapped to HTTP parameters must have a -// primitive type or a repeated primitive type. Message types are not -// allowed. In the case of a repeated type, the parameter can be -// repeated in the URL, as in `...?param=A¶m=B`. -// -// For HTTP method kinds which allow a request body, the `body` field -// specifies the mapping. Consider a REST update method on the -// message resource collection: -// -// -// service Messaging { -// rpc UpdateMessage(UpdateMessageRequest) returns (Message) { -// option (google.api.http) = { -// put: "/v1/messages/{message_id}" -// body: "message" -// }; -// } -// } -// message UpdateMessageRequest { -// string message_id = 1; // mapped to the URL -// Message message = 2; // mapped to the body -// } -// -// -// The following HTTP JSON to RPC mapping is enabled, where the -// representation of the JSON in the request body is determined by -// protos JSON encoding: -// -// HTTP | RPC -// -----|----- -// `PUT /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: "123456" message { text: "Hi!" })` -// -// The special name `*` can be used in the body mapping to define that -// every field not bound by the path template should be mapped to the -// request body. This enables the following alternative definition of -// the update method: -// -// service Messaging { -// rpc UpdateMessage(Message) returns (Message) { -// option (google.api.http) = { -// put: "/v1/messages/{message_id}" -// body: "*" -// }; -// } -// } -// message Message { -// string message_id = 1; -// string text = 2; -// } -// -// -// The following HTTP JSON to RPC mapping is enabled: -// -// HTTP | RPC -// -----|----- -// `PUT /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: "123456" text: "Hi!")` -// -// Note that when using `*` in the body mapping, it is not possible to -// have HTTP parameters, as all fields not bound by the path end in -// the body. This makes this option more rarely used in practice of -// defining REST APIs. The common usage of `*` is in custom methods -// which don't use the URL at all for transferring data. -// -// It is possible to define multiple HTTP methods for one RPC by using -// the `additional_bindings` option. Example: -// -// service Messaging { -// rpc GetMessage(GetMessageRequest) returns (Message) { -// option (google.api.http) = { -// get: "/v1/messages/{message_id}" -// additional_bindings { -// get: "/v1/users/{user_id}/messages/{message_id}" -// } -// }; -// } -// } -// message GetMessageRequest { -// string message_id = 1; -// string user_id = 2; -// } -// -// -// This enables the following two alternative HTTP JSON to RPC -// mappings: -// -// HTTP | RPC -// -----|----- -// `GET /v1/messages/123456` | `GetMessage(message_id: "123456")` -// `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id: "123456")` -// -// # Rules for HTTP mapping -// -// The rules for mapping HTTP path, query parameters, and body fields -// to the request message are as follows: -// -// 1. The `body` field specifies either `*` or a field path, or is -// omitted. If omitted, it indicates there is no HTTP request body. -// 2. Leaf fields (recursive expansion of nested messages in the -// request) can be classified into three types: -// (a) Matched in the URL template. -// (b) Covered by body (if body is `*`, everything except (a) fields; -// else everything under the body field) -// (c) All other fields. -// 3. URL query parameters found in the HTTP request are mapped to (c) fields. -// 4. Any body sent with an HTTP request can contain only (b) fields. -// -// The syntax of the path template is as follows: -// -// Template = "/" Segments [ Verb ] ; -// Segments = Segment { "/" Segment } ; -// Segment = "*" | "**" | LITERAL | Variable ; -// Variable = "{" FieldPath [ "=" Segments ] "}" ; -// FieldPath = IDENT { "." IDENT } ; -// Verb = ":" LITERAL ; -// -// The syntax `*` matches a single path segment. The syntax `**` matches zero -// or more path segments, which must be the last part of the path except the -// `Verb`. The syntax `LITERAL` matches literal text in the path. -// -// The syntax `Variable` matches part of the URL path as specified by its -// template. A variable template must not contain other variables. If a variable -// matches a single path segment, its template may be omitted, e.g. `{var}` -// is equivalent to `{var=*}`. -// -// If a variable contains exactly one path segment, such as `"{var}"` or -// `"{var=*}"`, when such a variable is expanded into a URL path, all characters -// except `[-_.~0-9a-zA-Z]` are percent-encoded. Such variables show up in the -// Discovery Document as `{var}`. -// -// If a variable contains one or more path segments, such as `"{var=foo/*}"` -// or `"{var=**}"`, when such a variable is expanded into a URL path, all -// characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. Such variables -// show up in the Discovery Document as `{+var}`. -// -// NOTE: While the single segment variable matches the semantics of -// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 -// Simple String Expansion, the multi segment variable **does not** match -// RFC 6570 Reserved Expansion. The reason is that the Reserved Expansion -// does not expand special characters like `?` and `#`, which would lead -// to invalid URLs. -// -// NOTE: the field paths in variables and in the `body` must not refer to -// repeated fields or map fields. -message HttpRule { - // Selects methods to which this rule applies. - // - // Refer to [selector][google.api.DocumentationRule.selector] for syntax details. - string selector = 1; - - // Determines the URL pattern is matched by this rules. This pattern can be - // used with any of the {get|put|post|delete|patch} methods. A custom method - // can be defined using the 'custom' field. - oneof pattern { - // Used for listing and getting information about resources. - string get = 2; - - // Used for updating a resource. - string put = 3; - - // Used for creating a resource. - string post = 4; - - // Used for deleting a resource. - string delete = 5; - - // Used for updating a resource. - string patch = 6; - - // The custom pattern is used for specifying an HTTP method that is not - // included in the `pattern` field, such as HEAD, or "*" to leave the - // HTTP method unspecified for this rule. The wild-card rule is useful - // for services that provide content to Web (HTML) clients. - CustomHttpPattern custom = 8; - } - - // The name of the request field whose value is mapped to the HTTP body, or - // `*` for mapping all fields not captured by the path pattern to the HTTP - // body. NOTE: the referred field must not be a repeated field and must be - // present at the top-level of request message type. - string body = 7; - - // Optional. The name of the response field whose value is mapped to the HTTP - // body of response. Other response fields are ignored. When - // not set, the response message will be used as HTTP body of response. - string response_body = 12; - - // Additional HTTP bindings for the selector. Nested bindings must - // not contain an `additional_bindings` field themselves (that is, - // the nesting may only be one level deep). - repeated HttpRule additional_bindings = 11; -} - -// A custom pattern is used for defining custom HTTP verb. -message CustomHttpPattern { - // The name of this custom HTTP verb. - string kind = 1; - - // The path matched by this custom verb. - string path = 2; -} diff --git a/third_party/proto/google/api/httpbody.proto b/third_party/proto/google/api/httpbody.proto deleted file mode 100644 index 4428515c..00000000 --- a/third_party/proto/google/api/httpbody.proto +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2018 Google LLC. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -syntax = "proto3"; - -package google.api; - -import "google/protobuf/any.proto"; - -option cc_enable_arenas = true; -option go_package = "google.golang.org/genproto/googleapis/api/httpbody;httpbody"; -option java_multiple_files = true; -option java_outer_classname = "HttpBodyProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - -// Message that represents an arbitrary HTTP body. It should only be used for -// payload formats that can't be represented as JSON, such as raw binary or -// an HTML page. -// -// -// This message can be used both in streaming and non-streaming API methods in -// the request as well as the response. -// -// It can be used as a top-level request field, which is convenient if one -// wants to extract parameters from either the URL or HTTP template into the -// request fields and also want access to the raw HTTP body. -// -// Example: -// -// message GetResourceRequest { -// // A unique request id. -// string request_id = 1; -// -// // The raw HTTP body is bound to this field. -// google.api.HttpBody http_body = 2; -// } -// -// service ResourceService { -// rpc GetResource(GetResourceRequest) returns (google.api.HttpBody); -// rpc UpdateResource(google.api.HttpBody) returns -// (google.protobuf.Empty); -// } -// -// Example with streaming methods: -// -// service CaldavService { -// rpc GetCalendar(stream google.api.HttpBody) -// returns (stream google.api.HttpBody); -// rpc UpdateCalendar(stream google.api.HttpBody) -// returns (stream google.api.HttpBody); -// } -// -// Use of this type only changes how the request and response bodies are -// handled, all other features will continue to work unchanged. -message HttpBody { - // The HTTP Content-Type header value specifying the content type of the body. - string content_type = 1; - - // The HTTP request/response body as raw binary. - bytes data = 2; - - // Application specific response metadata. Must be set in the first response - // for streaming APIs. - repeated google.protobuf.Any extensions = 3; -} \ No newline at end of file diff --git a/third_party/proto/google/protobuf/any.proto b/third_party/proto/google/protobuf/any.proto deleted file mode 100644 index 1431810e..00000000 --- a/third_party/proto/google/protobuf/any.proto +++ /dev/null @@ -1,161 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -import "gogoproto/gogo.proto"; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option go_package = "types"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "AnyProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; - -// `Any` contains an arbitrary serialized protocol buffer message along with a -// URL that describes the type of the serialized message. -// -// Protobuf library provides support to pack/unpack Any values in the form -// of utility functions or additional generated methods of the Any type. -// -// Example 1: Pack and unpack a message in C++. -// -// Foo foo = ...; -// Any any; -// any.PackFrom(foo); -// ... -// if (any.UnpackTo(&foo)) { -// ... -// } -// -// Example 2: Pack and unpack a message in Java. -// -// Foo foo = ...; -// Any any = Any.pack(foo); -// ... -// if (any.is(Foo.class)) { -// foo = any.unpack(Foo.class); -// } -// -// Example 3: Pack and unpack a message in Python. -// -// foo = Foo(...) -// any = Any() -// any.Pack(foo) -// ... -// if any.Is(Foo.DESCRIPTOR): -// any.Unpack(foo) -// ... -// -// Example 4: Pack and unpack a message in Go -// -// foo := &pb.Foo{...} -// any, err := ptypes.MarshalAny(foo) -// ... -// foo := &pb.Foo{} -// if err := ptypes.UnmarshalAny(any, foo); err != nil { -// ... -// } -// -// The pack methods provided by protobuf library will by default use -// 'type.googleapis.com/full.type.name' as the type URL and the unpack -// methods only use the fully qualified type name after the last '/' -// in the type URL, for example "foo.bar.com/x/y.z" will yield type -// name "y.z". -// -// -// JSON -// ==== -// The JSON representation of an `Any` value uses the regular -// representation of the deserialized, embedded message, with an -// additional field `@type` which contains the type URL. Example: -// -// package google.profile; -// message Person { -// string first_name = 1; -// string last_name = 2; -// } -// -// { -// "@type": "type.googleapis.com/google.profile.Person", -// "firstName": , -// "lastName": -// } -// -// If the embedded message type is well-known and has a custom JSON -// representation, that representation will be embedded adding a field -// `value` which holds the custom JSON in addition to the `@type` -// field. Example (for message [google.protobuf.Duration][]): -// -// { -// "@type": "type.googleapis.com/google.protobuf.Duration", -// "value": "1.212s" -// } -// -message Any { - // A URL/resource name that uniquely identifies the type of the serialized - // protocol buffer message. This string must contain at least - // one "/" character. The last segment of the URL's path must represent - // the fully qualified name of the type (as in - // `path/google.protobuf.Duration`). The name should be in a canonical form - // (e.g., leading "." is not accepted). - // - // In practice, teams usually precompile into the binary all types that they - // expect it to use in the context of Any. However, for URLs which use the - // scheme `http`, `https`, or no scheme, one can optionally set up a type - // server that maps type URLs to message definitions as follows: - // - // * If no scheme is provided, `https` is assumed. - // * An HTTP GET on the URL must yield a [google.protobuf.Type][] - // value in binary format, or produce an error. - // * Applications are allowed to cache lookup results based on the - // URL, or have them precompiled into a binary to avoid any - // lookup. Therefore, binary compatibility needs to be preserved - // on changes to types. (Use versioned type names to manage - // breaking changes.) - // - // Note: this functionality is not currently available in the official - // protobuf release, and it is not used for type URLs beginning with - // type.googleapis.com. - // - // Schemes other than `http`, `https` (or the empty scheme) might be - // used with implementation specific semantics. - // - string type_url = 1; - - // Must be a valid serialized protocol buffer of the above specified type. - bytes value = 2; - - option (gogoproto.typedecl) = false; -} - -option (gogoproto.goproto_registration) = false; From 38837e2c2c41db8d2baee3009716453f4bdd1007 Mon Sep 17 00:00:00 2001 From: Dreamer <745124335@qq.com> Date: Wed, 24 May 2023 16:36:03 +0800 Subject: [PATCH 2/5] replace tendermint with cometbft --- go.mod | 113 ++- go.sum | 612 ++++++++++--- modules/coinswap/keeper/keeper.go | 218 ++++- modules/coinswap/keeper/keeper_test.go | 106 ++- .../coinswap/migrations/v1/migrate_test.go | 13 +- modules/coinswap/migrations/v1/types.go | 2 +- modules/coinswap/module.go | 33 +- modules/coinswap/types/msgs_test.go | 97 +- modules/coinswap/types/utils.go | 2 +- modules/farm/client/testutil/test_helper.go | 17 +- modules/farm/keeper/keeper.go | 2 +- modules/farm/keeper/keeper_test.go | 93 +- modules/farm/module.go | 33 +- modules/farm/types/validation_test.go | 2 +- modules/htlc/abci.go | 2 +- modules/htlc/client/cli/cli_test.go | 155 +++- modules/htlc/client/cli/query.go | 2 +- .../htlc/client/testutil/grpc_query_test.go | 8 +- modules/htlc/client/testutil/test_helpers.go | 2 +- modules/htlc/genesis.go | 34 +- modules/htlc/genesis_test.go | 13 +- modules/htlc/integration_test.go | 4 +- modules/htlc/keeper/asset_test.go | 121 ++- modules/htlc/keeper/grpc_query_test.go | 30 +- modules/htlc/keeper/htlc.go | 52 +- modules/htlc/keeper/htlc_test.go | 207 ++++- modules/htlc/keeper/integration_test.go | 12 +- modules/htlc/keeper/keeper.go | 2 +- modules/htlc/keeper/params_test.go | 13 +- modules/htlc/module.go | 33 +- modules/htlc/simulation/genesis.go | 2 +- modules/htlc/simulation/operation.go | 74 +- modules/htlc/types/conmmon_test.go | 4 +- modules/htlc/types/htlc.go | 26 +- modules/htlc/types/msgs_test.go | 204 ++++- modules/htlc/types/querier.go | 2 +- modules/mt/client/cli/cli_test.go | 58 +- modules/mt/client/testutil/test_helpers.go | 2 +- modules/mt/keeper/keeper.go | 14 +- modules/mt/module.go | 33 +- modules/nft/client/cli/cli_test.go | 51 +- modules/nft/client/testutil/test_helpers.go | 2 +- modules/nft/keeper/keeper.go | 2 +- modules/nft/keeper/keeper_test.go | 203 ++++- modules/nft/migrations/v2/store.go | 2 +- modules/nft/migrations/v2/store_test.go | 50 +- modules/nft/module/module.go | 33 +- modules/nft/types/builder_test.go | 10 +- .../oracle/client/testutil/test-helpers.go | 2 +- modules/oracle/keeper/feed.go | 7 +- modules/oracle/keeper/keeper.go | 7 +- modules/oracle/keeper/keeper_test.go | 45 +- modules/oracle/module.go | 33 +- modules/oracle/types/expected_keepers.go | 2 +- modules/oracle/types/msgs_test.go | 2 +- .../random/client/testutil/test_helpers.go | 2 +- modules/random/genesis_test.go | 29 +- modules/random/keeper/keeper.go | 46 +- modules/random/keeper/keeper_test.go | 36 +- modules/random/keeper/service.go | 47 +- modules/random/module.go | 25 +- modules/random/types/expected_keepers.go | 4 +- modules/random/types/msgs_test.go | 7 +- modules/random/types/service.go | 2 +- modules/record/client/cli/query.go | 2 +- .../record/client/testutil/test_helpers.go | 2 +- modules/record/keeper/keeper.go | 4 +- modules/record/keeper/keeper_test.go | 4 +- modules/record/keeper/msg_server.go | 7 +- modules/record/module.go | 32 +- modules/record/simulation/operations.go | 29 +- modules/record/types/types.go | 2 +- modules/service/abci.go | 46 +- modules/service/client/cli/cli_test.go | 222 ++++- modules/service/client/cli/query.go | 79 +- .../service/client/testutil/test_helpers.go | 2 +- modules/service/client/utils/query.go | 17 +- modules/service/genesis.go | 2 +- modules/service/keeper/invocation.go | 273 +++++- modules/service/keeper/keeper.go | 2 +- modules/service/keeper/keeper_test.go | 201 ++++- modules/service/keeper/module_service.go | 26 +- modules/service/keeper/msg_server.go | 84 +- modules/service/keeper/state_change.go | 20 +- modules/service/module.go | 25 +- modules/service/simulation/operations.go | 817 ++++++++++++++--- modules/service/types/invocation.go | 15 +- modules/service/types/invocation_test.go | 15 +- modules/service/types/msgs_test.go | 848 +++++++++++++++--- modules/service/types/oracle_price.go | 2 +- modules/service/types/querier.go | 2 +- modules/token/client/cli/cli_test.go | 2 +- modules/token/client/testutil/test_helpers.go | 2 +- modules/token/genesis_test.go | 4 +- modules/token/handler_test.go | 25 +- modules/token/keeper/keeper.go | 54 +- modules/token/keeper/keeper_test.go | 36 +- modules/token/module.go | 2 +- modules/token/types/v1/genesis.go | 16 +- modules/token/types/v1/msgs_test.go | 86 +- modules/token/types/v1beta1/genesis.go | 16 +- modules/token/types/v1beta1/msgs_test.go | 86 +- simapp/app.go | 281 ++++-- simapp/export.go | 74 +- simapp/network.go | 4 +- simapp/sim_bench_test.go | 18 +- simapp/sim_test.go | 85 +- simapp/state.go | 34 +- simapp/test_helpers.go | 197 +++- 109 files changed, 5611 insertions(+), 1292 deletions(-) diff --git a/go.mod b/go.mod index 953eb542..93045a5e 100644 --- a/go.mod +++ b/go.mod @@ -3,64 +3,65 @@ go 1.19 module github.com/irisnet/irismod require ( - cosmossdk.io/api v0.2.6 - cosmossdk.io/math v1.0.0-beta.4 + cosmossdk.io/api v0.3.1 + cosmossdk.io/math v1.0.0 cosmossdk.io/simapp v0.0.0-20221216140705-ee8890cf30e7 - github.com/cosmos/cosmos-proto v1.0.0-beta.1 - github.com/cosmos/cosmos-sdk v0.47.0-rc2 - github.com/cosmos/gogoproto v1.4.4 + github.com/cometbft/cometbft v0.37.1 + github.com/cometbft/cometbft-db v0.7.0 + github.com/cosmos/cosmos-proto v1.0.0-beta.2 + github.com/cosmos/cosmos-sdk v0.47.2 + github.com/cosmos/gogoproto v1.4.8 github.com/gogo/protobuf v1.3.2 - github.com/golang/protobuf v1.5.2 + github.com/golang/protobuf v1.5.3 github.com/gorilla/mux v1.8.0 github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/rakyll/statik v0.1.7 github.com/spf13/cast v1.5.0 github.com/spf13/cobra v1.6.1 github.com/spf13/pflag v1.0.5 - github.com/stretchr/testify v1.8.1 - github.com/tendermint/tendermint v0.37.0-rc2 - github.com/tendermint/tm-db v0.6.7 + github.com/stretchr/testify v1.8.2 github.com/tidwall/gjson v1.14.4 github.com/xeipuuv/gojsonschema v1.2.0 - google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6 - google.golang.org/grpc v1.52.3 - google.golang.org/protobuf v1.28.1 + google.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44 + google.golang.org/grpc v1.54.0 + google.golang.org/protobuf v1.30.0 gopkg.in/yaml.v2 v2.4.0 ) require ( - cloud.google.com/go v0.105.0 // indirect - cloud.google.com/go/compute v1.12.1 // indirect - cloud.google.com/go/compute/metadata v0.2.1 // indirect - cloud.google.com/go/iam v0.7.0 // indirect - cloud.google.com/go/storage v1.27.0 // indirect - cosmossdk.io/core v0.3.2 // indirect + cloud.google.com/go v0.110.0 // indirect + cloud.google.com/go/compute v1.18.0 // indirect + cloud.google.com/go/compute/metadata v0.2.3 // indirect + cloud.google.com/go/iam v0.12.0 // indirect + cloud.google.com/go/storage v1.29.0 // indirect + cosmossdk.io/core v0.5.1 // indirect cosmossdk.io/depinject v1.0.0-alpha.3 // indirect cosmossdk.io/errors v1.0.0-beta.7 // indirect - cosmossdk.io/tools/rosetta v0.2.0 // indirect - filippo.io/edwards25519 v1.0.0-rc.1 // indirect + cosmossdk.io/tools/rosetta v0.2.1 // 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 v0.0.0-20200405005733-88cbf1b4c40d // indirect github.com/armon/go-metrics v0.4.1 // indirect - github.com/aws/aws-sdk-go v1.40.45 // indirect + github.com/aws/aws-sdk-go v1.44.203 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/cenkalti/backoff/v4 v4.1.3 // indirect github.com/cespare/xxhash v1.1.0 // indirect - github.com/cespare/xxhash/v2 v2.1.2 // indirect - github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/chzyer/readline v1.5.1 // indirect github.com/cockroachdb/apd/v2 v2.0.2 // indirect + github.com/coinbase/rosetta-sdk-go/types v1.0.0 // indirect github.com/confio/ics23/go v0.9.0 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/go-bip39 v1.0.0 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect github.com/cosmos/gorocksdb v1.2.0 // indirect - github.com/cosmos/iavl v0.19.5-rc.1 // indirect + github.com/cosmos/iavl v0.20.0 // indirect github.com/cosmos/ledger-cosmos-go v0.12.1 // indirect - github.com/cosmos/rosetta-sdk-go v0.9.0 // indirect + github.com/cosmos/rosetta-sdk-go v0.10.0 // indirect github.com/creachadair/taskgroup v0.3.2 // indirect github.com/danieljoos/wincred v1.1.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -69,7 +70,7 @@ require ( github.com/dgraph-io/badger/v2 v2.2007.4 // indirect github.com/dgraph-io/ristretto v0.1.1 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect - github.com/dustin/go-humanize v1.0.0 // indirect + github.com/dustin/go-humanize v1.0.1 // indirect github.com/dvsekhvalnov/jose2go v1.5.0 // indirect github.com/felixge/httpsnoop v1.0.2 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect @@ -77,8 +78,8 @@ require ( github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.5.1 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect - github.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869 // indirect - github.com/golang/glog v1.0.0 // indirect + github.com/gogo/googleapis v1.4.1 // indirect + github.com/golang/glog v1.1.0 // 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 @@ -86,8 +87,8 @@ require ( github.com/google/go-cmp v0.5.9 // indirect github.com/google/orderedcode v0.0.1 // indirect github.com/google/uuid v1.3.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.2.0 // indirect - github.com/googleapis/gax-go/v2 v2.6.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect + github.com/googleapis/gax-go/v2 v2.7.0 // indirect github.com/gorilla/handlers v1.5.1 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect @@ -95,30 +96,29 @@ require ( github.com/gtank/merlin v0.1.1 // indirect github.com/gtank/ristretto255 v0.1.2 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter v1.6.2 // indirect + github.com/hashicorp/go-getter v1.7.1 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect github.com/hashicorp/hcl v1.0.0 // indirect - github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 // indirect + github.com/hdevalence/ed25519consensus v0.1.0 // indirect github.com/huandu/skiplist v1.2.0 // indirect github.com/improbable-eng/grpc-web v0.15.0 // indirect github.com/inconshreveable/mousetrap v1.0.1 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect - github.com/klauspost/compress v1.15.12 // indirect + github.com/klauspost/compress v1.16.3 // indirect github.com/lib/pq v1.10.7 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/magiconair/properties v1.8.6 // indirect github.com/manifoldco/promptui v0.9.0 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.16 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect github.com/minio/highwayhash v1.0.2 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect - github.com/mitchellh/go-testing-interface v1.0.0 // indirect + github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect github.com/pelletier/go-toml v1.9.5 // indirect @@ -132,37 +132,52 @@ require ( github.com/prometheus/procfs v0.8.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rs/cors v1.8.2 // indirect - github.com/rs/zerolog v1.28.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect github.com/spf13/afero v1.9.2 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/viper v1.14.0 // indirect github.com/subosito/gotenv v1.4.1 // indirect github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // 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.5.2 // indirect + github.com/tendermint/tendermint v0.37.0-rc2 // indirect + github.com/tendermint/tm-db v0.6.7 // indirect + github.com/tidwall/btree v1.6.0 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.0 // indirect - github.com/ulikunitz/xz v0.5.8 // indirect + github.com/ulikunitz/xz v0.5.11 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/zondax/hid v0.9.1 // indirect github.com/zondax/ledger-go v0.14.0 // indirect - go.etcd.io/bbolt v1.3.6 // indirect - go.opencensus.io v0.23.0 // indirect - golang.org/x/crypto v0.4.0 // indirect - golang.org/x/exp v0.0.0-20221019170559-20944726eadf // indirect - golang.org/x/net v0.4.0 // indirect - golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 // indirect - golang.org/x/sys v0.3.0 // indirect - golang.org/x/term v0.3.0 // indirect - golang.org/x/text v0.5.0 // indirect + go.etcd.io/bbolt v1.3.7 // indirect + go.opencensus.io v0.24.0 // indirect + golang.org/x/crypto v0.7.0 // indirect + golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect + golang.org/x/net v0.9.0 // indirect + golang.org/x/oauth2 v0.5.0 // indirect + golang.org/x/sys v0.7.0 // indirect + golang.org/x/term v0.7.0 // indirect + golang.org/x/text v0.9.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect - google.golang.org/api v0.102.0 // indirect + google.golang.org/api v0.110.0 // indirect google.golang.org/appengine v1.6.7 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect nhooyr.io/websocket v1.8.6 // indirect - pgregory.net/rapid v0.5.3 // indirect + pgregory.net/rapid v0.5.5 // indirect sigs.k8s.io/yaml v1.3.0 // indirect ) + +replace ( + // use cosmos fork of keyring + github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 + // dgrijalva/jwt-go is deprecated and doesn't receive security updates. + // TODO: remove it: https://github.com/cosmos/cosmos-sdk/issues/13134 + github.com/dgrijalva/jwt-go => github.com/golang-jwt/jwt/v4 v4.4.2 + // Fix upstream GHSA-h395-qcrw-5vmq vulnerability. + // TODO Remove it: https://github.com/cosmos/cosmos-sdk/issues/10409 + github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.8.1 + // Downgraded to avoid bugs in following commits which caused simulations to fail. + github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 +) diff --git a/go.sum b/go.sum index 69d8f929..1b7090cc 100644 --- a/go.sum +++ b/go.sum @@ -17,56 +17,196 @@ cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHOb 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 v0.105.0 h1:DNtEKRBAAzeS4KyIory52wWHuClNaXJ5x1F7xa4q+5Y= -cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= +cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= +cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= +cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys= +cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= +cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= +cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= +cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= +cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= +cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= +cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= +cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= +cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= +cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= +cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= +cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= +cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= +cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= +cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= 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/compute v1.12.1 h1:gKVJMEyqV5c/UnpzjjQbo3Rjvvqpr9B1DFSbJC4OXr0= -cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= -cloud.google.com/go/compute/metadata v0.2.1 h1:efOwf5ymceDhK6PKMnnrTHP4pppY5L22mle96M1yP48= -cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= +cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= +cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= +cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= +cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= +cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= +cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= +cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= +cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= +cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= +cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= +cloud.google.com/go/compute v1.18.0 h1:FEigFqoDbys2cvFkZ9Fjq4gnHBP55anJ0yQyau2f9oY= +cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= +cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= +cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= +cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= +cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= +cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= +cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= +cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= +cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= +cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= +cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= 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/iam v0.7.0 h1:k4MuwOsS7zGJJ+QfZ5vBK8SgHBAvYN/23BWsiihJ1vs= -cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= +cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= +cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= +cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= +cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= +cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= +cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= +cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= +cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= +cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= +cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= +cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= +cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= +cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= +cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= +cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= +cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= +cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= +cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= +cloud.google.com/go/iam v0.12.0 h1:DRtTY29b75ciH6Ov1PHb4/iat2CLCvrOm40Q0a6DFpE= +cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= +cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= +cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= +cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= +cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= cloud.google.com/go/longrunning v0.3.0 h1:NjljC+FYPV3uh5/OwWT6pVU+doBqMg2x/rZlE+CamDs= +cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= +cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= +cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= +cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= +cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= +cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= +cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= +cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= +cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= +cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= +cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= +cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= +cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= +cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= +cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= +cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= 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/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= +cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= +cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= +cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= +cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= +cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= +cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= +cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= +cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= +cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= +cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= +cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= +cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= +cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= +cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= +cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= +cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= +cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= +cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= +cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= 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= -cloud.google.com/go/storage v1.27.0 h1:YOO045NZI9RKfCj1c5A/ZtuuENUc8OAW+gHdGnDgyMQ= +cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cosmossdk.io/api v0.2.6 h1:AoNwaLLapcLsphhMK6+o0kZl+D6MMUaHVqSdwinASGU= -cosmossdk.io/api v0.2.6/go.mod h1:u/d+GAxil0nWpl1XnQL8nkziQDIWuBDhv8VnDm/s6dI= -cosmossdk.io/core v0.3.2 h1:KlQIufpJHJvOs7YLGTZsZcCo1WlkencDXepsr8STKZQ= -cosmossdk.io/core v0.3.2/go.mod h1:CO7vbe+evrBvHc0setFHL/u7nlY7HJGzdRSBkT/sirc= +cloud.google.com/go/storage v1.29.0 h1:6weCgzRvMg7lzuUurI4697AqIRPU1SvzHhynwpW31jI= +cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= +cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= +cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= +cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= +cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= +cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= +cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= +cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= +cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= +cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= +cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +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.3 h1:6evFIgj//Y3w09bqOUOzEpFj5tsxBqdc5CfkO7z+zfw= cosmossdk.io/depinject v1.0.0-alpha.3/go.mod h1:eRbcdQ7MRpIPEM5YUJh8k97nxHpYbc3sMUnEtt8HPWU= cosmossdk.io/errors v1.0.0-beta.7 h1:gypHW76pTQGVnHKo6QBkb4yFOJjC+sUGRc5Al3Odj1w= cosmossdk.io/errors v1.0.0-beta.7/go.mod h1:mz6FQMJRku4bY7aqS/Gwfcmr/ue91roMEKAmDUDpBfE= -cosmossdk.io/math v1.0.0-beta.4 h1:JtKedVLGzA0vv84xjYmZ75RKG35Kf2WwcFu8IjRkIIw= -cosmossdk.io/math v1.0.0-beta.4/go.mod h1:An0MllWJY6PxibUpnwGk8jOm+a/qIxlKmL5Zyp9NnaM= +cosmossdk.io/math v1.0.0 h1:ro9w7eKx23om2tZz/VM2Pf+z2WAbGX1yDQQOJ6iGeJw= +cosmossdk.io/math v1.0.0/go.mod h1:Ygz4wBHrgc7g0N+8+MrnTfS9LLn9aaTGa9hKopuym5k= cosmossdk.io/simapp v0.0.0-20221216140705-ee8890cf30e7 h1:8uwZLyQ6NMZNT0janUI86Q4vF1sIIquSUsijmOkgmp8= cosmossdk.io/simapp v0.0.0-20221216140705-ee8890cf30e7/go.mod h1:zvJ3aFHDzqQ6NvkCcCHyolr5Wh2BJ9Rg4qVcN1T6Re0= -cosmossdk.io/tools/rosetta v0.2.0 h1:Ae499UiZ9yPNCXvjOBO/R9I1pksCJfxoqWauEZgA/gs= -cosmossdk.io/tools/rosetta v0.2.0/go.mod h1:3mn8QuE2wLUdTi77/gbDXdFqXZdBdiBJhgAWUTSXPv8= +cosmossdk.io/tools/rosetta v0.2.1 h1:ddOMatOH+pbxWbrGJKRAawdBkPYLfKXutK9IETnjYxw= +cosmossdk.io/tools/rosetta v0.2.1/go.mod h1:Pqdc1FdvkNV3LcNIkYWt2RQY6IP1ge6YWZk8MhhO9Hw= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -filippo.io/edwards25519 v1.0.0-rc.1 h1:m0VOOB23frXZvAOK44usCgLWvtsxIoMCTBGJZlpmGfU= -filippo.io/edwards25519 v1.0.0-rc.1/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= +filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek= +filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= -github.com/99designs/keyring v1.2.1 h1:tYLp1ULvO7i3fI5vE21ReQuj99QFSs7lGm0xWyJo87o= -github.com/99designs/keyring v1.2.1/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= 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= @@ -74,7 +214,7 @@ github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQ github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Microsoft/go-winio v0.5.2 h1:a9IhgEQBCUEk6QCdml9CiJGhAws+YwffDHEMp1VMrpA= +github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -101,10 +241,10 @@ github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+ 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= -github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.40.45 h1:QN1nsY27ssD/JmW4s83qmSb+uL6DG4GmCDzjmJB4xUI= -github.com/aws/aws-sdk-go v1.40.45/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= +github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.44.203 h1:pcsP805b9acL3wUqa4JR2vg1k2wnItkDYNvfmcy6F+U= +github.com/aws/aws-sdk-go v1.44.203/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -129,15 +269,19 @@ github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA 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.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= github.com/cespare/xxhash/v2 v2.1.2/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/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= -github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= +github.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM= +github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= +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/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04= +github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= @@ -146,6 +290,7 @@ github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGX 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-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= 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= @@ -155,6 +300,12 @@ github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOG github.com/cockroachdb/apd/v3 v3.1.0 h1:MK3Ow7LH0W8zkd5GMKA1PvS9qG3bWFI95WaVNfyZJ/w= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= 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/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= +github.com/cometbft/cometbft v0.37.1 h1:KLxkQTK2hICXYq21U2hn1W5hOVYUdQgDQ1uB+90xPIg= +github.com/cometbft/cometbft v0.37.1/go.mod h1:Y2MMMN//O5K4YKd8ze4r9jmk4Y7h0ajqILXbH5JQFVs= +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/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/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= @@ -162,36 +313,38 @@ github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/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.1 h1:iDL5qh++NoXxG8hSy93FdYJut4XfgbShIocllGaXx/0= -github.com/cosmos/cosmos-proto v1.0.0-beta.1/go.mod h1:8k2GNZghi5sDRFw/scPL8gMSowT1vDA+5ouxL8GjaUE= -github.com/cosmos/cosmos-sdk v0.47.0-rc2 h1:BwQC41zQXG/pN9DdLaWzYJrC911St5lYOQIoW4Hf5wQ= -github.com/cosmos/cosmos-sdk v0.47.0-rc2/go.mod h1:e0ZEpY/nhVoXAkijdHPdFOJNOXCddfvyFrFLp2QmCCY= +github.com/cosmos/cosmos-proto v1.0.0-beta.2 h1:X3OKvWgK9Gsejo0F1qs5l8Qn6xJV/AzgIWR2wZ8Nua8= +github.com/cosmos/cosmos-proto v1.0.0-beta.2/go.mod h1:+XRCLJ14pr5HFEHIUcn51IKXD1Fy3rkEQqt4WqmN4V0= +github.com/cosmos/cosmos-sdk v0.47.2 h1:9rSriCoiJD+4F+tEDobyM8V7HF5BtY5Ef4VYNig96s0= +github.com/cosmos/cosmos-sdk v0.47.2/go.mod h1:zYzgI8w8hhotXTSoGbbSOAKfpJTx4wOy4XgbaKhtRtc= 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/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.4.4 h1:nVAsgLlAf5jeN0fV7hRlkZvf768zU+dy4pG+hxc2P34= -github.com/cosmos/gogoproto v1.4.4/go.mod h1:/yl6/nLwsZcZ2JY3OrqjRqvqCG9InUMcXRfRjQiF9DU= +github.com/cosmos/gogoproto v1.4.8 h1:BrHKc6WFZt8+jRV71vKSQE+JrfF+JAnzrKo2VP7wIZ4= +github.com/cosmos/gogoproto v1.4.8/go.mod h1:hnb0DIEWTv+wdNzNcqus5xCQXq5+CXauq1FJuurRfVY= github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4Y= github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= -github.com/cosmos/iavl v0.19.5-rc.1 h1:4PjF2PdScyPbN1WbXpiQU21YtyonnrMU31xN74g8Rkg= -github.com/cosmos/iavl v0.19.5-rc.1/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw= +github.com/cosmos/iavl v0.20.0 h1:fTVznVlepH0KK8NyKq8w+U7c2L6jofa27aFX6YGlm38= +github.com/cosmos/iavl v0.20.0/go.mod h1:WO7FyvaZJoH65+HFOsDir7xU9FWk2w9cHXNW1XHcl7A= +github.com/cosmos/keyring v1.2.0 h1:8C1lBP9xhImmIabyXW4c3vFjjLiBdGCmfLUfeZlV1Yo= +github.com/cosmos/keyring v1.2.0/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= github.com/cosmos/ledger-cosmos-go v0.12.1 h1:sMBxza5p/rNK/06nBSNmsI/WDqI0pVJFVNihy1Y984w= github.com/cosmos/ledger-cosmos-go v0.12.1/go.mod h1:dhO6kj+Y+AHIOgAe4L9HL/6NDdyyth4q238I9yFpD2g= -github.com/cosmos/rosetta-sdk-go v0.9.0 h1:3mj2naR+GUhUXabtb96WWSsPFZDCYkdtp6r0jffgugg= -github.com/cosmos/rosetta-sdk-go v0.9.0/go.mod h1:2v41yXL25xxAXrczVSnbDHcQH9CgildruDlGQGKW/JU= +github.com/cosmos/rosetta-sdk-go v0.10.0 h1:E5RhTruuoA7KTIXUcMicL76cffyeoyvNybzUGSKFTcM= +github.com/cosmos/rosetta-sdk-go v0.10.0/go.mod h1:SImAZkb96YbwvoRkzSMQB6noNJXFgWl/ENIznEoYQI4= 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.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM= github.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk= 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/cucumber/common/gherkin/go/v22 v22.0.0 h1:4K8NqptbvdOrjL9DEea6HFjSpbdT9+Q5kgLpmmsHYl0= github.com/cucumber/common/messages/go/v17 v17.1.1 h1:RNqopvIFyLWnKv0LfATh34SWBhXeoFTJnSrgm9cT/Ts= github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= @@ -209,15 +362,15 @@ github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN 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= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= -github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/dvsekhvalnov/jose2go v1.5.0 h1:3j8ya4Z4kMCwT5nXIKFSV84YS+HdqSSO0VsTQxaLAeM= github.com/dvsekhvalnov/jose2go v1.5.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= @@ -230,6 +383,8 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m 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.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= 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= @@ -251,8 +406,8 @@ github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbS 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 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14= -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-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= @@ -271,12 +426,12 @@ github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG 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-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= -github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= -github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= -github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-playground/validator/v10 v10.2.0 h1:KgJ0snyC2R9VXYN2rneOtQcw5aHQB1Vv0sFl1UcHBOY= -github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= +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.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.10.0 h1:I7mrTYv78z8k8VXa/qJlOlEXn/nBh+BF8dHX5nt/dr0= +github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos= 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/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= @@ -285,22 +440,25 @@ github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= 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.7 h1:IcB+Aqpx/iMHu5Yooh7jEzJk1JZ7Pjtmys2ukPr7EeM= +github.com/goccy/go-json v0.9.7/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.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gofrs/uuid v4.2.0+incompatible h1:yyYWMnhkhrKwwr8gAOcOCYxOOscHgDS9yZgBrnJfGa0= +github.com/gofrs/uuid v4.3.0+incompatible h1:CaSVZxm5B+7o45rtab4jC2G37WGYX1zQfuU2i6DSvnc= github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= -github.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869 h1:kRpU4zq+Pzh4feET49aEWPOzwQy3U2SsbZEQ7QEcif0= 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/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= -github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= +github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= +github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/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= @@ -314,6 +472,7 @@ github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt 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.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= 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= @@ -332,8 +491,10 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= 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/snappy v0.0.0-20180518054509-2e65f85255db/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= @@ -354,6 +515,8 @@ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.4/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.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= @@ -363,7 +526,8 @@ github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPg 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/martian/v3 v3.2.1 h1:d8MncMlErDFTwQGBK1xhv026j9kqhvw1Qv9IbWT1VLQ= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= 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= @@ -376,17 +540,33 @@ github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hf 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-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/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.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.2.0 h1:y8Yozv7SZtlU//QXbezB6QkpuE6jMD2/gfzk4AftXjs= +github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= +github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= +github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= 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/gax-go/v2 v2.6.0 h1:SXk3ABtQYDT/OH8jAyvEOQ58mgawq5C4o/4/89qN2ZU= +github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= +github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= +github.com/googleapis/gax-go/v2 v2.7.0 h1:IcsPKeInNvYi7eqSaDjiZqDDKu5rsmunY0Y1YupQSSQ= +github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= 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= @@ -422,8 +602,8 @@ github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtng github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.6.2 h1:7jX7xcB+uVCliddZgeKyNxv0xoT7qL5KDtH7rU4IqIk= -github.com/hashicorp/go-getter v1.6.2/go.mod h1:IZCrswsZPeWv9IkVnLElzRU/gz/QPi6pZHn4tv6vbwA= +github.com/hashicorp/go-getter v1.7.1 h1:SWiSWN/42qdpR0MdhaOc/bLR48PLuP1ZQtYLRlM69uY= +github.com/hashicorp/go-getter v1.7.1/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= 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= @@ -438,7 +618,6 @@ github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdv github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= @@ -453,8 +632,8 @@ github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO 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/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 h1:aSVUgRRRtOrZOC1fYmY9gV0e9z/Iu+xNVSASWjsuyGU= -github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3/go.mod h1:5PC6ZNPde8bBqU/ewGZig35+UIZtw9Ytxez8/q5ZyFE= +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= github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c= github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U= @@ -470,7 +649,6 @@ github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7P github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/jhump/protoreflect v1.12.1-0.20220721211354-060cc04fc18b h1:izTof8BKh/nE1wrKOrloNA5q4odOarjf+Xpe+4qow98= -github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= @@ -498,22 +676,25 @@ github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQL github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.11.2/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/klauspost/compress v1.15.12 h1:YClS/PImqYbn+UILDnqxQCZ3RehC9N318SU3kElDUEM= -github.com/klauspost/compress v1.15.12/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= +github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= +github.com/klauspost/compress v1.16.3 h1:XuJt9zzcnaz6a16/OU53ZjWp/v7/42WcR5t2a0PcNQY= +github.com/klauspost/compress v1.16.3/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= 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.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= 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/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= -github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= +github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= @@ -527,12 +708,8 @@ github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPK github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -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= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -551,8 +728,9 @@ 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 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= 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= @@ -580,8 +758,8 @@ github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxzi github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= 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/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= @@ -596,7 +774,7 @@ github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1y github.com/onsi/gomega v1.20.0 h1:8W0cWlwFkflGPLltQvLRB7ZVD5HuP6ng320w2IS245Q= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= -github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799 h1:rc3tiVYb5z54aKaDfakKn0dDjIyPpTtszkjuMzyt7ec= +github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= @@ -615,6 +793,7 @@ github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtP 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.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= github.com/pelletier/go-toml/v2 v2.0.5 h1:ipoSadvV8oGUjnUbMub59IDPPwfxF694nG/jwbMiyQg= github.com/pelletier/go-toml/v2 v2.0.5/go.mod h1:OMHamSCAODeSsVrwwvcJOaoN0LIUIaFVNZzmWyNfXas= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= @@ -622,6 +801,7 @@ github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 h1:q2e307iGHPdTGp github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= 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/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= @@ -678,13 +858,12 @@ github.com/regen-network/gocuke v0.6.2 h1:pHviZ0kKAq2U2hN2q3smKNxct6hS0mGByFMHGn github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= 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.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= 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.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= -github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.28.0 h1:MirSo27VyNi7RJYP3078AA1+Cyzd2GB66qy3aUHvsWY= -github.com/rs/zerolog v1.28.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0= 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= @@ -742,20 +921,23 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= 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/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= +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/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= github.com/tendermint/tendermint v0.37.0-rc2 h1:2n1em+jfbhSv6QnBj8F6KHCpbIzZCB8KgcjidJUQNlY= github.com/tendermint/tendermint v0.37.0-rc2/go.mod h1:uYQO9DRNPeZROa9X3hJOZpYcVREDC2/HST+EiU5g2+A= github.com/tendermint/tm-db v0.6.7 h1:fE00Cbl0jayAoqlExN6oyQJ7fR/ZtoVOmvPJ//+shu8= github.com/tendermint/tm-db v0.6.7/go.mod h1:byQDzFkZV1syXr/ReXS808NxA2xvyuuVgXOJ/088L6I= -github.com/tidwall/btree v1.5.2 h1:5eA83Gfki799V3d3bJo9sWk+yL2LRoTEah3O/SA6/8w= -github.com/tidwall/btree v1.5.2/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= +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/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= @@ -764,13 +946,14 @@ github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= -github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go v1.2.7 h1:qYhyWUUd6WbiM+C6JZAUkIJt/1WrjzNHY9+KCIjVqTo= +github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= -github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/ulikunitz/xz v0.5.8 h1:ERv8V6GKqVi23rgu5cj9pVfVzJbOqAY2Ntl88O6c2nQ= -github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +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/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= +github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= 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/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= @@ -786,13 +969,14 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de 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/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zondax/hid v0.9.1 h1:gQe66rtmyZ8VeGFcOpbuH3r7erYtNEAezCAYu8LdkJo= github.com/zondax/hid v0.9.1/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= github.com/zondax/ledger-go v0.14.0 h1:dlMC7aO8Wss1CxBq2I96kZ69Nh1ligzbs8UWOtq/AsA= github.com/zondax/ledger-go v0.14.0/go.mod h1:fZ3Dqg6qcdXWSOJFKMG8GCTnD7slO/RL2feOQv8K320= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= -go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= +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/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= @@ -802,8 +986,9 @@ 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.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= 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= @@ -825,9 +1010,11 @@ golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.4.0 h1:UVQgzMY87xqpKNgb+kDsll2Igd33HszWHFLmpaRMq/8= -golang.org/x/crypto v0.4.0/go.mod h1:3quD/ATkf6oY+rnes5c3ExXTbLc8mueNue5/DoinL80= +golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= 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= @@ -839,8 +1026,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 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-20221019170559-20944726eadf h1:nFVjjKDgNY37+ZSYCJmtYf7tOlfQswHqplG2eosjOMg= -golang.org/x/exp v0.0.0-20221019170559-20944726eadf/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= 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= @@ -854,6 +1041,7 @@ golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRu 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/lint v0.0.0-20210508222113-6edffad5e616/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= @@ -865,6 +1053,8 @@ 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.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= 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= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -907,15 +1097,27 @@ golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/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-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-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.4.0 h1:Q5QPcMlvfxFTAPV0+07Xz/MpK9NTXu2VDUuy0FeMfaU= -golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= 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= @@ -925,10 +1127,24 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ 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/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 h1:nt+Q6cXKz4MosCSpnbMtqiQ8Oz0pxTef2B4Vca2lvfk= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= +golang.org/x/oauth2 v0.5.0 h1:HuArIo48skDwlrvM3sEdHXElYslAMsf3KwRkkW4MC4s= +golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= 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= @@ -940,6 +1156,9 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ 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.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -971,7 +1190,6 @@ golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7w 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-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -990,37 +1208,62 @@ golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7w 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-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/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-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/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-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/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-20210616094352-59db8d763f22/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-20210806184541-e5e7981a1069/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-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/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-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/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-20220517195934-5e4e11fc645e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/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-20220502124256-b6088ccd6cba/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-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/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.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ= -golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 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.3.0 h1:qoo4akIqOcDME5bhc/NgxUdovd6BSS2uMsVjB56q1xI= -golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.7.0 h1:BEvjmm5fURWqcfbSKTdpkDXYBrUS1c0m8agp14W48vQ= +golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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= @@ -1030,8 +1273,9 @@ 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.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM= -golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= 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= @@ -1093,10 +1337,19 @@ golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4f 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.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= 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= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= @@ -1119,8 +1372,37 @@ google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz513 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/api v0.102.0 h1:JxJl2qQ85fRMPNvlZY/enexbxpCjLwGhZUtgfGeQ51I= -google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= +google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= +google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= +google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= +google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= +google.golang.org/api v0.110.0 h1:l+rh0KYUooe9JGbGVx71tbFo4SMbMTXK3I3ia2QSEeU= +google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= 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= @@ -1170,10 +1452,76 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D 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-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/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-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= google.golang.org/genproto v0.0.0-20220314164441-57ef72a4c106/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6 h1:a2S6M0+660BgMNl++4JPlcAO/CjkqYItDEZwkoDQK7c= -google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= +google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= +google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= +google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= +google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44 h1:EfLuoKW5WfkgVdDy7dTK8qSbH37AX5mj/MFh+bGPz14= +google.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44/go.mod h1:8B0gmkoRebU8ukX6HP+4wrVQUY1+6PkQ44BSyIlflHA= 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.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -1198,10 +1546,26 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv 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.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.52.3 h1:pf7sOysg4LdgBqduXveGKrcEwbStiK2rtfghdzlUYDQ= -google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= +google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.54.0 h1:EhTqbhiYeixwWQtAEZAxmV9MGqcjEU2mFx52xCzNyag= +google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= 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= @@ -1215,14 +1579,17 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba 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.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= 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= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= @@ -1248,6 +1615,7 @@ 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.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= 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= @@ -1259,8 +1627,8 @@ honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= -pgregory.net/rapid v0.5.3 h1:163N50IHFqr1phZens4FQOdPgfJscR7a562mjQqeo4M= -pgregory.net/rapid v0.5.3/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= +pgregory.net/rapid v0.5.5 h1:jkgx1TjbQPD/feRoK+S/mXw9e1uj6WilpHrXJowi6oA= +pgregory.net/rapid v0.5.5/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= diff --git a/modules/coinswap/keeper/keeper.go b/modules/coinswap/keeper/keeper.go index 24296d99..203b5af3 100644 --- a/modules/coinswap/keeper/keeper.go +++ b/modules/coinswap/keeper/keeper.go @@ -6,8 +6,8 @@ import ( "strconv" sdkmath "cosmossdk.io/math" + "github.com/cometbft/cometbft/libs/log" gogotypes "github.com/gogo/protobuf/types" - "github.com/tendermint/tendermint/libs/log" "github.com/cosmos/cosmos-sdk/codec" storetypes "github.com/cosmos/cosmos-sdk/store/types" @@ -74,7 +74,8 @@ func (k Keeper) Swap(ctx sdk.Context, msg *types.MsgSwapOrder) error { var err error standardDenom := k.GetStandardDenom(ctx) - isDoubleSwap := (msg.Input.Coin.Denom != standardDenom) && (msg.Output.Coin.Denom != standardDenom) + isDoubleSwap := (msg.Input.Coin.Denom != standardDenom) && + (msg.Output.Coin.Denom != standardDenom) if msg.IsBuyOrder && isDoubleSwap { amount, err = k.doubleTradeInputForExactOutput(ctx, msg.Input, msg.Output) @@ -96,7 +97,10 @@ func (k Keeper) Swap(ctx sdk.Context, msg *types.MsgSwapOrder) error { sdk.NewAttribute(types.AttributeValueSender, msg.Input.Address), sdk.NewAttribute(types.AttributeValueRecipient, msg.Output.Address), sdk.NewAttribute(types.AttributeValueIsBuyOrder, strconv.FormatBool(msg.IsBuyOrder)), - sdk.NewAttribute(types.AttributeValueTokenPair, types.GetTokenPairByDenom(msg.Input.Coin.Denom, msg.Output.Coin.Denom)), + sdk.NewAttribute( + types.AttributeValueTokenPair, + types.GetTokenPairByDenom(msg.Input.Coin.Denom, msg.Output.Coin.Denom), + ), ), ) @@ -135,11 +139,24 @@ func (k Keeper) AddLiquidity(ctx sdk.Context, msg *types.MsgAddLiquidity) (sdk.C mintLiquidityAmt = msg.ExactStandardAmt if mintLiquidityAmt.LT(msg.MinLiquidity) { - return sdk.Coin{}, sdkerrors.Wrapf(types.ErrConstraintNotMet, "liquidity amount not met, user expected: no less than %s, actual: %s", msg.MinLiquidity.String(), mintLiquidityAmt.String()) + return sdk.Coin{}, sdkerrors.Wrapf( + types.ErrConstraintNotMet, + "liquidity amount not met, user expected: no less than %s, actual: %s", + msg.MinLiquidity.String(), + mintLiquidityAmt.String(), + ) } depositToken = sdk.NewCoin(msg.MaxToken.Denom, msg.MaxToken.Amount) pool = k.CreatePool(ctx, msg.MaxToken.Denom) - return k.addLiquidity(ctx, sender, pool.EscrowAddress, standardCoin, depositToken, pool.LptDenom, mintLiquidityAmt) + return k.addLiquidity( + ctx, + sender, + pool.EscrowAddress, + standardCoin, + depositToken, + pool.LptDenom, + mintLiquidityAmt, + ) } balances, err := k.GetPoolBalances(ctx, pool.EscrowAddress) @@ -151,10 +168,23 @@ func (k Keeper) AddLiquidity(ctx sdk.Context, msg *types.MsgAddLiquidity) (sdk.C if balances == nil || balances.IsZero() { mintLiquidityAmt = msg.ExactStandardAmt if mintLiquidityAmt.LT(msg.MinLiquidity) { - return sdk.Coin{}, sdkerrors.Wrapf(types.ErrConstraintNotMet, "liquidity amount not met, user expected: no less than %s, actual: %s", msg.MinLiquidity.String(), mintLiquidityAmt.String()) + return sdk.Coin{}, sdkerrors.Wrapf( + types.ErrConstraintNotMet, + "liquidity amount not met, user expected: no less than %s, actual: %s", + msg.MinLiquidity.String(), + mintLiquidityAmt.String(), + ) } depositToken = sdk.NewCoin(msg.MaxToken.Denom, msg.MaxToken.Amount) - return k.addLiquidity(ctx, sender, pool.EscrowAddress, standardCoin, depositToken, pool.LptDenom, mintLiquidityAmt) + return k.addLiquidity( + ctx, + sender, + pool.EscrowAddress, + standardCoin, + depositToken, + pool.LptDenom, + mintLiquidityAmt, + ) } // add liquidity @@ -168,16 +198,34 @@ func (k Keeper) AddLiquidity(ctx sdk.Context, msg *types.MsgAddLiquidity) (sdk.C mintLiquidityAmt = (liquidity.Mul(msg.ExactStandardAmt)).Quo(standardReserveAmt) if mintLiquidityAmt.LT(msg.MinLiquidity) { - return sdk.Coin{}, sdkerrors.Wrapf(types.ErrConstraintNotMet, "liquidity amount not met, user expected: no less than %s, actual: %s", msg.MinLiquidity.String(), mintLiquidityAmt.String()) + return sdk.Coin{}, sdkerrors.Wrapf( + types.ErrConstraintNotMet, + "liquidity amount not met, user expected: no less than %s, actual: %s", + msg.MinLiquidity.String(), + mintLiquidityAmt.String(), + ) } depositAmt := (tokenReserveAmt.Mul(msg.ExactStandardAmt)).Quo(standardReserveAmt).AddRaw(1) depositToken = sdk.NewCoin(msg.MaxToken.Denom, depositAmt) if depositAmt.GT(msg.MaxToken.Amount) { return sdk.Coin{}, - sdkerrors.Wrapf(types.ErrConstraintNotMet, "token amount not met, user expected: no more than %s, actual: %s", msg.MaxToken.String(), depositToken.String()) - } - return k.addLiquidity(ctx, sender, pool.EscrowAddress, standardCoin, depositToken, pool.LptDenom, mintLiquidityAmt) + sdkerrors.Wrapf( + types.ErrConstraintNotMet, + "token amount not met, user expected: no more than %s, actual: %s", + msg.MaxToken.String(), + depositToken.String(), + ) + } + return k.addLiquidity( + ctx, + sender, + pool.EscrowAddress, + standardCoin, + depositToken, + pool.LptDenom, + mintLiquidityAmt, + ) } func (k Keeper) addLiquidity(ctx sdk.Context, @@ -211,14 +259,20 @@ func (k Keeper) addLiquidity(ctx sdk.Context, sdk.NewEvent( types.EventTypeAddLiquidity, sdk.NewAttribute(types.AttributeValueSender, sender.String()), - sdk.NewAttribute(types.AttributeValueTokenPair, types.GetTokenPairByDenom(token.Denom, standardCoin.Denom)), + sdk.NewAttribute( + types.AttributeValueTokenPair, + types.GetTokenPairByDenom(token.Denom, standardCoin.Denom), + ), ), ) return mintToken, nil } // AddUnilateralLiquidity adds liquidity unilaterally to the specified pool -func (k Keeper) AddUnilateralLiquidity(ctx sdk.Context, msg *types.MsgAddUnilateralLiquidity) (sdk.Coin, error) { +func (k Keeper) AddUnilateralLiquidity( + ctx sdk.Context, + msg *types.MsgAddUnilateralLiquidity, +) (sdk.Coin, error) { sender, err := sdk.AccAddressFromBech32(msg.Sender) if err != nil { return sdk.Coin{}, err @@ -227,7 +281,11 @@ func (k Keeper) AddUnilateralLiquidity(ctx sdk.Context, msg *types.MsgAddUnilate poolID := types.GetPoolId(msg.CounterpartyDenom) pool, exist := k.GetPool(ctx, poolID) if !exist { - return sdk.Coin{}, sdkerrors.Wrapf(types.ErrReservePoolNotExists, "liquidity pool: %s ", poolID) + return sdk.Coin{}, sdkerrors.Wrapf( + types.ErrReservePoolNotExists, + "liquidity pool: %s ", + poolID, + ) } poolAddr, err := sdk.AccAddressFromBech32(pool.EscrowAddress) @@ -240,12 +298,21 @@ func (k Keeper) AddUnilateralLiquidity(ctx sdk.Context, msg *types.MsgAddUnilate return sdk.Coin{}, err } - if msg.ExactToken.Denom != msg.CounterpartyDenom && msg.ExactToken.Denom != k.GetStandardDenom(ctx) { - return sdk.Coin{}, sdkerrors.Wrapf(types.ErrInvalidDenom, "liquidity pool %s has no %s", poolID, msg.ExactToken.Denom) + if msg.ExactToken.Denom != msg.CounterpartyDenom && + msg.ExactToken.Denom != k.GetStandardDenom(ctx) { + return sdk.Coin{}, sdkerrors.Wrapf( + types.ErrInvalidDenom, + "liquidity pool %s has no %s", + poolID, + msg.ExactToken.Denom, + ) } if balances == nil || balances.IsZero() { - return sdk.Coin{}, sdkerrors.Wrapf(sdkerrors.ErrInvalidRequest, "When the liquidity is empty, can not add unilateral liquidity") + return sdk.Coin{}, sdkerrors.Wrapf( + sdkerrors.ErrInvalidRequest, + "When the liquidity is empty, can not add unilateral liquidity", + ) } // square = ( token_balance + ( 1- fee_unilateral ) * exact_token ) / token_balance * lpt_balance^2 @@ -258,7 +325,11 @@ func (k Keeper) AddUnilateralLiquidity(ctx sdk.Context, msg *types.MsgAddUnilate numerator := sdkmath.NewIntFromBigInt(deltaFeeUnilateral.BigInt()) denominator := sdkmath.NewIntWithDecimal(1, sdk.Precision) - square := denominator.Mul(tokenBalanceAmt).Add(numerator.Mul(exactTokenAmt)).Mul(lptBalanceAmt).Mul(lptBalanceAmt).Quo(denominator.Mul(tokenBalanceAmt)) + square := denominator.Mul(tokenBalanceAmt). + Add(numerator.Mul(exactTokenAmt)). + Mul(lptBalanceAmt). + Mul(lptBalanceAmt). + Quo(denominator.Mul(tokenBalanceAmt)) // lpt = square^0.5 - lpt_balance var squareBigInt = &big.Int{} @@ -266,7 +337,12 @@ func (k Keeper) AddUnilateralLiquidity(ctx sdk.Context, msg *types.MsgAddUnilate mintLptAmt := sdkmath.NewIntFromBigInt(squareBigInt).Sub(lptBalanceAmt) if mintLptAmt.LT(msg.MinLiquidity) { - return sdk.Coin{}, sdkerrors.Wrapf(types.ErrConstraintNotMet, "liquidity amount not met, user expected: no less than %s, actual: %s", msg.MinLiquidity.String(), mintLptAmt.String()) + return sdk.Coin{}, sdkerrors.Wrapf( + types.ErrConstraintNotMet, + "liquidity amount not met, user expected: no less than %s, actual: %s", + msg.MinLiquidity.String(), + mintLptAmt.String(), + ) } // event @@ -279,7 +355,14 @@ func (k Keeper) AddUnilateralLiquidity(ctx sdk.Context, msg *types.MsgAddUnilate ), ) - return k.addUnilateralLiquidity(ctx, sender, poolAddr, msg.ExactToken, pool.LptDenom, mintLptAmt) + return k.addUnilateralLiquidity( + ctx, + sender, + poolAddr, + msg.ExactToken, + pool.LptDenom, + mintLptAmt, + ) } func (k Keeper) addUnilateralLiquidity(ctx sdk.Context, @@ -319,7 +402,11 @@ func (k Keeper) RemoveLiquidity(ctx sdk.Context, msg *types.MsgRemoveLiquidity) pool, exists := k.GetPoolByLptDenom(ctx, msg.WithdrawLiquidity.Denom) if !exists { - return nil, sdkerrors.Wrapf(types.ErrReservePoolNotExists, "liquidity pool token: %s", msg.WithdrawLiquidity.Denom) + return nil, sdkerrors.Wrapf( + types.ErrReservePoolNotExists, + "liquidity pool token: %s", + msg.WithdrawLiquidity.Denom, + ) } balances, err := k.GetPoolBalances(ctx, pool.EscrowAddress) @@ -334,13 +421,31 @@ func (k Keeper) RemoveLiquidity(ctx sdk.Context, msg *types.MsgRemoveLiquidity) tokenReserveAmt := balances.AmountOf(minTokenDenom) liquidityReserve := k.bk.GetSupply(ctx, lptDenom).Amount if standardReserveAmt.LT(msg.MinStandardAmt) { - return nil, sdkerrors.Wrapf(types.ErrInsufficientFunds, "insufficient %s funds, user expected: %s, actual: %s", standardDenom, msg.MinStandardAmt.String(), standardReserveAmt.String()) + return nil, sdkerrors.Wrapf( + types.ErrInsufficientFunds, + "insufficient %s funds, user expected: %s, actual: %s", + standardDenom, + msg.MinStandardAmt.String(), + standardReserveAmt.String(), + ) } if tokenReserveAmt.LT(msg.MinToken) { - return nil, sdkerrors.Wrapf(types.ErrInsufficientFunds, "insufficient %s funds, user expected: %s, actual: %s", minTokenDenom, msg.MinToken.String(), tokenReserveAmt.String()) + return nil, sdkerrors.Wrapf( + types.ErrInsufficientFunds, + "insufficient %s funds, user expected: %s, actual: %s", + minTokenDenom, + msg.MinToken.String(), + tokenReserveAmt.String(), + ) } if liquidityReserve.LT(msg.WithdrawLiquidity.Amount) { - return nil, sdkerrors.Wrapf(types.ErrInsufficientFunds, "insufficient %s funds, user expected: %s, actual: %s", lptDenom, msg.WithdrawLiquidity.Amount.String(), liquidityReserve.String()) + return nil, sdkerrors.Wrapf( + types.ErrInsufficientFunds, + "insufficient %s funds, user expected: %s, actual: %s", + lptDenom, + msg.WithdrawLiquidity.Amount.String(), + liquidityReserve.String(), + ) } // calculate amount of UNI to be burned for sender @@ -353,17 +458,30 @@ func (k Keeper) RemoveLiquidity(ctx sdk.Context, msg *types.MsgRemoveLiquidity) deductUniCoin := msg.WithdrawLiquidity if irisWithdrawCoin.Amount.LT(msg.MinStandardAmt) { - return nil, sdkerrors.Wrapf(types.ErrConstraintNotMet, "iris amount not met, user expected: no less than %s, actual: %s", sdk.NewCoin(standardDenom, msg.MinStandardAmt).String(), irisWithdrawCoin.String()) + return nil, sdkerrors.Wrapf( + types.ErrConstraintNotMet, + "iris amount not met, user expected: no less than %s, actual: %s", + sdk.NewCoin(standardDenom, msg.MinStandardAmt).String(), + irisWithdrawCoin.String(), + ) } if tokenWithdrawCoin.Amount.LT(msg.MinToken) { - return nil, sdkerrors.Wrapf(types.ErrConstraintNotMet, "token amount not met, user expected: no less than %s, actual: %s", sdk.NewCoin(minTokenDenom, msg.MinToken).String(), tokenWithdrawCoin.String()) + return nil, sdkerrors.Wrapf( + types.ErrConstraintNotMet, + "token amount not met, user expected: no less than %s, actual: %s", + sdk.NewCoin(minTokenDenom, msg.MinToken).String(), + tokenWithdrawCoin.String(), + ) } ctx.EventManager().EmitEvent( sdk.NewEvent( types.EventTypeRemoveLiquidity, sdk.NewAttribute(types.AttributeValueSender, msg.Sender), - sdk.NewAttribute(types.AttributeValueTokenPair, types.GetTokenPairByDenom(minTokenDenom, standardDenom)), + sdk.NewAttribute( + types.AttributeValueTokenPair, + types.GetTokenPairByDenom(minTokenDenom, standardDenom), + ), ), ) @@ -372,10 +490,21 @@ func (k Keeper) RemoveLiquidity(ctx sdk.Context, msg *types.MsgRemoveLiquidity) return nil, err } - return k.removeLiquidity(ctx, poolAddr, sender, deductUniCoin, irisWithdrawCoin, tokenWithdrawCoin) + return k.removeLiquidity( + ctx, + poolAddr, + sender, + deductUniCoin, + irisWithdrawCoin, + tokenWithdrawCoin, + ) } -func (k Keeper) removeLiquidity(ctx sdk.Context, poolAddr, sender sdk.AccAddress, deductUniCoin, irisWithdrawCoin, tokenWithdrawCoin sdk.Coin) (sdk.Coins, error) { +func (k Keeper) removeLiquidity( + ctx sdk.Context, + poolAddr, sender sdk.AccAddress, + deductUniCoin, irisWithdrawCoin, tokenWithdrawCoin sdk.Coin, +) (sdk.Coins, error) { deltaCoins := sdk.NewCoins(deductUniCoin) // send liquidity vouchers to be burned from sender account to module account @@ -394,7 +523,10 @@ func (k Keeper) removeLiquidity(ctx sdk.Context, poolAddr, sender sdk.AccAddress } // RemoveUnilateralLiquidity removes liquidity unilaterally from the specified pool -func (k Keeper) RemoveUnilateralLiquidity(ctx sdk.Context, msg *types.MsgRemoveUnilateralLiquidity) (sdk.Coins, error) { +func (k Keeper) RemoveUnilateralLiquidity( + ctx sdk.Context, + msg *types.MsgRemoveUnilateralLiquidity, +) (sdk.Coins, error) { var targetTokenDenom string sender, err := sdk.AccAddressFromBech32(msg.Sender) @@ -405,7 +537,11 @@ func (k Keeper) RemoveUnilateralLiquidity(ctx sdk.Context, msg *types.MsgRemoveU poolID := types.GetPoolId(msg.CounterpartyDenom) pool, exist := k.GetPool(ctx, poolID) if !exist { - return sdk.Coins{}, sdkerrors.Wrapf(types.ErrReservePoolNotExists, "liquidity pool: %s ", poolID) + return sdk.Coins{}, sdkerrors.Wrapf( + types.ErrReservePoolNotExists, + "liquidity pool: %s ", + poolID, + ) } poolAddr, err := sdk.AccAddressFromBech32(pool.EscrowAddress) @@ -418,7 +554,8 @@ func (k Keeper) RemoveUnilateralLiquidity(ctx sdk.Context, msg *types.MsgRemoveU return sdk.Coins{}, err } - if msg.MinToken.Denom != msg.CounterpartyDenom && msg.MinToken.Denom != k.GetStandardDenom(ctx) { + if msg.MinToken.Denom != msg.CounterpartyDenom && + msg.MinToken.Denom != k.GetStandardDenom(ctx) { return sdk.Coins{}, sdkerrors.Wrapf(types.ErrInvalidDenom, "liquidity pool %s has no %s", poolID, msg.MinToken.Denom) } @@ -436,8 +573,11 @@ func (k Keeper) RemoveUnilateralLiquidity(ctx sdk.Context, msg *types.MsgRemoveU } if lptBalanceAmt.Equal(msg.ExactLiquidity) { - return sdk.Coins{}, sdkerrors.Wrapf(types.ErrConstraintNotMet, - "forbid to withdraw all liquidity unilaterally, should be less than: %s", lptBalanceAmt.String()) + return sdk.Coins{}, sdkerrors.Wrapf( + types.ErrConstraintNotMet, + "forbid to withdraw all liquidity unilaterally, should be less than: %s", + lptBalanceAmt.String(), + ) } if targetBalanceAmt.LT(msg.MinToken.Amount) { @@ -486,7 +626,15 @@ func (k Keeper) RemoveUnilateralLiquidity(ctx sdk.Context, msg *types.MsgRemoveU ), ) - return k.removeUnilateralLiquidity(ctx, sender, poolAddr, lptDenom, targetTokenDenom, msg.ExactLiquidity, targetTokenAmtAfterFee) + return k.removeUnilateralLiquidity( + ctx, + sender, + poolAddr, + lptDenom, + targetTokenDenom, + msg.ExactLiquidity, + targetTokenAmtAfterFee, + ) } func (k Keeper) removeUnilateralLiquidity(ctx sdk.Context, diff --git a/modules/coinswap/keeper/keeper_test.go b/modules/coinswap/keeper/keeper_test.go index 6e088685..895ff9c8 100644 --- a/modules/coinswap/keeper/keeper_test.go +++ b/modules/coinswap/keeper/keeper_test.go @@ -6,8 +6,8 @@ import ( "github.com/stretchr/testify/suite" - "github.com/tendermint/tendermint/crypto/tmhash" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + "github.com/cometbft/cometbft/crypto/tmhash" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdkmath "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/baseapp" @@ -115,7 +115,13 @@ func (suite *TestSuite) TestLiquidity() { minReward := sdkmath.NewInt(1) deadline := time.Now().Add(1 * time.Minute) - msg := types.NewMsgAddLiquidity(depositCoin, standardAmt, minReward, deadline.Unix(), addrSender1.String()) + msg := types.NewMsgAddLiquidity( + depositCoin, + standardAmt, + minReward, + deadline.Unix(), + addrSender1.String(), + ) _, err := suite.app.CoinswapKeeper.AddLiquidity(suite.ctx, msg) suite.NoError(err) @@ -130,7 +136,10 @@ func (suite *TestSuite) TestLiquidity() { reservePoolBalances := suite.app.BankKeeper.GetAllBalances(suite.ctx, poolAddr) sender1Balances := suite.app.BankKeeper.GetAllBalances(suite.ctx, addrSender1) - suite.Equal("10000000000000000000", suite.app.BankKeeper.GetSupply(suite.ctx, lptDenom).Amount.String()) + suite.Equal( + "10000000000000000000", + suite.app.BankKeeper.GetSupply(suite.ctx, lptDenom).Amount.String(), + ) expCoins := sdk.NewCoins( sdk.NewInt64Coin(denomBTC, 100), @@ -140,13 +149,20 @@ func (suite *TestSuite) TestLiquidity() { expCoins = sdk.NewCoins( sdk.NewInt64Coin(denomBTC, 2999999900), - sdk.NewCoin(denomStandard, sdkmath.NewIntWithDecimal(2, 19).Sub(sdk.NewIntFromUint64(5000))), + sdk.NewCoin( + denomStandard, + sdkmath.NewIntWithDecimal(2, 19).Sub(sdk.NewIntFromUint64(5000)), + ), sdk.NewCoin(lptDenom, sdkmath.NewIntWithDecimal(1, 19)), ) suite.Equal(expCoins.Sort().String(), sender1Balances.Sort().String()) // test add liquidity (pool exists) - expLptDenom, _ := suite.app.CoinswapKeeper.GetLptDenomFromDenoms(suite.ctx, denomBTC, denomStandard) + expLptDenom, _ := suite.app.CoinswapKeeper.GetLptDenomFromDenoms( + suite.ctx, + denomBTC, + denomStandard, + ) suite.Require().Equal(expLptDenom, lptDenom) btcAmt, _ = sdkmath.NewIntFromString("201") standardAmt, _ = sdkmath.NewIntFromString("20000000000000000000") @@ -154,13 +170,22 @@ func (suite *TestSuite) TestLiquidity() { minReward = sdkmath.NewInt(1) deadline = time.Now().Add(1 * time.Minute) - msg = types.NewMsgAddLiquidity(depositCoin, standardAmt, minReward, deadline.Unix(), addrSender2.String()) + msg = types.NewMsgAddLiquidity( + depositCoin, + standardAmt, + minReward, + deadline.Unix(), + addrSender2.String(), + ) _, err = suite.app.CoinswapKeeper.AddLiquidity(suite.ctx, msg) suite.NoError(err) reservePoolBalances = suite.app.BankKeeper.GetAllBalances(suite.ctx, poolAddr) sender2Balances := suite.app.BankKeeper.GetAllBalances(suite.ctx, addrSender2) - suite.Equal("30000000000000000000", suite.app.BankKeeper.GetSupply(suite.ctx, lptDenom).Amount.String()) + suite.Equal( + "30000000000000000000", + suite.app.BankKeeper.GetSupply(suite.ctx, lptDenom).Amount.String(), + ) expCoins = sdk.NewCoins( sdk.NewInt64Coin(denomBTC, 301), @@ -190,11 +215,17 @@ func (suite *TestSuite) TestLiquidity() { reservePoolBalances = suite.app.BankKeeper.GetAllBalances(suite.ctx, poolAddr) sender1Balances = suite.app.BankKeeper.GetAllBalances(suite.ctx, addrSender1) - suite.Equal("20000000000000000000", suite.app.BankKeeper.GetSupply(suite.ctx, lptDenom).Amount.String()) + suite.Equal( + "20000000000000000000", + suite.app.BankKeeper.GetSupply(suite.ctx, lptDenom).Amount.String(), + ) expCoins = sdk.NewCoins( sdk.NewInt64Coin(denomBTC, 3000000000), - sdk.NewCoin(denomStandard, sdkmath.NewIntWithDecimal(3, 19).Sub(sdk.NewIntFromUint64(5000))), + sdk.NewCoin( + denomStandard, + sdkmath.NewIntWithDecimal(3, 19).Sub(sdk.NewIntFromUint64(5000)), + ), ) suite.Equal(expCoins.Sort().String(), sender1Balances.Sort().String()) @@ -223,7 +254,10 @@ func (suite *TestSuite) TestLiquidity() { expCoins = sdk.NewCoins( sdk.NewInt64Coin(denomBTC, 3000000000), - sdk.NewCoin(denomStandard, sdkmath.NewIntWithDecimal(3, 19).Sub(sdkmath.NewIntFromUint64(5000))), + sdk.NewCoin( + denomStandard, + sdkmath.NewIntWithDecimal(3, 19).Sub(sdkmath.NewIntFromUint64(5000)), + ), ) suite.Equal(expCoins.Sort().String(), sender1Balances.Sort().String()) suite.Equal("", reservePoolBalances.String()) @@ -254,7 +288,10 @@ func (suite *TestSuite) TestLiquidity2() { // 1.1 lptAmt reservePoolBalances := suite.app.BankKeeper.GetAllBalances(suite.ctx, poolAddr) sender1Balances := suite.app.BankKeeper.GetAllBalances(suite.ctx, addrSender1) - suite.Equal("10000000000000000000", suite.app.BankKeeper.GetSupply(suite.ctx, pool.LptDenom).Amount.String()) + suite.Equal( + "10000000000000000000", + suite.app.BankKeeper.GetSupply(suite.ctx, pool.LptDenom).Amount.String(), + ) // 1.2 poolBalances expCoins := sdk.NewCoins( @@ -265,9 +302,18 @@ func (suite *TestSuite) TestLiquidity2() { // 1.3 accountBalances expCoins = sdk.NewCoins( - sdk.NewInt64Coin(denomBTC, 2999999900), // 3*10^9 - 100 - sdk.NewCoin(denomStandard, sdkmath.NewIntWithDecimal(2, 19).Sub(sdk.NewIntFromUint64(5000))), // 2*10^19 - 5000 - sdk.NewCoin(pool.LptDenom, sdkmath.NewIntWithDecimal(1, 19)), // 10^19 + sdk.NewInt64Coin( + denomBTC, + 2999999900, + ), // 3*10^9 - 100 + sdk.NewCoin( + denomStandard, + sdkmath.NewIntWithDecimal(2, 19).Sub(sdk.NewIntFromUint64(5000)), + ), // 2*10^19 - 5000 + sdk.NewCoin( + pool.LptDenom, + sdkmath.NewIntWithDecimal(1, 19), + ), // 10^19 ) suite.Equal(expCoins.Sort().String(), sender1Balances.Sort().String()) @@ -288,7 +334,10 @@ func (suite *TestSuite) TestLiquidity2() { // 2.1 lptAmt reservePoolBalances = suite.app.BankKeeper.GetAllBalances(suite.ctx, poolAddr) sender2Balances := suite.app.BankKeeper.GetAllBalances(suite.ctx, addrSender2) - suite.Equal("14135062787267695755", suite.app.BankKeeper.GetSupply(suite.ctx, pool.LptDenom).Amount.String()) // todo theoretical lpt ammount + suite.Equal( + "14135062787267695755", + suite.app.BankKeeper.GetSupply(suite.ctx, pool.LptDenom).Amount.String(), + ) // todo theoretical lpt ammount // 2.2 poolBalances expCoins = sdk.NewCoins( @@ -332,7 +381,10 @@ func (suite *TestSuite) TestLiquidity3() { // 1.1 lptAmt reservePoolBalances := suite.app.BankKeeper.GetAllBalances(suite.ctx, poolAddr) sender1Balances := suite.app.BankKeeper.GetAllBalances(suite.ctx, addrSender1) - suite.Equal("10000000000000000000", suite.app.BankKeeper.GetSupply(suite.ctx, pool.LptDenom).Amount.String()) + suite.Equal( + "10000000000000000000", + suite.app.BankKeeper.GetSupply(suite.ctx, pool.LptDenom).Amount.String(), + ) // 1.2 poolBalances expCoins := sdk.NewCoins( @@ -343,9 +395,18 @@ func (suite *TestSuite) TestLiquidity3() { // 1.3 accountBalances expCoins = sdk.NewCoins( - sdk.NewInt64Coin(denomBTC, 2999999900), // 3*10^9 - 100 - sdk.NewCoin(denomStandard, sdkmath.NewIntWithDecimal(2, 19).Sub(sdk.NewIntFromUint64(5000))), // 2*10^19 - 5000 - sdk.NewCoin(pool.LptDenom, sdkmath.NewIntWithDecimal(1, 19)), // 10^19 + sdk.NewInt64Coin( + denomBTC, + 2999999900, + ), // 3*10^9 - 100 + sdk.NewCoin( + denomStandard, + sdkmath.NewIntWithDecimal(2, 19).Sub(sdk.NewIntFromUint64(5000)), + ), // 2*10^19 - 5000 + sdk.NewCoin( + pool.LptDenom, + sdkmath.NewIntWithDecimal(1, 19), + ), // 10^19 ) suite.Equal(expCoins.Sort().String(), sender1Balances.Sort().String()) @@ -366,7 +427,10 @@ func (suite *TestSuite) TestLiquidity3() { // 2.1 lptAmt reservePoolBalances = suite.app.BankKeeper.GetAllBalances(suite.ctx, poolAddr) sender1Balances = suite.app.BankKeeper.GetAllBalances(suite.ctx, addrSender1) - suite.Equal("5000000000000000000", suite.app.BankKeeper.GetSupply(suite.ctx, pool.LptDenom).Amount.String()) + suite.Equal( + "5000000000000000000", + suite.app.BankKeeper.GetSupply(suite.ctx, pool.LptDenom).Amount.String(), + ) // 2.2 poolBalances expCoins = sdk.NewCoins( diff --git a/modules/coinswap/migrations/v1/migrate_test.go b/modules/coinswap/migrations/v1/migrate_test.go index 7baa3bb1..34e1a4f4 100644 --- a/modules/coinswap/migrations/v1/migrate_test.go +++ b/modules/coinswap/migrations/v1/migrate_test.go @@ -3,9 +3,9 @@ package v1_test import ( "testing" + "github.com/cometbft/cometbft/crypto/tmhash" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/stretchr/testify/assert" - "github.com/tendermint/tendermint/crypto/tmhash" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" @@ -107,7 +107,14 @@ func setupWithGenesisAccounts(t *testing.T) (*simapp.SimApp, verifyFunc) { } genAccs := []authtypes.GenesisAccount{senderAcc1, senderAcc2, poolBTCAcc, poolETHAcc} - app := simapp.SetupWithGenesisAccounts(t, genAccs, sender1Balances, sender2Balances, poolBTCBalances, poolETHBalances) + app := simapp.SetupWithGenesisAccounts( + t, + genAccs, + sender1Balances, + sender2Balances, + poolBTCBalances, + poolETHBalances, + ) verify := func(ctx sdk.Context, t *testing.T) { ethPoolId := coinswaptypes.GetPoolId(denomETH) diff --git a/modules/coinswap/migrations/v1/types.go b/modules/coinswap/migrations/v1/types.go index caa706aa..b8fa5a19 100644 --- a/modules/coinswap/migrations/v1/types.go +++ b/modules/coinswap/migrations/v1/types.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "github.com/tendermint/tendermint/crypto" + "github.com/cometbft/cometbft/crypto" sdk "github.com/cosmos/cosmos-sdk/types" ) diff --git a/modules/coinswap/module.go b/modules/coinswap/module.go index 4f114907..3178c8d2 100644 --- a/modules/coinswap/module.go +++ b/modules/coinswap/module.go @@ -8,7 +8,7 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" - abci "github.com/tendermint/tendermint/abci/types" + abci "github.com/cometbft/cometbft/abci/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" @@ -47,7 +47,11 @@ func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { } // ValidateGenesis performs genesis state validation for the coinswap module. -func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error { +func (AppModuleBasic) ValidateGenesis( + cdc codec.JSONCodec, + config client.TxEncodingConfig, + bz json.RawMessage, +) error { var data types.GenesisState if err := cdc.UnmarshalJSON(bz, &data); err != nil { return fmt.Errorf("failed to unmarshal %s genesis state: %w", types.ModuleName, err) @@ -88,7 +92,12 @@ type AppModule struct { } // NewAppModule creates a new AppModule object -func NewAppModule(cdc codec.Codec, keeper keeper.Keeper, accountKeeper types.AccountKeeper, bankKeeper types.BankKeeper) AppModule { +func NewAppModule( + cdc codec.Codec, + keeper keeper.Keeper, + accountKeeper types.AccountKeeper, + bankKeeper types.BankKeeper, +) AppModule { return AppModule{ AppModuleBasic: AppModuleBasic{cdc: cdc}, keeper: keeper, @@ -124,7 +133,11 @@ func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {} // InitGenesis performs genesis initialization for the coinswap module. It returns // no validator updates. -func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { +func (am AppModule) InitGenesis( + ctx sdk.Context, + cdc codec.JSONCodec, + data json.RawMessage, +) []abci.ValidatorUpdate { var genesisState types.GenesisState cdc.MustUnmarshalJSON(data, &genesisState) am.keeper.InitGenesis(ctx, genesisState) @@ -155,6 +168,14 @@ func (am AppModule) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry) { } // WeightedOperations returns the all the coinswap module operations with their respective weights. -func (am AppModule) WeightedOperations(simState module.SimulationState) []simtypes.WeightedOperation { - return simulation.WeightedOperations(simState.AppParams, simState.Cdc, am.keeper, am.accountKeeper, am.bankKeeper) +func (am AppModule) WeightedOperations( + simState module.SimulationState, +) []simtypes.WeightedOperation { + return simulation.WeightedOperations( + simState.AppParams, + simState.Cdc, + am.keeper, + am.accountKeeper, + am.bankKeeper, + ) } diff --git a/modules/coinswap/types/msgs_test.go b/modules/coinswap/types/msgs_test.go index 8441f48a..e27de0be 100644 --- a/modules/coinswap/types/msgs_test.go +++ b/modules/coinswap/types/msgs_test.go @@ -4,8 +4,8 @@ import ( "testing" sdkmath "cosmossdk.io/math" + "github.com/cometbft/cometbft/crypto/tmhash" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/tendermint/tendermint/crypto/tmhash" ) var ( @@ -24,13 +24,76 @@ func TestMsgSwapOrder_ValidateBasic(t *testing.T) { fields fields wantErr bool }{ - {name: "right test case", wantErr: false, fields: fields{IsBuyOrder: true, Deadline: 10, Input: Input{Address: sender, Coin: buildCoin("stake", 1000)}, Output: Output{Address: sender, Coin: buildCoin("iris", 1000)}}}, - {name: "invalid input sender", wantErr: true, fields: fields{IsBuyOrder: true, Deadline: 10, Input: Input{Address: "", Coin: buildCoin("stake", 1000)}, Output: Output{Address: sender, Coin: buildCoin("iris", 1000)}}}, - {name: "invalid input coin denom", wantErr: true, fields: fields{IsBuyOrder: true, Deadline: 10, Input: Input{Address: sender, Coin: buildCoin("131stake", 1000)}, Output: Output{Address: sender, Coin: buildCoin("iris", 1000)}}}, - {name: "invalid input coin amount", wantErr: true, fields: fields{IsBuyOrder: true, Deadline: 10, Input: Input{Address: sender, Coin: buildCoin("stake", -1000)}, Output: Output{Address: sender, Coin: buildCoin("iris", 1000)}}}, - {name: "invalid output sender", wantErr: true, fields: fields{IsBuyOrder: true, Deadline: 10, Input: Input{Address: sender, Coin: buildCoin("stake", 1000)}, Output: Output{Address: "", Coin: buildCoin("iris", 1000)}}}, - {name: "invalid output coin denom", wantErr: true, fields: fields{IsBuyOrder: true, Deadline: 10, Input: Input{Address: sender, Coin: buildCoin("stake", 1000)}, Output: Output{Address: sender, Coin: buildCoin("131iris", 1000)}}}, - {name: "invalid output coin amount", wantErr: true, fields: fields{IsBuyOrder: true, Deadline: 10, Input: Input{Address: sender, Coin: buildCoin("stake", 1000)}, Output: Output{Address: sender, Coin: buildCoin("iris", -1000)}}}, + { + name: "right test case", + wantErr: false, + fields: fields{ + IsBuyOrder: true, + Deadline: 10, + Input: Input{Address: sender, Coin: buildCoin("stake", 1000)}, + Output: Output{Address: sender, Coin: buildCoin("iris", 1000)}, + }, + }, + { + name: "invalid input sender", + wantErr: true, + fields: fields{ + IsBuyOrder: true, + Deadline: 10, + Input: Input{Address: "", Coin: buildCoin("stake", 1000)}, + Output: Output{Address: sender, Coin: buildCoin("iris", 1000)}, + }, + }, + { + name: "invalid input coin denom", + wantErr: true, + fields: fields{ + IsBuyOrder: true, + Deadline: 10, + Input: Input{Address: sender, Coin: buildCoin("131stake", 1000)}, + Output: Output{Address: sender, Coin: buildCoin("iris", 1000)}, + }, + }, + { + name: "invalid input coin amount", + wantErr: true, + fields: fields{ + IsBuyOrder: true, + Deadline: 10, + Input: Input{Address: sender, Coin: buildCoin("stake", -1000)}, + Output: Output{Address: sender, Coin: buildCoin("iris", 1000)}, + }, + }, + { + name: "invalid output sender", + wantErr: true, + fields: fields{ + IsBuyOrder: true, + Deadline: 10, + Input: Input{Address: sender, Coin: buildCoin("stake", 1000)}, + Output: Output{Address: "", Coin: buildCoin("iris", 1000)}, + }, + }, + { + name: "invalid output coin denom", + wantErr: true, + fields: fields{ + IsBuyOrder: true, + Deadline: 10, + Input: Input{Address: sender, Coin: buildCoin("stake", 1000)}, + Output: Output{Address: sender, Coin: buildCoin("131iris", 1000)}, + }, + }, + { + name: "invalid output coin amount", + wantErr: true, + fields: fields{ + IsBuyOrder: true, + Deadline: 10, + Input: Input{Address: sender, Coin: buildCoin("stake", 1000)}, + Output: Output{Address: sender, Coin: buildCoin("iris", -1000)}, + }, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { @@ -233,7 +296,11 @@ func TestMsgRemoveLiquidity_ValidateBasic(t *testing.T) { Sender: tt.fields.Sender, } if err := msg.ValidateBasic(); (err != nil) != tt.wantErr { - t.Errorf("MsgRemoveLiquidity.ValidateBasic() error = %v, wantErr %v", err, tt.wantErr) + t.Errorf( + "MsgRemoveLiquidity.ValidateBasic() error = %v, wantErr %v", + err, + tt.wantErr, + ) } }) } @@ -329,7 +396,11 @@ func TestMsgAddUnilateralLiquidity_ValidateBasic(t *testing.T) { Sender: tt.fields.Sender, } if err := msg.ValidateBasic(); (err != nil) != tt.wantErr { - t.Errorf("MsgAddUnilateralLiquidity.ValidateBasic() error = %v, wantErr %v", err, tt.wantErr) + t.Errorf( + "MsgAddUnilateralLiquidity.ValidateBasic() error = %v, wantErr %v", + err, + tt.wantErr, + ) } }) } @@ -425,7 +496,11 @@ func TestMsgRemoveUnilateralLiquidity_ValidateBasic(t *testing.T) { Sender: tt.fields.Sender, } if err := msg.ValidateBasic(); (err != nil) != tt.wantErr { - t.Errorf("MsgRemoveLiquidity.ValidateBasic() error = %v, wantErr %v", err, tt.wantErr) + t.Errorf( + "MsgRemoveLiquidity.ValidateBasic() error = %v, wantErr %v", + err, + tt.wantErr, + ) } }) } diff --git a/modules/coinswap/types/utils.go b/modules/coinswap/types/utils.go index 7037c070..65f63993 100644 --- a/modules/coinswap/types/utils.go +++ b/modules/coinswap/types/utils.go @@ -5,7 +5,7 @@ import ( "strconv" "strings" - "github.com/tendermint/tendermint/crypto" + "github.com/cometbft/cometbft/crypto" sdk "github.com/cosmos/cosmos-sdk/types" ) diff --git a/modules/farm/client/testutil/test_helper.go b/modules/farm/client/testutil/test_helper.go index 025fbced..2756a3af 100644 --- a/modules/farm/client/testutil/test_helper.go +++ b/modules/farm/client/testutil/test_helper.go @@ -4,7 +4,7 @@ import ( "fmt" "testing" - "github.com/tendermint/tendermint/libs/cli" + "github.com/cometbft/cometbft/libs/cli" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" @@ -25,7 +25,12 @@ func CreateFarmPoolExec(t *testing.T, network simapp.Network, clientCtx client.C return network.ExecTxCmdWithResult(t, clientCtx, farmcli.GetCmdCreateFarmPool(), args) } -func QueryFarmPoolsExec(t *testing.T, network simapp.Network, clientCtx client.Context, extraArgs ...string) *farmtypes.QueryFarmPoolsResponse { +func QueryFarmPoolsExec( + t *testing.T, + network simapp.Network, + clientCtx client.Context, + extraArgs ...string, +) *farmtypes.QueryFarmPoolsResponse { args := []string{ fmt.Sprintf("--%s=json", cli.OutputFlag), } @@ -36,7 +41,13 @@ func QueryFarmPoolsExec(t *testing.T, network simapp.Network, clientCtx client.C return response } -func QueryFarmPoolExec(t *testing.T, network simapp.Network, clientCtx client.Context, poolId string, extraArgs ...string) *farmtypes.QueryFarmPoolResponse { +func QueryFarmPoolExec( + t *testing.T, + network simapp.Network, + clientCtx client.Context, + poolId string, + extraArgs ...string, +) *farmtypes.QueryFarmPoolResponse { args := []string{ poolId, fmt.Sprintf("--%s=json", cli.OutputFlag), diff --git a/modules/farm/keeper/keeper.go b/modules/farm/keeper/keeper.go index 199c0a86..4e172639 100644 --- a/modules/farm/keeper/keeper.go +++ b/modules/farm/keeper/keeper.go @@ -3,7 +3,7 @@ package keeper import ( "fmt" - "github.com/tendermint/tendermint/libs/log" + "github.com/cometbft/cometbft/libs/log" "github.com/cosmos/cosmos-sdk/codec" storetypes "github.com/cosmos/cosmos-sdk/store/types" diff --git a/modules/farm/keeper/keeper_test.go b/modules/farm/keeper/keeper_test.go index 1fbc921b..af70efbe 100644 --- a/modules/farm/keeper/keeper_test.go +++ b/modules/farm/keeper/keeper_test.go @@ -3,7 +3,7 @@ package keeper_test import ( "testing" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" @@ -259,27 +259,37 @@ func (suite *KeeperTestSuite) TestStake() { rewardPerShare: sdk.ZeroDec(), }, { - height: 200, - stakeCoin: lpToken, - locked: lpToken.Amount.MulRaw(2), - expectReward: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100_000_000))), - debt: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(200_000_000))), + height: 200, + stakeCoin: lpToken, + locked: lpToken.Amount.MulRaw(2), + expectReward: sdk.NewCoins( + sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100_000_000)), + ), + debt: sdk.NewCoins( + sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(200_000_000)), + ), rewardPerShare: sdk.NewDecFromIntWithPrec(sdk.NewInt(1), 0), }, { - height: 300, - stakeCoin: lpToken, - locked: lpToken.Amount.MulRaw(3), - expectReward: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100_000_000))), - debt: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(450_000_000))), + height: 300, + stakeCoin: lpToken, + locked: lpToken.Amount.MulRaw(3), + expectReward: sdk.NewCoins( + sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100_000_000)), + ), + debt: sdk.NewCoins( + sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(450_000_000)), + ), rewardPerShare: sdk.NewDecFromIntWithPrec(sdk.NewInt(15), 1), }, { - height: 400, - stakeCoin: lpToken, - locked: lpToken.Amount.MulRaw(4), - expectReward: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(99999999))), - debt: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(733_333_333))), + height: 400, + stakeCoin: lpToken, + locked: lpToken.Amount.MulRaw(4), + expectReward: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(99999999))), + debt: sdk.NewCoins( + sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(733_333_333)), + ), rewardPerShare: sdk.NewDecFromIntWithPrec(sdk.NewInt(1_833_333_333_333_333_333), 18), }, } @@ -375,31 +385,47 @@ func (suite *KeeperTestSuite) TestHarvest() { var testcase = []args{ { - index: 1, - height: 200, - expectReward: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100_000_000))), - debt: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100_000_000))), + index: 1, + height: 200, + expectReward: sdk.NewCoins( + sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100_000_000)), + ), + debt: sdk.NewCoins( + sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100_000_000)), + ), rewardPerShare: sdk.NewDecFromIntWithPrec(sdk.NewInt(1), 0), }, { - index: 2, - height: 300, - expectReward: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100_000_000))), - debt: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(200_000_000))), + index: 2, + height: 300, + expectReward: sdk.NewCoins( + sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100_000_000)), + ), + debt: sdk.NewCoins( + sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(200_000_000)), + ), rewardPerShare: sdk.NewDecFromIntWithPrec(sdk.NewInt(2), 0), }, { - index: 3, - height: 400, - expectReward: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100_000_000))), - debt: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(300_000_000))), + index: 3, + height: 400, + expectReward: sdk.NewCoins( + sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100_000_000)), + ), + debt: sdk.NewCoins( + sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(300_000_000)), + ), rewardPerShare: sdk.NewDecFromIntWithPrec(sdk.NewInt(3), 0), }, { - index: 4, - height: 500, - expectReward: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100_000_000))), - debt: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(400_000_000))), + index: 4, + height: 500, + expectReward: sdk.NewCoins( + sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100_000_000)), + ), + debt: sdk.NewCoins( + sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(400_000_000)), + ), rewardPerShare: sdk.NewDecFromIntWithPrec(sdk.NewInt(4), 0), }, } @@ -472,7 +498,8 @@ func (suite *KeeperTestSuite) AssertUnstake( //check farm pool pool, exist := suite.keeper.GetPool(ctx, poolId) suite.Require().True(exist) - suite.Require().Equal(pool.TotalLptLocked.String(), poolSrc.TotalLptLocked.Sub(unstakeCoin).String()) + suite.Require(). + Equal(pool.TotalLptLocked.String(), poolSrc.TotalLptLocked.Sub(unstakeCoin).String()) //check reward rules again rules := suite.keeper.GetRewardRules(ctx, poolId) diff --git a/modules/farm/module.go b/modules/farm/module.go index 5b6ba62e..05ebe2e9 100644 --- a/modules/farm/module.go +++ b/modules/farm/module.go @@ -9,7 +9,7 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" - abci "github.com/tendermint/tendermint/abci/types" + abci "github.com/cometbft/cometbft/abci/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" @@ -50,7 +50,11 @@ func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { } // ValidateGenesis performs genesis state validation for the farm module. -func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error { +func (AppModuleBasic) ValidateGenesis( + cdc codec.JSONCodec, + config client.TxEncodingConfig, + bz json.RawMessage, +) error { var data types.GenesisState if err := cdc.UnmarshalJSON(bz, &data); err != nil { return fmt.Errorf("failed to unmarshal %s genesis state: %w", types.ModuleName, err) @@ -96,7 +100,12 @@ type AppModule struct { } // NewAppModule creates a new AppModule object -func NewAppModule(cdc codec.Codec, keeper keeper.Keeper, accountKeeper types.AccountKeeper, bankKeeper types.BankKeeper) AppModule { +func NewAppModule( + cdc codec.Codec, + keeper keeper.Keeper, + accountKeeper types.AccountKeeper, + bankKeeper types.BankKeeper, +) AppModule { return AppModule{ AppModuleBasic: AppModuleBasic{cdc: cdc}, keeper: keeper, @@ -126,7 +135,11 @@ func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) { // InitGenesis performs genesis initialization for the farm module. It returns // no validator updates. -func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { +func (am AppModule) InitGenesis( + ctx sdk.Context, + cdc codec.JSONCodec, + data json.RawMessage, +) []abci.ValidatorUpdate { var genesisState types.GenesisState cdc.MustUnmarshalJSON(data, &genesisState) InitGenesis(ctx, am.keeper, genesisState) @@ -166,6 +179,14 @@ func (am AppModule) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry) { } // WeightedOperations returns the all the farm module operations with their respective weights. -func (am AppModule) WeightedOperations(simState module.SimulationState) []simtypes.WeightedOperation { - return simulation.WeightedOperations(simState.AppParams, simState.Cdc, am.keeper, am.accountKeeper, am.bankKeeper) +func (am AppModule) WeightedOperations( + simState module.SimulationState, +) []simtypes.WeightedOperation { + return simulation.WeightedOperations( + simState.AppParams, + simState.Cdc, + am.keeper, + am.accountKeeper, + am.bankKeeper, + ) } diff --git a/modules/farm/types/validation_test.go b/modules/farm/types/validation_test.go index 5944206a..f31cc2fc 100644 --- a/modules/farm/types/validation_test.go +++ b/modules/farm/types/validation_test.go @@ -4,8 +4,8 @@ import ( "fmt" "testing" + "github.com/cometbft/cometbft/crypto" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/tendermint/tendermint/crypto" ) func TestValidation(t *testing.T) { diff --git a/modules/htlc/abci.go b/modules/htlc/abci.go index 299b8764..2fa95071 100644 --- a/modules/htlc/abci.go +++ b/modules/htlc/abci.go @@ -3,7 +3,7 @@ package htlc import ( "fmt" - tmbytes "github.com/tendermint/tendermint/libs/bytes" + tmbytes "github.com/cometbft/cometbft/libs/bytes" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/modules/htlc/client/cli/cli_test.go b/modules/htlc/client/cli/cli_test.go index 580a1442..617cdb20 100644 --- a/modules/htlc/client/cli/cli_test.go +++ b/modules/htlc/client/cli/cli_test.go @@ -9,7 +9,7 @@ import ( "github.com/stretchr/testify/suite" - tmbytes "github.com/tendermint/tendermint/libs/bytes" + tmbytes "github.com/cometbft/cometbft/libs/bytes" "github.com/cosmos/cosmos-sdk/client/flags" sdk "github.com/cosmos/cosmos-sdk/types" @@ -90,7 +90,11 @@ func (s *IntegrationTestSuite) TestHTLC() { args := []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } _ = simapp.MsgSendExec( @@ -175,16 +179,33 @@ func (s *IntegrationTestSuite) TestHTLC() { args = []string{ fmt.Sprintf("--%s=%s", htlccli.FlagTo, testCases[0].args.receiver), fmt.Sprintf("--%s=%s", htlccli.FlagAmount, testCases[0].args.amount), - fmt.Sprintf("--%s=%s", htlccli.FlagReceiverOnOtherChain, testCases[0].args.receiverOtherChain), + fmt.Sprintf( + "--%s=%s", + htlccli.FlagReceiverOnOtherChain, + testCases[0].args.receiverOtherChain, + ), fmt.Sprintf("--%s=%s", htlccli.FlagSenderOnOtherChain, testCases[0].args.senderOtherChain), - fmt.Sprintf("--%s=%s", htlccli.FlagHashLock, tmbytes.HexBytes(htlctypes.GetHashLock(testCases[0].args.secret, testCases[0].args.timestamp)).String()), + fmt.Sprintf( + "--%s=%s", + htlccli.FlagHashLock, + tmbytes.HexBytes(htlctypes.GetHashLock(testCases[0].args.secret, testCases[0].args.timestamp)). + String(), + ), fmt.Sprintf("--%s=%d", htlccli.FlagTimeLock, testCases[0].args.timeLock), fmt.Sprintf("--%s=%d", htlccli.FlagTimestamp, testCases[0].args.timestamp), - fmt.Sprintf("--%s=%s", htlccli.FlagTransfer, strconv.FormatBool(testCases[0].args.transfer)), + fmt.Sprintf( + "--%s=%s", + htlccli.FlagTransfer, + strconv.FormatBool(testCases[0].args.transfer), + ), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } txResult := htlctestutil.CreateHTLCExec( @@ -198,20 +219,22 @@ func (s *IntegrationTestSuite) TestHTLC() { // --------------------------------------------------------------- expectedhtlc := htlctypes.HTLC{ - Id: htlctypes.GetID(testCases[0].args.sender, testCases[0].args.receiver, testCases[0].args.amount, htlctypes.GetHashLock(testCases[0].args.secret, testCases[0].args.timestamp)).String(), + Id: htlctypes.GetID(testCases[0].args.sender, testCases[0].args.receiver, testCases[0].args.amount, htlctypes.GetHashLock(testCases[0].args.secret, testCases[0].args.timestamp)). + String(), Sender: testCases[0].args.sender.String(), To: testCases[0].args.receiver.String(), ReceiverOnOtherChain: ReceiverOnOtherChain, SenderOnOtherChain: SenderOnOtherChain, Amount: testCases[0].args.amount, Secret: "", - HashLock: tmbytes.HexBytes(htlctypes.GetHashLock(testCases[0].args.secret, testCases[0].args.timestamp)).String(), - Timestamp: testCases[0].args.timestamp, - ExpirationHeight: uint64(txResult.Height) + testCases[0].args.timeLock, - State: htlctypes.Open, - ClosedBlock: 0, - Transfer: testCases[0].args.transfer, - Direction: testCases[0].args.direction, + HashLock: tmbytes.HexBytes(htlctypes.GetHashLock(testCases[0].args.secret, testCases[0].args.timestamp)). + String(), + Timestamp: testCases[0].args.timestamp, + ExpirationHeight: uint64(txResult.Height) + testCases[0].args.timeLock, + State: htlctypes.Open, + ClosedBlock: 0, + Transfer: testCases[0].args.transfer, + Direction: testCases[0].args.direction, } respType := htlctestutil.QueryHTLCExec( s.T(), @@ -226,7 +249,11 @@ func (s *IntegrationTestSuite) TestHTLC() { args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } txResult = htlctestutil.ClaimHTLCExec( @@ -262,16 +289,33 @@ func (s *IntegrationTestSuite) TestHTLC() { args = []string{ fmt.Sprintf("--%s=%s", htlccli.FlagTo, testCases[1].args.receiver), fmt.Sprintf("--%s=%s", htlccli.FlagAmount, testCases[1].args.amount), - fmt.Sprintf("--%s=%s", htlccli.FlagReceiverOnOtherChain, testCases[1].args.receiverOtherChain), + fmt.Sprintf( + "--%s=%s", + htlccli.FlagReceiverOnOtherChain, + testCases[1].args.receiverOtherChain, + ), fmt.Sprintf("--%s=%s", htlccli.FlagSenderOnOtherChain, testCases[1].args.senderOtherChain), - fmt.Sprintf("--%s=%s", htlccli.FlagHashLock, tmbytes.HexBytes(htlctypes.GetHashLock(testCases[1].args.secret, testCases[1].args.timestamp)).String()), + fmt.Sprintf( + "--%s=%s", + htlccli.FlagHashLock, + tmbytes.HexBytes(htlctypes.GetHashLock(testCases[1].args.secret, testCases[1].args.timestamp)). + String(), + ), fmt.Sprintf("--%s=%d", htlccli.FlagTimeLock, testCases[1].args.timeLock), fmt.Sprintf("--%s=%d", htlccli.FlagTimestamp, testCases[1].args.timestamp), - fmt.Sprintf("--%s=%s", htlccli.FlagTransfer, strconv.FormatBool(testCases[1].args.transfer)), + fmt.Sprintf( + "--%s=%s", + htlccli.FlagTransfer, + strconv.FormatBool(testCases[1].args.transfer), + ), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } txResult = htlctestutil.CreateHTLCExec( @@ -285,20 +329,22 @@ func (s *IntegrationTestSuite) TestHTLC() { // --------------------------------------------------------------- expectedhtlt := htlctypes.HTLC{ - Id: htlctypes.GetID(testCases[1].args.sender, testCases[1].args.receiver, testCases[1].args.amount, htlctypes.GetHashLock(testCases[1].args.secret, testCases[1].args.timestamp)).String(), + Id: htlctypes.GetID(testCases[1].args.sender, testCases[1].args.receiver, testCases[1].args.amount, htlctypes.GetHashLock(testCases[1].args.secret, testCases[1].args.timestamp)). + String(), Sender: testCases[1].args.sender.String(), To: testCases[1].args.receiver.String(), ReceiverOnOtherChain: ReceiverOnOtherChain, SenderOnOtherChain: SenderOnOtherChain, Amount: testCases[1].args.amount, Secret: "", - HashLock: tmbytes.HexBytes(htlctypes.GetHashLock(testCases[1].args.secret, testCases[1].args.timestamp)).String(), - Timestamp: testCases[1].args.timestamp, - ExpirationHeight: uint64(txResult.Height) + testCases[1].args.timeLock, - State: htlctypes.Open, - ClosedBlock: 0, - Transfer: testCases[1].args.transfer, - Direction: testCases[1].args.direction, + HashLock: tmbytes.HexBytes(htlctypes.GetHashLock(testCases[1].args.secret, testCases[1].args.timestamp)). + String(), + Timestamp: testCases[1].args.timestamp, + ExpirationHeight: uint64(txResult.Height) + testCases[1].args.timeLock, + State: htlctypes.Open, + ClosedBlock: 0, + Transfer: testCases[1].args.transfer, + Direction: testCases[1].args.direction, } respType = htlctestutil.QueryHTLCExec( s.T(), @@ -313,7 +359,11 @@ func (s *IntegrationTestSuite) TestHTLC() { args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } txResult = htlctestutil.ClaimHTLCExec( @@ -341,16 +391,33 @@ func (s *IntegrationTestSuite) TestHTLC() { args = []string{ fmt.Sprintf("--%s=%s", htlccli.FlagTo, testCases[2].args.receiver), fmt.Sprintf("--%s=%s", htlccli.FlagAmount, testCases[2].args.amount), - fmt.Sprintf("--%s=%s", htlccli.FlagReceiverOnOtherChain, testCases[2].args.receiverOtherChain), + fmt.Sprintf( + "--%s=%s", + htlccli.FlagReceiverOnOtherChain, + testCases[2].args.receiverOtherChain, + ), fmt.Sprintf("--%s=%s", htlccli.FlagSenderOnOtherChain, testCases[2].args.senderOtherChain), - fmt.Sprintf("--%s=%s", htlccli.FlagHashLock, tmbytes.HexBytes(htlctypes.GetHashLock(testCases[2].args.secret, testCases[2].args.timestamp)).String()), + fmt.Sprintf( + "--%s=%s", + htlccli.FlagHashLock, + tmbytes.HexBytes(htlctypes.GetHashLock(testCases[2].args.secret, testCases[2].args.timestamp)). + String(), + ), fmt.Sprintf("--%s=%d", htlccli.FlagTimeLock, testCases[2].args.timeLock), fmt.Sprintf("--%s=%d", htlccli.FlagTimestamp, testCases[2].args.timestamp), - fmt.Sprintf("--%s=%s", htlccli.FlagTransfer, strconv.FormatBool(testCases[2].args.transfer)), + fmt.Sprintf( + "--%s=%s", + htlccli.FlagTransfer, + strconv.FormatBool(testCases[2].args.transfer), + ), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } txResult = htlctestutil.CreateHTLCExec( @@ -364,20 +431,22 @@ func (s *IntegrationTestSuite) TestHTLC() { // --------------------------------------------------------------- expectedhtlt = htlctypes.HTLC{ - Id: htlctypes.GetID(testCases[2].args.sender, testCases[2].args.receiver, testCases[2].args.amount, htlctypes.GetHashLock(testCases[2].args.secret, testCases[2].args.timestamp)).String(), + Id: htlctypes.GetID(testCases[2].args.sender, testCases[2].args.receiver, testCases[2].args.amount, htlctypes.GetHashLock(testCases[2].args.secret, testCases[2].args.timestamp)). + String(), Sender: testCases[2].args.sender.String(), To: testCases[2].args.receiver.String(), ReceiverOnOtherChain: ReceiverOnOtherChain, SenderOnOtherChain: SenderOnOtherChain, Amount: testCases[2].args.amount, Secret: "", - HashLock: tmbytes.HexBytes(htlctypes.GetHashLock(testCases[2].args.secret, testCases[2].args.timestamp)).String(), - Timestamp: testCases[2].args.timestamp, - ExpirationHeight: uint64(txResult.Height) + testCases[2].args.timeLock, - State: htlctypes.Open, - ClosedBlock: 0, - Transfer: testCases[2].args.transfer, - Direction: testCases[2].args.direction, + HashLock: tmbytes.HexBytes(htlctypes.GetHashLock(testCases[2].args.secret, testCases[2].args.timestamp)). + String(), + Timestamp: testCases[2].args.timestamp, + ExpirationHeight: uint64(txResult.Height) + testCases[2].args.timeLock, + State: htlctypes.Open, + ClosedBlock: 0, + Transfer: testCases[2].args.transfer, + Direction: testCases[2].args.direction, } respType = htlctestutil.QueryHTLCExec( @@ -393,7 +462,11 @@ func (s *IntegrationTestSuite) TestHTLC() { args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } txResult = htlctestutil.ClaimHTLCExec( diff --git a/modules/htlc/client/cli/query.go b/modules/htlc/client/cli/query.go index 68e7765e..8d5c4100 100644 --- a/modules/htlc/client/cli/query.go +++ b/modules/htlc/client/cli/query.go @@ -7,7 +7,7 @@ import ( "github.com/spf13/cobra" - tmbytes "github.com/tendermint/tendermint/libs/bytes" + tmbytes "github.com/cometbft/cometbft/libs/bytes" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" diff --git a/modules/htlc/client/testutil/grpc_query_test.go b/modules/htlc/client/testutil/grpc_query_test.go index e9e0cce3..ba9eb622 100644 --- a/modules/htlc/client/testutil/grpc_query_test.go +++ b/modules/htlc/client/testutil/grpc_query_test.go @@ -6,7 +6,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/tendermint/tendermint/crypto" + "github.com/cometbft/cometbft/crypto" "github.com/cosmos/cosmos-sdk/client/flags" sdk "github.com/cosmos/cosmos-sdk/types" @@ -61,7 +61,11 @@ func (s *IntegrationTestSuite) TestHtlc() { fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } _ = htlctestutil.CreateHTLCExec( diff --git a/modules/htlc/client/testutil/test_helpers.go b/modules/htlc/client/testutil/test_helpers.go index 3c5e1ea0..ce7f47e5 100644 --- a/modules/htlc/client/testutil/test_helpers.go +++ b/modules/htlc/client/testutil/test_helpers.go @@ -4,7 +4,7 @@ import ( "fmt" "testing" - "github.com/tendermint/tendermint/libs/cli" + "github.com/cometbft/cometbft/libs/cli" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" diff --git a/modules/htlc/genesis.go b/modules/htlc/genesis.go index a50052b5..b714cda1 100644 --- a/modules/htlc/genesis.go +++ b/modules/htlc/genesis.go @@ -4,8 +4,8 @@ import ( "encoding/hex" "fmt" + tmbytes "github.com/cometbft/cometbft/libs/bytes" sdk "github.com/cosmos/cosmos-sdk/types" - tmbytes "github.com/tendermint/tendermint/libs/bytes" "github.com/irisnet/irismod/modules/htlc/keeper" "github.com/irisnet/irismod/modules/htlc/types" @@ -80,16 +80,40 @@ func InitGenesis(ctx sdk.Context, k keeper.Keeper, data types.GenesisState) { panic(err) } if supply.CurrentSupply.Amount.GT(limit.Limit) { - panic(fmt.Sprintf("asset's current supply %s is over the supply limit %s", supply.CurrentSupply, limit.Limit)) + panic( + fmt.Sprintf( + "asset's current supply %s is over the supply limit %s", + supply.CurrentSupply, + limit.Limit, + ), + ) } if supply.IncomingSupply.Amount.GT(limit.Limit) { - panic(fmt.Sprintf("asset's incoming supply %s is over the supply limit %s", supply.IncomingSupply, limit.Limit)) + panic( + fmt.Sprintf( + "asset's incoming supply %s is over the supply limit %s", + supply.IncomingSupply, + limit.Limit, + ), + ) } if supply.IncomingSupply.Amount.Add(supply.CurrentSupply.Amount).GT(limit.Limit) { - panic(fmt.Sprintf("asset's incoming supply + current supply %s is over the supply limit %s", supply.IncomingSupply.Add(supply.CurrentSupply), limit.Limit)) + panic( + fmt.Sprintf( + "asset's incoming supply + current supply %s is over the supply limit %s", + supply.IncomingSupply.Add(supply.CurrentSupply), + limit.Limit, + ), + ) } if supply.OutgoingSupply.Amount.GT(limit.Limit) { - panic(fmt.Sprintf("asset's outgoing supply %s is over the supply limit %s", supply.OutgoingSupply, limit.Limit)) + panic( + fmt.Sprintf( + "asset's outgoing supply %s is over the supply limit %s", + supply.OutgoingSupply, + limit.Limit, + ), + ) } } } diff --git a/modules/htlc/genesis_test.go b/modules/htlc/genesis_test.go index 38a529c3..f7278b82 100644 --- a/modules/htlc/genesis_test.go +++ b/modules/htlc/genesis_test.go @@ -6,7 +6,7 @@ import ( "github.com/stretchr/testify/suite" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" @@ -353,10 +353,13 @@ func (suite *GenesisTestSuite) TestGenesisState() { if tc.expectPass { suite.NotPanics( func() { - simapp.SetupWithGenesisStateFn(suite.T(), func(cdc codec.Codec, state simapp.GenesisState) simapp.GenesisState { - state[types.ModuleName] = cdc.MustMarshalJSON(tc.genState()) - return state - }) + simapp.SetupWithGenesisStateFn( + suite.T(), + func(cdc codec.Codec, state simapp.GenesisState) simapp.GenesisState { + state[types.ModuleName] = cdc.MustMarshalJSON(tc.genState()) + return state + }, + ) }, tc.name, ) diff --git a/modules/htlc/integration_test.go b/modules/htlc/integration_test.go index 0c9b336a..5c9258de 100644 --- a/modules/htlc/integration_test.go +++ b/modules/htlc/integration_test.go @@ -4,8 +4,8 @@ import ( "math/rand" "time" - "github.com/tendermint/tendermint/crypto" - "github.com/tendermint/tendermint/crypto/secp256k1" + "github.com/cometbft/cometbft/crypto" + "github.com/cometbft/cometbft/crypto/secp256k1" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/modules/htlc/keeper/asset_test.go b/modules/htlc/keeper/asset_test.go index 0577059e..6b2b4742 100644 --- a/modules/htlc/keeper/asset_test.go +++ b/modules/htlc/keeper/asset_test.go @@ -7,7 +7,7 @@ import ( "github.com/stretchr/testify/suite" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" @@ -27,10 +27,13 @@ type AssetTestSuite struct { } func (suite *AssetTestSuite) SetupTest() { - app := simapp.SetupWithGenesisStateFn(suite.T(), func(cdc codec.Codec, state simapp.GenesisState) simapp.GenesisState { - state[types.ModuleName] = cdc.MustMarshalJSON(NewHTLTGenesis(TestDeputy)) - return state - }) + app := simapp.SetupWithGenesisStateFn( + suite.T(), + func(cdc codec.Codec, state simapp.GenesisState) simapp.GenesisState { + state[types.ModuleName] = cdc.MustMarshalJSON(NewHTLTGenesis(TestDeputy)) + return state + }, + ) suite.ctx = app.BaseApp.NewContext(false, tmproto.Header{Height: 1, Time: time.Now()}) suite.cdc = codec.NewAminoCodec(app.LegacyAmino()) @@ -215,7 +218,9 @@ func (suite *AssetTestSuite) TestDecrementCurrentAssetSupply() { if tc.expectPass { suite.True(found) suite.NoError(err) - suite.True(preSupply.CurrentSupply.Sub(tc.args.coin).IsEqual(postSupply.CurrentSupply)) + suite.True( + preSupply.CurrentSupply.Sub(tc.args.coin).IsEqual(postSupply.CurrentSupply), + ) } else { suite.Error(err) suite.Equal(preSupply.CurrentSupply, postSupply.CurrentSupply) @@ -263,7 +268,10 @@ func (suite *AssetTestSuite) TestIncrementIncomingAssetSupply() { if tc.expectPass { suite.True(found) suite.NoError(err) - suite.Equal(preSupply.IncomingSupply.Add(tc.args.coin), postSupply.IncomingSupply) + suite.Equal( + preSupply.IncomingSupply.Add(tc.args.coin), + postSupply.IncomingSupply, + ) } else { suite.Error(err) suite.Equal(preSupply.IncomingSupply, postSupply.IncomingSupply) @@ -370,7 +378,10 @@ func (suite *AssetTestSuite) TestDecrementIncomingAssetSupply() { if tc.expectPass { suite.True(found) suite.NoError(err) - suite.True(preSupply.IncomingSupply.Sub(tc.args.coin).IsEqual(postSupply.IncomingSupply)) + suite.True( + preSupply.IncomingSupply.Sub(tc.args.coin). + IsEqual(postSupply.IncomingSupply), + ) } else { suite.Error(err) suite.Equal(preSupply.IncomingSupply, postSupply.IncomingSupply) @@ -418,7 +429,10 @@ func (suite *AssetTestSuite) TestIncrementOutgoingAssetSupply() { if tc.expectPass { suite.True(found) suite.NoError(err) - suite.Equal(preSupply.OutgoingSupply.Add(tc.args.coin), postSupply.OutgoingSupply) + suite.Equal( + preSupply.OutgoingSupply.Add(tc.args.coin), + postSupply.OutgoingSupply, + ) } else { suite.Error(err) suite.Equal(preSupply.OutgoingSupply, postSupply.OutgoingSupply) @@ -466,7 +480,10 @@ func (suite *AssetTestSuite) TestDecrementOutgoingAssetSupply() { if tc.expectPass { suite.True(found) suite.NoError(err) - suite.True(preSupply.OutgoingSupply.Sub(tc.args.coin).IsEqual(postSupply.OutgoingSupply)) + suite.True( + preSupply.OutgoingSupply.Sub(tc.args.coin). + IsEqual(postSupply.OutgoingSupply), + ) } else { suite.Error(err) suite.Equal(preSupply.OutgoingSupply, postSupply.OutgoingSupply) @@ -493,9 +510,15 @@ func (suite *AssetTestSuite) TestUpdateTimeBasedSupplyLimits() { }{{ "rate-limited increment time", args{ - asset: "htltinc", - duration: time.Second, - expectedSupply: types.NewAssetSupply(c("htltinc", 10), c("htltinc", 5), c("htltinc", 5), c("htltinc", 0), time.Second), + asset: "htltinc", + duration: time.Second, + expectedSupply: types.NewAssetSupply( + c("htltinc", 10), + c("htltinc", 5), + c("htltinc", 5), + c("htltinc", 0), + time.Second, + ), }, errArgs{ expectPanic: false, @@ -504,9 +527,15 @@ func (suite *AssetTestSuite) TestUpdateTimeBasedSupplyLimits() { }, { "rate-limited increment time half", args{ - asset: "htltinc", - duration: time.Minute * 30, - expectedSupply: types.NewAssetSupply(c("htltinc", 10), c("htltinc", 5), c("htltinc", 5), c("htltinc", 0), time.Minute*30), + asset: "htltinc", + duration: time.Minute * 30, + expectedSupply: types.NewAssetSupply( + c("htltinc", 10), + c("htltinc", 5), + c("htltinc", 5), + c("htltinc", 0), + time.Minute*30, + ), }, errArgs{ expectPanic: false, @@ -515,9 +544,15 @@ func (suite *AssetTestSuite) TestUpdateTimeBasedSupplyLimits() { }, { "rate-limited period change", args{ - asset: "htltinc", - duration: time.Hour + time.Second, - expectedSupply: types.NewAssetSupply(c("htltinc", 10), c("htltinc", 5), c("htltinc", 5), c("htltinc", 0), time.Duration(0)), + asset: "htltinc", + duration: time.Hour + time.Second, + expectedSupply: types.NewAssetSupply( + c("htltinc", 10), + c("htltinc", 5), + c("htltinc", 5), + c("htltinc", 0), + time.Duration(0), + ), }, errArgs{ expectPanic: false, @@ -526,9 +561,15 @@ func (suite *AssetTestSuite) TestUpdateTimeBasedSupplyLimits() { }, { "rate-limited period change exact", args{ - asset: "htltinc", - duration: time.Hour, - expectedSupply: types.NewAssetSupply(c("htltinc", 10), c("htltinc", 5), c("htltinc", 5), c("htltinc", 0), time.Duration(0)), + asset: "htltinc", + duration: time.Hour, + expectedSupply: types.NewAssetSupply( + c("htltinc", 10), + c("htltinc", 5), + c("htltinc", 5), + c("htltinc", 0), + time.Duration(0), + ), }, errArgs{ expectPanic: false, @@ -537,9 +578,15 @@ func (suite *AssetTestSuite) TestUpdateTimeBasedSupplyLimits() { }, { "rate-limited period change big", args{ - asset: "htltinc", - duration: time.Hour * 4, - expectedSupply: types.NewAssetSupply(c("htltinc", 10), c("htltinc", 5), c("htltinc", 5), c("htltinc", 0), time.Duration(0)), + asset: "htltinc", + duration: time.Hour * 4, + expectedSupply: types.NewAssetSupply( + c("htltinc", 10), + c("htltinc", 5), + c("htltinc", 5), + c("htltinc", 0), + time.Duration(0), + ), }, errArgs{ expectPanic: false, @@ -548,9 +595,15 @@ func (suite *AssetTestSuite) TestUpdateTimeBasedSupplyLimits() { }, { "non rate-limited increment time", args{ - asset: "htltbnb", - duration: time.Second, - expectedSupply: types.NewAssetSupply(c("htltbnb", 5), c("htltbnb", 5), c("htltbnb", 40), c("htltbnb", 0), time.Duration(0)), + asset: "htltbnb", + duration: time.Second, + expectedSupply: types.NewAssetSupply( + c("htltbnb", 5), + c("htltbnb", 5), + c("htltbnb", 40), + c("htltbnb", 0), + time.Duration(0), + ), }, errArgs{ expectPanic: false, @@ -559,9 +612,15 @@ func (suite *AssetTestSuite) TestUpdateTimeBasedSupplyLimits() { }, { "new asset increment time", args{ - asset: "htltlol", - duration: time.Second, - expectedSupply: types.NewAssetSupply(c("htltlol", 0), c("htltlol", 0), c("htltlol", 0), c("htltlol", 0), time.Second), + asset: "htltlol", + duration: time.Second, + expectedSupply: types.NewAssetSupply( + c("htltlol", 0), + c("htltlol", 0), + c("htltlol", 0), + c("htltlol", 0), + time.Second, + ), }, errArgs{ expectPanic: false, diff --git a/modules/htlc/keeper/grpc_query_test.go b/modules/htlc/keeper/grpc_query_test.go index 387b2f9c..4d193ae4 100644 --- a/modules/htlc/keeper/grpc_query_test.go +++ b/modules/htlc/keeper/grpc_query_test.go @@ -8,8 +8,8 @@ import ( "github.com/stretchr/testify/suite" - tmbytes "github.com/tendermint/tendermint/libs/bytes" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + tmbytes "github.com/cometbft/cometbft/libs/bytes" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/codec" @@ -35,10 +35,13 @@ type QueryTestSuite struct { } func (suite *QueryTestSuite) SetupTest() { - app := simapp.SetupWithGenesisStateFn(suite.T(), func(cdc codec.Codec, state simapp.GenesisState) simapp.GenesisState { - state[types.ModuleName] = cdc.MustMarshalJSON(NewHTLTGenesis(TestDeputy)) - return state - }) + app := simapp.SetupWithGenesisStateFn( + suite.T(), + func(cdc codec.Codec, state simapp.GenesisState) simapp.GenesisState { + state[types.ModuleName] = cdc.MustMarshalJSON(NewHTLTGenesis(TestDeputy)) + return state + }, + ) suite.ctx = app.BaseApp.NewContext(false, tmproto.Header{Height: 1, Time: time.Now()}) suite.cdc = codec.NewAminoCodec(app.LegacyAmino()) @@ -91,7 +94,10 @@ func TestQueryTestSuite(t *testing.T) { } func (suite *QueryTestSuite) TestQueryAssetSupply() { - supplyResp, err := suite.queryClient.AssetSupply(gocontext.Background(), &types.QueryAssetSupplyRequest{Denom: "htltbnb"}) + supplyResp, err := suite.queryClient.AssetSupply( + gocontext.Background(), + &types.QueryAssetSupplyRequest{Denom: "htltbnb"}, + ) suite.Require().NoError(err) expected, found := suite.keeper.GetAssetSupply(suite.ctx, "htltbnb") @@ -100,7 +106,10 @@ func (suite *QueryTestSuite) TestQueryAssetSupply() { } func (suite *QueryTestSuite) TestQueryAssetSupplies() { - suppliesResp, err := suite.queryClient.AssetSupplies(gocontext.Background(), &types.QueryAssetSuppliesRequest{}) + suppliesResp, err := suite.queryClient.AssetSupplies( + gocontext.Background(), + &types.QueryAssetSuppliesRequest{}, + ) suite.Require().NoError(err) expected := suite.keeper.GetAllAssetSupplies(suite.ctx) @@ -108,7 +117,10 @@ func (suite *QueryTestSuite) TestQueryAssetSupplies() { } func (suite *QueryTestSuite) TestQueryHTLC() { - htlcResp, err := suite.queryClient.HTLC(gocontext.Background(), &types.QueryHTLCRequest{Id: suite.htlcIDs[0].String()}) + htlcResp, err := suite.queryClient.HTLC( + gocontext.Background(), + &types.QueryHTLCRequest{Id: suite.htlcIDs[0].String()}, + ) suite.Require().NoError(err) expected, found := suite.keeper.GetHTLC(suite.ctx, suite.htlcIDs[0]) diff --git a/modules/htlc/keeper/htlc.go b/modules/htlc/keeper/htlc.go index 013d534f..99a29969 100644 --- a/modules/htlc/keeper/htlc.go +++ b/modules/htlc/keeper/htlc.go @@ -6,7 +6,7 @@ import ( "fmt" "time" - tmbytes "github.com/tendermint/tendermint/libs/bytes" + tmbytes "github.com/cometbft/cometbft/libs/bytes" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -97,7 +97,11 @@ func (k Keeper) createHTLT( var direction types.SwapDirection if len(amount) != 1 { - return direction, sdkerrors.Wrapf(types.ErrInvalidAmount, "amount %s must contain exactly one coin", amount.String()) + return direction, sdkerrors.Wrapf( + types.ErrInvalidAmount, + "amount %s must contain exactly one coin", + amount.String(), + ) } asset, err := k.GetAsset(ctx, amount[0].Denom) @@ -111,7 +115,13 @@ func (k Keeper) createHTLT( // Swap amount must be within the specified swap amount limits if amount[0].Amount.LT(asset.MinSwapAmount) || amount[0].Amount.GT(asset.MaxSwapAmount) { - return direction, sdkerrors.Wrapf(types.ErrInvalidAmount, "amount %s outside range [%s, %s]", amount[0].Amount, asset.MinSwapAmount.String(), asset.MaxSwapAmount) + return direction, sdkerrors.Wrapf( + types.ErrInvalidAmount, + "amount %s outside range [%s, %s]", + amount[0].Amount, + asset.MinSwapAmount.String(), + asset.MaxSwapAmount, + ) } // Unix timestamp must be in range [-15 mins, 30 mins) of the current time @@ -122,7 +132,8 @@ func (k Keeper) createHTLT( types.ErrInvalidTimestamp, fmt.Sprintf( "timestamp can neither be 15 minutes ahead of the current time, nor 30 minutes later. block time: %s, timestamp: %s", - ctx.BlockTime().String(), time.Unix(int64(timestamp), 0).UTC().String(), + ctx.BlockTime().String(), + time.Unix(int64(timestamp), 0).UTC().String(), ), ) } @@ -131,7 +142,11 @@ func (k Keeper) createHTLT( if sender.Equals(deputyAddress) { if to.Equals(deputyAddress) { - return direction, sdkerrors.Wrapf(types.ErrInvalidAccount, "deputy cannot be both sender and receiver: %s", asset.DeputyAddress) + return direction, sdkerrors.Wrapf( + types.ErrInvalidAccount, + "deputy cannot be both sender and receiver: %s", + asset.DeputyAddress, + ) } direction = types.Incoming } else { @@ -157,7 +172,13 @@ func (k Keeper) createHTLT( case types.Outgoing: // Outgoing swaps must have a time lock within the accepted range if timeLock < asset.MinBlockLock || timeLock > asset.MaxBlockLock { - return direction, sdkerrors.Wrapf(types.ErrInvalidTimeLock, "time lock %d outside range [%d, %d]", timeLock, asset.MinBlockLock, asset.MaxBlockLock) + return direction, sdkerrors.Wrapf( + types.ErrInvalidTimeLock, + "time lock %d outside range [%d, %d]", + timeLock, + asset.MinBlockLock, + asset.MaxBlockLock, + ) } // Amount in outgoing swaps must be able to pay the deputy's fixed fee. if amount[0].Amount.LT(asset.FixedFee.Add(asset.MinSwapAmount)) { @@ -306,7 +327,12 @@ func (k Keeper) refundHTLC(ctx sdk.Context, sender sdk.AccAddress, amount sdk.Co return k.bankKeeper.SendCoinsFromModuleToAccount(ctx, types.ModuleName, sender, amount) } -func (k Keeper) refundHTLT(ctx sdk.Context, direction types.SwapDirection, sender sdk.AccAddress, amount sdk.Coins) error { +func (k Keeper) refundHTLT( + ctx sdk.Context, + direction types.SwapDirection, + sender sdk.AccAddress, + amount sdk.Coins, +) error { switch direction { case types.Incoming: if err := k.DecrementIncomingAssetSupply(ctx, amount[0]); err != nil { @@ -352,13 +378,21 @@ func (k Keeper) GetHTLC(ctx sdk.Context, id tmbytes.HexBytes) (htlc types.HTLC, } // AddHTLCToExpiredQueue adds the specified HTLC to the expiration queue -func (k Keeper) AddHTLCToExpiredQueue(ctx sdk.Context, expirationHeight uint64, id tmbytes.HexBytes) { +func (k Keeper) AddHTLCToExpiredQueue( + ctx sdk.Context, + expirationHeight uint64, + id tmbytes.HexBytes, +) { store := ctx.KVStore(k.storeKey) store.Set(types.GetHTLCExpiredQueueKey(expirationHeight, id), []byte{}) } // DeleteHTLCFromExpiredQueue removes the specified HTLC from the expiration queue -func (k Keeper) DeleteHTLCFromExpiredQueue(ctx sdk.Context, expirationHeight uint64, id tmbytes.HexBytes) { +func (k Keeper) DeleteHTLCFromExpiredQueue( + ctx sdk.Context, + expirationHeight uint64, + id tmbytes.HexBytes, +) { store := ctx.KVStore(k.storeKey) store.Delete(types.GetHTLCExpiredQueueKey(expirationHeight, id)) } diff --git a/modules/htlc/keeper/htlc_test.go b/modules/htlc/keeper/htlc_test.go index a33198d2..9f6d3ea8 100644 --- a/modules/htlc/keeper/htlc_test.go +++ b/modules/htlc/keeper/htlc_test.go @@ -6,8 +6,8 @@ import ( "github.com/stretchr/testify/suite" - tmbytes "github.com/tendermint/tendermint/libs/bytes" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + tmbytes "github.com/cometbft/cometbft/libs/bytes" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" @@ -45,10 +45,13 @@ func TestHTLCTestSuite(t *testing.T) { } func (suite *HTLCTestSuite) SetupTest() { - app := simapp.SetupWithGenesisStateFn(suite.T(), func(cdc codec.Codec, state simapp.GenesisState) simapp.GenesisState { - state[types.ModuleName] = cdc.MustMarshalJSON(NewHTLTGenesis(TestDeputy)) - return state - }) + app := simapp.SetupWithGenesisStateFn( + suite.T(), + func(cdc codec.Codec, state simapp.GenesisState) simapp.GenesisState { + state[types.ModuleName] = cdc.MustMarshalJSON(NewHTLTGenesis(TestDeputy)) + return state + }, + ) suite.ctx = app.BaseApp.NewContext(false, tmproto.Header{Height: 1, Time: time.Now()}) suite.cdc = codec.NewAminoCodec(app.LegacyAmino()) @@ -62,7 +65,12 @@ func (suite *HTLCTestSuite) SetupTest() { coins := cs(c(BNB_DENOM, STARING_BNB_BALANCE), c(OTHER_DENOM, STARING_OTHER_BALANCE)) for _, acc := range addrs { _ = suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) - _ = suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, acc, coins) + _ = suite.app.BankKeeper.SendCoinsFromModuleToAccount( + suite.ctx, + types.ModuleName, + acc, + coins, + ) } suite.setTestParams() @@ -388,7 +396,11 @@ func (suite *HTLCTestSuite) TestCreateHTLC() { htlcAssetDenom = BNB_DENOM } - senderBalancePre := suite.app.BankKeeper.GetBalance(suite.ctx, tc.args.sender, htlcAssetDenom) + senderBalancePre := suite.app.BankKeeper.GetBalance( + suite.ctx, + tc.args.sender, + htlcAssetDenom, + ) assetSupplyPre, _ := suite.keeper.GetAssetSupply(suite.ctx, htlcAssetDenom) // Create htlt @@ -406,11 +418,20 @@ func (suite *HTLCTestSuite) TestCreateHTLC() { ) // Load sender's account after htlt creation - senderBalancePost := suite.app.BankKeeper.GetBalance(suite.ctx, tc.args.sender, htlcAssetDenom) + senderBalancePost := suite.app.BankKeeper.GetBalance( + suite.ctx, + tc.args.sender, + htlcAssetDenom, + ) assetSupplyPost, _ := suite.keeper.GetAssetSupply(suite.ctx, htlcAssetDenom) // Load expected htlt ID - expectedHTLCID := types.GetID(tc.args.sender, tc.args.receiver, tc.args.amount, tc.args.hashLock) + expectedHTLCID := types.GetID( + tc.args.sender, + tc.args.receiver, + tc.args.amount, + tc.args.hashLock, + ) suite.Equal(expectedHTLCID, id, tc.name) if tc.expectPass { @@ -418,11 +439,23 @@ func (suite *HTLCTestSuite) TestCreateHTLC() { // Check incoming/outgoing asset supply increased switch tc.args.direction { case types.Incoming: - suite.Equal(assetSupplyPre.IncomingSupply.Add(tc.args.amount[0]).String(), assetSupplyPost.IncomingSupply.String(), tc.name) + suite.Equal( + assetSupplyPre.IncomingSupply.Add(tc.args.amount[0]).String(), + assetSupplyPost.IncomingSupply.String(), + tc.name, + ) case types.Outgoing: // Check coins moved - suite.Equal(senderBalancePre.Sub(tc.args.amount[0]).String(), senderBalancePost.String(), tc.name) - suite.Equal(assetSupplyPre.OutgoingSupply.Add(tc.args.amount[0]).String(), assetSupplyPost.OutgoingSupply.String(), tc.name) + suite.Equal( + senderBalancePre.Sub(tc.args.amount[0]).String(), + senderBalancePost.String(), + tc.name, + ) + suite.Equal( + assetSupplyPre.OutgoingSupply.Add(tc.args.amount[0]).String(), + assetSupplyPost.OutgoingSupply.String(), + tc.name, + ) default: suite.Fail("should not have invalid direction", tc.name) } @@ -591,7 +624,12 @@ func (suite *HTLCTestSuite) TestClaimHtlc() { ) suite.NoError(err, tc.name) - realHTLCID := types.GetID(sender, expectedRecipient, tc.args.amount, suite.hashLocks[i]) + realHTLCID := types.GetID( + sender, + expectedRecipient, + tc.args.amount, + suite.hashLocks[i], + ) suite.Equal(realHTLCID, id, tc.name) // If args contains an invalid htlc ID claim attempt will use it instead of the real htlc ID @@ -613,13 +651,27 @@ func (suite *HTLCTestSuite) TestClaimHtlc() { // Run the beginblocker before attempting claim htlc.BeginBlocker(tc.claimCtx, *suite.keeper) - expectedRecipientBalancePre := suite.app.BankKeeper.GetBalance(suite.ctx, expectedRecipient, tc.args.amount[0].Denom) - assetSupplyPre, _ := suite.keeper.GetAssetSupply(tc.claimCtx, tc.args.amount[0].Denom) + expectedRecipientBalancePre := suite.app.BankKeeper.GetBalance( + suite.ctx, + expectedRecipient, + tc.args.amount[0].Denom, + ) + assetSupplyPre, _ := suite.keeper.GetAssetSupply( + tc.claimCtx, + tc.args.amount[0].Denom, + ) // Attempt to claim htlc _, _, _, err = suite.keeper.ClaimHTLC(tc.claimCtx, htlcID, claimSecret) - expectedRecipientBalancePost := suite.app.BankKeeper.GetBalance(suite.ctx, expectedRecipient, tc.args.amount[0].Denom) - assetSupplyPost, _ := suite.keeper.GetAssetSupply(tc.claimCtx, tc.args.amount[0].Denom) + expectedRecipientBalancePost := suite.app.BankKeeper.GetBalance( + suite.ctx, + expectedRecipient, + tc.args.amount[0].Denom, + ) + assetSupplyPost, _ := suite.keeper.GetAssetSupply( + tc.claimCtx, + tc.args.amount[0].Denom, + ) if tc.expectPass { suite.NoError(err, tc.name) @@ -628,20 +680,49 @@ func (suite *HTLCTestSuite) TestClaimHtlc() { switch tc.args.direction { case types.Incoming: // Check coins moved - suite.Equal(expectedRecipientBalancePre.Add(tc.args.amount[0]).String(), expectedRecipientBalancePost.String(), tc.name) + suite.Equal( + expectedRecipientBalancePre.Add(tc.args.amount[0]).String(), + expectedRecipientBalancePost.String(), + tc.name, + ) // Check incoming supply decreased - suite.Equal(assetSupplyPre.IncomingSupply.Amount.Sub(tc.args.amount[0].Amount).String(), assetSupplyPost.IncomingSupply.Amount.String(), tc.name) + suite.Equal( + assetSupplyPre.IncomingSupply.Amount.Sub(tc.args.amount[0].Amount). + String(), + assetSupplyPost.IncomingSupply.Amount.String(), + tc.name, + ) // Check current supply increased - suite.Equal(assetSupplyPre.CurrentSupply.Add(tc.args.amount[0]).String(), assetSupplyPost.CurrentSupply.String(), tc.name) + suite.Equal( + assetSupplyPre.CurrentSupply.Add(tc.args.amount[0]).String(), + assetSupplyPost.CurrentSupply.String(), + tc.name, + ) // Check outgoing supply not changed - suite.Equal(assetSupplyPre.OutgoingSupply.String(), assetSupplyPost.OutgoingSupply.String(), tc.name) + suite.Equal( + assetSupplyPre.OutgoingSupply.String(), + assetSupplyPost.OutgoingSupply.String(), + tc.name, + ) case types.Outgoing: // Check incoming supply not changed - suite.Equal(assetSupplyPre.IncomingSupply.String(), assetSupplyPost.IncomingSupply.String(), tc.name) + suite.Equal( + assetSupplyPre.IncomingSupply.String(), + assetSupplyPost.IncomingSupply.String(), + tc.name, + ) // Check current supply decreased - suite.Equal(assetSupplyPre.CurrentSupply.Sub(tc.args.amount[0]).String(), assetSupplyPost.CurrentSupply.String(), tc.name) + suite.Equal( + assetSupplyPre.CurrentSupply.Sub(tc.args.amount[0]).String(), + assetSupplyPost.CurrentSupply.String(), + tc.name, + ) // Check outgoing supply decreased - suite.Equal(assetSupplyPre.OutgoingSupply.Sub(tc.args.amount[0]).String(), assetSupplyPost.OutgoingSupply.String(), tc.name) + suite.Equal( + assetSupplyPre.OutgoingSupply.Sub(tc.args.amount[0]).String(), + assetSupplyPost.OutgoingSupply.String(), + tc.name, + ) default: suite.Fail("should not have invalid direction") } @@ -734,7 +815,10 @@ func (suite *HTLCTestSuite) TestRefundHTLC() { if tc.args.direction == types.Outgoing { sender = suite.addrs[6] expectedRecipient = suite.deputy - err := suite.keeper.IncrementCurrentAssetSupply(suite.ctx, expectedRefundAmount[0]) + err := suite.keeper.IncrementCurrentAssetSupply( + suite.ctx, + expectedRefundAmount[0], + ) suite.Nil(err) } @@ -753,35 +837,82 @@ func (suite *HTLCTestSuite) TestRefundHTLC() { ) suite.NoError(err, tc.name) - realHTLCID := types.GetID(sender, expectedRecipient, expectedRefundAmount, suite.hashLocks[i]) + realHTLCID := types.GetID( + sender, + expectedRecipient, + expectedRefundAmount, + suite.hashLocks[i], + ) suite.Equal(realHTLCID, id, tc.name) - originalSenderBalancePre := suite.app.BankKeeper.GetBalance(tc.refundCtx, sender, expectedRefundAmount[0].Denom) - assetSupplyPre, _ := suite.keeper.GetAssetSupply(tc.refundCtx, expectedRefundAmount[0].Denom) + originalSenderBalancePre := suite.app.BankKeeper.GetBalance( + tc.refundCtx, + sender, + expectedRefundAmount[0].Denom, + ) + assetSupplyPre, _ := suite.keeper.GetAssetSupply( + tc.refundCtx, + expectedRefundAmount[0].Denom, + ) // Run the beginblocker before attempting refund htlc.BeginBlocker(tc.refundCtx, *suite.keeper) - originalSenderBalancePost := suite.app.BankKeeper.GetBalance(tc.refundCtx, sender, expectedRefundAmount[0].Denom) - assetSupplyPost, _ := suite.keeper.GetAssetSupply(tc.refundCtx, expectedRefundAmount[0].Denom) + originalSenderBalancePost := suite.app.BankKeeper.GetBalance( + tc.refundCtx, + sender, + expectedRefundAmount[0].Denom, + ) + assetSupplyPost, _ := suite.keeper.GetAssetSupply( + tc.refundCtx, + expectedRefundAmount[0].Denom, + ) if tc.expectPass { // Check asset supply changes switch tc.args.direction { case types.Incoming: // Check incoming supply decreased - suite.Equal(assetSupplyPre.IncomingSupply.Sub(expectedRefundAmount[0]).String(), assetSupplyPost.IncomingSupply.String(), tc.name) + suite.Equal( + assetSupplyPre.IncomingSupply.Sub(expectedRefundAmount[0]).String(), + assetSupplyPost.IncomingSupply.String(), + tc.name, + ) // Check current, outgoing supply not changed - suite.Equal(assetSupplyPre.CurrentSupply.String(), assetSupplyPost.CurrentSupply.String(), tc.name) - suite.Equal(assetSupplyPre.OutgoingSupply.String(), assetSupplyPost.OutgoingSupply.String(), tc.name) + suite.Equal( + assetSupplyPre.CurrentSupply.String(), + assetSupplyPost.CurrentSupply.String(), + tc.name, + ) + suite.Equal( + assetSupplyPre.OutgoingSupply.String(), + assetSupplyPost.OutgoingSupply.String(), + tc.name, + ) case types.Outgoing: // Check coins moved - suite.Equal(originalSenderBalancePre.Add(expectedRefundAmount[0]).String(), originalSenderBalancePost.String(), tc.name) + suite.Equal( + originalSenderBalancePre.Add(expectedRefundAmount[0]).String(), + originalSenderBalancePost.String(), + tc.name, + ) // Check incoming, current supply not changed - suite.Equal(assetSupplyPre.IncomingSupply.String(), assetSupplyPost.IncomingSupply.String(), tc.name) - suite.Equal(assetSupplyPre.CurrentSupply.String(), assetSupplyPost.CurrentSupply.String(), tc.name) + suite.Equal( + assetSupplyPre.IncomingSupply.String(), + assetSupplyPost.IncomingSupply.String(), + tc.name, + ) + suite.Equal( + assetSupplyPre.CurrentSupply.String(), + assetSupplyPost.CurrentSupply.String(), + tc.name, + ) // Check outgoing supply decreased - suite.Equal(assetSupplyPre.OutgoingSupply.Sub(expectedRefundAmount[0]).String(), assetSupplyPost.OutgoingSupply.String(), tc.name) + suite.Equal( + assetSupplyPre.OutgoingSupply.Sub(expectedRefundAmount[0]).String(), + assetSupplyPost.OutgoingSupply.String(), + tc.name, + ) default: suite.Fail("should not have invalid direction") } diff --git a/modules/htlc/keeper/integration_test.go b/modules/htlc/keeper/integration_test.go index fa126270..19e38546 100644 --- a/modules/htlc/keeper/integration_test.go +++ b/modules/htlc/keeper/integration_test.go @@ -4,8 +4,8 @@ import ( "math/rand" "time" - "github.com/tendermint/tendermint/crypto" - "github.com/tendermint/tendermint/crypto/secp256k1" + "github.com/cometbft/cometbft/crypto" + "github.com/cometbft/cometbft/crypto/secp256k1" sdk "github.com/cosmos/cosmos-sdk/types" @@ -13,7 +13,13 @@ import ( ) var ( - DenomMap = map[int]string{0: "htltbtc", 1: "htlteth", 2: "htltbnb", 3: "htltxrp", 4: "htltdai"} + DenomMap = map[int]string{ + 0: "htltbtc", + 1: "htlteth", + 2: "htltbnb", + 3: "htltxrp", + 4: "htltdai", + } TestDeputy = sdk.AccAddress(crypto.AddressHash([]byte("TestDeputy"))) TestUser1 = sdk.AccAddress(crypto.AddressHash([]byte("TestUser1"))) TestUser2 = sdk.AccAddress(crypto.AddressHash([]byte("TestUser2"))) diff --git a/modules/htlc/keeper/keeper.go b/modules/htlc/keeper/keeper.go index 4a76984f..42c8f5c0 100644 --- a/modules/htlc/keeper/keeper.go +++ b/modules/htlc/keeper/keeper.go @@ -3,7 +3,7 @@ package keeper import ( "fmt" - "github.com/tendermint/tendermint/libs/log" + "github.com/cometbft/cometbft/libs/log" "github.com/cosmos/cosmos-sdk/codec" storetypes "github.com/cosmos/cosmos-sdk/store/types" diff --git a/modules/htlc/keeper/params_test.go b/modules/htlc/keeper/params_test.go index c97c8203..eaa45c75 100644 --- a/modules/htlc/keeper/params_test.go +++ b/modules/htlc/keeper/params_test.go @@ -7,7 +7,7 @@ import ( "github.com/stretchr/testify/suite" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" @@ -27,10 +27,13 @@ type ParamsTestSuite struct { } func (suite *ParamsTestSuite) SetupTest() { - app := simapp.SetupWithGenesisStateFn(suite.T(), func(cdc codec.Codec, state simapp.GenesisState) simapp.GenesisState { - state[types.ModuleName] = cdc.MustMarshalJSON(NewHTLTGenesis(TestDeputy)) - return state - }) + app := simapp.SetupWithGenesisStateFn( + suite.T(), + func(cdc codec.Codec, state simapp.GenesisState) simapp.GenesisState { + state[types.ModuleName] = cdc.MustMarshalJSON(NewHTLTGenesis(TestDeputy)) + return state + }, + ) suite.ctx = app.BaseApp.NewContext(false, tmproto.Header{Height: 1, Time: time.Now()}) suite.cdc = codec.NewAminoCodec(app.LegacyAmino()) diff --git a/modules/htlc/module.go b/modules/htlc/module.go index 54bb656e..4c87a55a 100644 --- a/modules/htlc/module.go +++ b/modules/htlc/module.go @@ -9,7 +9,7 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" - abci "github.com/tendermint/tendermint/abci/types" + abci "github.com/cometbft/cometbft/abci/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" @@ -49,7 +49,11 @@ func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { } // ValidateGenesis performs genesis state validation for the HTLC module. -func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error { +func (AppModuleBasic) ValidateGenesis( + cdc codec.JSONCodec, + config client.TxEncodingConfig, + bz json.RawMessage, +) error { var data types.GenesisState if err := cdc.UnmarshalJSON(bz, &data); err != nil { return fmt.Errorf("failed to unmarshal %s genesis state: %w", types.ModuleName, err) @@ -95,7 +99,12 @@ type AppModule struct { } // NewAppModule creates a new AppModule object -func NewAppModule(cdc codec.Codec, keeper keeper.Keeper, accountKeeper types.AccountKeeper, bankKeeper types.BankKeeper) AppModule { +func NewAppModule( + cdc codec.Codec, + keeper keeper.Keeper, + accountKeeper types.AccountKeeper, + bankKeeper types.BankKeeper, +) AppModule { return AppModule{ AppModuleBasic: AppModuleBasic{cdc: cdc}, keeper: keeper, @@ -118,7 +127,11 @@ func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {} // InitGenesis performs genesis initialization for the HTLC module. It returns // no validator updates. -func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { +func (am AppModule) InitGenesis( + ctx sdk.Context, + cdc codec.JSONCodec, + data json.RawMessage, +) []abci.ValidatorUpdate { var genesisState types.GenesisState cdc.MustUnmarshalJSON(data, &genesisState) InitGenesis(ctx, am.keeper, genesisState) @@ -159,6 +172,14 @@ func (am AppModule) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry) { } // WeightedOperations returns the all the HTLC module operations with their respective weights. -func (am AppModule) WeightedOperations(simState module.SimulationState) []simtypes.WeightedOperation { - return simulation.WeightedOperations(simState.AppParams, simState.Cdc, am.keeper, am.accountKeeper, am.bankKeeper) +func (am AppModule) WeightedOperations( + simState module.SimulationState, +) []simtypes.WeightedOperation { + return simulation.WeightedOperations( + simState.AppParams, + simState.Cdc, + am.keeper, + am.accountKeeper, + am.bankKeeper, + ) } diff --git a/modules/htlc/simulation/genesis.go b/modules/htlc/simulation/genesis.go index e2686e3e..151c8b77 100644 --- a/modules/htlc/simulation/genesis.go +++ b/modules/htlc/simulation/genesis.go @@ -5,9 +5,9 @@ import ( "fmt" "time" + "github.com/cometbft/cometbft/crypto" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/tendermint/tendermint/crypto" "github.com/irisnet/irismod/modules/htlc/types" ) diff --git a/modules/htlc/simulation/operation.go b/modules/htlc/simulation/operation.go index ebbd84d5..80fa8a24 100644 --- a/modules/htlc/simulation/operation.go +++ b/modules/htlc/simulation/operation.go @@ -5,7 +5,7 @@ import ( "math/rand" "time" - tmbytes "github.com/tendermint/tendermint/libs/bytes" + tmbytes "github.com/cometbft/cometbft/libs/bytes" simappparams "cosmossdk.io/simapp/params" "github.com/cosmos/cosmos-sdk/baseapp" @@ -56,7 +56,11 @@ func WeightedOperations( } } -func SimulateMsgCreateHtlc(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKeeper) simtypes.Operation { +func SimulateMsgCreateHtlc( + k keeper.Keeper, + ak types.AccountKeeper, + bk types.BankKeeper, +) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { @@ -69,13 +73,21 @@ func SimulateMsgCreateHtlc(k keeper.Keeper, ak types.AccountKeeper, bk types.Ban account := ak.GetAccount(ctx, sender.Address) spendable := bk.SpendableCoins(ctx, account.GetAddress()) if spendable.IsZero() { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgCreateHTLC, "Insufficient funds"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgCreateHTLC, + "Insufficient funds", + ), nil, nil } amount := simtypes.RandSubsetCoins(r, spendable) balance, hasNeg := spendable.SafeSub(amount...) if hasNeg { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgCreateHTLC, "Insufficient funds"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgCreateHTLC, + "Insufficient funds", + ), nil, nil } timestamp := uint64(GenTimestamp(r, ctx)) secret := Gensecret() @@ -100,7 +112,11 @@ func SimulateMsgCreateHtlc(k keeper.Keeper, ak types.AccountKeeper, bk types.Ban fees, err := simtypes.RandomFees(r, ctx, balance) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgCreateHTLC, err.Error()), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgCreateHTLC, + err.Error(), + ), nil, err } txGen := simappparams.MakeTestEncodingConfig().TxConfig @@ -116,7 +132,11 @@ func SimulateMsgCreateHtlc(k keeper.Keeper, ak types.AccountKeeper, bk types.Ban sender.PrivKey, ) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate mock tx", + ), nil, err } _, _, err = app.SimDeliver(txGen.TxEncoder(), tx) @@ -127,33 +147,57 @@ func SimulateMsgCreateHtlc(k keeper.Keeper, ak types.AccountKeeper, bk types.Ban } } -func SimulateMsgClaimHtlc(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKeeper) simtypes.Operation { +func SimulateMsgClaimHtlc( + k keeper.Keeper, + ak types.AccountKeeper, + bk types.BankKeeper, +) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { htlc := GenRandomHtlc(ctx, k, r) if htlc.Size() == 0 { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgClaimHTLC, "not exist htlc"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgClaimHTLC, + "not exist htlc", + ), nil, nil } sender, err := sdk.AccAddressFromBech32(htlc.Sender) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgCreateHTLC, "invalid address"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgCreateHTLC, + "invalid address", + ), nil, nil } account := ak.GetAccount(ctx, sender) simAccount, found := simtypes.FindAccount(accs, account.GetAddress()) if !found { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgClaimHTLC, "account not found"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgClaimHTLC, + "account not found", + ), nil, nil } if htlc.State != types.Open { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgClaimHTLC, "htlc not open"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgClaimHTLC, + "htlc not open", + ), nil, nil } secret := Gensecret() - msg := &types.MsgClaimHTLC{Sender: htlc.Sender, Id: htlc.Id, Secret: hex.EncodeToString(secret)} + msg := &types.MsgClaimHTLC{ + Sender: htlc.Sender, + Id: htlc.Id, + Secret: hex.EncodeToString(secret), + } spendable := bk.SpendableCoins(ctx, account.GetAddress()) fees, err := simtypes.RandomFees(r, ctx, spendable) @@ -174,7 +218,11 @@ func SimulateMsgClaimHtlc(k keeper.Keeper, ak types.AccountKeeper, bk types.Bank simAccount.PrivKey, ) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate mock tx", + ), nil, err } _, _, err = app.SimDeliver(txGen.TxEncoder(), tx) diff --git a/modules/htlc/types/conmmon_test.go b/modules/htlc/types/conmmon_test.go index 8a3c1c4b..3525e1b5 100644 --- a/modules/htlc/types/conmmon_test.go +++ b/modules/htlc/types/conmmon_test.go @@ -4,8 +4,8 @@ import ( "math/rand" time "time" - "github.com/tendermint/tendermint/crypto" - "github.com/tendermint/tendermint/crypto/secp256k1" + "github.com/cometbft/cometbft/crypto" + "github.com/cometbft/cometbft/crypto/secp256k1" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/modules/htlc/types/htlc.go b/modules/htlc/types/htlc.go index 47f69f56..2c3aca64 100644 --- a/modules/htlc/types/htlc.go +++ b/modules/htlc/types/htlc.go @@ -4,8 +4,8 @@ import ( fmt "fmt" time "time" - "github.com/tendermint/tendermint/crypto/tmhash" - tmbytes "github.com/tendermint/tendermint/libs/bytes" + "github.com/cometbft/cometbft/crypto/tmhash" + tmbytes "github.com/cometbft/cometbft/libs/bytes" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -88,7 +88,10 @@ func (h HTLC) Validate() error { return sdkerrors.Wrapf(ErrInvalidDirection, "invalid htlt direction") } if h.State != Completed && len(h.Secret) > 0 { - return sdkerrors.Wrapf(ErrInvalidSecret, "secret must be empty when the HTLC has not be claimed") + return sdkerrors.Wrapf( + ErrInvalidSecret, + "secret must be empty when the HTLC has not be claimed", + ) } if h.State == Completed && len(h.Secret) != SecretLength { return sdkerrors.Wrapf(ErrInvalidSecret, "length of the secret must be %d", SecretLength) @@ -130,11 +133,22 @@ func (a AssetSupply) Validate() error { return sdkerrors.Wrapf(sdkerrors.ErrInvalidCoins, "current supply %s", a.CurrentSupply) } if !a.TimeLimitedCurrentSupply.IsValid() { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidCoins, "time-limited current supply %s", a.CurrentSupply) + return sdkerrors.Wrapf( + sdkerrors.ErrInvalidCoins, + "time-limited current supply %s", + a.CurrentSupply, + ) } denom := a.CurrentSupply.Denom - if (a.IncomingSupply.Denom != denom) || (a.OutgoingSupply.Denom != denom) || (a.TimeLimitedCurrentSupply.Denom != denom) { - return fmt.Errorf("asset supply denoms do not match %s %s %s %s", a.CurrentSupply.Denom, a.IncomingSupply.Denom, a.OutgoingSupply.Denom, a.TimeLimitedCurrentSupply.Denom) + if (a.IncomingSupply.Denom != denom) || (a.OutgoingSupply.Denom != denom) || + (a.TimeLimitedCurrentSupply.Denom != denom) { + return fmt.Errorf( + "asset supply denoms do not match %s %s %s %s", + a.CurrentSupply.Denom, + a.IncomingSupply.Denom, + a.OutgoingSupply.Denom, + a.TimeLimitedCurrentSupply.Denom, + ) } return nil } diff --git a/modules/htlc/types/msgs_test.go b/modules/htlc/types/msgs_test.go index 404add17..e8b2fd44 100644 --- a/modules/htlc/types/msgs_test.go +++ b/modules/htlc/types/msgs_test.go @@ -7,8 +7,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/tendermint/tendermint/crypto/tmhash" - tmbytes "github.com/tendermint/tendermint/libs/bytes" + "github.com/cometbft/cometbft/crypto/tmhash" + tmbytes "github.com/cometbft/cometbft/libs/bytes" sdk "github.com/cosmos/cosmos-sdk/types" @@ -27,18 +27,34 @@ var ( secret = tmbytes.HexBytes(tmhash.Sum([]byte("secret"))) secretStr = secret.String() timestamp = uint64(1580000000) - hashLock = tmbytes.HexBytes(tmhash.Sum(append(secret, sdk.Uint64ToBigEndian(timestamp)...))) - hashLockStr = hashLock.String() - id = tmbytes.HexBytes(tmhash.Sum(append(append(append(hashLock, sender...), recipient...), []byte(amount.String())...))) - idStr = id.String() - timeLock = uint64(50) - transfer = true - notTransfer = false + hashLock = tmbytes.HexBytes( + tmhash.Sum(append(secret, sdk.Uint64ToBigEndian(timestamp)...)), + ) + hashLockStr = hashLock.String() + id = tmbytes.HexBytes( + tmhash.Sum( + append(append(append(hashLock, sender...), recipient...), []byte(amount.String())...), + ), + ) + idStr = id.String() + timeLock = uint64(50) + transfer = true + notTransfer = false ) // TestNewMsgCreateHTLC tests constructor for MsgCreateHTLC func TestNewMsgCreateHTLC(t *testing.T) { - msg := types.NewMsgCreateHTLC(senderStr, recipientStr, receiverOnOtherChain, senderOnOtherChain, amount, hashLockStr, timestamp, timeLock, notTransfer) + msg := types.NewMsgCreateHTLC( + senderStr, + recipientStr, + receiverOnOtherChain, + senderOnOtherChain, + amount, + hashLockStr, + timestamp, + timeLock, + notTransfer, + ) require.Equal(t, senderStr, msg.Sender) require.Equal(t, recipientStr, msg.To) @@ -52,13 +68,33 @@ func TestNewMsgCreateHTLC(t *testing.T) { // TestMsgCreateHTLCRoute tests Route for MsgCreateHTLC func TestMsgCreateHTLCRoute(t *testing.T) { - msg := types.NewMsgCreateHTLC(senderStr, recipientStr, receiverOnOtherChain, senderOnOtherChain, amount, hashLockStr, timestamp, timeLock, notTransfer) + msg := types.NewMsgCreateHTLC( + senderStr, + recipientStr, + receiverOnOtherChain, + senderOnOtherChain, + amount, + hashLockStr, + timestamp, + timeLock, + notTransfer, + ) require.Equal(t, "htlc", msg.Route()) } // TestMsgCreateHTLCType tests Type for MsgCreateHTLC func TestMsgCreateHTLCType(t *testing.T) { - msg := types.NewMsgCreateHTLC(senderStr, recipientStr, receiverOnOtherChain, senderOnOtherChain, amount, hashLockStr, timestamp, timeLock, notTransfer) + msg := types.NewMsgCreateHTLC( + senderStr, + recipientStr, + receiverOnOtherChain, + senderOnOtherChain, + amount, + hashLockStr, + timestamp, + timeLock, + notTransfer, + ) require.Equal(t, "create_htlc", msg.Type()) } @@ -72,16 +108,116 @@ func TestMsgCreateHTLCValidation(t *testing.T) { invalidLargeTimeLock := uint64(34561) testMsgs := []types.MsgCreateHTLC{ - types.NewMsgCreateHTLC(senderStr, recipientStr, receiverOnOtherChain, senderOnOtherChain, amount, hashLockStr, timestamp, timeLock, notTransfer), // valid htlc msg - types.NewMsgCreateHTLC(senderStr, recipientStr, receiverOnOtherChain, senderOnOtherChain, amount, hashLockStr, timestamp, timeLock, transfer), // valid htlt msg - types.NewMsgCreateHTLC(emptyAddr, recipientStr, receiverOnOtherChain, senderOnOtherChain, amount, hashLockStr, timestamp, timeLock, notTransfer), // missing sender - types.NewMsgCreateHTLC(senderStr, emptyAddr, receiverOnOtherChain, senderOnOtherChain, amount, hashLockStr, timestamp, timeLock, notTransfer), // missing recipient - types.NewMsgCreateHTLC(senderStr, recipientStr, invalidReceiverOnOtherChain, senderOnOtherChain, amount, hashLockStr, timestamp, timeLock, notTransfer), // too long receiver on other chain - types.NewMsgCreateHTLC(senderStr, recipientStr, receiverOnOtherChain, invalidSenderOnOtherChain, amount, hashLockStr, timestamp, timeLock, notTransfer), // too long sender on other chain - types.NewMsgCreateHTLC(senderStr, recipientStr, receiverOnOtherChain, senderOnOtherChain, invalidAmount, hashLockStr, timestamp, timeLock, notTransfer), // invalid amount - types.NewMsgCreateHTLC(senderStr, recipientStr, receiverOnOtherChain, senderOnOtherChain, amount, invalidHashLock, timestamp, timeLock, notTransfer), // invalid hash lock - types.NewMsgCreateHTLC(senderStr, recipientStr, receiverOnOtherChain, senderOnOtherChain, amount, hashLockStr, timestamp, invalidSmallTimeLock, notTransfer), // too small time lock - types.NewMsgCreateHTLC(senderStr, recipientStr, receiverOnOtherChain, senderOnOtherChain, amount, hashLockStr, timestamp, invalidLargeTimeLock, notTransfer), // too large time lock + types.NewMsgCreateHTLC( + senderStr, + recipientStr, + receiverOnOtherChain, + senderOnOtherChain, + amount, + hashLockStr, + timestamp, + timeLock, + notTransfer, + ), // valid htlc msg + types.NewMsgCreateHTLC( + senderStr, + recipientStr, + receiverOnOtherChain, + senderOnOtherChain, + amount, + hashLockStr, + timestamp, + timeLock, + transfer, + ), // valid htlt msg + types.NewMsgCreateHTLC( + emptyAddr, + recipientStr, + receiverOnOtherChain, + senderOnOtherChain, + amount, + hashLockStr, + timestamp, + timeLock, + notTransfer, + ), // missing sender + types.NewMsgCreateHTLC( + senderStr, + emptyAddr, + receiverOnOtherChain, + senderOnOtherChain, + amount, + hashLockStr, + timestamp, + timeLock, + notTransfer, + ), // missing recipient + types.NewMsgCreateHTLC( + senderStr, + recipientStr, + invalidReceiverOnOtherChain, + senderOnOtherChain, + amount, + hashLockStr, + timestamp, + timeLock, + notTransfer, + ), // too long receiver on other chain + types.NewMsgCreateHTLC( + senderStr, + recipientStr, + receiverOnOtherChain, + invalidSenderOnOtherChain, + amount, + hashLockStr, + timestamp, + timeLock, + notTransfer, + ), // too long sender on other chain + types.NewMsgCreateHTLC( + senderStr, + recipientStr, + receiverOnOtherChain, + senderOnOtherChain, + invalidAmount, + hashLockStr, + timestamp, + timeLock, + notTransfer, + ), // invalid amount + types.NewMsgCreateHTLC( + senderStr, + recipientStr, + receiverOnOtherChain, + senderOnOtherChain, + amount, + invalidHashLock, + timestamp, + timeLock, + notTransfer, + ), // invalid hash lock + types.NewMsgCreateHTLC( + senderStr, + recipientStr, + receiverOnOtherChain, + senderOnOtherChain, + amount, + hashLockStr, + timestamp, + invalidSmallTimeLock, + notTransfer, + ), // too small time lock + types.NewMsgCreateHTLC( + senderStr, + recipientStr, + receiverOnOtherChain, + senderOnOtherChain, + amount, + hashLockStr, + timestamp, + invalidLargeTimeLock, + notTransfer, + ), // too large time lock } testCases := []struct { @@ -113,7 +249,17 @@ func TestMsgCreateHTLCValidation(t *testing.T) { // TestMsgCreateHTLCGetSignBytes tests GetSignBytes for MsgCreateHTLC func TestMsgCreateHTLCGetSignBytes(t *testing.T) { - msg := types.NewMsgCreateHTLC(senderStr, recipientStr, receiverOnOtherChain, senderOnOtherChain, amount, hashLockStr, timestamp, timeLock, notTransfer) + msg := types.NewMsgCreateHTLC( + senderStr, + recipientStr, + receiverOnOtherChain, + senderOnOtherChain, + amount, + hashLockStr, + timestamp, + timeLock, + notTransfer, + ) res := msg.GetSignBytes() expected := `{"type":"irismod/htlc/MsgCreateHTLC","value":{"amount":[{"amount":"10","denom":"stake"}],"hash_lock":"6F4ECE9B22CFC1CF39C9C73DD2D35867A8EC97C48A9C2F664FE5287865A18C2E","receiver_on_other_chain":"receiverOnOtherChain","sender":"cosmos1pgm8hyk0pvphmlvfjc8wsvk4daluz5tgmr4lac","sender_on_other_chain":"senderOnOtherChain","time_lock":"50","timestamp":"1580000000","to":"cosmos1vewsdxxmeraett7ztsaym88jsrv85kzm8ekjsg"}}` @@ -122,7 +268,17 @@ func TestMsgCreateHTLCGetSignBytes(t *testing.T) { // TestMsgCreateHTLCGetSigners tests GetSigners for MsgCreateHTLC func TestMsgCreateHTLCGetSigners(t *testing.T) { - msg := types.NewMsgCreateHTLC(senderStr, recipientStr, receiverOnOtherChain, senderOnOtherChain, amount, hashLockStr, timestamp, timeLock, notTransfer) + msg := types.NewMsgCreateHTLC( + senderStr, + recipientStr, + receiverOnOtherChain, + senderOnOtherChain, + amount, + hashLockStr, + timestamp, + timeLock, + notTransfer, + ) res := msg.GetSigners() expected := "[0A367B92CF0B037DFD89960EE832D56F7FC15168]" diff --git a/modules/htlc/types/querier.go b/modules/htlc/types/querier.go index 26e00af7..125f35fd 100644 --- a/modules/htlc/types/querier.go +++ b/modules/htlc/types/querier.go @@ -1,7 +1,7 @@ package types import ( - tmbytes "github.com/tendermint/tendermint/libs/bytes" + tmbytes "github.com/cometbft/cometbft/libs/bytes" ) const ( diff --git a/modules/mt/client/cli/cli_test.go b/modules/mt/client/cli/cli_test.go index 156c6044..78fdf8ed 100644 --- a/modules/mt/client/cli/cli_test.go +++ b/modules/mt/client/cli/cli_test.go @@ -6,7 +6,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/tendermint/tendermint/crypto" + "github.com/cometbft/cometbft/crypto" "github.com/cosmos/cosmos-sdk/client/flags" sdk "github.com/cosmos/cosmos-sdk/types" @@ -60,7 +60,11 @@ func (s *IntegrationTestSuite) TestMT() { fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } txResult := mttestutil.IssueDenomExec( @@ -70,7 +74,11 @@ func (s *IntegrationTestSuite) TestMT() { from.String(), args..., ) - denomID := s.network.GetAttribute(mttypes.EventTypeIssueDenom, mttypes.AttributeKeyDenomID, txResult.Events) + denomID := s.network.GetAttribute( + mttypes.EventTypeIssueDenom, + mttypes.AttributeKeyDenomID, + txResult.Events, + ) //------test GetCmdQueryDenom()------------- queryDenomRespType := mttestutil.QueryDenomExec(s.T(), s.network, clientCtx, denomID) @@ -89,7 +97,11 @@ func (s *IntegrationTestSuite) TestMT() { fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(100))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(100))).String(), + ), } txResult = mttestutil.MintMTExec(s.T(), @@ -97,13 +109,23 @@ func (s *IntegrationTestSuite) TestMT() { clientCtx, from.String(), denomID, args...) s.Require().Equal(expectedCode, txResult.Code) - mtID := s.network.GetAttribute(mttypes.EventTypeMintMT, mttypes.AttributeKeyMTID, txResult.Events) + mtID := s.network.GetAttribute( + mttypes.EventTypeMintMT, + mttypes.AttributeKeyMTID, + txResult.Events, + ) //------test GetCmdQueryMT()------------- queryMTResponse := mttestutil.QueryMTExec(s.T(), s.network, clientCtx, denomID, mtID) s.Require().Equal(mtID, queryMTResponse.Id) //-------test GetCmdQueryBalances()---------- - queryBalancesResponse := mttestutil.QueryBlancesExec(s.T(), s.network, clientCtx, from.String(), denomID) + queryBalancesResponse := mttestutil.QueryBlancesExec( + s.T(), + s.network, + clientCtx, + from.String(), + denomID, + ) s.Require().Equal(1, len(queryBalancesResponse.Balance)) s.Require().Equal(uint64(10), queryBalancesResponse.Balance[0].Amount) @@ -114,7 +136,11 @@ func (s *IntegrationTestSuite) TestMT() { fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } txResult = mttestutil.EditMTExec(s.T(), @@ -131,7 +157,11 @@ func (s *IntegrationTestSuite) TestMT() { args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } txResult = mttestutil.TransferMTExec(s.T(), @@ -147,7 +177,11 @@ func (s *IntegrationTestSuite) TestMT() { args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } txResult = mttestutil.BurnMTExec(s.T(), @@ -164,7 +198,11 @@ func (s *IntegrationTestSuite) TestMT() { args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } txResult = mttestutil.TransferDenomExec(s.T(), diff --git a/modules/mt/client/testutil/test_helpers.go b/modules/mt/client/testutil/test_helpers.go index 2d52e779..9cc4d831 100644 --- a/modules/mt/client/testutil/test_helpers.go +++ b/modules/mt/client/testutil/test_helpers.go @@ -4,8 +4,8 @@ import ( "fmt" "testing" + "github.com/cometbft/cometbft/libs/cli" "github.com/gogo/protobuf/proto" - "github.com/tendermint/tendermint/libs/cli" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" diff --git a/modules/mt/keeper/keeper.go b/modules/mt/keeper/keeper.go index 9ee9893c..8255b8cb 100644 --- a/modules/mt/keeper/keeper.go +++ b/modules/mt/keeper/keeper.go @@ -3,7 +3,7 @@ package keeper import ( "fmt" - "github.com/tendermint/tendermint/libs/log" + "github.com/cometbft/cometbft/libs/log" "github.com/cosmos/cosmos-sdk/codec" storetypes "github.com/cosmos/cosmos-sdk/store/types" @@ -121,7 +121,11 @@ func (k Keeper) TransferOwner(ctx sdk.Context, srcOwnerAmount := k.GetBalance(ctx, denomID, mtID, srcOwner) if srcOwnerAmount < amount { - return sdkerrors.Wrapf(sdkerrors.ErrInsufficientFunds, "insufficient balance: %d", srcOwnerAmount) + return sdkerrors.Wrapf( + sdkerrors.ErrInsufficientFunds, + "insufficient balance: %d", + srcOwnerAmount, + ) } return k.Transfer(ctx, denomID, mtID, amount, srcOwner, dstOwner) @@ -135,7 +139,11 @@ func (k Keeper) BurnMT(ctx sdk.Context, srcOwnerAmount := k.GetBalance(ctx, denomID, mtID, owner) if srcOwnerAmount < amount { - return sdkerrors.Wrapf(sdkerrors.ErrInsufficientFunds, "insufficient balance: %d", srcOwnerAmount) + return sdkerrors.Wrapf( + sdkerrors.ErrInsufficientFunds, + "insufficient balance: %d", + srcOwnerAmount, + ) } // sub balance diff --git a/modules/mt/module.go b/modules/mt/module.go index 81f63ad7..24c8d332 100644 --- a/modules/mt/module.go +++ b/modules/mt/module.go @@ -9,7 +9,7 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" - abci "github.com/tendermint/tendermint/abci/types" + abci "github.com/cometbft/cometbft/abci/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" @@ -49,7 +49,11 @@ func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { } // ValidateGenesis performs genesis state validation for the MT module. -func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error { +func (AppModuleBasic) ValidateGenesis( + cdc codec.JSONCodec, + config client.TxEncodingConfig, + bz json.RawMessage, +) error { var data types.GenesisState if err := cdc.UnmarshalJSON(bz, &data); err != nil { return fmt.Errorf("failed to unmarshal %s genesis state: %w", types.ModuleName, err) @@ -94,7 +98,12 @@ type AppModule struct { } // NewAppModule creates a new AppModule object -func NewAppModule(cdc codec.Codec, keeper keeper.Keeper, accountKeeper types.AccountKeeper, bankKeeper types.BankKeeper) AppModule { +func NewAppModule( + cdc codec.Codec, + keeper keeper.Keeper, + accountKeeper types.AccountKeeper, + bankKeeper types.BankKeeper, +) AppModule { return AppModule{ AppModuleBasic: AppModuleBasic{cdc: cdc}, keeper: keeper, @@ -119,7 +128,11 @@ func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) { // InitGenesis performs genesis initialization for the MT module. It returns // no validator updates. -func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { +func (am AppModule) InitGenesis( + ctx sdk.Context, + cdc codec.JSONCodec, + data json.RawMessage, +) []abci.ValidatorUpdate { var genesisState types.GenesisState cdc.MustUnmarshalJSON(data, &genesisState) @@ -160,6 +173,14 @@ func (am AppModule) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry) { } // WeightedOperations returns the all the MT module operations with their respective weights. -func (am AppModule) WeightedOperations(simState module.SimulationState) []simtypes.WeightedOperation { - return simulation.WeightedOperations(simState.AppParams, simState.Cdc, am.keeper, am.accountKeeper, am.bankKeeper) +func (am AppModule) WeightedOperations( + simState module.SimulationState, +) []simtypes.WeightedOperation { + return simulation.WeightedOperations( + simState.AppParams, + simState.Cdc, + am.keeper, + am.accountKeeper, + am.bankKeeper, + ) } diff --git a/modules/nft/client/cli/cli_test.go b/modules/nft/client/cli/cli_test.go index 98c87539..cf42eb80 100644 --- a/modules/nft/client/cli/cli_test.go +++ b/modules/nft/client/cli/cli_test.go @@ -6,7 +6,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/tendermint/tendermint/crypto" + "github.com/cometbft/cometbft/crypto" "github.com/cosmos/cosmos-sdk/client/flags" sdk "github.com/cosmos/cosmos-sdk/types" @@ -74,7 +74,11 @@ func (s *IntegrationTestSuite) TestNft() { fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } txResult := nfttestutil.IssueDenomExec(s.T(), @@ -109,7 +113,11 @@ func (s *IntegrationTestSuite) TestNft() { fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } txResult = nfttestutil.MintNFTExec(s.T(), @@ -131,7 +139,12 @@ func (s *IntegrationTestSuite) TestNft() { s.Require().Equal(from.String(), queryNFTResponse.Owner) //------test GetCmdQueryOwner()------------- - queryNFTsOfOwnerResponse := nfttestutil.QueryOwnerExec(s.T(), s.network, clientCtx, from.String()) + queryNFTsOfOwnerResponse := nfttestutil.QueryOwnerExec( + s.T(), + s.network, + clientCtx, + from.String(), + ) s.Require().Equal(from.String(), queryNFTsOfOwnerResponse.Owner.Address) s.Require().Equal(denomID, queryNFTsOfOwnerResponse.Owner.IDCollections[0].DenomId) s.Require().Equal(tokenID, queryNFTsOfOwnerResponse.Owner.IDCollections[0].TokenIds[0]) @@ -153,7 +166,11 @@ func (s *IntegrationTestSuite) TestNft() { fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } txResult = nfttestutil.EditNFTExec(s.T(), @@ -178,7 +195,11 @@ func (s *IntegrationTestSuite) TestNft() { fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } txResult = nfttestutil.TransferNFTExec(s.T(), @@ -204,7 +225,11 @@ func (s *IntegrationTestSuite) TestNft() { fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } txResult = nfttestutil.MintNFTExec(s.T(), @@ -218,7 +243,11 @@ func (s *IntegrationTestSuite) TestNft() { args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } txResult = nfttestutil.BurnNFTExec(s.T(), s.network, @@ -232,7 +261,11 @@ func (s *IntegrationTestSuite) TestNft() { args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } txResult = nfttestutil.TransferDenomExec(s.T(), diff --git a/modules/nft/client/testutil/test_helpers.go b/modules/nft/client/testutil/test_helpers.go index ee6c05c3..07ad1bd7 100644 --- a/modules/nft/client/testutil/test_helpers.go +++ b/modules/nft/client/testutil/test_helpers.go @@ -4,7 +4,7 @@ import ( "fmt" "testing" - "github.com/tendermint/tendermint/libs/cli" + "github.com/cometbft/cometbft/libs/cli" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" diff --git a/modules/nft/keeper/keeper.go b/modules/nft/keeper/keeper.go index 6800a65a..e348ccf8 100644 --- a/modules/nft/keeper/keeper.go +++ b/modules/nft/keeper/keeper.go @@ -3,7 +3,7 @@ package keeper import ( "fmt" - "github.com/tendermint/tendermint/libs/log" + "github.com/cometbft/cometbft/libs/log" "github.com/cosmos/cosmos-sdk/codec" storetypes "github.com/cosmos/cosmos-sdk/store/types" diff --git a/modules/nft/keeper/keeper_test.go b/modules/nft/keeper/keeper_test.go index dcb60c51..8a5c82a9 100644 --- a/modules/nft/keeper/keeper_test.go +++ b/modules/nft/keeper/keeper_test.go @@ -7,7 +7,7 @@ import ( "github.com/stretchr/testify/suite" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/codec" @@ -79,14 +79,53 @@ func (suite *KeeperSuite) SetupTest() { types.RegisterQueryServer(queryHelper, app.NFTKeeper) suite.queryClient = types.NewQueryClient(queryHelper) - err := suite.keeper.SaveDenom(suite.ctx, denomID, denomNm, schema, denomSymbol, address, false, false, denomDescription, denomUri, denomUriHash, denomData) + err := suite.keeper.SaveDenom( + suite.ctx, + denomID, + denomNm, + schema, + denomSymbol, + address, + false, + false, + denomDescription, + denomUri, + denomUriHash, + denomData, + ) suite.NoError(err) // SaveNFT shouldn't fail when collection does not exist - err = suite.keeper.SaveDenom(suite.ctx, denomID2, denomNm2, schema, denomSymbol2, address, false, false, denomDescription, denomUri, denomUriHash, denomData) + err = suite.keeper.SaveDenom( + suite.ctx, + denomID2, + denomNm2, + schema, + denomSymbol2, + address, + false, + false, + denomDescription, + denomUri, + denomUriHash, + denomData, + ) suite.NoError(err) - err = suite.keeper.SaveDenom(suite.ctx, denomID3, denomNm3, schema, denomSymbol3, address3, true, true, denomDescription, denomUri, denomUriHash, denomData) + err = suite.keeper.SaveDenom( + suite.ctx, + denomID3, + denomNm3, + schema, + denomSymbol3, + address3, + true, + true, + denomDescription, + denomUri, + denomUriHash, + denomData, + ) suite.NoError(err) // collections should equal 3 @@ -102,34 +141,97 @@ func TestKeeperSuite(t *testing.T) { func (suite *KeeperSuite) TestMintNFT() { // SaveNFT shouldn't fail when collection does not exist - err := suite.keeper.SaveNFT(suite.ctx, denomID, tokenID, tokenNm, tokenURI, tokenURIHash, tokenData, address) + err := suite.keeper.SaveNFT( + suite.ctx, + denomID, + tokenID, + tokenNm, + tokenURI, + tokenURIHash, + tokenData, + address, + ) suite.NoError(err) // SaveNFT shouldn't fail when collection exists - err = suite.keeper.SaveNFT(suite.ctx, denomID, tokenID2, tokenNm2, tokenURI, tokenURIHash, tokenData, address) + err = suite.keeper.SaveNFT( + suite.ctx, + denomID, + tokenID2, + tokenNm2, + tokenURI, + tokenURIHash, + tokenData, + address, + ) suite.NoError(err) } func (suite *KeeperSuite) TestUpdateNFT() { // UpdateNFT should fail when NFT doesn't exists - err := suite.keeper.UpdateNFT(suite.ctx, denomID, tokenID, tokenNm3, tokenURI, tokenURIHash, tokenData, address) + err := suite.keeper.UpdateNFT( + suite.ctx, + denomID, + tokenID, + tokenNm3, + tokenURI, + tokenURIHash, + tokenData, + address, + ) suite.Error(err) // SaveNFT shouldn't fail when collection does not exist - err = suite.keeper.SaveNFT(suite.ctx, denomID, tokenID, tokenNm, tokenURI, tokenURIHash, tokenData, address) + err = suite.keeper.SaveNFT( + suite.ctx, + denomID, + tokenID, + tokenNm, + tokenURI, + tokenURIHash, + tokenData, + address, + ) suite.NoError(err) // UpdateNFT should fail when NFT doesn't exists - err = suite.keeper.UpdateNFT(suite.ctx, denomID, tokenID2, tokenNm2, tokenURI, tokenURIHash, tokenData, address) + err = suite.keeper.UpdateNFT( + suite.ctx, + denomID, + tokenID2, + tokenNm2, + tokenURI, + tokenURIHash, + tokenData, + address, + ) suite.Error(err) // UpdateNFT shouldn't fail when NFT exists - err = suite.keeper.UpdateNFT(suite.ctx, denomID, tokenID, tokenNm, tokenURI2, tokenURIHash2, tokenData, address) + err = suite.keeper.UpdateNFT( + suite.ctx, + denomID, + tokenID, + tokenNm, + tokenURI2, + tokenURIHash2, + tokenData, + address, + ) suite.NoError(err) // UpdateNFT should fail when NFT failed to authorize - err = suite.keeper.UpdateNFT(suite.ctx, denomID, tokenID, tokenNm, tokenURI2, tokenURIHash2, tokenData, address2) + err = suite.keeper.UpdateNFT( + suite.ctx, + denomID, + tokenID, + tokenNm, + tokenURI2, + tokenURIHash2, + tokenData, + address2, + ) suite.Error(err) // GetNFT should get the NFT with new tokenURI @@ -138,29 +240,85 @@ func (suite *KeeperSuite) TestUpdateNFT() { suite.Equal(receivedNFT.GetURI(), tokenURI2) // UpdateNFT shouldn't fail when NFT exists - err = suite.keeper.UpdateNFT(suite.ctx, denomID, tokenID, tokenNm, tokenURI2, tokenURIHash2, tokenData, address2) + err = suite.keeper.UpdateNFT( + suite.ctx, + denomID, + tokenID, + tokenNm, + tokenURI2, + tokenURIHash2, + tokenData, + address2, + ) suite.Error(err) - err = suite.keeper.SaveNFT(suite.ctx, denomID3, denomID3, tokenID3, tokenURI, tokenURIHash, tokenData, address3) + err = suite.keeper.SaveNFT( + suite.ctx, + denomID3, + denomID3, + tokenID3, + tokenURI, + tokenURIHash, + tokenData, + address3, + ) suite.NoError(err) // UpdateNFT should fail if updateRestricted equal to true, nobody can update the NFT under this denom - err = suite.keeper.UpdateNFT(suite.ctx, denomID3, denomID3, tokenID3, tokenURI, tokenURIHash, tokenData, address3) + err = suite.keeper.UpdateNFT( + suite.ctx, + denomID3, + denomID3, + tokenID3, + tokenURI, + tokenURIHash, + tokenData, + address3, + ) suite.Error(err) } func (suite *KeeperSuite) TestTransferOwnership() { // SaveNFT shouldn't fail when collection does not exist - err := suite.keeper.SaveNFT(suite.ctx, denomID, tokenID, tokenNm, tokenURI, tokenURIHash, tokenData, address) + err := suite.keeper.SaveNFT( + suite.ctx, + denomID, + tokenID, + tokenNm, + tokenURI, + tokenURIHash, + tokenData, + address, + ) suite.NoError(err) // invalid owner - err = suite.keeper.TransferOwnership(suite.ctx, denomID, tokenID, tokenNm, tokenURI, tokenURIHash, tokenData, address2, address3) + err = suite.keeper.TransferOwnership( + suite.ctx, + denomID, + tokenID, + tokenNm, + tokenURI, + tokenURIHash, + tokenData, + address2, + address3, + ) suite.Error(err) // right - err = suite.keeper.TransferOwnership(suite.ctx, denomID, tokenID, tokenNm2, tokenURI2, tokenURIHash2, tokenData, address, address2) + err = suite.keeper.TransferOwnership( + suite.ctx, + denomID, + tokenID, + tokenNm2, + tokenURI2, + tokenURIHash2, + tokenData, + address, + address2, + ) suite.NoError(err) nft, err := suite.keeper.GetNFT(suite.ctx, denomID, tokenID) @@ -186,7 +344,16 @@ func (suite *KeeperSuite) TestTransferDenom() { func (suite *KeeperSuite) TestBurnNFT() { // SaveNFT should not fail when collection does not exist - err := suite.keeper.SaveNFT(suite.ctx, denomID, tokenID, tokenNm, tokenURI, tokenURIHash, tokenData, address) + err := suite.keeper.SaveNFT( + suite.ctx, + denomID, + tokenID, + tokenNm, + tokenURI, + tokenURIHash, + tokenData, + address, + ) suite.NoError(err) // RemoveNFT should fail when NFT doesn't exist but collection does exist diff --git a/modules/nft/migrations/v2/store.go b/modules/nft/migrations/v2/store.go index f5524ffa..7fdd245d 100644 --- a/modules/nft/migrations/v2/store.go +++ b/modules/nft/migrations/v2/store.go @@ -3,7 +3,7 @@ package v2 import ( "time" - "github.com/tendermint/tendermint/libs/log" + "github.com/cometbft/cometbft/libs/log" "github.com/cosmos/cosmos-sdk/codec" storetypes "github.com/cosmos/cosmos-sdk/store/types" diff --git a/modules/nft/migrations/v2/store_test.go b/modules/nft/migrations/v2/store_test.go index 1b9d8647..d6b60605 100644 --- a/modules/nft/migrations/v2/store_test.go +++ b/modules/nft/migrations/v2/store_test.go @@ -8,7 +8,7 @@ import ( gogotypes "github.com/gogo/protobuf/types" "github.com/stretchr/testify/require" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/cosmos/cosmos-sdk/codec" storetypes "github.com/cosmos/cosmos-sdk/store/types" @@ -27,12 +27,19 @@ func TestMigrate(t *testing.T) { cdc := app.AppCodec() collections := prepareData(ctx, storeKey, cdc) - require.NoError(t, v2.Migrate(ctx, storeKey, cdc, app.NFTKeeper.Logger(ctx), app.NFTKeeper.SaveDenom)) + require.NoError( + t, + v2.Migrate(ctx, storeKey, cdc, app.NFTKeeper.Logger(ctx), app.NFTKeeper.SaveDenom), + ) check(t, ctx, app.NFTKeeper, collections) } -func prepareData(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.Codec) (collection []types.Collection) { +func prepareData( + ctx sdk.Context, + storeKey storetypes.StoreKey, + cdc codec.Codec, +) (collection []types.Collection) { addrs := simapp.CreateTestAddrs(10) for i := 1; i <= 10; i++ { denom := types.Denom{ @@ -96,27 +103,49 @@ func setDenom(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.Codec, de } // MintNFT mints an NFT and manages the NFT's existence within Collections and Owners -func mintNFT(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.Codec, denomID string, baseToken types.BaseNFT) { +func mintNFT( + ctx sdk.Context, + storeKey storetypes.StoreKey, + cdc codec.Codec, + denomID string, + baseToken types.BaseNFT, +) { setNFT(ctx, storeKey, cdc, denomID, baseToken) setOwner(ctx, storeKey, cdc, denomID, baseToken.Id, baseToken.Owner) increaseSupply(ctx, storeKey, cdc, denomID) } -func setNFT(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.Codec, denomID string, baseToken types.BaseNFT) { +func setNFT( + ctx sdk.Context, + storeKey storetypes.StoreKey, + cdc codec.Codec, + denomID string, + baseToken types.BaseNFT, +) { store := ctx.KVStore(storeKey) bz := cdc.MustMarshal(&baseToken) store.Set(v2.KeyNFT(denomID, baseToken.Id), bz) } -func setOwner(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.Codec, denomID, tokenID, owner string) { +func setOwner( + ctx sdk.Context, + storeKey storetypes.StoreKey, + cdc codec.Codec, + denomID, tokenID, owner string, +) { store := ctx.KVStore(storeKey) bz := mustMarshalTokenID(cdc, tokenID) ownerAddr := sdk.MustAccAddressFromBech32(owner) store.Set(v2.KeyOwner(ownerAddr, denomID, tokenID), bz) } -func increaseSupply(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.Codec, denomID string) { +func increaseSupply( + ctx sdk.Context, + storeKey storetypes.StoreKey, + cdc codec.Codec, + denomID string, +) { supply := getTotalSupply(ctx, storeKey, cdc, denomID) supply++ @@ -125,7 +154,12 @@ func increaseSupply(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.Cod store.Set(v2.KeyCollection(denomID), bz) } -func getTotalSupply(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.Codec, denomID string) uint64 { +func getTotalSupply( + ctx sdk.Context, + storeKey storetypes.StoreKey, + cdc codec.Codec, + denomID string, +) uint64 { store := ctx.KVStore(storeKey) bz := store.Get(v2.KeyCollection(denomID)) if len(bz) == 0 { diff --git a/modules/nft/module/module.go b/modules/nft/module/module.go index cafe5523..02a2fae9 100644 --- a/modules/nft/module/module.go +++ b/modules/nft/module/module.go @@ -8,7 +8,7 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" - abci "github.com/tendermint/tendermint/abci/types" + abci "github.com/cometbft/cometbft/abci/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" @@ -49,7 +49,11 @@ func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { } // ValidateGenesis performs genesis state validation for the NFT module. -func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error { +func (AppModuleBasic) ValidateGenesis( + cdc codec.JSONCodec, + config client.TxEncodingConfig, + bz json.RawMessage, +) error { var data types.GenesisState if err := cdc.UnmarshalJSON(bz, &data); err != nil { return fmt.Errorf("failed to unmarshal %s genesis state: %w", types.ModuleName, err) @@ -90,7 +94,12 @@ type AppModule struct { } // NewAppModule creates a new AppModule object -func NewAppModule(cdc codec.Codec, keeper keeper.Keeper, accountKeeper types.AccountKeeper, bankKeeper types.BankKeeper) AppModule { +func NewAppModule( + cdc codec.Codec, + keeper keeper.Keeper, + accountKeeper types.AccountKeeper, + bankKeeper types.BankKeeper, +) AppModule { return AppModule{ AppModuleBasic: AppModuleBasic{cdc: cdc}, keeper: keeper, @@ -120,7 +129,11 @@ func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) { // InitGenesis performs genesis initialization for the NFT module. It returns // no validator updates. -func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { +func (am AppModule) InitGenesis( + ctx sdk.Context, + cdc codec.JSONCodec, + data json.RawMessage, +) []abci.ValidatorUpdate { var genesisState types.GenesisState cdc.MustUnmarshalJSON(data, &genesisState) @@ -153,6 +166,14 @@ func (am AppModule) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry) { } // WeightedOperations returns the all the NFT module operations with their respective weights. -func (am AppModule) WeightedOperations(simState module.SimulationState) []simtypes.WeightedOperation { - return simulation.WeightedOperations(simState.AppParams, simState.Cdc, am.keeper, am.accountKeeper, am.bankKeeper) +func (am AppModule) WeightedOperations( + simState module.SimulationState, +) []simtypes.WeightedOperation { + return simulation.WeightedOperations( + simState.AppParams, + simState.Cdc, + am.keeper, + am.accountKeeper, + am.bankKeeper, + ) } diff --git a/modules/nft/types/builder_test.go b/modules/nft/types/builder_test.go index fa4db91f..53add5a0 100644 --- a/modules/nft/types/builder_test.go +++ b/modules/nft/types/builder_test.go @@ -4,6 +4,7 @@ import ( "encoding/json" "testing" + "github.com/cometbft/cometbft/crypto" "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/codec/types" codectypes "github.com/cosmos/cosmos-sdk/codec/types" @@ -11,7 +12,6 @@ import ( "github.com/cosmos/cosmos-sdk/x/nft" "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/require" - "github.com/tendermint/tendermint/crypto" ) func TestTokenBuilder_Build(t *testing.T) { @@ -73,7 +73,9 @@ func GetEncoding() codec.Codec { } func TestClassBuilder_BuildMetadata(t *testing.T) { - creator, err := sdk.AccAddressFromHexUnsafe(crypto.AddressHash([]byte("test_consumer")).String()) + creator, err := sdk.AccAddressFromHexUnsafe( + crypto.AddressHash([]byte("test_consumer")).String(), + ) require.NoError(t, err, "AccAddressFromHexUnsafe failed") cdc := GetEncoding() @@ -178,7 +180,9 @@ func TestClassBuilder_BuildMetadata(t *testing.T) { } func TestClassBuilder_Build(t *testing.T) { - creator, err := sdk.AccAddressFromHexUnsafe(crypto.AddressHash([]byte("test_consumer")).String()) + creator, err := sdk.AccAddressFromHexUnsafe( + crypto.AddressHash([]byte("test_consumer")).String(), + ) require.NoError(t, err, "AccAddressFromHexUnsafe failed") cdc := GetEncoding() diff --git a/modules/oracle/client/testutil/test-helpers.go b/modules/oracle/client/testutil/test-helpers.go index 4ae9b65c..265bbf04 100644 --- a/modules/oracle/client/testutil/test-helpers.go +++ b/modules/oracle/client/testutil/test-helpers.go @@ -4,7 +4,7 @@ import ( "fmt" "testing" - "github.com/tendermint/tendermint/libs/cli" + "github.com/cometbft/cometbft/libs/cli" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" diff --git a/modules/oracle/keeper/feed.go b/modules/oracle/keeper/feed.go index 876e9e38..46aa37f4 100644 --- a/modules/oracle/keeper/feed.go +++ b/modules/oracle/keeper/feed.go @@ -5,7 +5,7 @@ import ( gogotypes "github.com/gogo/protobuf/types" - tmbytes "github.com/tendermint/tendermint/libs/bytes" + tmbytes "github.com/cometbft/cometbft/libs/bytes" sdk "github.com/cosmos/cosmos-sdk/types" @@ -26,7 +26,10 @@ func (k Keeper) GetFeed(ctx sdk.Context, feedName string) (feed types.Feed, foun } // GetFeedByReqCtxID returns the feed by the request context ID -func (k Keeper) GetFeedByReqCtxID(ctx sdk.Context, requestContextID tmbytes.HexBytes) (feed types.Feed, found bool) { +func (k Keeper) GetFeedByReqCtxID( + ctx sdk.Context, + requestContextID tmbytes.HexBytes, +) (feed types.Feed, found bool) { store := ctx.KVStore(k.storeKey) bz := store.Get(types.GetReqCtxIDKey(requestContextID)) var feedName gogotypes.StringValue diff --git a/modules/oracle/keeper/keeper.go b/modules/oracle/keeper/keeper.go index 1a772cd4..44679c97 100644 --- a/modules/oracle/keeper/keeper.go +++ b/modules/oracle/keeper/keeper.go @@ -8,7 +8,7 @@ import ( "github.com/tidwall/gjson" - tmbytes "github.com/tendermint/tendermint/libs/bytes" + tmbytes "github.com/cometbft/cometbft/libs/bytes" "github.com/cosmos/cosmos-sdk/codec" storetypes "github.com/cosmos/cosmos-sdk/store/types" @@ -323,7 +323,10 @@ func (k Keeper) HandlerStateChanged(ctx sdk.Context, requestContextID tmbytes.He k.dequeueAndEnqueue(ctx, feed.FeedName, oldState, reqCtx.State) } -func (k Keeper) GetRequestContext(ctx sdk.Context, requestContextID tmbytes.HexBytes) (serviceexported.RequestContext, bool) { +func (k Keeper) GetRequestContext( + ctx sdk.Context, + requestContextID tmbytes.HexBytes, +) (serviceexported.RequestContext, bool) { return k.sk.GetRequestContext(ctx, requestContextID) } diff --git a/modules/oracle/keeper/keeper_test.go b/modules/oracle/keeper/keeper_test.go index dfd0fcda..cbd8e1fc 100644 --- a/modules/oracle/keeper/keeper_test.go +++ b/modules/oracle/keeper/keeper_test.go @@ -7,9 +7,9 @@ import ( "github.com/stretchr/testify/suite" - "github.com/tendermint/tendermint/crypto" - tmbytes "github.com/tendermint/tendermint/libs/bytes" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + "github.com/cometbft/cometbft/crypto" + tmbytes "github.com/cometbft/cometbft/libs/bytes" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" @@ -53,7 +53,12 @@ func (suite *KeeperTestSuite) SetupTest() { suite.ctx = app.BaseApp.NewContext(false, tmproto.Header{}) suite.app = app - suite.keeper = keeper.NewKeeper(app.AppCodec(), app.GetKey(types.StoreKey), app.GetSubspace(types.ModuleName), NewMockServiceKeeper()) + suite.keeper = keeper.NewKeeper( + app.AppCodec(), + app.GetKey(types.StoreKey), + app.GetSubspace(types.ModuleName), + NewMockServiceKeeper(), + ) } func TestKeeperTestSuite(t *testing.T) { @@ -224,22 +229,34 @@ func NewMockServiceKeeper() MockServiceKeeper { } } -func (m MockServiceKeeper) RegisterStateCallback(moduleName string, stateCallback exported.StateCallback) error { +func (m MockServiceKeeper) RegisterStateCallback( + moduleName string, + stateCallback exported.StateCallback, +) error { m.stateCallbackMap[moduleName] = stateCallback return nil } -func (m MockServiceKeeper) RegisterResponseCallback(moduleName string, respCallback exported.ResponseCallback) error { +func (m MockServiceKeeper) RegisterResponseCallback( + moduleName string, + respCallback exported.ResponseCallback, +) error { m.callbackMap[moduleName] = respCallback return nil } -func (m MockServiceKeeper) RegisterModuleService(moduleName string, moduleService *exported.ModuleService) error { +func (m MockServiceKeeper) RegisterModuleService( + moduleName string, + moduleService *exported.ModuleService, +) error { m.moduleServiceMap[moduleName] = moduleService return nil } -func (m MockServiceKeeper) GetRequestContext(ctx sdk.Context, requestContextID tmbytes.HexBytes) (exported.RequestContext, bool) { +func (m MockServiceKeeper) GetRequestContext( + ctx sdk.Context, + requestContextID tmbytes.HexBytes, +) (exported.RequestContext, bool) { reqCtx, ok := m.cxtMap[strings.ToUpper(hex.EncodeToString(requestContextID))] return reqCtx, ok } @@ -297,7 +314,11 @@ func (m MockServiceKeeper) UpdateRequestContext( return nil } -func (m MockServiceKeeper) StartRequestContext(ctx sdk.Context, requestContextID tmbytes.HexBytes, consumer sdk.AccAddress) error { +func (m MockServiceKeeper) StartRequestContext( + ctx sdk.Context, + requestContextID tmbytes.HexBytes, + consumer sdk.AccAddress, +) error { reqCtx := m.cxtMap[strings.ToUpper(hex.EncodeToString(requestContextID))] callback := m.callbackMap[reqCtx.ModuleName] reqCtx.State = servicetypes.RUNNING @@ -306,7 +327,11 @@ func (m MockServiceKeeper) StartRequestContext(ctx sdk.Context, requestContextID return nil } -func (m MockServiceKeeper) PauseRequestContext(ctx sdk.Context, requestContextID tmbytes.HexBytes, consumer sdk.AccAddress) error { +func (m MockServiceKeeper) PauseRequestContext( + ctx sdk.Context, + requestContextID tmbytes.HexBytes, + consumer sdk.AccAddress, +) error { reqCtx := m.cxtMap[strings.ToUpper(hex.EncodeToString(requestContextID))] reqCtx.State = exported.PAUSED m.cxtMap[strings.ToUpper(hex.EncodeToString(requestContextID))] = reqCtx diff --git a/modules/oracle/module.go b/modules/oracle/module.go index b20fb93c..1e57e696 100644 --- a/modules/oracle/module.go +++ b/modules/oracle/module.go @@ -9,7 +9,7 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" - abci "github.com/tendermint/tendermint/abci/types" + abci "github.com/cometbft/cometbft/abci/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" @@ -49,7 +49,11 @@ func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { } // ValidateGenesis performs genesis state validation for the oracle module. -func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error { +func (AppModuleBasic) ValidateGenesis( + cdc codec.JSONCodec, + config client.TxEncodingConfig, + bz json.RawMessage, +) error { var data types.GenesisState if err := cdc.UnmarshalJSON(bz, &data); err != nil { return fmt.Errorf("failed to unmarshal %s genesis state: %w", types.ModuleName, err) @@ -95,7 +99,12 @@ type AppModule struct { } // NewAppModule creates a new AppModule object -func NewAppModule(cdc codec.Codec, keeper keeper.Keeper, accountKeeper types.AccountKeeper, bankKeeper types.BankKeeper) AppModule { +func NewAppModule( + cdc codec.Codec, + keeper keeper.Keeper, + accountKeeper types.AccountKeeper, + bankKeeper types.BankKeeper, +) AppModule { return AppModule{ AppModuleBasic: AppModuleBasic{cdc: cdc}, keeper: keeper, @@ -118,7 +127,11 @@ func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {} // InitGenesis performs genesis initialization for the oracle module. It returns // no validator updates. -func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { +func (am AppModule) InitGenesis( + ctx sdk.Context, + cdc codec.JSONCodec, + data json.RawMessage, +) []abci.ValidatorUpdate { var genesisState types.GenesisState cdc.MustUnmarshalJSON(data, &genesisState) @@ -155,6 +168,14 @@ func (AppModule) GenerateGenesisState(simState *module.SimulationState) {} func (am AppModule) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry) {} // WeightedOperations returns the all the oracle module operations with their respective weights. -func (am AppModule) WeightedOperations(simState module.SimulationState) []simtypes.WeightedOperation { - return simulation.WeightedOperations(simState.AppParams, simState.Cdc, am.keeper, am.accountKeeper, am.bankKeeper) +func (am AppModule) WeightedOperations( + simState module.SimulationState, +) []simtypes.WeightedOperation { + return simulation.WeightedOperations( + simState.AppParams, + simState.Cdc, + am.keeper, + am.accountKeeper, + am.bankKeeper, + ) } diff --git a/modules/oracle/types/expected_keepers.go b/modules/oracle/types/expected_keepers.go index af9541e2..69c5c915 100644 --- a/modules/oracle/types/expected_keepers.go +++ b/modules/oracle/types/expected_keepers.go @@ -1,7 +1,7 @@ package types import ( - tmbytes "github.com/tendermint/tendermint/libs/bytes" + tmbytes "github.com/cometbft/cometbft/libs/bytes" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" diff --git a/modules/oracle/types/msgs_test.go b/modules/oracle/types/msgs_test.go index 3cd1bbf7..55f8b02b 100644 --- a/modules/oracle/types/msgs_test.go +++ b/modules/oracle/types/msgs_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/tendermint/tendermint/crypto/tmhash" + "github.com/cometbft/cometbft/crypto/tmhash" sdk "github.com/cosmos/cosmos-sdk/types" ) diff --git a/modules/random/client/testutil/test_helpers.go b/modules/random/client/testutil/test_helpers.go index 47728df6..04074ef7 100644 --- a/modules/random/client/testutil/test_helpers.go +++ b/modules/random/client/testutil/test_helpers.go @@ -4,7 +4,7 @@ import ( "fmt" "testing" - "github.com/tendermint/tendermint/libs/cli" + "github.com/cometbft/cometbft/libs/cli" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" diff --git a/modules/random/genesis_test.go b/modules/random/genesis_test.go index 0a75138f..dfcde91d 100644 --- a/modules/random/genesis_test.go +++ b/modules/random/genesis_test.go @@ -6,7 +6,7 @@ import ( "github.com/stretchr/testify/suite" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" @@ -52,9 +52,21 @@ func (suite *GenesisTestSuite) TestExportGenesis() { suite.ctx = suite.ctx.WithBlockHeight(testHeight).WithTxBytes(testTxBytes) // request rands - _, err := suite.keeper.RequestRandom(suite.ctx, testConsumer1, testBlockInterval1, false, sdk.NewCoins()) + _, err := suite.keeper.RequestRandom( + suite.ctx, + testConsumer1, + testBlockInterval1, + false, + sdk.NewCoins(), + ) suite.NoError(err) - _, err = suite.keeper.RequestRandom(suite.ctx, testConsumer2, testBlockInterval2, false, sdk.NewCoins()) + _, err = suite.keeper.RequestRandom( + suite.ctx, + testConsumer2, + testBlockInterval2, + false, + sdk.NewCoins(), + ) suite.NoError(err) // precede to the new block @@ -62,10 +74,13 @@ func (suite *GenesisTestSuite) TestExportGenesis() { // get the pending requests from queue storedRequests := make(map[int64][]types.Request) - suite.keeper.IterateRandomRequestQueue(suite.ctx, func(h int64, reqID []byte, r types.Request) bool { - storedRequests[h] = append(storedRequests[h], r) - return false - }) + suite.keeper.IterateRandomRequestQueue( + suite.ctx, + func(h int64, reqID []byte, r types.Request) bool { + storedRequests[h] = append(storedRequests[h], r) + return false + }, + ) suite.Equal(2, len(storedRequests)) // export genesis diff --git a/modules/random/keeper/keeper.go b/modules/random/keeper/keeper.go index 4301f383..7af1eb16 100644 --- a/modules/random/keeper/keeper.go +++ b/modules/random/keeper/keeper.go @@ -3,7 +3,7 @@ package keeper import ( "encoding/hex" - "github.com/tendermint/tendermint/libs/log" + "github.com/cometbft/cometbft/libs/log" "github.com/cosmos/cosmos-sdk/codec" storetypes "github.com/cosmos/cosmos-sdk/store/types" @@ -22,7 +22,12 @@ type Keeper struct { } // NewKeeper returns a new random keeper -func NewKeeper(cdc codec.Codec, key storetypes.StoreKey, bankKeeper types.BankKeeper, serviceKeeper types.ServiceKeeper) Keeper { +func NewKeeper( + cdc codec.Codec, + key storetypes.StoreKey, + bankKeeper types.BankKeeper, + serviceKeeper types.ServiceKeeper, +) Keeper { keeper := Keeper{ cdc: cdc, storeKey: key, @@ -66,7 +71,14 @@ func (k Keeper) RequestRandom( } // build request - request = types.NewRequest(currentHeight, consumer.String(), hex.EncodeToString(txHash), oracle, serviceFeeCap, requestContextID.String()) + request = types.NewRequest( + currentHeight, + consumer.String(), + hex.EncodeToString(txHash), + oracle, + serviceFeeCap, + requestContextID.String(), + ) } else { // build request request = types.NewRequest(currentHeight, consumer.String(), hex.EncodeToString(txHash), oracle, nil, "") @@ -89,7 +101,12 @@ func (k Keeper) SetRandom(ctx sdk.Context, reqID []byte, random types.Random) { } // EnqueueRandomRequest enqueues the random number request -func (k Keeper) EnqueueRandomRequest(ctx sdk.Context, height int64, reqID []byte, request types.Request) { +func (k Keeper) EnqueueRandomRequest( + ctx sdk.Context, + height int64, + reqID []byte, + request types.Request, +) { store := ctx.KVStore(k.storeKey) bz := k.cdc.MustMarshal(&request) store.Set(types.KeyRandomRequestQueue(height, reqID), bz) @@ -102,19 +119,29 @@ func (k Keeper) DequeueRandomRequest(ctx sdk.Context, height int64, reqID []byte } // SetOracleRandRequest stores the oracle random number request -func (k Keeper) SetOracleRandRequest(ctx sdk.Context, requestContextID []byte, request types.Request) { +func (k Keeper) SetOracleRandRequest( + ctx sdk.Context, + requestContextID []byte, + request types.Request, +) { store := ctx.KVStore(k.storeKey) bz := k.cdc.MustMarshal(&request) store.Set(types.KeyOracleRandomRequest(requestContextID), bz) } // GetOracleRandRequest retrieves the oracle random number request by the specified request id -func (k Keeper) GetOracleRandRequest(ctx sdk.Context, requestContextID []byte) (types.Request, error) { +func (k Keeper) GetOracleRandRequest( + ctx sdk.Context, + requestContextID []byte, +) (types.Request, error) { store := ctx.KVStore(k.storeKey) bz := store.Get(types.KeyOracleRandomRequest(requestContextID)) if bz == nil { - return types.Request{}, sdkerrors.Wrap(types.ErrInvalidRequestContextID, hex.EncodeToString(requestContextID)) + return types.Request{}, sdkerrors.Wrap( + types.ErrInvalidRequestContextID, + hex.EncodeToString(requestContextID), + ) } var request types.Request @@ -168,7 +195,10 @@ func (k Keeper) IterateRandomRequestQueueByHeight(ctx sdk.Context, height int64) } // IterateRandomRequestQueue iterates through the random number request queue -func (k Keeper) IterateRandomRequestQueue(ctx sdk.Context, op func(h int64, reqID []byte, r types.Request) (stop bool)) { +func (k Keeper) IterateRandomRequestQueue( + ctx sdk.Context, + op func(h int64, reqID []byte, r types.Request) (stop bool), +) { store := ctx.KVStore(k.storeKey) iterator := sdk.KVStorePrefixIterator(store, types.RandomRequestQueueKey) diff --git a/modules/random/keeper/keeper_test.go b/modules/random/keeper/keeper_test.go index e0882921..fd71fc44 100644 --- a/modules/random/keeper/keeper_test.go +++ b/modules/random/keeper/keeper_test.go @@ -8,8 +8,8 @@ import ( "github.com/stretchr/testify/suite" - "github.com/tendermint/tendermint/crypto" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + "github.com/cometbft/cometbft/crypto" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" @@ -21,10 +21,12 @@ import ( // define testing variables var ( - testTxBytes = []byte("test_tx") - testHeight = int64(10000) - testBlockInterval = uint64(100) - testConsumer, _ = sdk.AccAddressFromHexUnsafe(crypto.AddressHash([]byte("test_consumer")).String()) + testTxBytes = []byte("test_tx") + testHeight = int64(10000) + testBlockInterval = uint64(100) + testConsumer, _ = sdk.AccAddressFromHexUnsafe( + crypto.AddressHash([]byte("test_consumer")).String(), + ) testReqID = []byte("test_req_id") testRandomNumerator = int64(3) testRandomDenomiator = int64(4) @@ -71,13 +73,29 @@ func (suite *KeeperTestSuite) TestSetRandom() { func (suite *KeeperTestSuite) TestRequestRandom() { suite.ctx = suite.ctx.WithBlockHeight(testHeight).WithTxBytes(testTxBytes) - request, err := suite.keeper.RequestRandom(suite.ctx, testConsumer, testBlockInterval, false, nil) + request, err := suite.keeper.RequestRandom( + suite.ctx, + testConsumer, + testBlockInterval, + false, + nil, + ) suite.NoError(err) - expectedRequest := types.NewRequest(testHeight, testConsumer.String(), hex.EncodeToString(types.SHA256(testTxBytes)), false, nil, "") + expectedRequest := types.NewRequest( + testHeight, + testConsumer.String(), + hex.EncodeToString(types.SHA256(testTxBytes)), + false, + nil, + "", + ) suite.Equal(request, expectedRequest) - iterator := suite.keeper.IterateRandomRequestQueueByHeight(suite.ctx, testHeight+int64(testBlockInterval)) + iterator := suite.keeper.IterateRandomRequestQueueByHeight( + suite.ctx, + testHeight+int64(testBlockInterval), + ) defer iterator.Close() for ; iterator.Valid(); iterator.Next() { diff --git a/modules/random/keeper/service.go b/modules/random/keeper/service.go index 17e5bcf7..fd40156e 100644 --- a/modules/random/keeper/service.go +++ b/modules/random/keeper/service.go @@ -5,7 +5,7 @@ import ( "github.com/tidwall/gjson" - tmbytes "github.com/tendermint/tendermint/libs/bytes" + tmbytes "github.com/cometbft/cometbft/libs/bytes" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -16,7 +16,11 @@ import ( ) // RequestService requests the service for the oracle seed -func (k Keeper) RequestService(ctx sdk.Context, consumer sdk.AccAddress, serviceFeeCap sdk.Coins) (tmbytes.HexBytes, error) { +func (k Keeper) RequestService( + ctx sdk.Context, + consumer sdk.AccAddress, + serviceFeeCap sdk.Coins, +) (tmbytes.HexBytes, error) { iterator := k.serviceKeeper.ServiceBindingsIterator(ctx, types.ServiceName) defer iterator.Close() @@ -48,8 +52,19 @@ func (k Keeper) RequestService(ctx sdk.Context, consumer sdk.AccAddress, service timeout := k.serviceKeeper.GetParams(ctx).MaxRequestTimeout return k.serviceKeeper.CreateRequestContext( - ctx, types.ServiceName, []sdk.AccAddress{provider}, consumer, `{"header":{}}`, serviceFeeCap, - timeout, false, 0, 0, exported.PAUSED, 1, types.ModuleName, + ctx, + types.ServiceName, + []sdk.AccAddress{provider}, + consumer, + `{"header":{}}`, + serviceFeeCap, + timeout, + false, + 0, + 0, + exported.PAUSED, + 1, + types.ModuleName, ) } @@ -62,7 +77,11 @@ func (k Keeper) StartRequestContext( return k.serviceKeeper.StartRequestContext(ctx, serviceContextID, consumer) } -func (k Keeper) HandlerStateChanged(ctx sdk.Context, requestContextID tmbytes.HexBytes, err string) { +func (k Keeper) HandlerStateChanged( + ctx sdk.Context, + requestContextID tmbytes.HexBytes, + err string, +) { reqCtx, existed := k.serviceKeeper.GetRequestContext(ctx, requestContextID) if !existed { ctx.Logger().Error( @@ -80,7 +99,12 @@ func (k Keeper) HandlerStateChanged(ctx sdk.Context, requestContextID tmbytes.He } // HandlerResponse is responsible for processing the data returned from the service module -func (k Keeper) HandlerResponse(ctx sdk.Context, requestContextID tmbytes.HexBytes, responseOutput []string, err error) { +func (k Keeper) HandlerResponse( + ctx sdk.Context, + requestContextID tmbytes.HexBytes, + responseOutput []string, + err error, +) { if len(responseOutput) == 0 || err != nil { ctx.Logger().Error( "respond service failed", @@ -139,7 +163,11 @@ func (k Keeper) HandlerResponse(ctx sdk.Context, requestContextID tmbytes.HexByt // generate a random number consumer, _ := sdk.AccAddressFromBech32(request.Consumer) random := types.MakePRNG(lastBlockHash, currentTimestamp, consumer, seed, true).GetRand() - k.SetRandom(ctx, reqID, types.NewRandom(request.TxHash, lastBlockHeight, random.FloatString(types.RandPrec))) + k.SetRandom( + ctx, + reqID, + types.NewRandom(request.TxHash, lastBlockHeight, random.FloatString(types.RandPrec)), + ) k.DeleteOracleRandRequest(ctx, requestContextID) @@ -153,7 +181,10 @@ func (k Keeper) HandlerResponse(ctx sdk.Context, requestContextID tmbytes.HexByt } // GetRequestContext retrieves the request context by the specified request context id -func (k Keeper) GetRequestContext(ctx sdk.Context, requestContextID tmbytes.HexBytes) (exported.RequestContext, bool) { +func (k Keeper) GetRequestContext( + ctx sdk.Context, + requestContextID tmbytes.HexBytes, +) (exported.RequestContext, bool) { return k.serviceKeeper.GetRequestContext(ctx, requestContextID) } diff --git a/modules/random/module.go b/modules/random/module.go index 6de04fd5..6f0deb03 100644 --- a/modules/random/module.go +++ b/modules/random/module.go @@ -9,7 +9,7 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" - abci "github.com/tendermint/tendermint/abci/types" + abci "github.com/cometbft/cometbft/abci/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" @@ -49,7 +49,11 @@ func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { } // ValidateGenesis performs genesis state validation for the random module. -func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error { +func (AppModuleBasic) ValidateGenesis( + cdc codec.JSONCodec, + config client.TxEncodingConfig, + bz json.RawMessage, +) error { var data types.GenesisState if err := cdc.UnmarshalJSON(bz, &data); err != nil { return fmt.Errorf("failed to unmarshal %s genesis state: %w", types.ModuleName, err) @@ -95,7 +99,12 @@ type AppModule struct { } // NewAppModule creates a new AppModule object -func NewAppModule(cdc codec.Codec, keeper keeper.Keeper, ak types.AccountKeeper, bk types.BankKeeper) AppModule { +func NewAppModule( + cdc codec.Codec, + keeper keeper.Keeper, + ak types.AccountKeeper, + bk types.BankKeeper, +) AppModule { return AppModule{ AppModuleBasic: AppModuleBasic{cdc: cdc}, keeper: keeper, @@ -118,7 +127,11 @@ func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {} // InitGenesis performs genesis initialization for the random module. It returns // no validator updates. -func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { +func (am AppModule) InitGenesis( + ctx sdk.Context, + cdc codec.JSONCodec, + data json.RawMessage, +) []abci.ValidatorUpdate { var genesisState types.GenesisState cdc.MustUnmarshalJSON(data, &genesisState) @@ -159,6 +172,8 @@ func (am AppModule) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry) { } // WeightedOperations returns the all the random module operations with their respective weights. -func (am AppModule) WeightedOperations(simState module.SimulationState) []simtypes.WeightedOperation { +func (am AppModule) WeightedOperations( + simState module.SimulationState, +) []simtypes.WeightedOperation { return simulation.WeightedOperations(am.keeper, am.accountKeeper, am.bankKeeper) } diff --git a/modules/random/types/expected_keepers.go b/modules/random/types/expected_keepers.go index 45eb4556..1a28afba 100644 --- a/modules/random/types/expected_keepers.go +++ b/modules/random/types/expected_keepers.go @@ -1,7 +1,7 @@ package types import ( - tmbytes "github.com/tendermint/tendermint/libs/bytes" + tmbytes "github.com/cometbft/cometbft/libs/bytes" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" @@ -20,7 +20,7 @@ type BankKeeper interface { SpendableCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins } -//expected Service keeper +// expected Service keeper type ServiceKeeper interface { RegisterResponseCallback( moduleName string, respCallback service.ResponseCallback, diff --git a/modules/random/types/msgs_test.go b/modules/random/types/msgs_test.go index ebd97eb0..99505206 100644 --- a/modules/random/types/msgs_test.go +++ b/modules/random/types/msgs_test.go @@ -6,7 +6,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/tendermint/tendermint/crypto/tmhash" + "github.com/cometbft/cometbft/crypto/tmhash" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -59,7 +59,10 @@ func TestMsgRequestRandomGetSignBytes(t *testing.T) { var msg = NewMsgRequestRandom(testAddr, blockInterval, true, serviceFeeCap) res := msg.GetSignBytes() - expected := fmt.Sprintf("{\"type\":\"irismod/random/MsgRequestRandom\",\"value\":{\"block_interval\":\"10\",\"consumer\":\"cosmos133ee7f22kzn7khtdw8d72dgyre0txe5zll7d5w\",\"oracle\":true,\"service_fee_cap\":[{\"amount\":\"1000000000000000000\",\"denom\":\"%s\"}]}}", sdk.DefaultBondDenom) + expected := fmt.Sprintf( + "{\"type\":\"irismod/random/MsgRequestRandom\",\"value\":{\"block_interval\":\"10\",\"consumer\":\"cosmos133ee7f22kzn7khtdw8d72dgyre0txe5zll7d5w\",\"oracle\":true,\"service_fee_cap\":[{\"amount\":\"1000000000000000000\",\"denom\":\"%s\"}]}}", + sdk.DefaultBondDenom, + ) require.Equal(t, expected, string(res)) } diff --git a/modules/random/types/service.go b/modules/random/types/service.go index 69581605..3f366b5f 100644 --- a/modules/random/types/service.go +++ b/modules/random/types/service.go @@ -1,7 +1,7 @@ package types import ( - "github.com/tendermint/tendermint/crypto" + "github.com/cometbft/cometbft/crypto" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/modules/record/client/cli/query.go b/modules/record/client/cli/query.go index 419607f4..120e7a0a 100644 --- a/modules/record/client/cli/query.go +++ b/modules/record/client/cli/query.go @@ -7,7 +7,7 @@ import ( "github.com/spf13/cobra" - tmbytes "github.com/tendermint/tendermint/libs/bytes" + tmbytes "github.com/cometbft/cometbft/libs/bytes" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" diff --git a/modules/record/client/testutil/test_helpers.go b/modules/record/client/testutil/test_helpers.go index 66ecae93..909587e6 100644 --- a/modules/record/client/testutil/test_helpers.go +++ b/modules/record/client/testutil/test_helpers.go @@ -4,8 +4,8 @@ import ( "fmt" "testing" + "github.com/cometbft/cometbft/libs/cli" "github.com/gogo/protobuf/proto" - "github.com/tendermint/tendermint/libs/cli" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" diff --git a/modules/record/keeper/keeper.go b/modules/record/keeper/keeper.go index 6ad85ff5..a3ae3eaf 100644 --- a/modules/record/keeper/keeper.go +++ b/modules/record/keeper/keeper.go @@ -6,8 +6,8 @@ import ( gogotypes "github.com/gogo/protobuf/types" - "github.com/tendermint/tendermint/crypto/tmhash" - "github.com/tendermint/tendermint/libs/log" + "github.com/cometbft/cometbft/crypto/tmhash" + "github.com/cometbft/cometbft/libs/log" "github.com/cosmos/cosmos-sdk/codec" storetypes "github.com/cosmos/cosmos-sdk/store/types" diff --git a/modules/record/keeper/keeper_test.go b/modules/record/keeper/keeper_test.go index 9c45fe25..482a2a1a 100644 --- a/modules/record/keeper/keeper_test.go +++ b/modules/record/keeper/keeper_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/suite" - "github.com/tendermint/tendermint/crypto/tmhash" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + "github.com/cometbft/cometbft/crypto/tmhash" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/modules/record/keeper/msg_server.go b/modules/record/keeper/msg_server.go index 8f59453b..4d8466f1 100644 --- a/modules/record/keeper/msg_server.go +++ b/modules/record/keeper/msg_server.go @@ -4,7 +4,7 @@ import ( "context" "encoding/hex" - "github.com/tendermint/tendermint/crypto/tmhash" + "github.com/cometbft/cometbft/crypto/tmhash" sdk "github.com/cosmos/cosmos-sdk/types" @@ -23,7 +23,10 @@ func NewMsgServerImpl(keeper Keeper) types.MsgServer { return &msgServer{Keeper: keeper} } -func (m msgServer) CreateRecord(goCtx context.Context, msg *types.MsgCreateRecord) (*types.MsgCreateRecordResponse, error) { +func (m msgServer) CreateRecord( + goCtx context.Context, + msg *types.MsgCreateRecord, +) (*types.MsgCreateRecordResponse, error) { creator, err := sdk.AccAddressFromBech32(msg.Creator) if err != nil { return nil, err diff --git a/modules/record/module.go b/modules/record/module.go index b7b36ab1..dbc32f83 100644 --- a/modules/record/module.go +++ b/modules/record/module.go @@ -9,7 +9,7 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" - abci "github.com/tendermint/tendermint/abci/types" + abci "github.com/cometbft/cometbft/abci/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" @@ -50,7 +50,11 @@ func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { } // ValidateGenesis performs genesis state validation for the record module. -func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error { +func (AppModuleBasic) ValidateGenesis( + cdc codec.JSONCodec, + config client.TxEncodingConfig, + bz json.RawMessage, +) error { var data types.GenesisState if err := cdc.UnmarshalJSON(bz, &data); err != nil { return fmt.Errorf("failed to unmarshal %s genesis state: %w", types.ModuleName, err) @@ -96,7 +100,12 @@ type AppModule struct { } // NewAppModule creates a new AppModule object -func NewAppModule(cdc codec.Codec, keeper keeper.Keeper, accountKeeper types.AccountKeeper, bankKeeper types.BankKeeper) AppModule { +func NewAppModule( + cdc codec.Codec, + keeper keeper.Keeper, + accountKeeper types.AccountKeeper, + bankKeeper types.BankKeeper, +) AppModule { return AppModule{ AppModuleBasic: AppModuleBasic{cdc: cdc}, keeper: keeper, @@ -119,7 +128,11 @@ func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {} // InitGenesis performs genesis initialization for the record module. It returns // no validator updates. -func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { +func (am AppModule) InitGenesis( + ctx sdk.Context, + cdc codec.JSONCodec, + data json.RawMessage, +) []abci.ValidatorUpdate { var genesisState types.GenesisState cdc.MustUnmarshalJSON(data, &genesisState) @@ -160,6 +173,13 @@ func (am AppModule) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry) { } // WeightedOperations returns the all the record module operations with their respective weights. -func (am AppModule) WeightedOperations(simState module.SimulationState) []simtypes.WeightedOperation { - return simulation.WeightedOperations(simState.AppParams, simState.Cdc, am.accountKeeper, am.bankKeeper) +func (am AppModule) WeightedOperations( + simState module.SimulationState, +) []simtypes.WeightedOperation { + return simulation.WeightedOperations( + simState.AppParams, + simState.Cdc, + am.accountKeeper, + am.bankKeeper, + ) } diff --git a/modules/record/simulation/operations.go b/modules/record/simulation/operations.go index 9f6cf1d3..20df1bb2 100644 --- a/modules/record/simulation/operations.go +++ b/modules/record/simulation/operations.go @@ -4,7 +4,7 @@ import ( "fmt" "math/rand" - tmbytes "github.com/tendermint/tendermint/libs/bytes" + tmbytes "github.com/cometbft/cometbft/libs/bytes" simappparams "cosmossdk.io/simapp/params" "github.com/cosmos/cosmos-sdk/baseapp" @@ -56,7 +56,11 @@ func SimulateCreateRecord(ak types.AccountKeeper, bk types.BankKeeper) simtypes. record, err := genRecord(r, accs) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.EventTypeCreateRecord, err.Error()), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + types.EventTypeCreateRecord, + err.Error(), + ), nil, err } creator, _ := sdk.AccAddressFromBech32(record.Creator) @@ -64,7 +68,14 @@ func SimulateCreateRecord(ak types.AccountKeeper, bk types.BankKeeper) simtypes. simAccount, found := simtypes.FindAccount(accs, creator) if !found { - return simtypes.NoOpMsg(types.ModuleName, types.EventTypeCreateRecord, "creator not found"), nil, fmt.Errorf("account %s not found", record.Creator) + return simtypes.NoOpMsg( + types.ModuleName, + types.EventTypeCreateRecord, + "creator not found", + ), nil, fmt.Errorf( + "account %s not found", + record.Creator, + ) } account := ak.GetAccount(ctx, creator) @@ -72,7 +83,11 @@ func SimulateCreateRecord(ak types.AccountKeeper, bk types.BankKeeper) simtypes. fees, err := simtypes.RandomFees(r, ctx, spendable) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.EventTypeCreateRecord, err.Error()), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + types.EventTypeCreateRecord, + err.Error(), + ), nil, err } txConfig := simappparams.MakeTestEncodingConfig().TxConfig tx, _ := irishelpers.GenTx( @@ -88,7 +103,11 @@ func SimulateCreateRecord(ak types.AccountKeeper, bk types.BankKeeper) simtypes. ) if _, _, err = app.SimDeliver(txConfig.TxEncoder(), tx); err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.EventTypeCreateRecord, err.Error()), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + types.EventTypeCreateRecord, + err.Error(), + ), nil, err } return simtypes.NewOperationMsg(msg, true, "simulate issue token", nil), nil, nil diff --git a/modules/record/types/types.go b/modules/record/types/types.go index 6e8659f1..c6d67487 100644 --- a/modules/record/types/types.go +++ b/modules/record/types/types.go @@ -1,7 +1,7 @@ package types import ( - "github.com/tendermint/tendermint/libs/bytes" + "github.com/cometbft/cometbft/libs/bytes" sdk "github.com/cosmos/cosmos-sdk/types" ) diff --git a/modules/service/abci.go b/modules/service/abci.go index 1f7911fc..ee3d7b05 100644 --- a/modules/service/abci.go +++ b/modules/service/abci.go @@ -4,7 +4,7 @@ import ( "encoding/json" "strings" - tmbytes "github.com/tendermint/tendermint/libs/bytes" + tmbytes "github.com/cometbft/cometbft/libs/bytes" sdk "github.com/cosmos/cosmos-sdk/types" @@ -29,13 +29,24 @@ func EndBlocker(ctx sdk.Context, k keeper.Keeper) { _ = k.RefundServiceFee(ctx, consumer, request.ServiceFee) provider, _ := sdk.AccAddressFromBech32(request.Provider) - k.DeleteActiveRequest(ctx, request.ServiceName, provider, request.ExpirationHeight, requestID) + k.DeleteActiveRequest( + ctx, + request.ServiceName, + provider, + request.ExpirationHeight, + requestID, + ) } // handler for the expired request batch expiredRequestBatchHandler := func(requestContextID tmbytes.HexBytes, requestContext types.RequestContext) { if requestContext.BatchState != types.BATCHCOMPLETED { - k.IterateActiveRequests(ctx, requestContextID, requestContext.BatchCounter, expiredRequestHandler) + k.IterateActiveRequests( + ctx, + requestContextID, + requestContext.BatchCounter, + expiredRequestHandler, + ) resContext := k.CompleteBatch(ctx, requestContext, requestContextID) requestContext = resContext } @@ -48,8 +59,15 @@ func EndBlocker(ctx sdk.Context, k keeper.Keeper) { } if requestContext.State == types.RUNNING { - if requestContext.Repeated && (requestContext.RepeatedTotal < 0 || int64(requestContext.BatchCounter) < requestContext.RepeatedTotal) { - k.AddNewRequestBatch(ctx, requestContextID, ctx.BlockHeight()-requestContext.Timeout+int64(requestContext.RepeatedFrequency)) + if requestContext.Repeated && + (requestContext.RepeatedTotal < 0 || int64(requestContext.BatchCounter) < requestContext.RepeatedTotal) { + k.AddNewRequestBatch( + ctx, + requestContextID, + ctx.BlockHeight()-requestContext.Timeout+int64( + requestContext.RepeatedFrequency, + ), + ) } else { k.CompleteServiceContext(ctx, requestContext, requestContextID) } @@ -83,7 +101,10 @@ func EndBlocker(ctx sdk.Context, k keeper.Keeper) { sdk.NewEvent( types.EventTypeNoExchangeRate, sdk.NewAttribute(types.AttributeKeyPriceDenom, rawDenom), - sdk.NewAttribute(types.AttributeKeyRequestContextID, requestContextID.String()), + sdk.NewAttribute( + types.AttributeKeyRequestContextID, + requestContextID.String(), + ), sdk.NewAttribute(types.AttributeKeyServiceName, requestContext.ServiceName), sdk.NewAttribute(types.AttributeKeyConsumer, requestContext.Consumer), ), @@ -93,12 +114,21 @@ func EndBlocker(ctx sdk.Context, k keeper.Keeper) { if len(providers) > 0 && len(providers) >= int(requestContext.ResponseThreshold) { if err := k.DeductServiceFees(ctx, consumer, totalPrices); err != nil { - k.OnRequestContextPaused(ctx, requestContext, requestContextID, "insufficient balances") + k.OnRequestContextPaused( + ctx, + requestContext, + requestContextID, + "insufficient balances", + ) } if requestContext.State == types.RUNNING { _ = k.InitiateRequests(ctx, requestContextID, providers, providerRequests) - k.AddRequestBatchExpiration(ctx, requestContextID, ctx.BlockHeight()+requestContext.Timeout) + k.AddRequestBatchExpiration( + ctx, + requestContextID, + ctx.BlockHeight()+requestContext.Timeout, + ) } } else { k.SkipCurrentRequestBatch(ctx, requestContextID, *requestContext) diff --git a/modules/service/client/cli/cli_test.go b/modules/service/client/cli/cli_test.go index d9aa28f3..a9b7e13f 100644 --- a/modules/service/client/cli/cli_test.go +++ b/modules/service/client/cli/cli_test.go @@ -9,7 +9,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/tendermint/tendermint/crypto" + "github.com/cometbft/cometbft/crypto" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/crypto/hd" @@ -76,7 +76,13 @@ func (s *IntegrationTestSuite) TestService() { author := val.Address provider := author - consumerInfo, _, _ := val.ClientCtx.Keyring.NewMnemonic("NewValidator", keyring.English, sdk.FullFundraiserPath, keyring.DefaultBIP39Passphrase, hd.Secp256k1) + consumerInfo, _, _ := val.ClientCtx.Keyring.NewMnemonic( + "NewValidator", + keyring.English, + sdk.FullFundraiserPath, + keyring.DefaultBIP39Passphrase, + hd.Secp256k1, + ) pubKey, err := consumerInfo.GetPubKey() s.Require().NoError(err) consumer := sdk.AccAddress(pubKey.Address()) @@ -102,14 +108,28 @@ func (s *IntegrationTestSuite) TestService() { fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } - txResult := servicetestutil.DefineServiceExec(s.T(), s.network, clientCtx, author.String(), args...) + txResult := servicetestutil.DefineServiceExec( + s.T(), + s.network, + clientCtx, + author.String(), + args...) s.Require().Equal(expectedCode, txResult.Code) //------test GetCmdQueryServiceDefinition()------------- - serviceDefinition := servicetestutil.QueryServiceDefinitionExec(s.T(), s.network, clientCtx, serviceName) + serviceDefinition := servicetestutil.QueryServiceDefinitionExec( + s.T(), + s.network, + clientCtx, + serviceName, + ) s.Require().Equal(serviceName, serviceDefinition.Name) //------test GetCmdBindService()------------- @@ -123,45 +143,99 @@ func (s *IntegrationTestSuite) TestService() { fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } - txResult = servicetestutil.BindServiceExec(s.T(), s.network, clientCtx, provider.String(), args...) + txResult = servicetestutil.BindServiceExec( + s.T(), + s.network, + clientCtx, + provider.String(), + args...) s.Require().Equal(expectedCode, txResult.Code) //------test GetCmdQueryServiceBinding()------------- - serviceBinding := servicetestutil.QueryServiceBindingExec(s.T(), s.network, clientCtx, serviceName, provider.String()) + serviceBinding := servicetestutil.QueryServiceBindingExec( + s.T(), + s.network, + clientCtx, + serviceName, + provider.String(), + ) s.Require().Equal(serviceName, serviceBinding.ServiceName) s.Require().Equal(provider.String(), serviceBinding.Provider) //------test GetCmdQueryServiceBindings()------------- - serviceBindings := servicetestutil.QueryServiceBindingsExec(s.T(), s.network, clientCtx, serviceName) + serviceBindings := servicetestutil.QueryServiceBindingsExec( + s.T(), + s.network, + clientCtx, + serviceName, + ) s.Require().Len(serviceBindings.ServiceBindings, 1) //------test GetCmdDisableServiceBinding()------------- args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } - txResult = servicetestutil.DisableServiceExec(s.T(), s.network, clientCtx, serviceName, provider.String(), provider.String(), args...) + txResult = servicetestutil.DisableServiceExec( + s.T(), + s.network, + clientCtx, + serviceName, + provider.String(), + provider.String(), + args...) s.Require().Equal(expectedCode, txResult.Code) - serviceBinding = servicetestutil.QueryServiceBindingExec(s.T(), s.network, clientCtx, serviceName, provider.String()) + serviceBinding = servicetestutil.QueryServiceBindingExec( + s.T(), + s.network, + clientCtx, + serviceName, + provider.String(), + ) s.Require().False(serviceBinding.Available) //------test GetCmdRefundServiceDeposit()------------- args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } - txResult = servicetestutil.RefundDepositExec(s.T(), s.network, clientCtx, serviceName, provider.String(), provider.String(), args...) + txResult = servicetestutil.RefundDepositExec( + s.T(), + s.network, + clientCtx, + serviceName, + provider.String(), + provider.String(), + args...) s.Require().Equal(expectedCode, txResult.Code) - serviceBinding = servicetestutil.QueryServiceBindingExec(s.T(), s.network, clientCtx, serviceName, provider.String()) + serviceBinding = servicetestutil.QueryServiceBindingExec( + s.T(), + s.network, + clientCtx, + serviceName, + provider.String(), + ) s.Require().True(serviceBinding.Deposit.IsZero()) //------test GetCmdEnableServiceBinding()------------- @@ -170,13 +244,30 @@ func (s *IntegrationTestSuite) TestService() { fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } - txResult = servicetestutil.EnableServiceExec(s.T(), s.network, clientCtx, serviceName, provider.String(), provider.String(), args...) + txResult = servicetestutil.EnableServiceExec( + s.T(), + s.network, + clientCtx, + serviceName, + provider.String(), + provider.String(), + args...) s.Require().Equal(expectedCode, txResult.Code) - serviceBinding = servicetestutil.QueryServiceBindingExec(s.T(), s.network, clientCtx, serviceName, provider.String()) + serviceBinding = servicetestutil.QueryServiceBindingExec( + s.T(), + s.network, + clientCtx, + serviceName, + provider.String(), + ) s.Require().Equal(serviceDeposit, serviceBinding.Deposit.String()) //------send token to consumer------------------------ @@ -186,7 +277,11 @@ func (s *IntegrationTestSuite) TestService() { args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } txResult = simapp.MsgSendExec(s.T(), s.network, clientCtx, provider, consumer, amount, args...) @@ -202,13 +297,26 @@ func (s *IntegrationTestSuite) TestService() { fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } - txResult = servicetestutil.CallServiceExec(s.T(), s.network, clientCtx, consumer.String(), args...) + txResult = servicetestutil.CallServiceExec( + s.T(), + s.network, + clientCtx, + consumer.String(), + args...) s.Require().Equal(expectedCode, txResult.Code) - requestContextId := s.network.GetAttribute(servicetypes.EventTypeCreateContext, servicetypes.AttributeKeyRequestContextID, txResult.Events) + requestContextId := s.network.GetAttribute( + servicetypes.EventTypeCreateContext, + servicetypes.AttributeKeyRequestContextID, + txResult.Events, + ) requestHeight := txResult.Height blockResult, err := val.RPCClient.BlockResults(context.Background(), &requestHeight) @@ -240,7 +348,13 @@ func (s *IntegrationTestSuite) TestService() { s.Require().Equal(requestContextId, compactRequest.RequestContextId) //------test GetCmdQueryServiceRequests()------------- - queryRequestsResponse := servicetestutil.QueryServiceRequestsExec(s.T(), s.network, clientCtx, serviceName, provider.String()) + queryRequestsResponse := servicetestutil.QueryServiceRequestsExec( + s.T(), + s.network, + clientCtx, + serviceName, + provider.String(), + ) s.Require().Len(queryRequestsResponse.Requests, 1) s.Require().Equal(requestContextId, queryRequestsResponse.Requests[0].RequestContextId) @@ -264,41 +378,85 @@ func (s *IntegrationTestSuite) TestService() { fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } - txResult = servicetestutil.RespondServiceExec(s.T(), s.network, clientCtx, provider.String(), args...) + txResult = servicetestutil.RespondServiceExec( + s.T(), + s.network, + clientCtx, + provider.String(), + args...) s.Require().Equal(expectedCode, txResult.Code) //------test GetCmdQueryEarnedFees()------------- - queryEarnedFeesResponse := servicetestutil.QueryEarnedFeesExec(s.T(), s.network, clientCtx, provider.String()) + queryEarnedFeesResponse := servicetestutil.QueryEarnedFeesExec( + s.T(), + s.network, + clientCtx, + provider.String(), + ) s.Require().Equal(expectedEarnedFees, queryEarnedFeesResponse.Fees.String()) //------GetCmdSetWithdrawAddr()------------- args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } - txResult = servicetestutil.SetWithdrawAddrExec(s.T(), s.network, clientCtx, withdrawalAddress.String(), provider.String(), args...) + txResult = servicetestutil.SetWithdrawAddrExec( + s.T(), + s.network, + clientCtx, + withdrawalAddress.String(), + provider.String(), + args...) s.Require().Equal(expectedCode, txResult.Code) //------GetCmdWithdrawEarnedFees()------------- args = []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } - txResult = servicetestutil.WithdrawEarnedFeesExec(s.T(), s.network, clientCtx, provider.String(), provider.String(), args...) + txResult = servicetestutil.WithdrawEarnedFeesExec( + s.T(), + s.network, + clientCtx, + provider.String(), + provider.String(), + args...) s.Require().Equal(expectedCode, txResult.Code) - withdrawalFees := simapp.QueryBalancesExec(s.T(), s.network, clientCtx, withdrawalAddress.String()) + withdrawalFees := simapp.QueryBalancesExec( + s.T(), + s.network, + clientCtx, + withdrawalAddress.String(), + ) s.Require().Equal(expectedEarnedFees, withdrawalFees.String()) //------check service tax------------- - taxFees := simapp.QueryBalancesExec(s.T(), s.network, clientCtx, authtypes.NewModuleAddress(servicetypes.FeeCollectorName).String()) + taxFees := simapp.QueryBalancesExec( + s.T(), + s.network, + clientCtx, + authtypes.NewModuleAddress(servicetypes.FeeCollectorName).String(), + ) s.Require().Equal(expectedTaxFees, taxFees.String()) //------GetCmdQueryRequestContext()------------- diff --git a/modules/service/client/cli/query.go b/modules/service/client/cli/query.go index c8b4de25..1893fed0 100644 --- a/modules/service/client/cli/query.go +++ b/modules/service/client/cli/query.go @@ -8,7 +8,7 @@ import ( "github.com/spf13/cobra" - tmbytes "github.com/tendermint/tendermint/libs/bytes" + tmbytes "github.com/cometbft/cometbft/libs/bytes" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" @@ -87,11 +87,14 @@ func GetCmdQueryServiceDefinition() *cobra.Command { // GetCmdQueryServiceBinding implements the query service binding command func GetCmdQueryServiceBinding() *cobra.Command { cmd := &cobra.Command{ - Use: "binding [service-name] [provider-address]", - Short: "Query a service binding", - Long: "Query details of a service binding.", - Example: fmt.Sprintf("$ %s query service binding ", version.AppName), - Args: cobra.ExactArgs(2), + Use: "binding [service-name] [provider-address]", + Short: "Query a service binding", + Long: "Query details of a service binding.", + Example: fmt.Sprintf( + "$ %s query service binding ", + version.AppName, + ), + Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { clientCtx, err := client.GetClientQueryContext(cmd) if err != nil { @@ -130,11 +133,14 @@ func GetCmdQueryServiceBinding() *cobra.Command { // GetCmdQueryServiceBindings implements the query service bindings command func GetCmdQueryServiceBindings() *cobra.Command { cmd := &cobra.Command{ - Use: "bindings [service-name]", - Short: "Query all bindings of a service definition with an optional owner", - Long: "Query all bindings of a service definition with an optional owner.", - Example: fmt.Sprintf("$ %s query service bindings --owner=
", version.AppName), - Args: cobra.ExactArgs(1), + Use: "bindings [service-name]", + Short: "Query all bindings of a service definition with an optional owner", + Long: "Query all bindings of a service definition with an optional owner.", + Example: fmt.Sprintf( + "$ %s query service bindings --owner=
", + version.AppName, + ), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { clientCtx, err := client.GetClientQueryContext(cmd) if err != nil { @@ -255,7 +261,11 @@ func GetCmdQueryServiceRequest() *cobra.Command { } if res.Request.Empty() { - request, err := utils.QueryRequestByTxQuery(clientCtx, types.QuerierRoute, requestID) + request, err := utils.QueryRequestByTxQuery( + clientCtx, + types.QuerierRoute, + requestID, + ) if err != nil { return err } @@ -277,11 +287,14 @@ func GetCmdQueryServiceRequest() *cobra.Command { // GetCmdQueryServiceRequests implements the query service requests command func GetCmdQueryServiceRequests() *cobra.Command { cmd := &cobra.Command{ - Use: "requests [service-name] [provider] | [request-context-id] [batch-counter]", - Short: "Query active requests by the service binding or request context ID", - Long: "Query active requests by the service binding or request context ID.", - Example: fmt.Sprintf("$ %s query service requests | ", version.AppName), - Args: cobra.ExactArgs(2), + Use: "requests [service-name] [provider] | [request-context-id] [batch-counter]", + Short: "Query active requests by the service binding or request context ID", + Long: "Query active requests by the service binding or request context ID.", + Example: fmt.Sprintf( + "$ %s query service requests | ", + version.AppName, + ), + Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { clientCtx, err := client.GetClientQueryContext(cmd) if err != nil { @@ -373,7 +386,11 @@ func GetCmdQueryServiceResponse() *cobra.Command { } if res.Response.Empty() { - response, err := utils.QueryResponseByTxQuery(clientCtx, types.QuerierRoute, requestID) + response, err := utils.QueryResponseByTxQuery( + clientCtx, + types.QuerierRoute, + requestID, + ) if err != nil { return err } @@ -395,11 +412,14 @@ func GetCmdQueryServiceResponse() *cobra.Command { // GetCmdQueryServiceResponses implements the query service responses command func GetCmdQueryServiceResponses() *cobra.Command { cmd := &cobra.Command{ - Use: "responses [request-context-id] [batch-counter]", - Short: "Query active responses by the request context ID and batch counter", - Long: "Query active responses by the request context ID and batch counter.", - Example: fmt.Sprintf("$ %s query service responses ", version.AppName), - Args: cobra.ExactArgs(2), + Use: "responses [request-context-id] [batch-counter]", + Short: "Query active responses by the request context ID and batch counter", + Long: "Query active responses by the request context ID and batch counter.", + Example: fmt.Sprintf( + "$ %s query service responses ", + version.AppName, + ), + Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { clientCtx, err := client.GetClientQueryContext(cmd) @@ -446,11 +466,14 @@ func GetCmdQueryServiceResponses() *cobra.Command { // GetCmdQueryRequestContext implements the query request context command func GetCmdQueryRequestContext() *cobra.Command { cmd := &cobra.Command{ - Use: "request-context [request-context-id]", - Short: "Query a request context", - Long: "Query a request context.", - Example: fmt.Sprintf("$ %s query service request-context ", version.AppName), - Args: cobra.ExactArgs(1), + Use: "request-context [request-context-id]", + Short: "Query a request context", + Long: "Query a request context.", + Example: fmt.Sprintf( + "$ %s query service request-context ", + version.AppName, + ), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { clientCtx, err := client.GetClientQueryContext(cmd) if err != nil { diff --git a/modules/service/client/testutil/test_helpers.go b/modules/service/client/testutil/test_helpers.go index ac8a744a..7ac00e8e 100644 --- a/modules/service/client/testutil/test_helpers.go +++ b/modules/service/client/testutil/test_helpers.go @@ -4,7 +4,7 @@ import ( "fmt" "testing" - "github.com/tendermint/tendermint/libs/cli" + "github.com/cometbft/cometbft/libs/cli" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" diff --git a/modules/service/client/utils/query.go b/modules/service/client/utils/query.go index c54f1959..1dc4b226 100644 --- a/modules/service/client/utils/query.go +++ b/modules/service/client/utils/query.go @@ -7,8 +7,8 @@ import ( "fmt" "strconv" - tmbytes "github.com/tendermint/tendermint/libs/bytes" - rpcclient "github.com/tendermint/tendermint/rpc/client" + tmbytes "github.com/cometbft/cometbft/libs/bytes" + rpcclient "github.com/cometbft/cometbft/rpc/client" "github.com/cosmos/cosmos-sdk/client" sdk "github.com/cosmos/cosmos-sdk/types" @@ -44,7 +44,11 @@ func QueryRequestContext( } // QueryRequestContextByTxQuery will query for a single request context via a direct txs tags query. -func QueryRequestContextByTxQuery(cliCtx client.Context, queryRoute string, params types.QueryRequestContextRequest) ( +func QueryRequestContextByTxQuery( + cliCtx client.Context, + queryRoute string, + params types.QueryRequestContextRequest, +) ( requestContext types.RequestContext, err error) { requestContextId, err := hex.DecodeString(params.RequestContextId) if err != nil { @@ -211,7 +215,12 @@ func QueryResponseByTxQuery( ) { events := []string{ - fmt.Sprintf("%s.%s='%s'", types.EventTypeRespondService, types.AttributeKeyRequestID, []byte(fmt.Sprintf("%d", requestID))), + fmt.Sprintf( + "%s.%s='%s'", + types.EventTypeRespondService, + types.AttributeKeyRequestID, + []byte(fmt.Sprintf("%d", requestID)), + ), } // NOTE: SearchTxs is used to facilitate the txs query which does not currently diff --git a/modules/service/genesis.go b/modules/service/genesis.go index 47ef9afb..8a85dcac 100644 --- a/modules/service/genesis.go +++ b/modules/service/genesis.go @@ -5,7 +5,7 @@ import ( "fmt" "sort" - tmbytes "github.com/tendermint/tendermint/libs/bytes" + tmbytes "github.com/cometbft/cometbft/libs/bytes" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/modules/service/keeper/invocation.go b/modules/service/keeper/invocation.go index 1b85a8b8..550ad89e 100644 --- a/modules/service/keeper/invocation.go +++ b/modules/service/keeper/invocation.go @@ -7,8 +7,8 @@ import ( gogotypes "github.com/gogo/protobuf/types" - "github.com/tendermint/tendermint/crypto/tmhash" - tmbytes "github.com/tendermint/tendermint/libs/bytes" + "github.com/cometbft/cometbft/crypto/tmhash" + tmbytes "github.com/cometbft/cometbft/libs/bytes" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -17,9 +17,17 @@ import ( ) // RegisterResponseCallback registers a module callback for response handling -func (k Keeper) RegisterResponseCallback(moduleName string, respCallback types.ResponseCallback) error { +func (k Keeper) RegisterResponseCallback( + moduleName string, + respCallback types.ResponseCallback, +) error { if _, ok := k.respCallbacks[moduleName]; ok { - return sdkerrors.Wrapf(types.ErrCallbackRegistered, "%s already registered for module %s", "response callback", moduleName) + return sdkerrors.Wrapf( + types.ErrCallbackRegistered, + "%s already registered for module %s", + "response callback", + moduleName, + ) } k.respCallbacks[moduleName] = respCallback @@ -30,7 +38,12 @@ func (k Keeper) RegisterResponseCallback(moduleName string, respCallback types.R // RegisterStateCallback registers a module callback for state handling func (k Keeper) RegisterStateCallback(moduleName string, stateCallback types.StateCallback) error { if _, ok := k.stateCallbacks[moduleName]; ok { - return sdkerrors.Wrapf(types.ErrCallbackRegistered, "%s already registered for module %s", "state callback", moduleName) + return sdkerrors.Wrapf( + types.ErrCallbackRegistered, + "%s already registered for module %s", + "state callback", + moduleName, + ) } k.stateCallbacks[moduleName] = stateCallback @@ -73,7 +86,12 @@ func (k Keeper) CreateRequestContext( } if responseThreshold < 1 || int(responseThreshold) > len(providers) { - return nil, sdkerrors.Wrapf(types.ErrInvalidResponseThreshold, "response threshold [%d] must be between [1,%d]", responseThreshold, len(providers)) + return nil, sdkerrors.Wrapf( + types.ErrInvalidResponseThreshold, + "response threshold [%d] must be between [1,%d]", + responseThreshold, + len(providers), + ) } } @@ -92,7 +110,12 @@ func (k Keeper) CreateRequestContext( maxRequestTimeout := k.MaxRequestTimeout(ctx) if timeout > maxRequestTimeout { - return nil, sdkerrors.Wrapf(types.ErrInvalidTimeout, "timeout [%d] must not be greater than the max request timeout [%d]", timeout, maxRequestTimeout) + return nil, sdkerrors.Wrapf( + types.ErrInvalidTimeout, + "timeout [%d] must not be greater than the max request timeout [%d]", + timeout, + maxRequestTimeout, + ) } if repeated { @@ -173,7 +196,12 @@ func (k Keeper) UpdateRequestContext( } if respThreshold > uint32(len(pds)) { - return sdkerrors.Wrapf(types.ErrInvalidResponseThreshold, "response threshold [%d] must be between [1,%d]", respThreshold, len(pds)) + return sdkerrors.Wrapf( + types.ErrInvalidResponseThreshold, + "response threshold [%d] must be between [1,%d]", + respThreshold, + len(pds), + ) } if respThreshold > 0 { @@ -191,7 +219,12 @@ func (k Keeper) UpdateRequestContext( maxRequestTimeout := k.MaxRequestTimeout(ctx) if timeout > maxRequestTimeout { - return sdkerrors.Wrapf(types.ErrInvalidTimeout, "timeout [%d] must not be greater than the max request timeout [%d]", timeout, maxRequestTimeout) + return sdkerrors.Wrapf( + types.ErrInvalidTimeout, + "timeout [%d] must not be greater than the max request timeout [%d]", + timeout, + maxRequestTimeout, + ) } if timeout == 0 { @@ -203,11 +236,21 @@ func (k Keeper) UpdateRequestContext( } if repeatedFreq < uint64(timeout) { - return sdkerrors.Wrapf(types.ErrInvalidRepeatedFreq, "repeated frequency [%d] must not be less than the timeout [%d]", repeatedFreq, requestContext.Timeout) + return sdkerrors.Wrapf( + types.ErrInvalidRepeatedFreq, + "repeated frequency [%d] must not be less than the timeout [%d]", + repeatedFreq, + requestContext.Timeout, + ) } if repeatedTotal >= 1 && repeatedTotal < int64(requestContext.BatchCounter) { - return sdkerrors.Wrapf(types.ErrInvalidRepeatedTotal, "updated repeated total [%d] must not be less than the current batch counter [%d]", repeatedTotal, requestContext.BatchCounter) + return sdkerrors.Wrapf( + types.ErrInvalidRepeatedTotal, + "updated repeated total [%d] must not be less than the current batch counter [%d]", + repeatedTotal, + requestContext.BatchCounter, + ) } if len(pds) > 0 { @@ -289,7 +332,8 @@ func (k Keeper) StartRequestContext( k.SetRequestContext(ctx, requestContextID, requestContext) // add to the new request batch queue if existing in neither expired nor new request batch queue - if !k.HasRequestBatchExpiration(ctx, requestContextID) && !k.HasNewRequestBatch(ctx, requestContextID) { + if !k.HasRequestBatchExpiration(ctx, requestContextID) && + !k.HasNewRequestBatch(ctx, requestContextID) { k.AddNewRequestBatch(ctx, requestContextID, ctx.BlockHeight()) } @@ -325,7 +369,11 @@ func (k Keeper) KillRequestContext( } // SetRequestContext sets the specified request context -func (k Keeper) SetRequestContext(ctx sdk.Context, requestContextID tmbytes.HexBytes, requestContext types.RequestContext) { +func (k Keeper) SetRequestContext( + ctx sdk.Context, + requestContextID tmbytes.HexBytes, + requestContext types.RequestContext, +) { store := ctx.KVStore(k.storeKey) bz := k.cdc.MustMarshal(&requestContext) @@ -340,7 +388,10 @@ func (k Keeper) DeleteRequestContext(ctx sdk.Context, requestContextID tmbytes.H } // GetRequestContext retrieves the specified request context -func (k Keeper) GetRequestContext(ctx sdk.Context, requestContextID tmbytes.HexBytes) (requestContext types.RequestContext, found bool) { +func (k Keeper) GetRequestContext( + ctx sdk.Context, + requestContextID tmbytes.HexBytes, +) (requestContext types.RequestContext, found bool) { store := ctx.KVStore(k.storeKey) bz := store.Get(types.GetRequestContextKey(requestContextID)) @@ -397,10 +448,21 @@ func (k Keeper) InitiateRequests( consumer, requestContext.Timeout, ) - requestID := types.GenerateRequestID(requestContextID, requestContext.BatchCounter, ctx.BlockHeight(), int16(providerIndex)) + requestID := types.GenerateRequestID( + requestContextID, + requestContext.BatchCounter, + ctx.BlockHeight(), + int16(providerIndex), + ) k.SetCompactRequest(ctx, requestID, request) - k.AddActiveRequest(ctx, requestContext.ServiceName, provider, ctx.BlockHeight()+requestContext.Timeout, requestID) + k.AddActiveRequest( + ctx, + requestContext.ServiceName, + provider, + ctx.BlockHeight()+requestContext.Timeout, + requestID, + ) requests = append(requests, request) @@ -437,7 +499,11 @@ func (k Keeper) InitiateRequests( } // SkipCurrentRequestBatch skips the current request batch -func (k Keeper) SkipCurrentRequestBatch(ctx sdk.Context, requestContextID tmbytes.HexBytes, requestContext types.RequestContext) { +func (k Keeper) SkipCurrentRequestBatch( + ctx sdk.Context, + requestContextID tmbytes.HexBytes, + requestContext types.RequestContext, +) { requestContext.BatchCounter++ requestContext.BatchState = types.BATCHRUNNING requestContext.BatchRequestCount = 0 @@ -473,7 +539,11 @@ func (k Keeper) buildRequest( } // SetCompactRequest sets the specified compact request -func (k Keeper) SetCompactRequest(ctx sdk.Context, requestID tmbytes.HexBytes, request types.CompactRequest) { +func (k Keeper) SetCompactRequest( + ctx sdk.Context, + requestID tmbytes.HexBytes, + request types.CompactRequest, +) { store := ctx.KVStore(k.storeKey) bz := k.cdc.MustMarshal(&request) @@ -481,7 +551,10 @@ func (k Keeper) SetCompactRequest(ctx sdk.Context, requestID tmbytes.HexBytes, r } // GetCompactRequest retrieves the specified compact request -func (k Keeper) GetCompactRequest(ctx sdk.Context, requestID tmbytes.HexBytes) (request types.CompactRequest, found bool) { +func (k Keeper) GetCompactRequest( + ctx sdk.Context, + requestID tmbytes.HexBytes, +) (request types.CompactRequest, found bool) { store := ctx.KVStore(k.storeKey) bz := store.Get(types.GetRequestKey(requestID)) @@ -501,7 +574,10 @@ func (k Keeper) DeleteCompactRequest(ctx sdk.Context, requestID tmbytes.HexBytes } // GetRequest returns the specified request -func (k Keeper) GetRequest(ctx sdk.Context, requestID tmbytes.HexBytes) (request types.Request, found bool) { +func (k Keeper) GetRequest( + ctx sdk.Context, + requestID tmbytes.HexBytes, +) (request types.Request, found bool) { compactRequest, found := k.GetCompactRequest(ctx, requestID) if !found { return request, false @@ -564,9 +640,16 @@ func (k Keeper) IterateRequests( } // RequestsIteratorByReqCtx returns an iterator for all requests of the specified request context ID and batch counter -func (k Keeper) RequestsIteratorByReqCtx(ctx sdk.Context, requestContextID tmbytes.HexBytes, batchCounter uint64) sdk.Iterator { +func (k Keeper) RequestsIteratorByReqCtx( + ctx sdk.Context, + requestContextID tmbytes.HexBytes, + batchCounter uint64, +) sdk.Iterator { store := ctx.KVStore(k.storeKey) - return sdk.KVStorePrefixIterator(store, types.GetRequestSubspaceByReqCtx(requestContextID, batchCounter)) + return sdk.KVStorePrefixIterator( + store, + types.GetRequestSubspaceByReqCtx(requestContextID, batchCounter), + ) } // AddActiveRequest adds the specified active request @@ -640,7 +723,11 @@ func (k Keeper) IsRequestActive(ctx sdk.Context, requestID tmbytes.HexBytes) boo } // AddRequestBatchExpiration adds a request batch to the expiration queue -func (k Keeper) AddRequestBatchExpiration(ctx sdk.Context, requestContextID tmbytes.HexBytes, expirationHeight int64) { +func (k Keeper) AddRequestBatchExpiration( + ctx sdk.Context, + requestContextID tmbytes.HexBytes, + expirationHeight int64, +) { store := ctx.KVStore(k.storeKey) bz := k.cdc.MustMarshal(&gogotypes.BytesValue{Value: requestContextID}) @@ -650,7 +737,11 @@ func (k Keeper) AddRequestBatchExpiration(ctx sdk.Context, requestContextID tmby } // DeleteRequestBatchExpiration deletes the request batch from the expiration queue -func (k Keeper) DeleteRequestBatchExpiration(ctx sdk.Context, requestContextID tmbytes.HexBytes, expirationHeight int64) { +func (k Keeper) DeleteRequestBatchExpiration( + ctx sdk.Context, + requestContextID tmbytes.HexBytes, + expirationHeight int64, +) { store := ctx.KVStore(k.storeKey) store.Delete(types.GetExpiredRequestBatchKey(requestContextID, expirationHeight)) @@ -664,7 +755,11 @@ func (k Keeper) HasRequestBatchExpiration(ctx sdk.Context, requestContextID tmby } // AddNewRequestBatch adds a request batch to the new request batch queue -func (k Keeper) AddNewRequestBatch(ctx sdk.Context, requestContextID tmbytes.HexBytes, requestBatchHeight int64) { +func (k Keeper) AddNewRequestBatch( + ctx sdk.Context, + requestContextID tmbytes.HexBytes, + requestBatchHeight int64, +) { store := ctx.KVStore(k.storeKey) bz := k.cdc.MustMarshal(&gogotypes.BytesValue{Value: requestContextID}) @@ -674,7 +769,11 @@ func (k Keeper) AddNewRequestBatch(ctx sdk.Context, requestContextID tmbytes.Hex } // DeleteNewRequestBatch deletes the request batch in the given height from the new request batch queue -func (k Keeper) DeleteNewRequestBatch(ctx sdk.Context, requestContextID tmbytes.HexBytes, requestBatchHeight int64) { +func (k Keeper) DeleteNewRequestBatch( + ctx sdk.Context, + requestContextID tmbytes.HexBytes, + requestBatchHeight int64, +) { store := ctx.KVStore(k.storeKey) store.Delete(types.GetNewRequestBatchKey(requestContextID, requestBatchHeight)) @@ -688,7 +787,11 @@ func (k Keeper) HasNewRequestBatch(ctx sdk.Context, requestContextID tmbytes.Hex } // SetRequestBatchExpirationHeight sets the request batch expiration height for the specified request context -func (k Keeper) SetRequestBatchExpirationHeight(ctx sdk.Context, requestContextID tmbytes.HexBytes, expirationHeight int64) { +func (k Keeper) SetRequestBatchExpirationHeight( + ctx sdk.Context, + requestContextID tmbytes.HexBytes, + expirationHeight int64, +) { store := ctx.KVStore(k.storeKey) bz := k.cdc.MustMarshal(&gogotypes.Int64Value{Value: expirationHeight}) @@ -696,13 +799,20 @@ func (k Keeper) SetRequestBatchExpirationHeight(ctx sdk.Context, requestContextI } // DeleteRequestBatchExpirationHeight deletes the request batch expiration height for the specified request context -func (k Keeper) DeleteRequestBatchExpirationHeight(ctx sdk.Context, requestContextID tmbytes.HexBytes) { +func (k Keeper) DeleteRequestBatchExpirationHeight( + ctx sdk.Context, + requestContextID tmbytes.HexBytes, +) { store := ctx.KVStore(k.storeKey) store.Delete(types.GetExpiredRequestBatchHeightKey(requestContextID)) } // SetNewRequestBatchHeight sets the new request batch height for the specified request context -func (k Keeper) SetNewRequestBatchHeight(ctx sdk.Context, requestContextID tmbytes.HexBytes, requestBatchHeight int64) { +func (k Keeper) SetNewRequestBatchHeight( + ctx sdk.Context, + requestContextID tmbytes.HexBytes, + requestBatchHeight int64, +) { store := ctx.KVStore(k.storeKey) bz := k.cdc.MustMarshal(&gogotypes.Int64Value{Value: requestBatchHeight}) @@ -723,7 +833,10 @@ func (k Keeper) IterateExpiredRequestBatch( ) { store := ctx.KVStore(k.storeKey) - iterator := sdk.KVStorePrefixIterator(store, types.GetExpiredRequestBatchSubspace(expirationHeight)) + iterator := sdk.KVStorePrefixIterator( + store, + types.GetExpiredRequestBatchSubspace(expirationHeight), + ) defer iterator.Close() for ; iterator.Valid(); iterator.Next() { @@ -744,7 +857,10 @@ func (k Keeper) IterateNewRequestBatch( ) { store := ctx.KVStore(k.storeKey) - iterator := sdk.KVStorePrefixIterator(store, types.GetNewRequestBatchSubspace(requestBatchHeight)) + iterator := sdk.KVStorePrefixIterator( + store, + types.GetNewRequestBatchSubspace(requestBatchHeight), + ) defer iterator.Close() for ; iterator.Valid(); iterator.Next() { @@ -758,15 +874,26 @@ func (k Keeper) IterateNewRequestBatch( } // ActiveRequestsIterator returns an iterator for all the active requests of the specified service binding -func (k Keeper) ActiveRequestsIterator(ctx sdk.Context, serviceName string, provider sdk.AccAddress) sdk.Iterator { +func (k Keeper) ActiveRequestsIterator( + ctx sdk.Context, + serviceName string, + provider sdk.AccAddress, +) sdk.Iterator { store := ctx.KVStore(k.storeKey) return sdk.KVStorePrefixIterator(store, types.GetActiveRequestSubspace(serviceName, provider)) } // ActiveRequestsIteratorByReqCtx returns an iterator for all the active requests of the specified service binding -func (k Keeper) ActiveRequestsIteratorByReqCtx(ctx sdk.Context, requestContextID tmbytes.HexBytes, batchCounter uint64) sdk.Iterator { +func (k Keeper) ActiveRequestsIteratorByReqCtx( + ctx sdk.Context, + requestContextID tmbytes.HexBytes, + batchCounter uint64, +) sdk.Iterator { store := ctx.KVStore(k.storeKey) - return sdk.KVStorePrefixIterator(store, types.GetActiveRequestSubspaceByReqCtx(requestContextID, batchCounter)) + return sdk.KVStorePrefixIterator( + store, + types.GetActiveRequestSubspaceByReqCtx(requestContextID, batchCounter), + ) } // AllActiveRequestsIterator returns an iterator for all the active requests @@ -836,8 +963,17 @@ func (k Keeper) FilterServiceProviders( } // DeductServiceFees deducts the given service fees from the specified consumer -func (k Keeper) DeductServiceFees(ctx sdk.Context, consumer sdk.AccAddress, serviceFees sdk.Coins) error { - return k.bankKeeper.SendCoinsFromAccountToModule(ctx, consumer, types.RequestAccName, serviceFees) +func (k Keeper) DeductServiceFees( + ctx sdk.Context, + consumer sdk.AccAddress, + serviceFees sdk.Coins, +) error { + return k.bankKeeper.SendCoinsFromAccountToModule( + ctx, + consumer, + types.RequestAccName, + serviceFees, + ) } func (k Keeper) GetPrice( @@ -882,7 +1018,10 @@ func (k Keeper) AddResponse( requestProvider, _ := sdk.AccAddressFromBech32(request.Provider) if !provider.Equals(requestProvider) { - return request, response, sdkerrors.Wrap(types.ErrInvalidResponse, "provider does not match") + return request, response, sdkerrors.Wrap( + types.ErrInvalidResponse, + "provider does not match", + ) } if !k.IsRequestActive(ctx, requestID) { @@ -902,7 +1041,14 @@ func (k Keeper) AddResponse( requestContextID, _ := hex.DecodeString(request.RequestContextId) consumer, _ := sdk.AccAddressFromBech32(request.Consumer) - response = types.NewResponse(provider, consumer, result, output, requestContextID, request.RequestContextBatchCounter) + response = types.NewResponse( + provider, + consumer, + result, + output, + requestContextID, + request.RequestContextBatchCounter, + ) k.SetResponse(ctx, requestID, response) k.DeleteActiveRequest(ctx, request.ServiceName, provider, request.ExpirationHeight, requestID) @@ -949,7 +1095,10 @@ func (k Keeper) SetResponse(ctx sdk.Context, requestID tmbytes.HexBytes, respons } // GetResponse returns a response with the speicified request ID -func (k Keeper) GetResponse(ctx sdk.Context, requestID tmbytes.HexBytes) (response types.Response, found bool) { +func (k Keeper) GetResponse( + ctx sdk.Context, + requestID tmbytes.HexBytes, +) (response types.Response, found bool) { store := ctx.KVStore(k.storeKey) bz := store.Get(types.GetResponseKey(requestID)) @@ -991,13 +1140,24 @@ func (k Keeper) IterateResponses( } // ResponsesIteratorByReqCtx returns an iterator for all responses of the specified request context and batch counter -func (k Keeper) ResponsesIteratorByReqCtx(ctx sdk.Context, requestContextID tmbytes.HexBytes, batchCounter uint64) sdk.Iterator { +func (k Keeper) ResponsesIteratorByReqCtx( + ctx sdk.Context, + requestContextID tmbytes.HexBytes, + batchCounter uint64, +) sdk.Iterator { store := ctx.KVStore(k.storeKey) - return sdk.KVStorePrefixIterator(store, types.GetResponseSubspaceByReqCtx(requestContextID, batchCounter)) + return sdk.KVStorePrefixIterator( + store, + types.GetResponseSubspaceByReqCtx(requestContextID, batchCounter), + ) } // GetResponseOutputs retrieves all response outputs of the specified request context and batch counter -func (k Keeper) GetResponseOutputs(ctx sdk.Context, requestContextID tmbytes.HexBytes, batchCounter uint64) []string { +func (k Keeper) GetResponseOutputs( + ctx sdk.Context, + requestContextID tmbytes.HexBytes, + batchCounter uint64, +) []string { iterator := k.ResponsesIteratorByReqCtx(ctx, requestContextID, batchCounter) defer iterator.Close() @@ -1075,7 +1235,12 @@ func (k Keeper) Slash(ctx sdk.Context, requestID tmbytes.HexBytes) error { deposit, hasNeg := binding.Deposit.SafeSub(slashedCoins...) if hasNeg { - return sdkerrors.Wrapf(sdkerrors.ErrInsufficientFunds, "%s is less than %s", binding.Deposit.String(), slashedCoins.String()) + return sdkerrors.Wrapf( + sdkerrors.ErrInsufficientFunds, + "%s is less than %s", + binding.Deposit.String(), + slashedCoins.String(), + ) } if err := k.bankKeeper.SendCoinsFromModuleToModule(ctx, types.DepositAccName, k.feeCollectorName, slashedCoins); err != nil { @@ -1132,7 +1297,12 @@ func (k Keeper) CheckAuthority( func (k Keeper) GetResponseCallback(moduleName string) (types.ResponseCallback, error) { respCallback, ok := k.respCallbacks[moduleName] if !ok { - return nil, sdkerrors.Wrapf(types.ErrCallbackNotRegistered, "%s not registered for module %s", "response callback", moduleName) + return nil, sdkerrors.Wrapf( + types.ErrCallbackNotRegistered, + "%s not registered for module %s", + "response callback", + moduleName, + ) } return respCallback, nil @@ -1142,7 +1312,12 @@ func (k Keeper) GetResponseCallback(moduleName string) (types.ResponseCallback, func (k Keeper) GetStateCallback(moduleName string) (types.StateCallback, error) { stateCallback, ok := k.stateCallbacks[moduleName] if !ok { - return nil, sdkerrors.Wrapf(types.ErrCallbackNotRegistered, "%s not registered for module %s", "state callback", moduleName) + return nil, sdkerrors.Wrapf( + types.ErrCallbackNotRegistered, + "%s not registered for module %s", + "state callback", + moduleName, + ) } return stateCallback, nil @@ -1172,7 +1347,11 @@ func (k Keeper) validateServiceFeeCap(ctx sdk.Context, serviceFeeCap sdk.Coins) baseDenom := k.BaseDenom(ctx) if len(serviceFeeCap) != 1 || serviceFeeCap[0].Denom != baseDenom { - return sdkerrors.Wrapf(types.ErrInvalidServiceFeeCap, "service fee cap only accepts %s", baseDenom) + return sdkerrors.Wrapf( + types.ErrInvalidServiceFeeCap, + "service fee cap only accepts %s", + baseDenom, + ) } return nil @@ -1182,7 +1361,7 @@ func TxHash(ctx sdk.Context) []byte { return tmhash.Sum(ctx.TxBytes()) } -// GetInternalIndex sets the internal index +// GetInternalIndex sets the internal index func (k Keeper) SetInternalIndex(ctx sdk.Context, index int64) { store := ctx.KVStore(k.storeKey) diff --git a/modules/service/keeper/keeper.go b/modules/service/keeper/keeper.go index a12cdc2e..9611f9cd 100644 --- a/modules/service/keeper/keeper.go +++ b/modules/service/keeper/keeper.go @@ -3,7 +3,7 @@ package keeper import ( "fmt" - "github.com/tendermint/tendermint/libs/log" + "github.com/cometbft/cometbft/libs/log" "github.com/cosmos/cosmos-sdk/codec" storetypes "github.com/cosmos/cosmos-sdk/store/types" diff --git a/modules/service/keeper/keeper_test.go b/modules/service/keeper/keeper_test.go index 9eacd925..8ee49a5e 100644 --- a/modules/service/keeper/keeper_test.go +++ b/modules/service/keeper/keeper_test.go @@ -9,9 +9,9 @@ import ( "github.com/stretchr/testify/suite" "github.com/tidwall/gjson" - abci "github.com/tendermint/tendermint/abci/types" - tmbytes "github.com/tendermint/tendermint/libs/bytes" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + abci "github.com/cometbft/cometbft/abci/types" + tmbytes "github.com/cometbft/cometbft/libs/bytes" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" @@ -111,24 +111,55 @@ func (suite *KeeperTestSuite) setTestAddrs() { func (suite *KeeperTestSuite) addCoinsToAddr(addr sdk.AccAddress, coins sdk.Coins) { err := suite.app.BankKeeper.MintCoins(suite.ctx, minttypes.ModuleName, coins) suite.NoError(err) - err = suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, minttypes.ModuleName, addr, coins) + err = suite.app.BankKeeper.SendCoinsFromModuleToAccount( + suite.ctx, + minttypes.ModuleName, + addr, + coins, + ) suite.NoError(err) } func (suite *KeeperTestSuite) addCoinsToModule(name string, coins sdk.Coins) { err := suite.app.BankKeeper.MintCoins(suite.ctx, minttypes.ModuleName, coins) suite.NoError(err) - err = suite.app.BankKeeper.SendCoinsFromModuleToModule(suite.ctx, minttypes.ModuleName, name, coins) + err = suite.app.BankKeeper.SendCoinsFromModuleToModule( + suite.ctx, + minttypes.ModuleName, + name, + coins, + ) suite.NoError(err) } func (suite *KeeperTestSuite) setServiceDefinition() { - svcDef := types.NewServiceDefinition(testServiceName, testServiceDesc, testServiceTags, testAuthor, testAuthorDesc, testSchemas) + svcDef := types.NewServiceDefinition( + testServiceName, + testServiceDesc, + testServiceTags, + testAuthor, + testAuthorDesc, + testSchemas, + ) suite.keeper.SetServiceDefinition(suite.ctx, svcDef) } -func (suite *KeeperTestSuite) setServiceBinding(available bool, disabledTime time.Time, provider, owner sdk.AccAddress) { - svcBinding := types.NewServiceBinding(testServiceName, provider, testDeposit, testPricing, testQoS, testOptions, available, disabledTime, owner) +func (suite *KeeperTestSuite) setServiceBinding( + available bool, + disabledTime time.Time, + provider, owner sdk.AccAddress, +) { + svcBinding := types.NewServiceBinding( + testServiceName, + provider, + testDeposit, + testPricing, + testQoS, + testOptions, + available, + disabledTime, + owner, + ) suite.keeper.SetServiceBinding(suite.ctx, svcBinding) suite.keeper.SetOwnerServiceBinding(suite.ctx, svcBinding) @@ -142,7 +173,15 @@ func (suite *KeeperTestSuite) setServiceBinding(available bool, disabledTime tim } func (suite *KeeperTestSuite) TestDefineService() { - err := suite.keeper.AddServiceDefinition(suite.ctx, testServiceName, testServiceDesc, testServiceTags, testAuthor, testAuthorDesc, testSchemas) + err := suite.keeper.AddServiceDefinition( + suite.ctx, + testServiceName, + testServiceDesc, + testServiceTags, + testAuthor, + testAuthorDesc, + testSchemas, + ) suite.NoError(err) svcDef, found := suite.keeper.GetServiceDefinition(suite.ctx, testServiceName) @@ -159,7 +198,16 @@ func (suite *KeeperTestSuite) TestDefineService() { func (suite *KeeperTestSuite) TestBindService() { suite.setServiceDefinition() - err := suite.keeper.AddServiceBinding(suite.ctx, testServiceName, testProvider, testDeposit, testPricing, testQoS, testOptions, testOwner) + err := suite.keeper.AddServiceBinding( + suite.ctx, + testServiceName, + testProvider, + testDeposit, + testPricing, + testQoS, + testOptions, + testOwner, + ) suite.NoError(err) svcBinding, found := suite.keeper.GetServiceBinding(suite.ctx, testServiceName, testProvider) @@ -195,10 +243,23 @@ func (suite *KeeperTestSuite) TestBindService() { newOptions := "{}" provider, _ := sdk.AccAddressFromBech32(svcBinding.Provider) - err = suite.keeper.UpdateServiceBinding(suite.ctx, svcBinding.ServiceName, provider, testAddedDeposit, newPricing, newQoS, newOptions, testOwner) + err = suite.keeper.UpdateServiceBinding( + suite.ctx, + svcBinding.ServiceName, + provider, + testAddedDeposit, + newPricing, + newQoS, + newOptions, + testOwner, + ) suite.NoError(err) - updatedSvcBinding, found := suite.keeper.GetServiceBinding(suite.ctx, svcBinding.ServiceName, provider) + updatedSvcBinding, found := suite.keeper.GetServiceBinding( + suite.ctx, + svcBinding.ServiceName, + provider, + ) suite.True(found) suite.True(updatedSvcBinding.Deposit.IsEqual(svcBinding.Deposit.Add(testAddedDeposit...))) @@ -238,7 +299,13 @@ func (suite *KeeperTestSuite) TestEnableServiceBinding() { disabledTime := time.Now().UTC() suite.setServiceBinding(false, disabledTime, testProvider, testOwner) - err := suite.keeper.EnableServiceBinding(suite.ctx, testServiceName, testProvider, nil, testOwner) + err := suite.keeper.EnableServiceBinding( + suite.ctx, + testServiceName, + testProvider, + nil, + testOwner, + ) suite.NoError(err) svcBinding, found := suite.keeper.GetServiceBinding(suite.ctx, testServiceName, testProvider) @@ -323,7 +390,17 @@ func (suite *KeeperTestSuite) TestKeeperRequestContext() { newRepeatedFreq := testRepeatedFreq + 10 newRepeatedTotal := int64(-1) - err = suite.keeper.UpdateRequestContext(ctx, requestContextID, nil, 0, newServiceFeeCap, newTimeout, newRepeatedFreq, newRepeatedTotal, consumer) + err = suite.keeper.UpdateRequestContext( + ctx, + requestContextID, + nil, + 0, + newServiceFeeCap, + newTimeout, + newRepeatedFreq, + newRepeatedTotal, + consumer, + ) suite.NoError(err) requestContext, found = suite.keeper.GetRequestContext(ctx, requestContextID) @@ -381,9 +458,23 @@ func (suite *KeeperTestSuite) TestKeeperRequestService() { ctx := suite.ctx.WithBlockHeight(blockHeight) suite.app.BeginBlocker(ctx, abci.RequestBeginBlock{}) - requestContextID, requestContext := suite.setRequestContext(ctx, consumer, providers, types.RUNNING, 0, "") + requestContextID, requestContext := suite.setRequestContext( + ctx, + consumer, + providers, + types.RUNNING, + 0, + "", + ) - newProviders, totalServiceFees, _, _ := suite.keeper.FilterServiceProviders(ctx, testServiceName, providers, testTimeout, testServiceFeeCap, consumer) + newProviders, totalServiceFees, _, _ := suite.keeper.FilterServiceProviders( + ctx, + testServiceName, + providers, + testTimeout, + testServiceFeeCap, + consumer, + ) suite.Equal(providers, newProviders) suite.Equal("4stake", totalServiceFees.String()) @@ -417,7 +508,11 @@ func (suite *KeeperTestSuite) TestKeeperRequestService() { suite.Equal(testProvider.String(), request.Provider) } - iterator = suite.keeper.ActiveRequestsIteratorByReqCtx(ctx, requestContextID, requestContext.BatchCounter) + iterator = suite.keeper.ActiveRequestsIteratorByReqCtx( + ctx, + requestContextID, + requestContext.BatchCounter, + ) defer iterator.Close() suite.True(iterator.Valid()) @@ -450,13 +545,27 @@ func (suite *KeeperTestSuite) TestKeeperRequestService() { suite.keeper.SetRequestVolume(ctx, consumer, testServiceName, testProvider1, 1) // service fees will change due to the increased volume - _, totalServiceFees, _, _ = suite.keeper.FilterServiceProviders(ctx, testServiceName, providers, testTimeout, testServiceFeeCap, consumer) + _, totalServiceFees, _, _ = suite.keeper.FilterServiceProviders( + ctx, + testServiceName, + providers, + testTimeout, + testServiceFeeCap, + consumer, + ) suite.Equal("4stake", totalServiceFees.String()) // satifying providers will change due to the condition changed newTimeout := int64(40) - newProviders, _, _, _ = suite.keeper.FilterServiceProviders(ctx, testServiceName, providers, newTimeout, testServiceFeeCap, consumer) + newProviders, _, _, _ = suite.keeper.FilterServiceProviders( + ctx, + testServiceName, + providers, + newTimeout, + testServiceFeeCap, + consumer, + ) suite.Equal(0, len(newProviders)) } @@ -472,7 +581,14 @@ func (suite *KeeperTestSuite) TestKeeperRespondService() { blockHeight := int64(1000) ctx = ctx.WithBlockHeight(blockHeight) - requestContextID, requestContext := suite.setRequestContext(ctx, consumer, []sdk.AccAddress{provider}, types.RUNNING, 0, "") + requestContextID, requestContext := suite.setRequestContext( + ctx, + consumer, + []sdk.AccAddress{provider}, + types.RUNNING, + 0, + "", + ) requestContext.BatchCounter++ suite.keeper.SetRequestContext(ctx, requestContextID, requestContext) @@ -503,7 +619,13 @@ func (suite *KeeperTestSuite) TestKeeperRespondService() { suite.Equal(uint64(1), volume) // respond request 2 - _, _, err = suite.keeper.AddResponse(ctx, requestID2, provider, testErrorResult, testEmptyOutput) + _, _, err = suite.keeper.AddResponse( + ctx, + requestID2, + provider, + testErrorResult, + testEmptyOutput, + ) suite.NoError(err) requestContext, _ = suite.keeper.GetRequestContext(ctx, requestContextID) @@ -569,7 +691,14 @@ func (suite *KeeperTestSuite) TestRequestServiceFromModule() { blockHeight := int64(1000) ctx = ctx.WithBlockHeight(blockHeight) - requestContextID, requestContext := suite.setRequestContext(ctx, consumer, providers, types.RUNNING, respThreshold, moduleName) + requestContextID, requestContext := suite.setRequestContext( + ctx, + consumer, + providers, + types.RUNNING, + respThreshold, + moduleName, + ) requestContext.BatchCounter++ suite.keeper.SetRequestContext(ctx, requestContextID, requestContext) @@ -697,7 +826,13 @@ func (suite *KeeperTestSuite) setRequestContext( return requestContextID, requestContext } -func (suite *KeeperTestSuite) setRequest(ctx sdk.Context, consumer sdk.AccAddress, provider sdk.AccAddress, requestContextID []byte, serviceFee sdk.Coins) tmbytes.HexBytes { +func (suite *KeeperTestSuite) setRequest( + ctx sdk.Context, + consumer sdk.AccAddress, + provider sdk.AccAddress, + requestContextID []byte, + serviceFee sdk.Coins, +) tmbytes.HexBytes { requestContext, _ := suite.keeper.GetRequestContext(ctx, requestContextID) err := suite.keeper.DeductServiceFees(ctx, consumer, serviceFee) @@ -710,13 +845,24 @@ func (suite *KeeperTestSuite) setRequest(ctx sdk.Context, consumer sdk.AccAddres requestContext.BatchRequestCount++ - requestID := types.GenerateRequestID(requestContextID, request.RequestContextBatchCounter, ctx.BlockHeight(), int16(requestContext.BatchRequestCount)) + requestID := types.GenerateRequestID( + requestContextID, + request.RequestContextBatchCounter, + ctx.BlockHeight(), + int16(requestContext.BatchRequestCount), + ) suite.keeper.SetCompactRequest(ctx, requestID, request) requestContext.BatchState = types.BATCHRUNNING suite.keeper.SetRequestContext(ctx, requestContextID, requestContext) - suite.keeper.AddActiveRequest(ctx, requestContext.ServiceName, provider, request.RequestHeight+requestContext.Timeout, requestID) + suite.keeper.AddActiveRequest( + ctx, + requestContext.ServiceName, + provider, + request.RequestHeight+requestContext.Timeout, + requestID, + ) suite.keeper.AddActiveRequestByID(ctx, requestID) return requestID @@ -727,7 +873,10 @@ type MockOracleService struct { feeds map[string]string } -func (m MockOracleService) GetExchangeRate(ctx sdk.Context, input string) (result string, output string) { +func (m MockOracleService) GetExchangeRate( + ctx sdk.Context, + input string, +) (result string, output string) { feedName := gjson.Get(input, "body").Get("pair").String() value, ok := m.feeds[feedName] diff --git a/modules/service/keeper/module_service.go b/modules/service/keeper/module_service.go index 02afabf0..bc640d81 100644 --- a/modules/service/keeper/module_service.go +++ b/modules/service/keeper/module_service.go @@ -1,7 +1,7 @@ package keeper import ( - tmbytes "github.com/tendermint/tendermint/libs/bytes" + tmbytes "github.com/cometbft/cometbft/libs/bytes" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -12,7 +12,12 @@ import ( // RegisterModuleService registers a module service func (k Keeper) RegisterModuleService(moduleName string, moduleService *types.ModuleService) error { if _, ok := k.moduleServices[moduleName]; ok { - return sdkerrors.Wrapf(types.ErrModuleServiceRegistered, "%s already registered for module %s", "module service", moduleName) + return sdkerrors.Wrapf( + types.ErrModuleServiceRegistered, + "%s already registered for module %s", + "module service", + moduleName, + ) } k.SetModuleService(moduleName, moduleService) @@ -32,7 +37,9 @@ func (k Keeper) GetModuleServiceByModuleName(moduleName string) (*types.ModuleSe return k.moduleServices[moduleName], true } -func (k Keeper) GetModuleServiceByServiceName(serviceName string) (string, *types.ModuleService, bool) { +func (k Keeper) GetModuleServiceByServiceName( + serviceName string, +) (string, *types.ModuleService, bool) { for moduleName, mdouleSvc := range k.moduleServices { if mdouleSvc.ServiceName == serviceName { return moduleName, mdouleSvc, true @@ -59,7 +66,11 @@ func (k Keeper) RequestModuleService( for i, provider := range requestContext.Providers { pd, err := sdk.AccAddressFromBech32(provider) if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid provider address: %s", provider) + return sdkerrors.Wrapf( + sdkerrors.ErrInvalidAddress, + "invalid provider address: %s", + provider, + ) } pds[i] = pd } @@ -80,7 +91,12 @@ func (k Keeper) RequestModuleService( return err } - requestIDs := k.InitiateRequests(ctx, reqContextID, []sdk.AccAddress{moduleService.Provider}, make(map[string][]string)) + requestIDs := k.InitiateRequests( + ctx, + reqContextID, + []sdk.AccAddress{moduleService.Provider}, + make(map[string][]string), + ) result, output := moduleService.ReuquestService(ctx, input) request, _, err := k.AddResponse(ctx, requestIDs[0], moduleService.Provider, result, output) diff --git a/modules/service/keeper/msg_server.go b/modules/service/keeper/msg_server.go index e4c2595b..8abc8e07 100644 --- a/modules/service/keeper/msg_server.go +++ b/modules/service/keeper/msg_server.go @@ -4,7 +4,7 @@ import ( "context" "encoding/hex" - tmbytes "github.com/tendermint/tendermint/libs/bytes" + tmbytes "github.com/cometbft/cometbft/libs/bytes" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -25,7 +25,10 @@ func NewMsgServerImpl(keeper Keeper) types.MsgServer { } // DefineService handles MsgDefineService -func (m msgServer) DefineService(goCtx context.Context, msg *types.MsgDefineService) (*types.MsgDefineServiceResponse, error) { +func (m msgServer) DefineService( + goCtx context.Context, + msg *types.MsgDefineService, +) (*types.MsgDefineServiceResponse, error) { author, err := sdk.AccAddressFromBech32(msg.Author) if err != nil { return nil, err @@ -56,9 +59,16 @@ func (m msgServer) DefineService(goCtx context.Context, msg *types.MsgDefineServ } // BindService handles MsgBindService -func (m msgServer) BindService(goCtx context.Context, msg *types.MsgBindService) (*types.MsgBindServiceResponse, error) { +func (m msgServer) BindService( + goCtx context.Context, + msg *types.MsgBindService, +) (*types.MsgBindServiceResponse, error) { if _, _, found := m.Keeper.GetModuleServiceByServiceName(msg.ServiceName); found { - return nil, sdkerrors.Wrapf(types.ErrBindModuleService, "module service %s", msg.ServiceName) + return nil, sdkerrors.Wrapf( + types.ErrBindModuleService, + "module service %s", + msg.ServiceName, + ) } provider, err := sdk.AccAddressFromBech32(msg.Provider) @@ -96,7 +106,10 @@ func (m msgServer) BindService(goCtx context.Context, msg *types.MsgBindService) } // UpdateServiceBinding handles MsgUpdateServiceBinding -func (m msgServer) UpdateServiceBinding(goCtx context.Context, msg *types.MsgUpdateServiceBinding) (*types.MsgUpdateServiceBindingResponse, error) { +func (m msgServer) UpdateServiceBinding( + goCtx context.Context, + msg *types.MsgUpdateServiceBinding, +) (*types.MsgUpdateServiceBindingResponse, error) { provider, err := sdk.AccAddressFromBech32(msg.Provider) if err != nil { return nil, err @@ -132,7 +145,10 @@ func (m msgServer) UpdateServiceBinding(goCtx context.Context, msg *types.MsgUpd } // SetWithdrawAddress handles MsgSetWithdrawAddress -func (m msgServer) SetWithdrawAddress(goCtx context.Context, msg *types.MsgSetWithdrawAddress) (*types.MsgSetWithdrawAddressResponse, error) { +func (m msgServer) SetWithdrawAddress( + goCtx context.Context, + msg *types.MsgSetWithdrawAddress, +) (*types.MsgSetWithdrawAddressResponse, error) { withdrawAddress, err := sdk.AccAddressFromBech32(msg.WithdrawAddress) if err != nil { return nil, err @@ -143,7 +159,11 @@ func (m msgServer) SetWithdrawAddress(goCtx context.Context, msg *types.MsgSetWi } if m.Keeper.blockedAddrs[msg.WithdrawAddress] { - return nil, sdkerrors.Wrapf(sdkerrors.ErrUnauthorized, "%s is a module account", msg.WithdrawAddress) + return nil, sdkerrors.Wrapf( + sdkerrors.ErrUnauthorized, + "%s is a module account", + msg.WithdrawAddress, + ) } ctx := sdk.UnwrapSDKContext(goCtx) @@ -166,7 +186,10 @@ func (m msgServer) SetWithdrawAddress(goCtx context.Context, msg *types.MsgSetWi } // EnableServiceBinding handles MsgEnableServiceBinding -func (m msgServer) EnableServiceBinding(goCtx context.Context, msg *types.MsgEnableServiceBinding) (*types.MsgEnableServiceBindingResponse, error) { +func (m msgServer) EnableServiceBinding( + goCtx context.Context, + msg *types.MsgEnableServiceBinding, +) (*types.MsgEnableServiceBindingResponse, error) { provider, err := sdk.AccAddressFromBech32(msg.Provider) if err != nil { return nil, err @@ -199,7 +222,10 @@ func (m msgServer) EnableServiceBinding(goCtx context.Context, msg *types.MsgEna } // DisableServiceBinding handles MsgDisableServiceBinding -func (m msgServer) DisableServiceBinding(goCtx context.Context, msg *types.MsgDisableServiceBinding) (*types.MsgDisableServiceBindingResponse, error) { +func (m msgServer) DisableServiceBinding( + goCtx context.Context, + msg *types.MsgDisableServiceBinding, +) (*types.MsgDisableServiceBindingResponse, error) { provider, err := sdk.AccAddressFromBech32(msg.Provider) if err != nil { return nil, err @@ -232,7 +258,10 @@ func (m msgServer) DisableServiceBinding(goCtx context.Context, msg *types.MsgDi } // RefundServiceDeposit handles MsgRefundServiceDeposit -func (m msgServer) RefundServiceDeposit(goCtx context.Context, msg *types.MsgRefundServiceDeposit) (*types.MsgRefundServiceDepositResponse, error) { +func (m msgServer) RefundServiceDeposit( + goCtx context.Context, + msg *types.MsgRefundServiceDeposit, +) (*types.MsgRefundServiceDepositResponse, error) { provider, err := sdk.AccAddressFromBech32(msg.Provider) if err != nil { return nil, err @@ -265,7 +294,10 @@ func (m msgServer) RefundServiceDeposit(goCtx context.Context, msg *types.MsgRef } // CallService handles MsgCallService -func (m msgServer) CallService(goCtx context.Context, msg *types.MsgCallService) (*types.MsgCallServiceResponse, error) { +func (m msgServer) CallService( + goCtx context.Context, + msg *types.MsgCallService, +) (*types.MsgCallServiceResponse, error) { var reqContextID tmbytes.HexBytes var err error @@ -327,7 +359,10 @@ func (m msgServer) CallService(goCtx context.Context, msg *types.MsgCallService) } // RespondService handles MsgRespondService -func (m msgServer) RespondService(goCtx context.Context, msg *types.MsgRespondService) (*types.MsgRespondServiceResponse, error) { +func (m msgServer) RespondService( + goCtx context.Context, + msg *types.MsgRespondService, +) (*types.MsgRespondServiceResponse, error) { provider, err := sdk.AccAddressFromBech32(msg.Provider) if err != nil { return nil, err @@ -364,7 +399,10 @@ func (m msgServer) RespondService(goCtx context.Context, msg *types.MsgRespondSe } // PauseRequestContext handles MsgPauseRequestContext -func (m msgServer) PauseRequestContext(goCtx context.Context, msg *types.MsgPauseRequestContext) (*types.MsgPauseRequestContextResponse, error) { +func (m msgServer) PauseRequestContext( + goCtx context.Context, + msg *types.MsgPauseRequestContext, +) (*types.MsgPauseRequestContextResponse, error) { consumer, err := sdk.AccAddressFromBech32(msg.Consumer) if err != nil { return nil, err @@ -400,7 +438,10 @@ func (m msgServer) PauseRequestContext(goCtx context.Context, msg *types.MsgPaus } // StartRequestContext handles MsgStartRequestContext -func (m msgServer) StartRequestContext(goCtx context.Context, msg *types.MsgStartRequestContext) (*types.MsgStartRequestContextResponse, error) { +func (m msgServer) StartRequestContext( + goCtx context.Context, + msg *types.MsgStartRequestContext, +) (*types.MsgStartRequestContextResponse, error) { consumer, err := sdk.AccAddressFromBech32(msg.Consumer) if err != nil { return nil, err @@ -436,7 +477,10 @@ func (m msgServer) StartRequestContext(goCtx context.Context, msg *types.MsgStar } // KillRequestContext handles MsgKillRequestContext -func (m msgServer) KillRequestContext(goCtx context.Context, msg *types.MsgKillRequestContext) (*types.MsgKillRequestContextResponse, error) { +func (m msgServer) KillRequestContext( + goCtx context.Context, + msg *types.MsgKillRequestContext, +) (*types.MsgKillRequestContextResponse, error) { consumer, err := sdk.AccAddressFromBech32(msg.Consumer) if err != nil { return nil, err @@ -472,7 +516,10 @@ func (m msgServer) KillRequestContext(goCtx context.Context, msg *types.MsgKillR } // UpdateRequestContext handles MsgUpdateRequestContext -func (m msgServer) UpdateRequestContext(goCtx context.Context, msg *types.MsgUpdateRequestContext) (*types.MsgUpdateRequestContextResponse, error) { +func (m msgServer) UpdateRequestContext( + goCtx context.Context, + msg *types.MsgUpdateRequestContext, +) (*types.MsgUpdateRequestContextResponse, error) { consumer, err := sdk.AccAddressFromBech32(msg.Consumer) if err != nil { return nil, err @@ -521,7 +568,10 @@ func (m msgServer) UpdateRequestContext(goCtx context.Context, msg *types.MsgUpd } // WithdrawEarnedFees handles MsgWithdrawEarnedFees -func (m msgServer) WithdrawEarnedFees(goCtx context.Context, msg *types.MsgWithdrawEarnedFees) (*types.MsgWithdrawEarnedFeesResponse, error) { +func (m msgServer) WithdrawEarnedFees( + goCtx context.Context, + msg *types.MsgWithdrawEarnedFees, +) (*types.MsgWithdrawEarnedFeesResponse, error) { owner, err := sdk.AccAddressFromBech32(msg.Owner) if err != nil { return nil, err diff --git a/modules/service/keeper/state_change.go b/modules/service/keeper/state_change.go index e976d05b..1729f00d 100644 --- a/modules/service/keeper/state_change.go +++ b/modules/service/keeper/state_change.go @@ -3,7 +3,7 @@ package keeper import ( "encoding/json" - tmbytes "github.com/tendermint/tendermint/libs/bytes" + tmbytes "github.com/cometbft/cometbft/libs/bytes" sdk "github.com/cosmos/cosmos-sdk/types" @@ -11,7 +11,11 @@ import ( ) // CompleteBatch completes a running batch -func (k Keeper) CompleteBatch(ctx sdk.Context, requestContext types.RequestContext, requestContextID tmbytes.HexBytes) types.RequestContext { +func (k Keeper) CompleteBatch( + ctx sdk.Context, + requestContext types.RequestContext, + requestContextID tmbytes.HexBytes, +) types.RequestContext { requestContext.BatchState = types.BATCHCOMPLETED if len(requestContext.ModuleName) != 0 { @@ -39,7 +43,11 @@ func (k Keeper) CompleteBatch(ctx sdk.Context, requestContext types.RequestConte } // CleanBatch cleans up all requests and responses related to the batch -func (k Keeper) CleanBatch(ctx sdk.Context, requestContext types.RequestContext, requestContextID tmbytes.HexBytes) { +func (k Keeper) CleanBatch( + ctx sdk.Context, + requestContext types.RequestContext, + requestContextID tmbytes.HexBytes, +) { // remove all requests and responses of this batch iterator := k.RequestsIteratorByReqCtx(ctx, requestContextID, requestContext.BatchCounter) defer iterator.Close() @@ -52,7 +60,11 @@ func (k Keeper) CleanBatch(ctx sdk.Context, requestContext types.RequestContext, } // CompleteServiceContext completes a running or paused context -func (k Keeper) CompleteServiceContext(ctx sdk.Context, context types.RequestContext, requestContextID tmbytes.HexBytes) { +func (k Keeper) CompleteServiceContext( + ctx sdk.Context, + context types.RequestContext, + requestContextID tmbytes.HexBytes, +) { k.DeleteRequestContext(ctx, requestContextID) ctx.EventManager().EmitEvents(sdk.Events{ diff --git a/modules/service/module.go b/modules/service/module.go index 0b97b9c7..c2c4f63c 100644 --- a/modules/service/module.go +++ b/modules/service/module.go @@ -9,7 +9,7 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" - abci "github.com/tendermint/tendermint/abci/types" + abci "github.com/cometbft/cometbft/abci/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" @@ -50,7 +50,11 @@ func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { } // ValidateGenesis performs genesis state validation for the service module. -func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error { +func (AppModuleBasic) ValidateGenesis( + cdc codec.JSONCodec, + config client.TxEncodingConfig, + bz json.RawMessage, +) error { var data types.GenesisState if err := cdc.UnmarshalJSON(bz, &data); err != nil { return fmt.Errorf("failed to unmarshal %s genesis state: %w", types.ModuleName, err) @@ -96,7 +100,12 @@ type AppModule struct { } // NewAppModule creates a new AppModule object -func NewAppModule(cdc codec.Codec, keeper keeper.Keeper, accountKeeper types.AccountKeeper, bankKeeper types.BankKeeper) AppModule { +func NewAppModule( + cdc codec.Codec, + keeper keeper.Keeper, + accountKeeper types.AccountKeeper, + bankKeeper types.BankKeeper, +) AppModule { return AppModule{ AppModuleBasic: AppModuleBasic{cdc: cdc}, keeper: keeper, @@ -119,7 +128,11 @@ func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {} // InitGenesis performs genesis initialization for the service module. It returns // no validator updates. -func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { +func (am AppModule) InitGenesis( + ctx sdk.Context, + cdc codec.JSONCodec, + data json.RawMessage, +) []abci.ValidatorUpdate { var genesisState types.GenesisState cdc.MustUnmarshalJSON(data, &genesisState) @@ -163,7 +176,9 @@ func (am AppModule) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry) { } // WeightedOperations returns the all the service module operations with their respective weights. -func (am AppModule) WeightedOperations(simState module.SimulationState) []simtypes.WeightedOperation { +func (am AppModule) WeightedOperations( + simState module.SimulationState, +) []simtypes.WeightedOperation { return simulation.WeightedOperations( simState.AppParams, simState.Cdc, am.accountKeeper, am.bankKeeper, am.keeper, ) diff --git a/modules/service/simulation/operations.go b/modules/service/simulation/operations.go index 2b1b08be..eaf338be 100644 --- a/modules/service/simulation/operations.go +++ b/modules/service/simulation/operations.go @@ -5,7 +5,7 @@ import ( "fmt" "math/rand" - tmbytes "github.com/tendermint/tendermint/libs/bytes" + tmbytes "github.com/cometbft/cometbft/libs/bytes" cosmossimappparams "cosmossdk.io/simapp/params" "github.com/cosmos/cosmos-sdk/baseapp" @@ -75,7 +75,11 @@ func WeightedOperations( }, ) - appParams.GetOrGenerate(cdc, OpWeightMsgUpdateServiceBinding, &weightMsgUpdateServiceBinding, nil, + appParams.GetOrGenerate( + cdc, + OpWeightMsgUpdateServiceBinding, + &weightMsgUpdateServiceBinding, + nil, func(_ *rand.Rand) { weightMsgUpdateServiceBinding = DefaultWeightMsgUpdateServiceBinding }, @@ -87,25 +91,41 @@ func WeightedOperations( }, ) - appParams.GetOrGenerate(cdc, OpWeightMsgDisableServiceBinding, &weightMsgDisableServiceBinding, nil, + appParams.GetOrGenerate( + cdc, + OpWeightMsgDisableServiceBinding, + &weightMsgDisableServiceBinding, + nil, func(_ *rand.Rand) { weightMsgDisableServiceBinding = DefaultWeightMsgDisableServiceBinding }, ) - appParams.GetOrGenerate(cdc, OpWeightMsgEnableServiceBinding, &weightMsgEnableServiceBinding, nil, + appParams.GetOrGenerate( + cdc, + OpWeightMsgEnableServiceBinding, + &weightMsgEnableServiceBinding, + nil, func(_ *rand.Rand) { weightMsgEnableServiceBinding = DefaultWeightMsgEnableServiceBinding }, ) - appParams.GetOrGenerate(cdc, OpWeightMsgRefundServiceDeposit, &weightMsgRefundServiceDeposit, nil, + appParams.GetOrGenerate( + cdc, + OpWeightMsgRefundServiceDeposit, + &weightMsgRefundServiceDeposit, + nil, func(_ *rand.Rand) { weightMsgRefundServiceDeposit = DefaultWeightMsgRefundServiceDeposit }, ) - appParams.GetOrGenerate(cdc, OpWeightMsgRefundServiceDeposit, &weightMsgRefundServiceDeposit, nil, + appParams.GetOrGenerate( + cdc, + OpWeightMsgRefundServiceDeposit, + &weightMsgRefundServiceDeposit, + nil, func(_ *rand.Rand) { weightMsgRefundServiceDeposit = DefaultWeightMsgRefundServiceDeposit }, @@ -141,7 +161,11 @@ func WeightedOperations( }, ) - appParams.GetOrGenerate(cdc, OpWeightMsgUpdateRequestContext, &weightMsgUpdateRequestContext, nil, + appParams.GetOrGenerate( + cdc, + OpWeightMsgUpdateRequestContext, + &weightMsgUpdateRequestContext, + nil, func(_ *rand.Rand) { weightMsgUpdateRequestContext = DefaultWeightMsgUpdateRequestContext }, @@ -214,7 +238,11 @@ func WeightedOperations( } // SimulateMsgDefineService generates a MsgDefineService with random values. -func SimulateMsgDefineService(ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper) simtypes.Operation { +func SimulateMsgDefineService( + ak types.AccountKeeper, + bk types.BankKeeper, + k keeper.Keeper, +) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { @@ -230,11 +258,22 @@ func SimulateMsgDefineService(ak types.AccountKeeper, bk types.BankKeeper, k kee account := ak.GetAccount(ctx, simAccount.Address) spendable := bk.SpendableCoins(ctx, account.GetAddress()) - msg := types.NewMsgDefineService(serviceName, serviceDescription, tags, simAccount.Address.String(), authorDescription, schemas) + msg := types.NewMsgDefineService( + serviceName, + serviceDescription, + tags, + simAccount.Address.String(), + authorDescription, + schemas, + ) fees, err := simtypes.RandomFees(r, ctx, spendable) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate fees"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate fees", + ), nil, err } txGen := cosmossimappparams.MakeTestEncodingConfig().TxConfig @@ -250,7 +289,11 @@ func SimulateMsgDefineService(ak types.AccountKeeper, bk types.BankKeeper, k kee simAccount.PrivKey, ) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate mock tx", + ), nil, err } if _, _, err := app.SimDeliver(txGen.TxEncoder(), tx); err != nil { @@ -262,68 +305,124 @@ func SimulateMsgDefineService(ak types.AccountKeeper, bk types.BankKeeper, k kee } // SimulateMsgBindService generates a MsgBindService with random values. -func SimulateMsgBindService(ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper) simtypes.Operation { +func SimulateMsgBindService( + ak types.AccountKeeper, + bk types.BankKeeper, + k keeper.Keeper, +) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { def, err := GenServiceDefinition(r, k, ctx) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgBindService, "def not exsit"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgBindService, + "def not exsit", + ), nil, nil } owner, err := sdk.AccAddressFromBech32(def.Author) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgBindService, "invalid owner address"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgBindService, + "invalid owner address", + ), nil, nil } acc, found := simtypes.FindAccount(accs, owner) if !found { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgBindService, "account not found"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgBindService, + "account not found", + ), nil, nil } account := ak.GetAccount(ctx, acc.Address) spendable := bk.SpendableCoins(ctx, owner) - pricing := fmt.Sprintf(`{"price":"%d%s"}`, simtypes.RandIntBetween(r, 10, 50), sdk.DefaultBondDenom) + pricing := fmt.Sprintf( + `{"price":"%d%s"}`, + simtypes.RandIntBetween(r, 10, 50), + sdk.DefaultBondDenom, + ) parsedPricing, err := k.ParsePricing(ctx, pricing) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgBindService, err.Error()), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgBindService, + err.Error(), + ), nil, err } deposit, err := k.GetMinDeposit(ctx, parsedPricing) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgBindService, "invalid minimum deposit"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgBindService, + "invalid minimum deposit", + ), nil, nil } // random provider address provider, _ := simtypes.RandomAcc(r, accs) if provider.Address == nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgBindService, "service binding provider invalid"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgBindService, + "service binding provider invalid", + ), nil, nil } currentOwner, found := k.GetOwner(ctx, provider.Address) if found && !owner.Equals(currentOwner) { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgBindService, "owner not matching"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgBindService, + "owner not matching", + ), nil, nil } if _, found := k.GetServiceBinding(ctx, def.Name, provider.Address); found { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgBindService, "service binding already exists"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgBindService, + "service binding already exists", + ), nil, nil } qos := uint64(simtypes.RandIntBetween(r, 10, 100)) options := "{}" - msg := types.NewMsgBindService(def.Name, provider.Address.String(), deposit, pricing, qos, options, def.Author) + msg := types.NewMsgBindService( + def.Name, + provider.Address.String(), + deposit, + pricing, + qos, + options, + def.Author, + ) spendable, hasNeg := spendable.SafeSub(deposit...) if hasNeg { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgBindService, "Insufficient funds"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgBindService, + "Insufficient funds", + ), nil, nil } fees, err := simtypes.RandomFees(r, ctx, spendable) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate fees"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate fees", + ), nil, err } txGen := cosmossimappparams.MakeTestEncodingConfig().TxConfig @@ -339,7 +438,11 @@ func SimulateMsgBindService(ak types.AccountKeeper, bk types.BankKeeper, k keepe acc.PrivKey, ) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate mock tx", + ), nil, err } if _, _, err := app.SimDeliver(txGen.TxEncoder(), tx); err != nil { @@ -351,51 +454,95 @@ func SimulateMsgBindService(ak types.AccountKeeper, bk types.BankKeeper, k keepe } // SimulateMsgUpdateServiceBinding generates a MsgUpdateServiceBinding with random values. -func SimulateMsgUpdateServiceBinding(ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper) simtypes.Operation { +func SimulateMsgUpdateServiceBinding( + ak types.AccountKeeper, + bk types.BankKeeper, + k keeper.Keeper, +) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { binding, err := GenServiceBinding(r, k, ctx) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgUpdateServiceBinding, "binding not exist"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgUpdateServiceBinding, + "binding not exist", + ), nil, nil } owner, err := sdk.AccAddressFromBech32(binding.Owner) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgUpdateServiceBinding, "invalid owner address"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgUpdateServiceBinding, + "invalid owner address", + ), nil, nil } acc, found := simtypes.FindAccount(accs, owner) if !found { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgUpdateServiceBinding, "account not found"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgUpdateServiceBinding, + "account not found", + ), nil, nil } account := ak.GetAccount(ctx, acc.Address) spendable := bk.SpendableCoins(ctx, owner) - pricing := fmt.Sprintf(`{"price":"%d%s"}`, simtypes.RandIntBetween(r, 10, 50), sdk.DefaultBondDenom) + pricing := fmt.Sprintf( + `{"price":"%d%s"}`, + simtypes.RandIntBetween(r, 10, 50), + sdk.DefaultBondDenom, + ) qos := uint64(simtypes.RandIntBetween(r, 10, 100)) options := "{}" parsedPricing, err := k.ParsePricing(ctx, pricing) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgBindService, err.Error()), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgBindService, + err.Error(), + ), nil, err } deposit, err := k.GetMinDeposit(ctx, parsedPricing) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgBindService, "invalid minimum deposit"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgBindService, + "invalid minimum deposit", + ), nil, nil } spendable, hasNeg := spendable.SafeSub(deposit...) if hasNeg { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgUpdateServiceBinding, "Insufficient funds"), nil, nil - } - - msg := types.NewMsgUpdateServiceBinding(binding.ServiceName, binding.Provider, deposit, pricing, qos, options, acc.Address.String()) + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgUpdateServiceBinding, + "Insufficient funds", + ), nil, nil + } + + msg := types.NewMsgUpdateServiceBinding( + binding.ServiceName, + binding.Provider, + deposit, + pricing, + qos, + options, + acc.Address.String(), + ) fees, err := simtypes.RandomFees(r, ctx, spendable) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate fees"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate fees", + ), nil, err } txGen := cosmossimappparams.MakeTestEncodingConfig().TxConfig @@ -411,7 +558,11 @@ func SimulateMsgUpdateServiceBinding(ak types.AccountKeeper, bk types.BankKeeper acc.PrivKey, ) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate mock tx", + ), nil, err } if _, _, err := app.SimDeliver(txGen.TxEncoder(), tx); err != nil { @@ -423,7 +574,11 @@ func SimulateMsgUpdateServiceBinding(ak types.AccountKeeper, bk types.BankKeeper } // SimulateMsgSetWithdrawAddress generates a MsgSetWithdrawAddress with random values. -func SimulateMsgSetWithdrawAddress(ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper) simtypes.Operation { +func SimulateMsgSetWithdrawAddress( + ak types.AccountKeeper, + bk types.BankKeeper, + k keeper.Keeper, +) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { @@ -432,16 +587,28 @@ func SimulateMsgSetWithdrawAddress(ak types.AccountKeeper, bk types.BankKeeper, binding, err := GenServiceBinding(r, k, ctx) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSetWithdrawAddress, "binding not exist"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgSetWithdrawAddress, + "binding not exist", + ), nil, nil } owner, err := sdk.AccAddressFromBech32(binding.Owner) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSetWithdrawAddress, "invalid owner address"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgSetWithdrawAddress, + "invalid owner address", + ), nil, nil } acc, found := simtypes.FindAccount(accs, owner) if !found { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSetWithdrawAddress, "account not found"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgSetWithdrawAddress, + "account not found", + ), nil, nil } account := ak.GetAccount(ctx, acc.Address) spendable := bk.SpendableCoins(ctx, owner) @@ -450,7 +617,11 @@ func SimulateMsgSetWithdrawAddress(ak types.AccountKeeper, bk types.BankKeeper, fees, err := simtypes.RandomFees(r, ctx, spendable) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate fees"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate fees", + ), nil, err } txGen := cosmossimappparams.MakeTestEncodingConfig().TxConfig @@ -466,7 +637,11 @@ func SimulateMsgSetWithdrawAddress(ak types.AccountKeeper, bk types.BankKeeper, acc.PrivKey, ) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate mock tx", + ), nil, err } if _, _, err := app.SimDeliver(txGen.TxEncoder(), tx); err != nil { @@ -478,35 +653,63 @@ func SimulateMsgSetWithdrawAddress(ak types.AccountKeeper, bk types.BankKeeper, } // SimulateMsgDisableServiceBinding generates a MsgDisableServiceBinding with random values. -func SimulateMsgDisableServiceBinding(ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper) simtypes.Operation { +func SimulateMsgDisableServiceBinding( + ak types.AccountKeeper, + bk types.BankKeeper, + k keeper.Keeper, +) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { binding, err := GenServiceBinding(r, k, ctx) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgDisableServiceBinding, "binding not exist"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgDisableServiceBinding, + "binding not exist", + ), nil, nil } if !binding.Available { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgDisableServiceBinding, "binding is disabled"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgDisableServiceBinding, + "binding is disabled", + ), nil, nil } owner, err := sdk.AccAddressFromBech32(binding.Owner) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgDisableServiceBinding, "invalid owner address"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgDisableServiceBinding, + "invalid owner address", + ), nil, nil } acc, found := simtypes.FindAccount(accs, owner) if !found { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgDisableServiceBinding, "account not found"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgDisableServiceBinding, + "account not found", + ), nil, nil } account := ak.GetAccount(ctx, acc.Address) spendable := bk.SpendableCoins(ctx, owner) - msg := types.NewMsgDisableServiceBinding(binding.ServiceName, binding.Provider, binding.Owner) + msg := types.NewMsgDisableServiceBinding( + binding.ServiceName, + binding.Provider, + binding.Owner, + ) fees, err := simtypes.RandomFees(r, ctx, spendable) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate fees"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate fees", + ), nil, err } txGen := cosmossimappparams.MakeTestEncodingConfig().TxConfig @@ -522,7 +725,11 @@ func SimulateMsgDisableServiceBinding(ak types.AccountKeeper, bk types.BankKeepe acc.PrivKey, ) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate mock tx", + ), nil, err } if _, _, err := app.SimDeliver(txGen.TxEncoder(), tx); err != nil { @@ -534,50 +741,91 @@ func SimulateMsgDisableServiceBinding(ak types.AccountKeeper, bk types.BankKeepe } // SimulateMsgEnableServiceBinding generates a MsgEnableServiceBinding with random values. -func SimulateMsgEnableServiceBinding(ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper) simtypes.Operation { +func SimulateMsgEnableServiceBinding( + ak types.AccountKeeper, + bk types.BankKeeper, + k keeper.Keeper, +) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { binding, err := GenServiceBinding(r, k, ctx) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgEnableServiceBinding, "binding not exist"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgEnableServiceBinding, + "binding not exist", + ), nil, nil } if binding.Available { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgEnableServiceBinding, "binding is available"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgEnableServiceBinding, + "binding is available", + ), nil, nil } owner, err := sdk.AccAddressFromBech32(binding.Owner) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgEnableServiceBinding, "invalid owner address"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgEnableServiceBinding, + "invalid owner address", + ), nil, nil } acc, found := simtypes.FindAccount(accs, owner) if !found { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgEnableServiceBinding, "account not found"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgEnableServiceBinding, + "account not found", + ), nil, nil } account := ak.GetAccount(ctx, acc.Address) spendable := bk.SpendableCoins(ctx, owner) provider, err := sdk.AccAddressFromBech32(binding.Provider) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgEnableServiceBinding, "invalid provider address"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgEnableServiceBinding, + "invalid provider address", + ), nil, nil } pricing := k.GetPricing(ctx, binding.ServiceName, provider) deposit, err := k.GetMinDeposit(ctx, pricing) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgBindService, "invalid minimum deposit"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgBindService, + "invalid minimum deposit", + ), nil, nil } spendable, hasNeg := spendable.SafeSub(deposit...) if hasNeg { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgUpdateServiceBinding, "Insufficient funds"), nil, nil - } - - msg := types.NewMsgEnableServiceBinding(binding.ServiceName, binding.Provider, deposit, binding.Owner) + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgUpdateServiceBinding, + "Insufficient funds", + ), nil, nil + } + + msg := types.NewMsgEnableServiceBinding( + binding.ServiceName, + binding.Provider, + deposit, + binding.Owner, + ) fees, err := simtypes.RandomFees(r, ctx, spendable) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate fees"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate fees", + ), nil, err } txGen := cosmossimappparams.MakeTestEncodingConfig().TxConfig @@ -593,7 +841,11 @@ func SimulateMsgEnableServiceBinding(ak types.AccountKeeper, bk types.BankKeeper acc.PrivKey, ) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate mock tx", + ), nil, err } if _, _, err := app.SimDeliver(txGen.TxEncoder(), tx); err != nil { @@ -605,45 +857,78 @@ func SimulateMsgEnableServiceBinding(ak types.AccountKeeper, bk types.BankKeeper } // SimulateMsgRefundServiceDeposit generates a MsgRefundServiceDeposit with random values. -func SimulateMsgRefundServiceDeposit(ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper) simtypes.Operation { +func SimulateMsgRefundServiceDeposit( + ak types.AccountKeeper, + bk types.BankKeeper, + k keeper.Keeper, +) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { binding, err := GenServiceBindingDisabled(r, k, ctx) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgRefundServiceDeposit, "binding not exist"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgRefundServiceDeposit, + "binding not exist", + ), nil, nil } owner, err := sdk.AccAddressFromBech32(binding.Owner) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgRefundServiceDeposit, "invalid owner address"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgRefundServiceDeposit, + "invalid owner address", + ), nil, nil } acc, found := simtypes.FindAccount(accs, owner) if !found { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgRefundServiceDeposit, "account not found"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgRefundServiceDeposit, + "account not found", + ), nil, nil } account := ak.GetAccount(ctx, acc.Address) spendable := bk.SpendableCoins(ctx, owner) provider, err := sdk.AccAddressFromBech32(binding.Provider) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgRefundServiceDeposit, "invalid provider address"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgRefundServiceDeposit, + "invalid provider address", + ), nil, nil } - refundableTime := binding.DisabledTime.Add(k.ArbitrationTimeLimit(ctx)).Add(k.ComplaintRetrospect(ctx)) + refundableTime := binding.DisabledTime.Add(k.ArbitrationTimeLimit(ctx)). + Add(k.ComplaintRetrospect(ctx)) currentTime := ctx.BlockHeader().Time if currentTime.Before(refundableTime) { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgRefundServiceDeposit, "invalid refundable time"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgRefundServiceDeposit, + "invalid refundable time", + ), nil, nil } - msg := types.NewMsgRefundServiceDeposit(binding.ServiceName, provider.String(), owner.String()) + msg := types.NewMsgRefundServiceDeposit( + binding.ServiceName, + provider.String(), + owner.String(), + ) fees, err := simtypes.RandomFees(r, ctx, spendable) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate fees"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate fees", + ), nil, err } txGen := cosmossimappparams.MakeTestEncodingConfig().TxConfig @@ -659,7 +944,11 @@ func SimulateMsgRefundServiceDeposit(ak types.AccountKeeper, bk types.BankKeeper acc.PrivKey, ) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate mock tx", + ), nil, err } if _, _, err := app.SimDeliver(txGen.TxEncoder(), tx); err != nil { @@ -671,7 +960,11 @@ func SimulateMsgRefundServiceDeposit(ak types.AccountKeeper, bk types.BankKeeper } // SimulateMsgCallService generates a MsgCallService with random values. -func SimulateMsgCallService(ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper) simtypes.Operation { +func SimulateMsgCallService( + ak types.AccountKeeper, + bk types.BankKeeper, + k keeper.Keeper, +) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { @@ -679,21 +972,35 @@ func SimulateMsgCallService(ak types.AccountKeeper, bk types.BankKeeper, k keepe account := ak.GetAccount(ctx, simAccount.Address) binding, err := GenServiceBinding(r, k, ctx) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgCallService, "binding not exist"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgCallService, + "binding not exist", + ), nil, nil } definition, found := k.GetServiceDefinition(ctx, binding.ServiceName) if !found { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgCallService, "serviceDefinition not exist"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgCallService, + "serviceDefinition not exist", + ), nil, nil } providers := GetProviders(definition, k, ctx) if len(providers) == 0 { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgCallService, "providers not exist"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgCallService, + "providers not exist", + ), nil, nil } serviceName := binding.ServiceName consumer := simAccount.Address.String() input := `{"header":{},"body":{}}` - serviceFeeCap := sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(int64(simtypes.RandIntBetween(r, 2, 10))))} + serviceFeeCap := sdk.Coins{ + sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(int64(simtypes.RandIntBetween(r, 2, 10)))), + } timeout := int64(simtypes.RandIntBetween(r, 1, int(k.MaxRequestTimeout(ctx)))) repeated := true @@ -706,12 +1013,20 @@ func SimulateMsgCallService(ak types.AccountKeeper, bk types.BankKeeper, k keepe spendable := bk.SpendableCoins(ctx, account.GetAddress()) spendable, hasNeg := spendable.SafeSub(serviceFeeCap...) if hasNeg { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgCallService, "Insufficient funds"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgCallService, + "Insufficient funds", + ), nil, nil } fees, err := simtypes.RandomFees(r, ctx, spendable) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate fees"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate fees", + ), nil, err } txConfig := cosmossimappparams.MakeTestEncodingConfig().TxConfig @@ -727,7 +1042,11 @@ func SimulateMsgCallService(ak types.AccountKeeper, bk types.BankKeeper, k keepe simAccount.PrivKey, ) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate mock tx", + ), nil, err } if _, _, err := app.SimDeliver(txConfig.TxEncoder(), tx); err != nil { @@ -739,19 +1058,31 @@ func SimulateMsgCallService(ak types.AccountKeeper, bk types.BankKeeper, k keepe } // SimulateMsgRespondService generates a MsgRespondService with random values. -func SimulateMsgRespondService(ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper) simtypes.Operation { +func SimulateMsgRespondService( + ak types.AccountKeeper, + bk types.BankKeeper, + k keeper.Keeper, +) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { request := GenRequest(r, k, ctx) if request.Size() == 0 { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgRespondService, "request is not exsit"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgRespondService, + "request is not exsit", + ), nil, nil } provider, err := sdk.AccAddressFromBech32(request.Provider) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgRespondService, "invalid address"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgRespondService, + "invalid address", + ), nil, nil } result := `{"code":200,"message":""}` @@ -761,14 +1092,22 @@ func SimulateMsgRespondService(ak types.AccountKeeper, bk types.BankKeeper, k ke acc, found := simtypes.FindAccount(accs, provider) if !found { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgRespondService, "account not found"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgRespondService, + "account not found", + ), nil, nil } account := ak.GetAccount(ctx, acc.Address) spendable := bk.SpendableCoins(ctx, account.GetAddress()) fees, err := simtypes.RandomFees(r, ctx, spendable) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate fees"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate fees", + ), nil, err } txGen := cosmossimappparams.MakeTestEncodingConfig().TxConfig @@ -784,7 +1123,11 @@ func SimulateMsgRespondService(ak types.AccountKeeper, bk types.BankKeeper, k ke acc.PrivKey, ) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate mock tx", + ), nil, err } if _, _, err := app.SimDeliver(txGen.TxEncoder(), tx); err != nil { @@ -797,40 +1140,68 @@ func SimulateMsgRespondService(ak types.AccountKeeper, bk types.BankKeeper, k ke } // SimulateMsgPauseRequestContext generates a MsgSPauseRequestContext with random values. -func SimulateMsgPauseRequestContext(ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper) simtypes.Operation { +func SimulateMsgPauseRequestContext( + ak types.AccountKeeper, + bk types.BankKeeper, + k keeper.Keeper, +) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { // requestContext must be running requestContextId := GenRunningContextId(r, k, ctx) if len(requestContextId) == 0 { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgPauseRequestContext, "requestContextId not exist"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgPauseRequestContext, + "requestContextId not exist", + ), nil, nil } requestContext, found := k.GetRequestContext(ctx, requestContextId) if !found { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgPauseRequestContext, "requestContext not found"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgPauseRequestContext, + "requestContext not found", + ), nil, nil } if len(requestContext.ModuleName) > 0 { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgPauseRequestContext, "not authorized operation"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgPauseRequestContext, + "not authorized operation", + ), nil, nil } consumer, err := sdk.AccAddressFromBech32(requestContext.Consumer) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgPauseRequestContext, "invalid address"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgPauseRequestContext, + "invalid address", + ), nil, nil } msg := types.NewMsgPauseRequestContext(requestContextId.String(), consumer.String()) acc, found := simtypes.FindAccount(accs, consumer) if !found { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgPauseRequestContext, "account not found"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgPauseRequestContext, + "account not found", + ), nil, nil } account := ak.GetAccount(ctx, acc.Address) spendable := bk.SpendableCoins(ctx, account.GetAddress()) fees, err := simtypes.RandomFees(r, ctx, spendable) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate fees"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate fees", + ), nil, err } txGen := cosmossimappparams.MakeTestEncodingConfig().TxConfig @@ -846,7 +1217,11 @@ func SimulateMsgPauseRequestContext(ak types.AccountKeeper, bk types.BankKeeper, acc.PrivKey, ) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate mock tx", + ), nil, err } if _, _, err := app.SimDeliver(txGen.TxEncoder(), tx); err != nil { @@ -858,45 +1233,77 @@ func SimulateMsgPauseRequestContext(ak types.AccountKeeper, bk types.BankKeeper, } // SimulateMsgStartRequestContext generates a MsgStartRequestContext with random values. -func SimulateMsgStartRequestContext(ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper) simtypes.Operation { +func SimulateMsgStartRequestContext( + ak types.AccountKeeper, + bk types.BankKeeper, + k keeper.Keeper, +) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { requestContextId := GenPausedRequestContextId(r, k, ctx) if len(requestContextId) == 0 { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgStartRequestContext, "requestContextId not exist"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgStartRequestContext, + "requestContextId not exist", + ), nil, nil } requestContext, found := k.GetRequestContext(ctx, requestContextId) if !found { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgStartRequestContext, "requestContext not found"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgStartRequestContext, + "requestContext not found", + ), nil, nil } if !requestContext.Repeated { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgStartRequestContext, "requestContext non repeated"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgStartRequestContext, + "requestContext non repeated", + ), nil, nil } if len(requestContext.ModuleName) > 0 { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgStartRequestContext, "not authorized operation"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgStartRequestContext, + "not authorized operation", + ), nil, nil } consumer, err := sdk.AccAddressFromBech32(requestContext.Consumer) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgStartRequestContext, "invalid address"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgStartRequestContext, + "invalid address", + ), nil, nil } msg := types.NewMsgStartRequestContext(requestContextId.String(), consumer.String()) acc, found := simtypes.FindAccount(accs, consumer) if !found { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgStartRequestContext, "account not found"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgStartRequestContext, + "account not found", + ), nil, nil } account := ak.GetAccount(ctx, acc.Address) spendable := bk.SpendableCoins(ctx, account.GetAddress()) fees, err := simtypes.RandomFees(r, ctx, spendable) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate fees"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate fees", + ), nil, err } txGen := cosmossimappparams.MakeTestEncodingConfig().TxConfig @@ -912,7 +1319,11 @@ func SimulateMsgStartRequestContext(ak types.AccountKeeper, bk types.BankKeeper, acc.PrivKey, ) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate mock tx", + ), nil, err } if _, _, err := app.SimDeliver(txGen.TxEncoder(), tx); err != nil { @@ -924,44 +1335,76 @@ func SimulateMsgStartRequestContext(ak types.AccountKeeper, bk types.BankKeeper, } // SimulateMsgKillRequestContext generates a MsgKillRequestContext with random values. -func SimulateMsgKillRequestContext(ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper) simtypes.Operation { +func SimulateMsgKillRequestContext( + ak types.AccountKeeper, + bk types.BankKeeper, + k keeper.Keeper, +) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { requestContextId := GenRequestContextId(r, k, ctx) if len(requestContextId) == 0 { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgKillRequestContext, "requestContextId not exist"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgKillRequestContext, + "requestContextId not exist", + ), nil, nil } requestContext, found := k.GetRequestContext(ctx, requestContextId) if !found { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgKillRequestContext, "requestContext not found"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgKillRequestContext, + "requestContext not found", + ), nil, nil } if !requestContext.Repeated { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgKillRequestContext, "requestContext non repeated"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgKillRequestContext, + "requestContext non repeated", + ), nil, nil } if len(requestContext.ModuleName) > 0 { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgKillRequestContext, "not authorized operation"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgKillRequestContext, + "not authorized operation", + ), nil, nil } consumer, err := sdk.AccAddressFromBech32(requestContext.Consumer) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgKillRequestContext, "invalid address"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgKillRequestContext, + "invalid address", + ), nil, nil } msg := types.NewMsgKillRequestContext(requestContextId.String(), consumer.String()) acc, found := simtypes.FindAccount(accs, consumer) if !found { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgKillRequestContext, "account not found"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgKillRequestContext, + "account not found", + ), nil, nil } account := ak.GetAccount(ctx, acc.Address) spendable := bk.SpendableCoins(ctx, account.GetAddress()) fees, err := simtypes.RandomFees(r, ctx, spendable) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate fees"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate fees", + ), nil, err } txGen := cosmossimappparams.MakeTestEncodingConfig().TxConfig @@ -977,7 +1420,11 @@ func SimulateMsgKillRequestContext(ak types.AccountKeeper, bk types.BankKeeper, acc.PrivKey, ) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate mock tx", + ), nil, err } if _, _, err := app.SimDeliver(txGen.TxEncoder(), tx); err != nil { @@ -989,48 +1436,90 @@ func SimulateMsgKillRequestContext(ak types.AccountKeeper, bk types.BankKeeper, } // SimulateMsgUpdateRequestContext generates a MsgUpdateRequestContext with random values. -func SimulateMsgUpdateRequestContext(ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper) simtypes.Operation { +func SimulateMsgUpdateRequestContext( + ak types.AccountKeeper, + bk types.BankKeeper, + k keeper.Keeper, +) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { requestContextId := GenRequestContextId(r, k, ctx) if len(requestContextId) == 0 { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgUpdateRequestContext, "requestContextId not exist"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgUpdateRequestContext, + "requestContextId not exist", + ), nil, nil } requestContext, found := k.GetRequestContext(ctx, requestContextId) if !found { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgUpdateRequestContext, "request not found"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgUpdateRequestContext, + "request not found", + ), nil, nil } if requestContext.State == types.COMPLETED { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgUpdateRequestContext, "request context completed"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgUpdateRequestContext, + "request context completed", + ), nil, nil } if len(requestContext.ModuleName) > 0 { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgUpdateRequestContext, "not authorized operation"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgUpdateRequestContext, + "not authorized operation", + ), nil, nil } consumer, err := sdk.AccAddressFromBech32(requestContext.Consumer) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgUpdateRequestContext, "invalid address"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgUpdateRequestContext, + "invalid address", + ), nil, nil } definition, found := k.GetServiceDefinition(ctx, requestContext.ServiceName) if !found { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgUpdateRequestContext, "definition not found"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgUpdateRequestContext, + "definition not found", + ), nil, nil } providers := GetProviders(definition, k, ctx) - serviceFeeCap := sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(int64(simtypes.RandIntBetween(r, 2, 10))))} + serviceFeeCap := sdk.Coins{ + sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(int64(simtypes.RandIntBetween(r, 2, 10)))), + } timeout := r.Int63n(k.MaxRequestTimeout(ctx)) repeatedFrequency := uint64(0) repeatedTotal := int64(0) - msg := types.NewMsgUpdateRequestContext(requestContextId.String(), providers, serviceFeeCap, timeout, repeatedFrequency, repeatedTotal, consumer.String()) + msg := types.NewMsgUpdateRequestContext( + requestContextId.String(), + providers, + serviceFeeCap, + timeout, + repeatedFrequency, + repeatedTotal, + consumer.String(), + ) acc, found := simtypes.FindAccount(accs, consumer) if !found { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgKillRequestContext, "account not found"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgKillRequestContext, + "account not found", + ), nil, nil } account := ak.GetAccount(ctx, acc.Address) @@ -1038,12 +1527,20 @@ func SimulateMsgUpdateRequestContext(ak types.AccountKeeper, bk types.BankKeeper spendable, hasNeg := spendable.SafeSub(serviceFeeCap...) if hasNeg { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgCallService, "Insufficient funds"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgCallService, + "Insufficient funds", + ), nil, nil } fees, err := simtypes.RandomFees(r, ctx, spendable) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate fees"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate fees", + ), nil, err } txGen := cosmossimappparams.MakeTestEncodingConfig().TxConfig @@ -1059,7 +1556,11 @@ func SimulateMsgUpdateRequestContext(ak types.AccountKeeper, bk types.BankKeeper acc.PrivKey, ) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate mock tx", + ), nil, err } if _, _, err := app.SimDeliver(txGen.TxEncoder(), tx); err != nil { @@ -1071,23 +1572,39 @@ func SimulateMsgUpdateRequestContext(ak types.AccountKeeper, bk types.BankKeeper } // SimulateMsgWithdrawEarnedFees generates a MsgWithdrawEarnedFees with random values. -func SimulateMsgWithdrawEarnedFees(ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper) simtypes.Operation { +func SimulateMsgWithdrawEarnedFees( + ak types.AccountKeeper, + bk types.BankKeeper, + k keeper.Keeper, +) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { binding, err := GenServiceBinding(r, k, ctx) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgWithdrawEarnedFees, "binding not found"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgWithdrawEarnedFees, + "binding not found", + ), nil, nil } owner, err := sdk.AccAddressFromBech32(binding.Owner) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgWithdrawEarnedFees, "invalid address"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgWithdrawEarnedFees, + "invalid address", + ), nil, nil } acc, found := simtypes.FindAccount(accs, owner) if !found { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgWithdrawEarnedFees, "account not found"), nil, nil + return simtypes.NoOpMsg( + types.ModuleName, + types.TypeMsgWithdrawEarnedFees, + "account not found", + ), nil, nil } account := ak.GetAccount(ctx, acc.Address) @@ -1097,7 +1614,11 @@ func SimulateMsgWithdrawEarnedFees(ak types.AccountKeeper, bk types.BankKeeper, fees, err := simtypes.RandomFees(r, ctx, spendable) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate fees"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate fees", + ), nil, err } txGen := cosmossimappparams.MakeTestEncodingConfig().TxConfig @@ -1113,7 +1634,11 @@ func SimulateMsgWithdrawEarnedFees(ak types.AccountKeeper, bk types.BankKeeper, acc.PrivKey, ) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err + return simtypes.NoOpMsg( + types.ModuleName, + msg.Type(), + "unable to generate mock tx", + ), nil, err } if _, _, err := app.SimDeliver(txGen.TxEncoder(), tx); err != nil { @@ -1126,7 +1651,11 @@ func SimulateMsgWithdrawEarnedFees(ak types.AccountKeeper, bk types.BankKeeper, } // GenServiceDefinition randomized serviceDefinition -func GenServiceDefinition(r *rand.Rand, k keeper.Keeper, ctx sdk.Context) (types.ServiceDefinition, error) { +func GenServiceDefinition( + r *rand.Rand, + k keeper.Keeper, + ctx sdk.Context, +) (types.ServiceDefinition, error) { var definitions []types.ServiceDefinition k.IterateServiceDefinitions( ctx, @@ -1142,7 +1671,11 @@ func GenServiceDefinition(r *rand.Rand, k keeper.Keeper, ctx sdk.Context) (types } // GenServiceBinding randomized serviceBinding -func GenServiceBinding(r *rand.Rand, k keeper.Keeper, ctx sdk.Context) (types.ServiceBinding, error) { +func GenServiceBinding( + r *rand.Rand, + k keeper.Keeper, + ctx sdk.Context, +) (types.ServiceBinding, error) { var bindings []types.ServiceBinding k.IterateServiceBindings( ctx, @@ -1158,7 +1691,11 @@ func GenServiceBinding(r *rand.Rand, k keeper.Keeper, ctx sdk.Context) (types.Se } // GenServiceBindingDisabled randomized serviceBindingDisabled -func GenServiceBindingDisabled(r *rand.Rand, k keeper.Keeper, ctx sdk.Context) (types.ServiceBinding, error) { +func GenServiceBindingDisabled( + r *rand.Rand, + k keeper.Keeper, + ctx sdk.Context, +) (types.ServiceBinding, error) { var bindings []types.ServiceBinding k.IterateServiceBindings( ctx, @@ -1278,7 +1815,11 @@ func GenPausedRequestContextId(r *rand.Rand, k keeper.Keeper, ctx sdk.Context) t return tmbytes.HexBytes{} } -func GetProviders(definition types.ServiceDefinition, k keeper.Keeper, ctx sdk.Context) (providers []string) { +func GetProviders( + definition types.ServiceDefinition, + k keeper.Keeper, + ctx sdk.Context, +) (providers []string) { if definition.Size() == 0 { return } diff --git a/modules/service/types/invocation.go b/modules/service/types/invocation.go index be8302a6..5cbee447 100644 --- a/modules/service/types/invocation.go +++ b/modules/service/types/invocation.go @@ -8,7 +8,7 @@ import ( "fmt" "strings" - tmbytes "github.com/tendermint/tendermint/libs/bytes" + tmbytes "github.com/cometbft/cometbft/libs/bytes" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -196,7 +196,11 @@ func ParseResult(result string) (Result, error) { var r Result if err := json.Unmarshal([]byte(result), &r); err != nil { - return r, sdkerrors.Wrapf(ErrInvalidResponseResult, "failed to unmarshal the result: %s", err) + return r, sdkerrors.Wrapf( + ErrInvalidResponseResult, + "failed to unmarshal the result: %s", + err, + ) } return r, nil @@ -278,7 +282,12 @@ func SplitRequestContextID(contextID tmbytes.HexBytes) (tmbytes.HexBytes, int64, } // GenerateRequestID generates a unique request ID from the given params -func GenerateRequestID(requestContextID tmbytes.HexBytes, requestContextBatchCounter uint64, requestHeight int64, batchRequestIndex int16) tmbytes.HexBytes { +func GenerateRequestID( + requestContextID tmbytes.HexBytes, + requestContextBatchCounter uint64, + requestHeight int64, + batchRequestIndex int16, +) tmbytes.HexBytes { contextID := make([]byte, len(requestContextID)) copy(contextID, requestContextID) diff --git a/modules/service/types/invocation_test.go b/modules/service/types/invocation_test.go index 4d6f949f..570a59bb 100644 --- a/modules/service/types/invocation_test.go +++ b/modules/service/types/invocation_test.go @@ -6,8 +6,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/tendermint/tendermint/crypto/tmhash" - tmbytes "github.com/tendermint/tendermint/libs/bytes" + "github.com/cometbft/cometbft/crypto/tmhash" + tmbytes "github.com/cometbft/cometbft/libs/bytes" ) func TestIDGenerate(t *testing.T) { @@ -21,8 +21,15 @@ func TestIDGenerate(t *testing.T) { requestContextBatchCounter := uint64(math.MaxUint64) requestHeight := int64(math.MaxInt64) batchRequestIndex := int16(math.MaxInt16) - requestID := GenerateRequestID(contextID, requestContextBatchCounter, requestHeight, batchRequestIndex) - contextID1, requestContextBatchCounter1, requestHeight1, batchRequestIndex1, _ := SplitRequestID(requestID) + requestID := GenerateRequestID( + contextID, + requestContextBatchCounter, + requestHeight, + batchRequestIndex, + ) + contextID1, requestContextBatchCounter1, requestHeight1, batchRequestIndex1, _ := SplitRequestID( + requestID, + ) require.Equal(t, contextID, contextID1) require.Equal(t, requestContextBatchCounter, requestContextBatchCounter1) require.Equal(t, requestHeight, requestHeight1) diff --git a/modules/service/types/msgs_test.go b/modules/service/types/msgs_test.go index 7856926a..59cf7c69 100644 --- a/modules/service/types/msgs_test.go +++ b/modules/service/types/msgs_test.go @@ -7,7 +7,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/tendermint/tendermint/crypto/tmhash" + "github.com/cometbft/cometbft/crypto/tmhash" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -31,7 +31,8 @@ var ( testPricing = `{"price":"1stake"}` testQoS = uint64(50) testOptions = "{}" - testWithdrawAddr = sdk.AccAddress(tmhash.SumTruncated([]byte("test-withdrawal-address"))).String() + testWithdrawAddr = sdk.AccAddress(tmhash.SumTruncated([]byte("test-withdrawal-address"))). + String() testAddedDeposit = sdk.NewCoins(testCoin2) testConsumer = sdk.AccAddress(tmhash.SumTruncated([]byte("test-consumer"))).String() @@ -45,9 +46,12 @@ var ( testResult = `{"code":200,"message":""}` testOutput = `{"header":{},"body":{"last":"100"}}` - rawTestRequestContextID = GenerateRequestContextID(tmhash.Sum([]byte("test-request-context-id")), 0) - testRequestContextID = rawTestRequestContextID.String() - testRequestID = GenerateRequestID(rawTestRequestContextID, 1, 1, 1).String() + rawTestRequestContextID = GenerateRequestContextID( + tmhash.Sum([]byte("test-request-context-id")), + 0, + ) + testRequestContextID = rawTestRequestContextID.String() + testRequestID = GenerateRequestID(rawTestRequestContextID, 1, 1, 1).String() // ------------- @@ -56,13 +60,27 @@ var ( // TestMsgDefineServiceRoute tests Route for MsgDefineService func TestMsgDefineServiceRoute(t *testing.T) { - msg := NewMsgDefineService(testServiceName, testServiceDesc, testServiceTags, testAuthor, testAuthorDesc, testSchemas) + msg := NewMsgDefineService( + testServiceName, + testServiceDesc, + testServiceTags, + testAuthor, + testAuthorDesc, + testSchemas, + ) require.Equal(t, RouterKey, msg.Route()) } // TestMsgDefineServiceType tests Type for MsgDefineService func TestMsgDefineServiceType(t *testing.T) { - msg := NewMsgDefineService(testServiceName, testServiceDesc, testServiceTags, testAuthor, testAuthorDesc, testSchemas) + msg := NewMsgDefineService( + testServiceName, + testServiceDesc, + testServiceTags, + testAuthor, + testAuthorDesc, + testSchemas, + ) require.Equal(t, "define_service", msg.Type()) } @@ -80,19 +98,110 @@ func TestMsgDefineServiceValidation(t *testing.T) { invalidSchemasNoOutput := `{"input":{"type":"object"}}` testMsgs := []*MsgDefineService{ - NewMsgDefineService(testServiceName, testServiceDesc, testServiceTags, testAuthor, testAuthorDesc, testSchemas), // valid msg - NewMsgDefineService(testServiceName, testServiceDesc, testServiceTags, emptyAddress, testAuthorDesc, testSchemas), // missing author address - NewMsgDefineService(invalidName, testServiceDesc, testServiceTags, testAuthor, testAuthorDesc, testSchemas), // service name contains illegal characters - NewMsgDefineService(invalidLongName, testServiceDesc, testServiceTags, testAuthor, testAuthorDesc, testSchemas), // too long service name - NewMsgDefineService(testServiceName, invalidLongDesc, testServiceTags, testAuthor, testAuthorDesc, testSchemas), // too long service description - NewMsgDefineService(testServiceName, testServiceDesc, invalidMoreTags, testAuthor, testAuthorDesc, testSchemas), // too many tags - NewMsgDefineService(testServiceName, testServiceDesc, invalidLongTags, testAuthor, testAuthorDesc, testSchemas), // too long tag - NewMsgDefineService(testServiceName, testServiceDesc, invalidEmptyTags, testAuthor, testAuthorDesc, testSchemas), // empty tag - NewMsgDefineService(testServiceName, testServiceDesc, invalidDuplicateTags, testAuthor, testAuthorDesc, testSchemas), // duplicate tags - NewMsgDefineService(testServiceName, testServiceDesc, testServiceTags, testAuthor, invalidLongDesc, testSchemas), // too long author description - NewMsgDefineService(testServiceName, testServiceDesc, testServiceTags, testAuthor, testAuthorDesc, invalidSchemas), // invalid schemas - NewMsgDefineService(testServiceName, testServiceDesc, testServiceTags, testAuthor, testAuthorDesc, invalidSchemasNoInput), // missing input schema - NewMsgDefineService(testServiceName, testServiceDesc, testServiceTags, testAuthor, testAuthorDesc, invalidSchemasNoOutput), // missing output schema + NewMsgDefineService( + testServiceName, + testServiceDesc, + testServiceTags, + testAuthor, + testAuthorDesc, + testSchemas, + ), // valid msg + NewMsgDefineService( + testServiceName, + testServiceDesc, + testServiceTags, + emptyAddress, + testAuthorDesc, + testSchemas, + ), // missing author address + NewMsgDefineService( + invalidName, + testServiceDesc, + testServiceTags, + testAuthor, + testAuthorDesc, + testSchemas, + ), // service name contains illegal characters + NewMsgDefineService( + invalidLongName, + testServiceDesc, + testServiceTags, + testAuthor, + testAuthorDesc, + testSchemas, + ), // too long service name + NewMsgDefineService( + testServiceName, + invalidLongDesc, + testServiceTags, + testAuthor, + testAuthorDesc, + testSchemas, + ), // too long service description + NewMsgDefineService( + testServiceName, + testServiceDesc, + invalidMoreTags, + testAuthor, + testAuthorDesc, + testSchemas, + ), // too many tags + NewMsgDefineService( + testServiceName, + testServiceDesc, + invalidLongTags, + testAuthor, + testAuthorDesc, + testSchemas, + ), // too long tag + NewMsgDefineService( + testServiceName, + testServiceDesc, + invalidEmptyTags, + testAuthor, + testAuthorDesc, + testSchemas, + ), // empty tag + NewMsgDefineService( + testServiceName, + testServiceDesc, + invalidDuplicateTags, + testAuthor, + testAuthorDesc, + testSchemas, + ), // duplicate tags + NewMsgDefineService( + testServiceName, + testServiceDesc, + testServiceTags, + testAuthor, + invalidLongDesc, + testSchemas, + ), // too long author description + NewMsgDefineService( + testServiceName, + testServiceDesc, + testServiceTags, + testAuthor, + testAuthorDesc, + invalidSchemas, + ), // invalid schemas + NewMsgDefineService( + testServiceName, + testServiceDesc, + testServiceTags, + testAuthor, + testAuthorDesc, + invalidSchemasNoInput, + ), // missing input schema + NewMsgDefineService( + testServiceName, + testServiceDesc, + testServiceTags, + testAuthor, + testAuthorDesc, + invalidSchemasNoOutput, + ), // missing output schema } testCases := []struct { @@ -127,7 +236,14 @@ func TestMsgDefineServiceValidation(t *testing.T) { // TestMsgDefineServiceGetSignBytes tests GetSignBytes for MsgDefineService func TestMsgDefineServiceGetSignBytes(t *testing.T) { - msg := NewMsgDefineService(testServiceName, testServiceDesc, testServiceTags, testAuthor, testAuthorDesc, testSchemas) + msg := NewMsgDefineService( + testServiceName, + testServiceDesc, + testServiceTags, + testAuthor, + testAuthorDesc, + testSchemas, + ) res := msg.GetSignBytes() expected := `{"type":"irismod/service/MsgDefineService","value":{"author":"cosmos1tkelht5u9ywfaww3fehvdtvncwwhf539w406rh","author_description":"test-author-desc","description":"test-service-desc","name":"test-service","schemas":"{\"input\":{\"type\":\"object\"},\"output\":{\"type\":\"object\"}}","tags":["tag1","tag2"]}}` @@ -136,7 +252,14 @@ func TestMsgDefineServiceGetSignBytes(t *testing.T) { // TestMsgDefineServiceGetSigners tests GetSigners for MsgDefineService func TestMsgDefineServiceGetSigners(t *testing.T) { - msg := NewMsgDefineService(testServiceName, testServiceDesc, testServiceTags, testAuthor, testAuthorDesc, testSchemas) + msg := NewMsgDefineService( + testServiceName, + testServiceDesc, + testServiceTags, + testAuthor, + testAuthorDesc, + testSchemas, + ) res := msg.GetSigners() expected := "[5DB3FBAE9C291C9EB9D14E6EC6AD93C39D74D225]" @@ -145,13 +268,29 @@ func TestMsgDefineServiceGetSigners(t *testing.T) { // TestMsgBindServiceRoute tests Route for MsgBindService func TestMsgBindServiceRoute(t *testing.T) { - msg := NewMsgBindService(testServiceName, testProvider, testDeposit, testPricing, testQoS, testOptions, testOwner) + msg := NewMsgBindService( + testServiceName, + testProvider, + testDeposit, + testPricing, + testQoS, + testOptions, + testOwner, + ) require.Equal(t, RouterKey, msg.Route()) } // TestMsgBindServiceType tests Type for MsgBindService func TestMsgBindServiceType(t *testing.T) { - msg := NewMsgBindService(testServiceName, testProvider, testDeposit, testPricing, testQoS, testOptions, testOwner) + msg := NewMsgBindService( + testServiceName, + testProvider, + testDeposit, + testPricing, + testQoS, + testOptions, + testOwner, + ) require.Equal(t, "bind_service", msg.Type()) } @@ -170,20 +309,132 @@ func TestMsgBindServiceValidation(t *testing.T) { validUpperDenomPricing := `{"price":"5ibc/9EBF7EBE6F8FFD34617809F3CF00E04A10D8B7226048F68866371FB9DAD8A25D"}` testMsgs := []*MsgBindService{ - NewMsgBindService(testServiceName, testProvider, testDeposit, testPricing, testQoS, testOptions, testOwner), // valid msg - NewMsgBindService(testServiceName, testProvider, testDeposit, validUpperDenomPricing, testQoS, testOptions, testOwner), // Pricing denom accepts the upper characters - NewMsgBindService(testServiceName, emptyAddress, testDeposit, testPricing, testQoS, testOptions, testOwner), // missing provider address - NewMsgBindService(testServiceName, testProvider, testDeposit, testPricing, testQoS, testOptions, emptyAddress), // missing owner address - NewMsgBindService(invalidName, testProvider, testDeposit, testPricing, testQoS, testOptions, testOwner), // service name contains illegal characters - NewMsgBindService(invalidLongName, testProvider, testDeposit, testPricing, testQoS, testOptions, testOwner), // too long service name - NewMsgBindService(testServiceName, testProvider, invalidDeposit, testPricing, testQoS, testOptions, testOwner), // invalid deposit - NewMsgBindService(testServiceName, testProvider, testDeposit, "", testQoS, testOptions, testOwner), // missing pricing - NewMsgBindService(testServiceName, testProvider, testDeposit, invalidPricing, testQoS, testOptions, testOwner), // invalid Pricing JSON Schema instance - NewMsgBindService(testServiceName, testProvider, testDeposit, invalidDenomPricing, testQoS, testOptions, testOwner), // invalid pricing denom - NewMsgBindService(testServiceName, testProvider, testDeposit, invalidPromotionTimePricing, testQoS, testOptions, testOwner), // invalid promotion time lack of time zone - NewMsgBindService(testServiceName, testProvider, testDeposit, invalidPromotionVolPricing, testQoS, testOptions, testOwner), // invalid promotion volume - NewMsgBindService(testServiceName, testProvider, testDeposit, testPricing, invalidQoS, testOptions, testOwner), // invalid qos - NewMsgBindService(testServiceName, testProvider, testDeposit, testPricing, testQoS, invalidOptions, testOwner), // invalid options + NewMsgBindService( + testServiceName, + testProvider, + testDeposit, + testPricing, + testQoS, + testOptions, + testOwner, + ), // valid msg + NewMsgBindService( + testServiceName, + testProvider, + testDeposit, + validUpperDenomPricing, + testQoS, + testOptions, + testOwner, + ), // Pricing denom accepts the upper characters + NewMsgBindService( + testServiceName, + emptyAddress, + testDeposit, + testPricing, + testQoS, + testOptions, + testOwner, + ), // missing provider address + NewMsgBindService( + testServiceName, + testProvider, + testDeposit, + testPricing, + testQoS, + testOptions, + emptyAddress, + ), // missing owner address + NewMsgBindService( + invalidName, + testProvider, + testDeposit, + testPricing, + testQoS, + testOptions, + testOwner, + ), // service name contains illegal characters + NewMsgBindService( + invalidLongName, + testProvider, + testDeposit, + testPricing, + testQoS, + testOptions, + testOwner, + ), // too long service name + NewMsgBindService( + testServiceName, + testProvider, + invalidDeposit, + testPricing, + testQoS, + testOptions, + testOwner, + ), // invalid deposit + NewMsgBindService( + testServiceName, + testProvider, + testDeposit, + "", + testQoS, + testOptions, + testOwner, + ), // missing pricing + NewMsgBindService( + testServiceName, + testProvider, + testDeposit, + invalidPricing, + testQoS, + testOptions, + testOwner, + ), // invalid Pricing JSON Schema instance + NewMsgBindService( + testServiceName, + testProvider, + testDeposit, + invalidDenomPricing, + testQoS, + testOptions, + testOwner, + ), // invalid pricing denom + NewMsgBindService( + testServiceName, + testProvider, + testDeposit, + invalidPromotionTimePricing, + testQoS, + testOptions, + testOwner, + ), // invalid promotion time lack of time zone + NewMsgBindService( + testServiceName, + testProvider, + testDeposit, + invalidPromotionVolPricing, + testQoS, + testOptions, + testOwner, + ), // invalid promotion volume + NewMsgBindService( + testServiceName, + testProvider, + testDeposit, + testPricing, + invalidQoS, + testOptions, + testOwner, + ), // invalid qos + NewMsgBindService( + testServiceName, + testProvider, + testDeposit, + testPricing, + testQoS, + invalidOptions, + testOwner, + ), // invalid options } testCases := []struct { @@ -219,7 +470,15 @@ func TestMsgBindServiceValidation(t *testing.T) { // TestMsgBindServiceGetSignBytes tests GetSignBytes for MsgBindService func TestMsgBindServiceGetSignBytes(t *testing.T) { - msg := NewMsgBindService(testServiceName, testProvider, testDeposit, testPricing, testQoS, testOptions, testOwner) + msg := NewMsgBindService( + testServiceName, + testProvider, + testDeposit, + testPricing, + testQoS, + testOptions, + testOwner, + ) res := msg.GetSignBytes() expected := `{"type":"irismod/service/MsgBindService","value":{"deposit":[{"amount":"10000","denom":"stake"}],"options":"{}","owner":"cosmos1dtrajkx72qwf8gesp2z4rjz6p7klycmmh2lnvn","pricing":"{\"price\":\"1stake\"}","provider":"cosmos10yajkmnug9d2nvccgs7ul3xkur0l9as348gmwe","qos":"50","service_name":"test-service"}}` @@ -228,20 +487,44 @@ func TestMsgBindServiceGetSignBytes(t *testing.T) { // TestMsgBindServiceGetSigners tests GetSigners for MsgBindService func TestMsgBindServiceGetSigners(t *testing.T) { - msg := NewMsgBindService(testServiceName, testProvider, testDeposit, testPricing, testQoS, "", testOwner) + msg := NewMsgBindService( + testServiceName, + testProvider, + testDeposit, + testPricing, + testQoS, + "", + testOwner, + ) res := msg.GetSigners() require.Equal(t, "[6AC7D958DE501C93A3300A8551C85A0FADF2637B]", fmt.Sprintf("%v", res)) } // TestMsgUpdateServiceBindingRoute tests Route for MsgUpdateServiceBinding func TestMsgUpdateServiceBindingRoute(t *testing.T) { - msg := NewMsgUpdateServiceBinding(testServiceName, testProvider, testAddedDeposit, "", 0, testOptions, testOwner) + msg := NewMsgUpdateServiceBinding( + testServiceName, + testProvider, + testAddedDeposit, + "", + 0, + testOptions, + testOwner, + ) require.Equal(t, RouterKey, msg.Route()) } // TestMsgUpdateServiceBindingType tests Type for MsgUpdateServiceBinding func TestMsgUpdateServiceBindingType(t *testing.T) { - msg := NewMsgUpdateServiceBinding(testServiceName, testProvider, testAddedDeposit, "", 0, testOptions, testOwner) + msg := NewMsgUpdateServiceBinding( + testServiceName, + testProvider, + testAddedDeposit, + "", + 0, + testOptions, + testOwner, + ) require.Equal(t, "update_service_binding", msg.Type()) } @@ -260,21 +543,141 @@ func TestMsgUpdateServiceBindingValidation(t *testing.T) { validUpperDenomPricing := `{"price":"5ibc/9EBF7EBE6F8FFD34617809F3CF00E04A10D8B7226048F68866371FB9DAD8A25D"}` testMsgs := []*MsgUpdateServiceBinding{ - NewMsgUpdateServiceBinding(testServiceName, testProvider, testAddedDeposit, testPricing, testQoS, testOptions, testOwner), // valid msg - NewMsgUpdateServiceBinding(testServiceName, testProvider, testAddedDeposit, validUpperDenomPricing, testQoS, testOptions, testOwner), // Pricing denom accepts the upper characters - NewMsgUpdateServiceBinding(testServiceName, testProvider, emptyAddedDeposit, testPricing, testQoS, testOptions, testOwner), // empty deposit is allowed - NewMsgUpdateServiceBinding(testServiceName, testProvider, testAddedDeposit, "", testQoS, testOptions, testOwner), // empty pricing is allowed - NewMsgUpdateServiceBinding(testServiceName, testProvider, testAddedDeposit, testPricing, 0, testOptions, testOwner), // 0 is allowed for qos - NewMsgUpdateServiceBinding(testServiceName, testProvider, emptyAddedDeposit, "", 0, testOptions, testOwner), // deposit, pricing and qos can be empty at the same time - NewMsgUpdateServiceBinding(testServiceName, emptyAddress, testAddedDeposit, testPricing, testQoS, testOptions, testOwner), // missing provider address - NewMsgUpdateServiceBinding(testServiceName, testProvider, testAddedDeposit, testPricing, testQoS, testOptions, emptyAddress), // missing owner address - NewMsgUpdateServiceBinding(invalidName, testProvider, testAddedDeposit, testPricing, testQoS, testOptions, testOwner), // service name contains illegal characters - NewMsgUpdateServiceBinding(invalidLongName, testProvider, testAddedDeposit, testPricing, testQoS, testOptions, testOwner), // too long service name - NewMsgUpdateServiceBinding(testServiceName, testProvider, testAddedDeposit, invalidPricing, testQoS, testOptions, testOwner), // invalid Pricing JSON Schema instance - NewMsgUpdateServiceBinding(testServiceName, testProvider, testAddedDeposit, invalidDenomPricing, testQoS, testOptions, testOwner), // invalid pricing denom - NewMsgUpdateServiceBinding(testServiceName, testProvider, testAddedDeposit, invalidPromotionTimePricing, testQoS, testOptions, testOwner), // invalid promotion time lack of time zone - NewMsgUpdateServiceBinding(testServiceName, testProvider, testAddedDeposit, invalidPromotionVolPricing, testQoS, testOptions, testOwner), // invalid promotion volume - NewMsgUpdateServiceBinding(testServiceName, testProvider, testAddedDeposit, invalidPromotionVolPricing, testQoS, invalidOptions, testOwner), // invalid options + NewMsgUpdateServiceBinding( + testServiceName, + testProvider, + testAddedDeposit, + testPricing, + testQoS, + testOptions, + testOwner, + ), // valid msg + NewMsgUpdateServiceBinding( + testServiceName, + testProvider, + testAddedDeposit, + validUpperDenomPricing, + testQoS, + testOptions, + testOwner, + ), // Pricing denom accepts the upper characters + NewMsgUpdateServiceBinding( + testServiceName, + testProvider, + emptyAddedDeposit, + testPricing, + testQoS, + testOptions, + testOwner, + ), // empty deposit is allowed + NewMsgUpdateServiceBinding( + testServiceName, + testProvider, + testAddedDeposit, + "", + testQoS, + testOptions, + testOwner, + ), // empty pricing is allowed + NewMsgUpdateServiceBinding( + testServiceName, + testProvider, + testAddedDeposit, + testPricing, + 0, + testOptions, + testOwner, + ), // 0 is allowed for qos + NewMsgUpdateServiceBinding( + testServiceName, + testProvider, + emptyAddedDeposit, + "", + 0, + testOptions, + testOwner, + ), // deposit, pricing and qos can be empty at the same time + NewMsgUpdateServiceBinding( + testServiceName, + emptyAddress, + testAddedDeposit, + testPricing, + testQoS, + testOptions, + testOwner, + ), // missing provider address + NewMsgUpdateServiceBinding( + testServiceName, + testProvider, + testAddedDeposit, + testPricing, + testQoS, + testOptions, + emptyAddress, + ), // missing owner address + NewMsgUpdateServiceBinding( + invalidName, + testProvider, + testAddedDeposit, + testPricing, + testQoS, + testOptions, + testOwner, + ), // service name contains illegal characters + NewMsgUpdateServiceBinding( + invalidLongName, + testProvider, + testAddedDeposit, + testPricing, + testQoS, + testOptions, + testOwner, + ), // too long service name + NewMsgUpdateServiceBinding( + testServiceName, + testProvider, + testAddedDeposit, + invalidPricing, + testQoS, + testOptions, + testOwner, + ), // invalid Pricing JSON Schema instance + NewMsgUpdateServiceBinding( + testServiceName, + testProvider, + testAddedDeposit, + invalidDenomPricing, + testQoS, + testOptions, + testOwner, + ), // invalid pricing denom + NewMsgUpdateServiceBinding( + testServiceName, + testProvider, + testAddedDeposit, + invalidPromotionTimePricing, + testQoS, + testOptions, + testOwner, + ), // invalid promotion time lack of time zone + NewMsgUpdateServiceBinding( + testServiceName, + testProvider, + testAddedDeposit, + invalidPromotionVolPricing, + testQoS, + testOptions, + testOwner, + ), // invalid promotion volume + NewMsgUpdateServiceBinding( + testServiceName, + testProvider, + testAddedDeposit, + invalidPromotionVolPricing, + testQoS, + invalidOptions, + testOwner, + ), // invalid options } testCases := []struct { @@ -311,7 +714,15 @@ func TestMsgUpdateServiceBindingValidation(t *testing.T) { // TestMsgUpdateServiceBindingGetSignBytes tests GetSignBytes for MsgUpdateServiceBinding func TestMsgUpdateServiceBindingGetSignBytes(t *testing.T) { - msg := NewMsgUpdateServiceBinding(testServiceName, testProvider, testAddedDeposit, "{\"price\":\"1\"}", 1, "", testOwner) + msg := NewMsgUpdateServiceBinding( + testServiceName, + testProvider, + testAddedDeposit, + "{\"price\":\"1\"}", + 1, + "", + testOwner, + ) res := msg.GetSignBytes() expected := `{"type":"irismod/service/MsgUpdateServiceBinding","value":{"deposit":[{"amount":"100","denom":"stake"}],"owner":"cosmos1dtrajkx72qwf8gesp2z4rjz6p7klycmmh2lnvn","pricing":"{\"price\":\"1\"}","provider":"cosmos10yajkmnug9d2nvccgs7ul3xkur0l9as348gmwe","qos":"1","service_name":"test-service"}}` @@ -320,7 +731,15 @@ func TestMsgUpdateServiceBindingGetSignBytes(t *testing.T) { // TestMsgUpdateServiceBindingGetSigners tests GetSigners for MsgUpdateServiceBinding func TestMsgUpdateServiceBindingGetSigners(t *testing.T) { - msg := NewMsgUpdateServiceBinding(testServiceName, testProvider, testAddedDeposit, "", 0, testOptions, testOwner) + msg := NewMsgUpdateServiceBinding( + testServiceName, + testProvider, + testAddedDeposit, + "", + 0, + testOptions, + testOwner, + ) res := msg.GetSigners() require.Equal(t, "[6AC7D958DE501C93A3300A8551C85A0FADF2637B]", fmt.Sprintf("%v", res)) } @@ -402,11 +821,27 @@ func TestMsgDisableServiceBindingValidation(t *testing.T) { invalidLongName := strings.Repeat("s", MaxNameLength+1) testMsgs := []*MsgDisableServiceBinding{ - NewMsgDisableServiceBinding(testServiceName, testProvider, testOwner), // valid msg - NewMsgDisableServiceBinding(testServiceName, emptyAddress, testOwner), // missing provider address - NewMsgDisableServiceBinding(testServiceName, testProvider, emptyAddress), // missing owner address - NewMsgDisableServiceBinding(invalidName, testProvider, testOwner), // service name contains illegal characters - NewMsgDisableServiceBinding(invalidLongName, testProvider, testOwner), // too long service name + NewMsgDisableServiceBinding(testServiceName, testProvider, testOwner), // valid msg + NewMsgDisableServiceBinding( + testServiceName, + emptyAddress, + testOwner, + ), // missing provider address + NewMsgDisableServiceBinding( + testServiceName, + testProvider, + emptyAddress, + ), // missing owner address + NewMsgDisableServiceBinding( + invalidName, + testProvider, + testOwner, + ), // service name contains illegal characters + NewMsgDisableServiceBinding( + invalidLongName, + testProvider, + testOwner, + ), // too long service name } testCases := []struct { @@ -468,12 +903,42 @@ func TestMsgEnableServiceBindingValidation(t *testing.T) { invalidLongName := strings.Repeat("s", MaxNameLength+1) testMsgs := []*MsgEnableServiceBinding{ - NewMsgEnableServiceBinding(testServiceName, testProvider, testAddedDeposit, testOwner), // valid msg - NewMsgEnableServiceBinding(testServiceName, testProvider, emptyAddedDeposit, testOwner), // empty deposit is allowed - NewMsgEnableServiceBinding(testServiceName, emptyAddress, testAddedDeposit, testOwner), // missing provider address - NewMsgEnableServiceBinding(testServiceName, testProvider, testAddedDeposit, emptyAddress), // missing owner address - NewMsgEnableServiceBinding(invalidName, testProvider, testAddedDeposit, testOwner), // service name contains illegal characters - NewMsgEnableServiceBinding(invalidLongName, testProvider, testAddedDeposit, testOwner), // too long service name + NewMsgEnableServiceBinding( + testServiceName, + testProvider, + testAddedDeposit, + testOwner, + ), // valid msg + NewMsgEnableServiceBinding( + testServiceName, + testProvider, + emptyAddedDeposit, + testOwner, + ), // empty deposit is allowed + NewMsgEnableServiceBinding( + testServiceName, + emptyAddress, + testAddedDeposit, + testOwner, + ), // missing provider address + NewMsgEnableServiceBinding( + testServiceName, + testProvider, + testAddedDeposit, + emptyAddress, + ), // missing owner address + NewMsgEnableServiceBinding( + invalidName, + testProvider, + testAddedDeposit, + testOwner, + ), // service name contains illegal characters + NewMsgEnableServiceBinding( + invalidLongName, + testProvider, + testAddedDeposit, + testOwner, + ), // too long service name } testCases := []struct { @@ -534,11 +999,27 @@ func TestMsgRefundServiceDepositValidation(t *testing.T) { invalidLongName := strings.Repeat("s", MaxNameLength+1) testMsgs := []*MsgRefundServiceDeposit{ - NewMsgRefundServiceDeposit(testServiceName, testProvider, testOwner), // valid msg - NewMsgRefundServiceDeposit(testServiceName, emptyAddress, testOwner), // missing provider address - NewMsgRefundServiceDeposit(testServiceName, testProvider, emptyAddress), // missing owner address - NewMsgRefundServiceDeposit(invalidName, testProvider, testOwner), // service name contains illegal characters - NewMsgRefundServiceDeposit(invalidLongName, testProvider, testOwner), // too long service name + NewMsgRefundServiceDeposit(testServiceName, testProvider, testOwner), // valid msg + NewMsgRefundServiceDeposit( + testServiceName, + emptyAddress, + testOwner, + ), // missing provider address + NewMsgRefundServiceDeposit( + testServiceName, + testProvider, + emptyAddress, + ), // missing owner address + NewMsgRefundServiceDeposit( + invalidName, + testProvider, + testOwner, + ), // service name contains illegal characters + NewMsgRefundServiceDeposit( + invalidLongName, + testProvider, + testOwner, + ), // too long service name } testCases := []struct { @@ -758,18 +1239,68 @@ func TestMsgRespondServiceValidation(t *testing.T) { invalidResultNoMsg := `{"code":200}` testMsgs := []*MsgRespondService{ - NewMsgRespondService(testRequestID, testProvider, testResult, testOutput), // valid msg - NewMsgRespondService(testRequestID, testProvider, validResult400, ""), // valid msg - NewMsgRespondService(testRequestID, emptyAddress, testResult, testOutput), // missing provider address - NewMsgRespondService(invalidRequestID, testProvider, testResult, testOutput), // invalid request ID - NewMsgRespondService(testRequestID, testProvider, "", testOutput), // missing result - NewMsgRespondService(testRequestID, testProvider, invalidResult, ""), // invalid result - NewMsgRespondService(testRequestID, testProvider, invalidResultCode, ""), // invalid result code - NewMsgRespondService(testRequestID, testProvider, invalidResultNoCode, ""), // missing result code - NewMsgRespondService(testRequestID, testProvider, invalidResultNoMsg, ""), // missing result message - NewMsgRespondService(testRequestID, testProvider, testResult, ""), // output should be provided when the result code is 200 - NewMsgRespondService(testRequestID, testProvider, testResult, invalidOutput), // invalid output - NewMsgRespondService(testRequestID, testProvider, validResult400, testOutput), // output should not be provided when the result code is not 200 + NewMsgRespondService(testRequestID, testProvider, testResult, testOutput), // valid msg + NewMsgRespondService(testRequestID, testProvider, validResult400, ""), // valid msg + NewMsgRespondService( + testRequestID, + emptyAddress, + testResult, + testOutput, + ), // missing provider address + NewMsgRespondService( + invalidRequestID, + testProvider, + testResult, + testOutput, + ), // invalid request ID + NewMsgRespondService( + testRequestID, + testProvider, + "", + testOutput, + ), // missing result + NewMsgRespondService( + testRequestID, + testProvider, + invalidResult, + "", + ), // invalid result + NewMsgRespondService( + testRequestID, + testProvider, + invalidResultCode, + "", + ), // invalid result code + NewMsgRespondService( + testRequestID, + testProvider, + invalidResultNoCode, + "", + ), // missing result code + NewMsgRespondService( + testRequestID, + testProvider, + invalidResultNoMsg, + "", + ), // missing result message + NewMsgRespondService( + testRequestID, + testProvider, + testResult, + "", + ), // output should be provided when the result code is 200 + NewMsgRespondService( + testRequestID, + testProvider, + testResult, + invalidOutput, + ), // invalid output + NewMsgRespondService( + testRequestID, + testProvider, + validResult400, + testOutput, + ), // output should not be provided when the result code is not 200 } testCases := []struct { @@ -838,9 +1369,15 @@ func TestMsgPauseRequestContextValidation(t *testing.T) { invalidRequestContextID := "invalid-request-context-id" testMsgs := []*MsgPauseRequestContext{ - NewMsgPauseRequestContext(testRequestContextID, testConsumer), // valid msg - NewMsgPauseRequestContext(testRequestContextID, emptyAddress), // missing consumer address - NewMsgPauseRequestContext(invalidRequestContextID, testConsumer), // invalid request context ID + NewMsgPauseRequestContext(testRequestContextID, testConsumer), // valid msg + NewMsgPauseRequestContext( + testRequestContextID, + emptyAddress, + ), // missing consumer address + NewMsgPauseRequestContext( + invalidRequestContextID, + testConsumer, + ), // invalid request context ID } testCases := []struct { @@ -898,9 +1435,15 @@ func TestMsgStartRequestContextValidation(t *testing.T) { invalidRequestContextID := "invalid-request-context-id" testMsgs := []*MsgStartRequestContext{ - NewMsgStartRequestContext(testRequestContextID, testConsumer), // valid msg - NewMsgStartRequestContext(testRequestContextID, emptyAddress), // missing consumer address - NewMsgStartRequestContext(invalidRequestContextID, testConsumer), // invalid request context ID + NewMsgStartRequestContext(testRequestContextID, testConsumer), // valid msg + NewMsgStartRequestContext( + testRequestContextID, + emptyAddress, + ), // missing consumer address + NewMsgStartRequestContext( + invalidRequestContextID, + testConsumer, + ), // invalid request context ID } testCases := []struct { @@ -958,9 +1501,12 @@ func TestMsgKillRequestContextValidation(t *testing.T) { invalidRequestContextID := "invalid-request-context-id" testMsgs := []*MsgKillRequestContext{ - NewMsgKillRequestContext(testRequestContextID, testConsumer), // valid msg - NewMsgKillRequestContext(testRequestContextID, emptyAddress), // missing consumer address - NewMsgKillRequestContext(invalidRequestContextID, testConsumer), // invalid request context ID + NewMsgKillRequestContext(testRequestContextID, testConsumer), // valid msg + NewMsgKillRequestContext(testRequestContextID, emptyAddress), // missing consumer address + NewMsgKillRequestContext( + invalidRequestContextID, + testConsumer, + ), // invalid request context ID } testCases := []struct { @@ -1023,15 +1569,87 @@ func TestMsgUpdateRequestContextValidation(t *testing.T) { invalidDenomCoins := sdk.Coins{sdk.Coin{Denom: "eth+min", Amount: sdk.NewInt(1000)}} testMsgs := []*MsgUpdateRequestContext{ - NewMsgUpdateRequestContext(testRequestContextID, testProviders, testServiceFeeCap, testTimeout, testRepeatedFreq, testRepeatedTotal, testConsumer), // valid msg - NewMsgUpdateRequestContext(testRequestContextID, nil, nil, 0, 0, 0, testConsumer), // allow all not to be updated - NewMsgUpdateRequestContext(testRequestContextID, nil, nil, 0, 0, 0, emptyAddress), // missing consumer address - NewMsgUpdateRequestContext(invalidRequestContextID, nil, nil, 0, 0, 0, testConsumer), // invalid request context ID - NewMsgUpdateRequestContext(testRequestContextID, invalidDuplicateProviders, nil, 0, 0, 0, testConsumer), // duplicate providers - NewMsgUpdateRequestContext(testRequestContextID, nil, nil, invalidTimeout, 0, 0, testConsumer), // invalid timeout - NewMsgUpdateRequestContext(invalidRequestContextID, nil, nil, testTimeout, invalidLessRepeatedFreq, 0, testConsumer), // invalid repeated frequency - NewMsgUpdateRequestContext(testRequestContextID, nil, nil, 0, 0, invalidRepeatedTotal, testConsumer), // invalid repeated total - NewMsgUpdateRequestContext(testRequestContextID, nil, invalidDenomCoins, 0, 0, 0, testConsumer), // invalid service fee denom + NewMsgUpdateRequestContext( + testRequestContextID, + testProviders, + testServiceFeeCap, + testTimeout, + testRepeatedFreq, + testRepeatedTotal, + testConsumer, + ), // valid msg + NewMsgUpdateRequestContext( + testRequestContextID, + nil, + nil, + 0, + 0, + 0, + testConsumer, + ), // allow all not to be updated + NewMsgUpdateRequestContext( + testRequestContextID, + nil, + nil, + 0, + 0, + 0, + emptyAddress, + ), // missing consumer address + NewMsgUpdateRequestContext( + invalidRequestContextID, + nil, + nil, + 0, + 0, + 0, + testConsumer, + ), // invalid request context ID + NewMsgUpdateRequestContext( + testRequestContextID, + invalidDuplicateProviders, + nil, + 0, + 0, + 0, + testConsumer, + ), // duplicate providers + NewMsgUpdateRequestContext( + testRequestContextID, + nil, + nil, + invalidTimeout, + 0, + 0, + testConsumer, + ), // invalid timeout + NewMsgUpdateRequestContext( + invalidRequestContextID, + nil, + nil, + testTimeout, + invalidLessRepeatedFreq, + 0, + testConsumer, + ), // invalid repeated frequency + NewMsgUpdateRequestContext( + testRequestContextID, + nil, + nil, + 0, + 0, + invalidRepeatedTotal, + testConsumer, + ), // invalid repeated total + NewMsgUpdateRequestContext( + testRequestContextID, + nil, + invalidDenomCoins, + 0, + 0, + 0, + testConsumer, + ), // invalid service fee denom } testCases := []struct { @@ -1062,7 +1680,15 @@ func TestMsgUpdateRequestContextValidation(t *testing.T) { // TestMsgUpdateRequestContextGetSignBytes tests GetSignBytes for MsgUpdateRequestContext func TestMsgUpdateRequestContextGetSignBytes(t *testing.T) { - msg := NewMsgUpdateRequestContext(testRequestContextID, testProviders, testServiceFeeCap, testTimeout, testRepeatedFreq, testRepeatedTotal, testConsumer) + msg := NewMsgUpdateRequestContext( + testRequestContextID, + testProviders, + testServiceFeeCap, + testTimeout, + testRepeatedFreq, + testRepeatedTotal, + testConsumer, + ) res := msg.GetSignBytes() expected := `{"type":"irismod/service/MsgUpdateRequestContext","value":{"consumer":"cosmos1d8ydkv60gkj3sc98lvnxpddlfwwluvp6jc59a0","providers":["cosmos10yajkmnug9d2nvccgs7ul3xkur0l9as348gmwe"],"repeated_frequency":"120","repeated_total":"100","request_context_id":"3DB0FA99DCB058BC86041BADBD614D6839F8FA20E17CF8AD3BA14C3F1BF613BD0000000000000000","service_fee_cap":[{"amount":"100","denom":"stake"}],"timeout":"100"}}` @@ -1071,7 +1697,15 @@ func TestMsgUpdateRequestContextGetSignBytes(t *testing.T) { // TestMsgUpdateRequestContextGetSigners tests GetSigners for MsgUpdateRequestContext func TestMsgUpdateRequestContextGetSigners(t *testing.T) { - msg := NewMsgUpdateRequestContext(testRequestContextID, testProviders, testServiceFeeCap, testTimeout, testRepeatedFreq, testRepeatedTotal, testConsumer) + msg := NewMsgUpdateRequestContext( + testRequestContextID, + testProviders, + testServiceFeeCap, + testTimeout, + testRepeatedFreq, + testRepeatedTotal, + testConsumer, + ) res := msg.GetSigners() require.Equal(t, "[69C8DB334F45A51860A7FB2660B5BF4B9DFE303A]", fmt.Sprintf("%v", res)) } diff --git a/modules/service/types/oracle_price.go b/modules/service/types/oracle_price.go index 14fb2fb9..09b15c8a 100644 --- a/modules/service/types/oracle_price.go +++ b/modules/service/types/oracle_price.go @@ -4,7 +4,7 @@ import ( "fmt" "time" - "github.com/tendermint/tendermint/crypto" + "github.com/cometbft/cometbft/crypto" sdk "github.com/cosmos/cosmos-sdk/types" ) diff --git a/modules/service/types/querier.go b/modules/service/types/querier.go index 7b31d671..dffce165 100644 --- a/modules/service/types/querier.go +++ b/modules/service/types/querier.go @@ -1,7 +1,7 @@ package types import ( - tmbytes "github.com/tendermint/tendermint/libs/bytes" + tmbytes "github.com/cometbft/cometbft/libs/bytes" sdk "github.com/cosmos/cosmos-sdk/types" ) diff --git a/modules/token/client/cli/cli_test.go b/modules/token/client/cli/cli_test.go index f57b44d5..2102f9d7 100644 --- a/modules/token/client/cli/cli_test.go +++ b/modules/token/client/cli/cli_test.go @@ -5,8 +5,8 @@ import ( "fmt" "testing" + "github.com/cometbft/cometbft/crypto" "github.com/stretchr/testify/suite" - "github.com/tendermint/tendermint/crypto" "github.com/cosmos/cosmos-sdk/client/flags" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/modules/token/client/testutil/test_helpers.go b/modules/token/client/testutil/test_helpers.go index d3dc9503..407229f1 100644 --- a/modules/token/client/testutil/test_helpers.go +++ b/modules/token/client/testutil/test_helpers.go @@ -4,9 +4,9 @@ import ( "fmt" "testing" + "github.com/cometbft/cometbft/libs/cli" "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/require" - "github.com/tendermint/tendermint/libs/cli" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" diff --git a/modules/token/genesis_test.go b/modules/token/genesis_test.go index 7c92301d..1033fa8c 100644 --- a/modules/token/genesis_test.go +++ b/modules/token/genesis_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/tendermint/tendermint/crypto/tmhash" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + "github.com/cometbft/cometbft/crypto/tmhash" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/modules/token/handler_test.go b/modules/token/handler_test.go index db0aef12..308222e7 100644 --- a/modules/token/handler_test.go +++ b/modules/token/handler_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/suite" - "github.com/tendermint/tendermint/crypto/tmhash" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + "github.com/cometbft/cometbft/crypto/tmhash" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdkmath "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/codec" @@ -86,7 +86,16 @@ func (suite *HandlerSuite) TestIssueToken() { nativeTokenAmt1 := suite.bk.GetBalance(suite.ctx, owner, denom).Amount - msg := v1.NewMsgIssueToken("btc", "satoshi", "Bitcoin Network", 18, 21000000, 21000000, false, owner.String()) + msg := v1.NewMsgIssueToken( + "btc", + "satoshi", + "Bitcoin Network", + 18, + 21000000, + 21000000, + false, + owner.String(), + ) _, err := h(suite.ctx, msg) suite.NoError(err) @@ -109,7 +118,10 @@ func (suite *HandlerSuite) TestMintToken() { suite.issueToken(token) beginBtcAmt := suite.bk.GetBalance(suite.ctx, token.GetOwner(), token.MinUnit).Amount - suite.Equal(sdkmath.NewIntWithDecimal(int64(token.InitialSupply), int(token.Scale)), beginBtcAmt) + suite.Equal( + sdkmath.NewIntWithDecimal(int64(token.InitialSupply), int(token.Scale)), + beginBtcAmt, + ) beginNativeAmt := suite.bk.GetBalance(suite.ctx, token.GetOwner(), denom).Amount @@ -142,7 +154,10 @@ func (suite *HandlerSuite) TestBurnToken() { suite.issueToken(token) beginBtcAmt := suite.bk.GetBalance(suite.ctx, token.GetOwner(), token.MinUnit).Amount - suite.Equal(sdkmath.NewIntWithDecimal(int64(token.InitialSupply), int(token.Scale)), beginBtcAmt) + suite.Equal( + sdkmath.NewIntWithDecimal(int64(token.InitialSupply), int(token.Scale)), + beginBtcAmt, + ) h := tokenmodule.NewHandler(suite.keeper) diff --git a/modules/token/keeper/keeper.go b/modules/token/keeper/keeper.go index 2735c46c..e73f87c7 100644 --- a/modules/token/keeper/keeper.go +++ b/modules/token/keeper/keeper.go @@ -3,7 +3,7 @@ package keeper import ( "fmt" - "github.com/tendermint/tendermint/libs/log" + "github.com/cometbft/cometbft/libs/log" sdkmath "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/codec" @@ -114,7 +114,12 @@ func (k Keeper) EditToken( } if owner.String() != token.Owner { - return sdkerrors.Wrapf(types.ErrInvalidOwner, "the address %s is not the owner of the token %s", owner, symbol) + return sdkerrors.Wrapf( + types.ErrInvalidOwner, + "the address %s is not the owner of the token %s", + owner, + symbol, + ) } if maxSupply > 0 { @@ -122,7 +127,11 @@ func (k Keeper) EditToken( issuedMainUnitAmt := issuedAmt.Quo(sdkmath.NewIntWithDecimal(1, int(token.Scale))) if sdk.NewIntFromUint64(maxSupply).LT(issuedMainUnitAmt) { - return sdkerrors.Wrapf(types.ErrInvalidMaxSupply, "max supply must not be less than %s", issuedMainUnitAmt) + return sdkerrors.Wrapf( + types.ErrInvalidMaxSupply, + "max supply must not be less than %s", + issuedMainUnitAmt, + ) } token.MaxSupply = maxSupply @@ -159,7 +168,12 @@ func (k Keeper) TransferTokenOwner( } if srcOwner.String() != token.Owner { - return sdkerrors.Wrapf(types.ErrInvalidOwner, "the address %s is not the owner of the token %s", srcOwner, symbol) + return sdkerrors.Wrapf( + types.ErrInvalidOwner, + "the address %s is not the owner of the token %s", + srcOwner, + symbol, + ) } return k.changeTokenOwner(ctx, token, dstOwner) } @@ -188,7 +202,12 @@ func (k Keeper) MintToken( } if owner.String() != token.Owner { - return sdkerrors.Wrapf(types.ErrInvalidOwner, "the address %s is not the owner of the token %s", owner, token.Symbol) + return sdkerrors.Wrapf( + types.ErrInvalidOwner, + "the address %s is not the owner of the token %s", + owner, + token.Symbol, + ) } if !token.Mintable { @@ -274,7 +293,12 @@ func (k Keeper) SwapFeeToken( if recipient == nil { recipient = sender } - return burnedCoin, mintedCoin, k.bankKeeper.SendCoinsFromModuleToAccount(ctx, types.ModuleName, recipient, mintedCoins) + return burnedCoin, mintedCoin, k.bankKeeper.SendCoinsFromModuleToAccount( + ctx, + types.ModuleName, + recipient, + mintedCoins, + ) } func (k Keeper) WithSwapRegistry(registry v1.SwapRegistry) Keeper { @@ -282,7 +306,10 @@ func (k Keeper) WithSwapRegistry(registry v1.SwapRegistry) Keeper { return k } -func (k Keeper) calcFeeTokenMinted(ctx sdk.Context, feePaid sdk.Coin) (burnt, minted sdk.Coin, err error) { +func (k Keeper) calcFeeTokenMinted( + ctx sdk.Context, + feePaid sdk.Coin, +) (burnt, minted sdk.Coin, err error) { tokenBurned, err := k.getTokenByMinUnit(ctx, feePaid.Denom) if err != nil { return burnt, minted, err @@ -298,11 +325,20 @@ func (k Keeper) calcFeeTokenMinted(ctx sdk.Context, feePaid sdk.Coin) (burnt, mi return burnt, minted, err } - burntAmt, mintAmt := types.LossLessSwap(feePaid.Amount, swapParams.Ratio, tokenBurned.GetScale(), tokenMinted.GetScale()) + burntAmt, mintAmt := types.LossLessSwap( + feePaid.Amount, + swapParams.Ratio, + tokenBurned.GetScale(), + tokenMinted.GetScale(), + ) return sdk.NewCoin(tokenBurned.MinUnit, burntAmt), sdk.NewCoin(swapParams.MinUnit, mintAmt), nil } -func (k Keeper) changeTokenOwner(ctx sdk.Context, srcToken v1.Token, dstOwner sdk.AccAddress) error { +func (k Keeper) changeTokenOwner( + ctx sdk.Context, + srcToken v1.Token, + dstOwner sdk.AccAddress, +) error { srcOwner, err := sdk.AccAddressFromBech32(srcToken.Owner) if err != nil { return err diff --git a/modules/token/keeper/keeper_test.go b/modules/token/keeper/keeper_test.go index b88875aa..06a6f687 100644 --- a/modules/token/keeper/keeper_test.go +++ b/modules/token/keeper/keeper_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/suite" - "github.com/tendermint/tendermint/crypto/tmhash" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + "github.com/cometbft/cometbft/crypto/tmhash" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdkmath "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/codec" @@ -122,7 +122,16 @@ func (suite *KeeperTestSuite) TestEditToken() { newToken, err := suite.keeper.GetToken(suite.ctx, symbol) suite.NoError(err) - expToken := v1.NewToken("btc", "Bitcoin Token", "satoshi", 18, 21000000, 22000000, mintable.ToBool(), owner) + expToken := v1.NewToken( + "btc", + "Bitcoin Token", + "satoshi", + 18, + 21000000, + 22000000, + mintable.ToBool(), + owner, + ) suite.EqualValues(newToken.(*v1.Token), &expToken) } @@ -151,7 +160,12 @@ func (suite *KeeperTestSuite) TestMintToken() { token = v1.NewToken("atom", "Cosmos Hub", "uatom", 6, 1000, 2000, true, sdk.AccAddress{}) suite.issueToken(token) - err = suite.keeper.MintToken(suite.ctx, sdk.NewCoin(token.MinUnit, sdkmath.OneInt()), owner, sdk.AccAddress{}) + err = suite.keeper.MintToken( + suite.ctx, + sdk.NewCoin(token.MinUnit, sdkmath.OneInt()), + owner, + sdk.AccAddress{}, + ) suite.NoError(err) } @@ -212,7 +226,12 @@ func (suite *KeeperTestSuite) TestSwapFeeToken() { feePaid := sdk.NewCoin(token1.MinUnit, sdkmath.NewIntWithDecimal(100, int(token1.Scale))) - _, feeGot, err := suite.keeper.SwapFeeToken(suite.ctx, feePaid, token1.GetOwner(), token2.GetOwner()) + _, feeGot, err := suite.keeper.SwapFeeToken( + suite.ctx, + feePaid, + token1.GetOwner(), + token2.GetOwner(), + ) suite.NoError(err) suite.Equal("100000000000000000000t2min", feeGot.String()) @@ -223,7 +242,12 @@ func (suite *KeeperTestSuite) TestSwapFeeToken() { suite.Equal("100000000000000000000t2min", amt.String()) //reverse test - _, feeGot, err = suite.keeper.SwapFeeToken(suite.ctx, feeGot, token2.GetOwner(), token1.GetOwner()) + _, feeGot, err = suite.keeper.SwapFeeToken( + suite.ctx, + feeGot, + token2.GetOwner(), + token1.GetOwner(), + ) suite.NoError(err) suite.Equal("100000000t1min", feeGot.String()) diff --git a/modules/token/module.go b/modules/token/module.go index fc42c577..484a76a9 100644 --- a/modules/token/module.go +++ b/modules/token/module.go @@ -9,7 +9,7 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" - abci "github.com/tendermint/tendermint/abci/types" + abci "github.com/cometbft/cometbft/abci/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" diff --git a/modules/token/types/v1/genesis.go b/modules/token/types/v1/genesis.go index 2d140dab..36669c1f 100644 --- a/modules/token/types/v1/genesis.go +++ b/modules/token/types/v1/genesis.go @@ -1,8 +1,8 @@ package v1 import ( + "github.com/cometbft/cometbft/crypto" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/tendermint/tendermint/crypto" tokentypes "github.com/irisnet/irismod/modules/token/types" ) @@ -31,7 +31,16 @@ func SetNativeToken( mintable bool, owner sdk.AccAddress, ) { - nativeToken = NewToken(symbol, name, minUnit, decimal, initialSupply, maxSupply, mintable, owner) + nativeToken = NewToken( + symbol, + name, + minUnit, + decimal, + initialSupply, + maxSupply, + mintable, + owner, + ) Initialized = true } @@ -46,7 +55,8 @@ func GetNativeToken() Token { InitialSupply: 2000000000, MaxSupply: 10000000000, Mintable: true, - Owner: sdk.AccAddress(crypto.AddressHash([]byte(tokentypes.ModuleName))).String(), + Owner: sdk.AccAddress(crypto.AddressHash([]byte(tokentypes.ModuleName))). + String(), } Initialized = true } diff --git a/modules/token/types/v1/msgs_test.go b/modules/token/types/v1/msgs_test.go index 7eedb4a1..f7dbbe06 100644 --- a/modules/token/types/v1/msgs_test.go +++ b/modules/token/types/v1/msgs_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/tendermint/tendermint/crypto/tmhash" + "github.com/cometbft/cometbft/crypto/tmhash" sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" @@ -28,18 +28,80 @@ func TestMsgIssueAsset(t *testing.T) { *MsgIssueToken expectPass bool }{ - {"basic good", NewMsgIssueToken("stake", "satoshi", "Bitcoin Network", 18, 1, 1, true, addr), true}, - {"symbol empty", NewMsgIssueToken("", "satoshi", "Bitcoin Network", 18, 1, 1, true, addr), false}, - {"symbol error", NewMsgIssueToken("b&stake", "satoshi", "Bitcoin Network", 18, 1, 1, true, addr), false}, - {"symbol first letter is num", NewMsgIssueToken("4stake", "satoshi", "Bitcoin Network", 18, 1, 1, true, addr), false}, - {"symbol too long", NewMsgIssueToken("stake123456789012345678901234567890123456789012345678901234567890", "satoshi", "Bitcoin Network", 18, 1, 1, true, addr), false}, - {"symbol too short", NewMsgIssueToken("ht", "satoshi", "Bitcoin Network", 18, 1, 1, true, addr), false}, + { + "basic good", + NewMsgIssueToken("stake", "satoshi", "Bitcoin Network", 18, 1, 1, true, addr), + true, + }, + { + "symbol empty", + NewMsgIssueToken("", "satoshi", "Bitcoin Network", 18, 1, 1, true, addr), + false, + }, + { + "symbol error", + NewMsgIssueToken("b&stake", "satoshi", "Bitcoin Network", 18, 1, 1, true, addr), + false, + }, + { + "symbol first letter is num", + NewMsgIssueToken("4stake", "satoshi", "Bitcoin Network", 18, 1, 1, true, addr), + false, + }, + { + "symbol too long", + NewMsgIssueToken( + "stake123456789012345678901234567890123456789012345678901234567890", + "satoshi", + "Bitcoin Network", + 18, + 1, + 1, + true, + addr, + ), + false, + }, + { + "symbol too short", + NewMsgIssueToken("ht", "satoshi", "Bitcoin Network", 18, 1, 1, true, addr), + false, + }, {"name empty", NewMsgIssueToken("stake", "satoshi", "", 18, 1, 1, true, addr), false}, - {"name too long", NewMsgIssueToken("stake", "satoshi", "Bitcoin Network aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 18, 1, 1, true, addr), false}, - {"initial supply is zero", NewMsgIssueToken("stake", "satoshi", "Bitcoin Network", 18, 0, 1, true, addr), true}, - {"max supply is zero", NewMsgIssueToken("stake", "satoshi", "Bitcoin Network", 18, 1, 0, true, addr), true}, - {"init supply bigger than max supply", NewMsgIssueToken("stake", "satoshi", "Bitcoin Network", 18, 2, 1, true, addr), false}, - {"decimal error", NewMsgIssueToken("stake", "satoshi", "Bitcoin Network", 19, 1, 1, true, addr), false}, + { + "name too long", + NewMsgIssueToken( + "stake", + "satoshi", + "Bitcoin Network aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + 18, + 1, + 1, + true, + addr, + ), + false, + }, + { + "initial supply is zero", + NewMsgIssueToken("stake", "satoshi", "Bitcoin Network", 18, 0, 1, true, addr), + true, + }, + { + "max supply is zero", + NewMsgIssueToken("stake", "satoshi", "Bitcoin Network", 18, 1, 0, true, addr), + true, + }, + { + "init supply bigger than max supply", + NewMsgIssueToken("stake", "satoshi", "Bitcoin Network", 18, 2, 1, true, addr), + false, + }, + { + "decimal error", + NewMsgIssueToken("stake", "satoshi", "Bitcoin Network", 19, 1, 1, true, addr), + false, + }, } for _, tc := range tests { diff --git a/modules/token/types/v1beta1/genesis.go b/modules/token/types/v1beta1/genesis.go index 4787d040..819331d8 100644 --- a/modules/token/types/v1beta1/genesis.go +++ b/modules/token/types/v1beta1/genesis.go @@ -1,8 +1,8 @@ package v1beta1 import ( + "github.com/cometbft/cometbft/crypto" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/tendermint/tendermint/crypto" tokentypes "github.com/irisnet/irismod/modules/token/types" ) @@ -31,7 +31,16 @@ func SetNativeToken( mintable bool, owner sdk.AccAddress, ) { - nativeToken = NewToken(symbol, name, minUnit, decimal, initialSupply, maxSupply, mintable, owner) + nativeToken = NewToken( + symbol, + name, + minUnit, + decimal, + initialSupply, + maxSupply, + mintable, + owner, + ) Initialized = true } @@ -46,7 +55,8 @@ func GetNativeToken() Token { InitialSupply: 2000000000, MaxSupply: 10000000000, Mintable: true, - Owner: sdk.AccAddress(crypto.AddressHash([]byte(tokentypes.ModuleName))).String(), + Owner: sdk.AccAddress(crypto.AddressHash([]byte(tokentypes.ModuleName))). + String(), } Initialized = true } diff --git a/modules/token/types/v1beta1/msgs_test.go b/modules/token/types/v1beta1/msgs_test.go index 75747684..43f7fff7 100644 --- a/modules/token/types/v1beta1/msgs_test.go +++ b/modules/token/types/v1beta1/msgs_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/tendermint/tendermint/crypto/tmhash" + "github.com/cometbft/cometbft/crypto/tmhash" sdk "github.com/cosmos/cosmos-sdk/types" tokentypes "github.com/irisnet/irismod/modules/token/types" @@ -27,18 +27,80 @@ func TestMsgIssueAsset(t *testing.T) { *MsgIssueToken expectPass bool }{ - {"basic good", NewMsgIssueToken("stake", "satoshi", "Bitcoin Network", 18, 1, 1, true, addr), true}, - {"symbol empty", NewMsgIssueToken("", "satoshi", "Bitcoin Network", 18, 1, 1, true, addr), false}, - {"symbol error", NewMsgIssueToken("b&stake", "satoshi", "Bitcoin Network", 18, 1, 1, true, addr), false}, - {"symbol first letter is num", NewMsgIssueToken("4stake", "satoshi", "Bitcoin Network", 18, 1, 1, true, addr), false}, - {"symbol too long", NewMsgIssueToken("stake123456789012345678901234567890123456789012345678901234567890", "satoshi", "Bitcoin Network", 18, 1, 1, true, addr), false}, - {"symbol too short", NewMsgIssueToken("ht", "satoshi", "Bitcoin Network", 18, 1, 1, true, addr), false}, + { + "basic good", + NewMsgIssueToken("stake", "satoshi", "Bitcoin Network", 18, 1, 1, true, addr), + true, + }, + { + "symbol empty", + NewMsgIssueToken("", "satoshi", "Bitcoin Network", 18, 1, 1, true, addr), + false, + }, + { + "symbol error", + NewMsgIssueToken("b&stake", "satoshi", "Bitcoin Network", 18, 1, 1, true, addr), + false, + }, + { + "symbol first letter is num", + NewMsgIssueToken("4stake", "satoshi", "Bitcoin Network", 18, 1, 1, true, addr), + false, + }, + { + "symbol too long", + NewMsgIssueToken( + "stake123456789012345678901234567890123456789012345678901234567890", + "satoshi", + "Bitcoin Network", + 18, + 1, + 1, + true, + addr, + ), + false, + }, + { + "symbol too short", + NewMsgIssueToken("ht", "satoshi", "Bitcoin Network", 18, 1, 1, true, addr), + false, + }, {"name empty", NewMsgIssueToken("stake", "satoshi", "", 18, 1, 1, true, addr), false}, - {"name too long", NewMsgIssueToken("stake", "satoshi", "Bitcoin Network aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 18, 1, 1, true, addr), false}, - {"initial supply is zero", NewMsgIssueToken("stake", "satoshi", "Bitcoin Network", 18, 0, 1, true, addr), true}, - {"max supply is zero", NewMsgIssueToken("stake", "satoshi", "Bitcoin Network", 18, 1, 0, true, addr), true}, - {"init supply bigger than max supply", NewMsgIssueToken("stake", "satoshi", "Bitcoin Network", 18, 2, 1, true, addr), false}, - {"decimal error", NewMsgIssueToken("stake", "satoshi", "Bitcoin Network", 19, 1, 1, true, addr), false}, + { + "name too long", + NewMsgIssueToken( + "stake", + "satoshi", + "Bitcoin Network aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + 18, + 1, + 1, + true, + addr, + ), + false, + }, + { + "initial supply is zero", + NewMsgIssueToken("stake", "satoshi", "Bitcoin Network", 18, 0, 1, true, addr), + true, + }, + { + "max supply is zero", + NewMsgIssueToken("stake", "satoshi", "Bitcoin Network", 18, 1, 0, true, addr), + true, + }, + { + "init supply bigger than max supply", + NewMsgIssueToken("stake", "satoshi", "Bitcoin Network", 18, 2, 1, true, addr), + false, + }, + { + "decimal error", + NewMsgIssueToken("stake", "satoshi", "Bitcoin Network", 19, 1, 1, true, addr), + false, + }, } for _, tc := range tests { diff --git a/simapp/app.go b/simapp/app.go index 9fb6e565..9861de5a 100644 --- a/simapp/app.go +++ b/simapp/app.go @@ -12,9 +12,9 @@ import ( "github.com/rakyll/statik/fs" "github.com/spf13/cast" - abci "github.com/tendermint/tendermint/abci/types" - "github.com/tendermint/tendermint/libs/log" - dbm "github.com/tendermint/tm-db" + dbm "github.com/cometbft/cometbft-db" + abci "github.com/cometbft/cometbft/abci/types" + "github.com/cometbft/cometbft/libs/log" autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" reflectionv1 "cosmossdk.io/api/cosmos/reflection/v1" @@ -279,7 +279,12 @@ func NewSimApp( legacyAmino := encodingConfig.Amino interfaceRegistry := encodingConfig.InterfaceRegistry - bApp := baseapp.NewBaseApp(appName, logger, db, encodingConfig.TxConfig.TxDecoder(), baseAppOptions...) + bApp := baseapp.NewBaseApp( + appName, + logger, + db, + encodingConfig.TxConfig.TxDecoder(), + baseAppOptions...) bApp.SetCommitMultiStoreTracer(traceStore) bApp.SetVersion(version.Version) bApp.SetInterfaceRegistry(interfaceRegistry) @@ -307,14 +312,27 @@ func NewSimApp( memKeys: memKeys, } - app.ParamsKeeper = initParamsKeeper(appCodec, legacyAmino, keys[paramstypes.StoreKey], tkeys[paramstypes.TStoreKey]) + app.ParamsKeeper = initParamsKeeper( + appCodec, + legacyAmino, + keys[paramstypes.StoreKey], + tkeys[paramstypes.TStoreKey], + ) // set the BaseApp's parameter store - app.ConsensusParamsKeeper = consensusparamkeeper.NewKeeper(appCodec, keys[upgradetypes.StoreKey], authtypes.NewModuleAddress(govtypes.ModuleName).String()) + app.ConsensusParamsKeeper = consensusparamkeeper.NewKeeper( + appCodec, + keys[upgradetypes.StoreKey], + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) bApp.SetParamStore(&app.ConsensusParamsKeeper) // add capability keeper and ScopeToModule for ibc module - app.CapabilityKeeper = capabilitykeeper.NewKeeper(appCodec, keys[capabilitytypes.StoreKey], memKeys[capabilitytypes.MemStoreKey]) + app.CapabilityKeeper = capabilitykeeper.NewKeeper( + appCodec, + keys[capabilitytypes.StoreKey], + memKeys[capabilitytypes.MemStoreKey], + ) // add keepers app.AccountKeeper = authkeeper.NewAccountKeeper( @@ -379,7 +397,11 @@ func NewSimApp( authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) - app.FeeGrantKeeper = feegrantkeeper.NewKeeper(appCodec, keys[feegrant.StoreKey], app.AccountKeeper) + app.FeeGrantKeeper = feegrantkeeper.NewKeeper( + appCodec, + keys[feegrant.StoreKey], + app.AccountKeeper, + ) // set the governance module account as the authority for conducting upgrades homePath := cast.ToString(appOpts.Get(flags.FlagHome)) // get skipUpgradeHeights from the app options @@ -488,8 +510,14 @@ func NewSimApp( govConfig := govtypes.DefaultConfig() govKeeper := govkeeper.NewKeeper( - appCodec, keys[govtypes.StoreKey], app.AccountKeeper, app.BankKeeper, - app.StakingKeeper, app.MsgServiceRouter(), govConfig, authtypes.NewModuleAddress(govtypes.ModuleName).String(), + appCodec, + keys[govtypes.StoreKey], + app.AccountKeeper, + app.BankKeeper, + app.StakingKeeper, + app.MsgServiceRouter(), + govConfig, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) // Set legacy router for backwards compatibility with gov v1beta1 @@ -502,7 +530,12 @@ func NewSimApp( ), ) - app.RandomKeeper = randomkeeper.NewKeeper(appCodec, keys[randomtypes.StoreKey], app.BankKeeper, app.ServiceKeeper) + app.RandomKeeper = randomkeeper.NewKeeper( + appCodec, + keys[randomtypes.StoreKey], + app.BankKeeper, + app.ServiceKeeper, + ) /**** Module Options ****/ @@ -517,17 +550,69 @@ func NewSimApp( app.AccountKeeper, app.StakingKeeper, app.BaseApp.DeliverTx, encodingConfig.TxConfig, ), - auth.NewAppModule(appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)), + auth.NewAppModule( + appCodec, + app.AccountKeeper, + authsims.RandomGenesisAccounts, + app.GetSubspace(authtypes.ModuleName), + ), vesting.NewAppModule(app.AccountKeeper, app.BankKeeper), - bank.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper, app.GetSubspace(banktypes.ModuleName)), + bank.NewAppModule( + appCodec, + app.BankKeeper, + app.AccountKeeper, + app.GetSubspace(banktypes.ModuleName), + ), capability.NewAppModule(appCodec, *app.CapabilityKeeper, false), - crisis.NewAppModule(app.CrisisKeeper, skipGenesisInvariants, app.GetSubspace(crisistypes.ModuleName)), - feegrantmodule.NewAppModule(appCodec, app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper, app.interfaceRegistry), - gov.NewAppModule(appCodec, &app.GovKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(govtypes.ModuleName)), - mint.NewAppModule(appCodec, app.MintKeeper, app.AccountKeeper, nil, app.GetSubspace(minttypes.ModuleName)), - slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(slashingtypes.ModuleName)), - distr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(distrtypes.ModuleName)), - staking.NewAppModule(appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)), + crisis.NewAppModule( + app.CrisisKeeper, + skipGenesisInvariants, + app.GetSubspace(crisistypes.ModuleName), + ), + feegrantmodule.NewAppModule( + appCodec, + app.AccountKeeper, + app.BankKeeper, + app.FeeGrantKeeper, + app.interfaceRegistry, + ), + gov.NewAppModule( + appCodec, + &app.GovKeeper, + app.AccountKeeper, + app.BankKeeper, + app.GetSubspace(govtypes.ModuleName), + ), + mint.NewAppModule( + appCodec, + app.MintKeeper, + app.AccountKeeper, + nil, + app.GetSubspace(minttypes.ModuleName), + ), + slashing.NewAppModule( + appCodec, + app.SlashingKeeper, + app.AccountKeeper, + app.BankKeeper, + app.StakingKeeper, + app.GetSubspace(slashingtypes.ModuleName), + ), + distr.NewAppModule( + appCodec, + app.DistrKeeper, + app.AccountKeeper, + app.BankKeeper, + app.StakingKeeper, + app.GetSubspace(distrtypes.ModuleName), + ), + staking.NewAppModule( + appCodec, + app.StakingKeeper, + app.AccountKeeper, + app.BankKeeper, + app.GetSubspace(stakingtypes.ModuleName), + ), upgrade.NewAppModule(app.UpgradeKeeper), evidence.NewAppModule(*app.EvidenceKeeper), params.NewAppModule(app.ParamsKeeper), @@ -549,28 +634,62 @@ func NewSimApp( // CanWithdrawInvariant invariant. // NOTE: staking module is required if HistoricalEntries param > 0 app.mm.SetOrderBeginBlockers( - capabilitytypes.ModuleName, authtypes.ModuleName, banktypes.ModuleName, - distrtypes.ModuleName, stakingtypes.ModuleName, slashingtypes.ModuleName, - govtypes.ModuleName, minttypes.ModuleName, crisistypes.ModuleName, - genutiltypes.ModuleName, evidencetypes.ModuleName, feegrant.ModuleName, - paramstypes.ModuleName, upgradetypes.ModuleName, vestingtypes.ModuleName, + capabilitytypes.ModuleName, + authtypes.ModuleName, + banktypes.ModuleName, + distrtypes.ModuleName, + stakingtypes.ModuleName, + slashingtypes.ModuleName, + govtypes.ModuleName, + minttypes.ModuleName, + crisistypes.ModuleName, + genutiltypes.ModuleName, + evidencetypes.ModuleName, + feegrant.ModuleName, + paramstypes.ModuleName, + upgradetypes.ModuleName, + vestingtypes.ModuleName, tokentypes.ModuleName, - nfttypes.ModuleName, mttypes.ModuleName, - htlctypes.ModuleName, recordtypes.ModuleName, - coinswaptypes.ModuleName, servicetypes.ModuleName, oracletypes.ModuleName, - randomtypes.ModuleName, farmtypes.ModuleName, feegrant.ModuleName, consensusparamtypes.ModuleName, + nfttypes.ModuleName, + mttypes.ModuleName, + htlctypes.ModuleName, + recordtypes.ModuleName, + coinswaptypes.ModuleName, + servicetypes.ModuleName, + oracletypes.ModuleName, + randomtypes.ModuleName, + farmtypes.ModuleName, + feegrant.ModuleName, + consensusparamtypes.ModuleName, ) app.mm.SetOrderEndBlockers( - capabilitytypes.ModuleName, authtypes.ModuleName, banktypes.ModuleName, - distrtypes.ModuleName, stakingtypes.ModuleName, slashingtypes.ModuleName, - govtypes.ModuleName, minttypes.ModuleName, crisistypes.ModuleName, - genutiltypes.ModuleName, evidencetypes.ModuleName, feegrant.ModuleName, - paramstypes.ModuleName, upgradetypes.ModuleName, vestingtypes.ModuleName, + capabilitytypes.ModuleName, + authtypes.ModuleName, + banktypes.ModuleName, + distrtypes.ModuleName, + stakingtypes.ModuleName, + slashingtypes.ModuleName, + govtypes.ModuleName, + minttypes.ModuleName, + crisistypes.ModuleName, + genutiltypes.ModuleName, + evidencetypes.ModuleName, + feegrant.ModuleName, + paramstypes.ModuleName, + upgradetypes.ModuleName, + vestingtypes.ModuleName, tokentypes.ModuleName, - nfttypes.ModuleName, mttypes.ModuleName, - htlctypes.ModuleName, recordtypes.ModuleName, - coinswaptypes.ModuleName, servicetypes.ModuleName, oracletypes.ModuleName, - randomtypes.ModuleName, farmtypes.ModuleName, feegrant.ModuleName, consensusparamtypes.ModuleName, + nfttypes.ModuleName, + mttypes.ModuleName, + htlctypes.ModuleName, + recordtypes.ModuleName, + coinswaptypes.ModuleName, + servicetypes.ModuleName, + oracletypes.ModuleName, + randomtypes.ModuleName, + farmtypes.ModuleName, + feegrant.ModuleName, + consensusparamtypes.ModuleName, ) // NOTE: The genutils module must occur after staking so that pools are @@ -579,26 +698,50 @@ func NewSimApp( // so that other modules that want to create or claim capabilities afterwards in InitChain // can do so safely. app.mm.SetOrderInitGenesis( - capabilitytypes.ModuleName, authtypes.ModuleName, banktypes.ModuleName, - distrtypes.ModuleName, stakingtypes.ModuleName, slashingtypes.ModuleName, - govtypes.ModuleName, minttypes.ModuleName, - genutiltypes.ModuleName, evidencetypes.ModuleName, feegrant.ModuleName, - paramstypes.ModuleName, upgradetypes.ModuleName, vestingtypes.ModuleName, + capabilitytypes.ModuleName, + authtypes.ModuleName, + banktypes.ModuleName, + distrtypes.ModuleName, + stakingtypes.ModuleName, + slashingtypes.ModuleName, + govtypes.ModuleName, + minttypes.ModuleName, + genutiltypes.ModuleName, + evidencetypes.ModuleName, + feegrant.ModuleName, + paramstypes.ModuleName, + upgradetypes.ModuleName, + vestingtypes.ModuleName, tokentypes.ModuleName, - nfttypes.ModuleName, mttypes.ModuleName, - htlctypes.ModuleName, recordtypes.ModuleName, - coinswaptypes.ModuleName, servicetypes.ModuleName, oracletypes.ModuleName, - randomtypes.ModuleName, farmtypes.ModuleName, feegrant.ModuleName, crisistypes.ModuleName, consensusparamtypes.ModuleName, + nfttypes.ModuleName, + mttypes.ModuleName, + htlctypes.ModuleName, + recordtypes.ModuleName, + coinswaptypes.ModuleName, + servicetypes.ModuleName, + oracletypes.ModuleName, + randomtypes.ModuleName, + farmtypes.ModuleName, + feegrant.ModuleName, + crisistypes.ModuleName, + consensusparamtypes.ModuleName, ) app.mm.RegisterInvariants(app.CrisisKeeper) - app.configurator = module.NewConfigurator(app.appCodec, app.MsgServiceRouter(), app.GRPCQueryRouter()) + app.configurator = module.NewConfigurator( + app.appCodec, + app.MsgServiceRouter(), + app.GRPCQueryRouter(), + ) app.mm.RegisterServices(app.configurator) // add test gRPC service for testing gRPC queries in isolation testdata.RegisterQueryServer(app.GRPCQueryRouter(), testdata.QueryImpl{}) - autocliv1.RegisterQueryServer(app.GRPCQueryRouter(), runtimeservices.NewAutoCLIQueryService(app.mm.Modules)) + autocliv1.RegisterQueryServer( + app.GRPCQueryRouter(), + runtimeservices.NewAutoCLIQueryService(app.mm.Modules), + ) reflectionSvc, err := runtimeservices.NewReflectionService() if err != nil { panic(err) @@ -613,7 +756,12 @@ func NewSimApp( // NOTE: this is not required apps that don't use the simulator for fuzz testing // transactions overrideModules := map[string]module.AppModuleSimulation{ - authtypes.ModuleName: auth.NewAppModule(app.appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)), + authtypes.ModuleName: auth.NewAppModule( + app.appCodec, + app.AccountKeeper, + authsims.RandomGenesisAccounts, + app.GetSubspace(authtypes.ModuleName), + ), } app.sm = module.NewSimulationManagerFromAppModules(app.mm.Modules, overrideModules) @@ -676,7 +824,10 @@ func NewSimApp( func (app *SimApp) Name() string { return app.BaseApp.Name() } // BeginBlocker application updates every begin block -func (app *SimApp) BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock { +func (app *SimApp) BeginBlocker( + ctx sdk.Context, + req abci.RequestBeginBlock, +) abci.ResponseBeginBlock { return app.mm.BeginBlock(ctx, req) } @@ -696,9 +847,18 @@ func (app *SimApp) InitChainer(ctx sdk.Context, req abci.RequestInitChain) abci. var serviceGenState servicetypes.GenesisState app.UpgradeKeeper.SetModuleVersionMap(ctx, app.mm.GetVersionMap()) app.appCodec.MustUnmarshalJSON(genesisState[servicetypes.ModuleName], &serviceGenState) - serviceGenState.Definitions = append(serviceGenState.Definitions, servicetypes.GenOraclePriceSvcDefinition()) - serviceGenState.Bindings = append(serviceGenState.Bindings, servicetypes.GenOraclePriceSvcBinding(sdk.DefaultBondDenom)) - serviceGenState.Definitions = append(serviceGenState.Definitions, randomtypes.GetSvcDefinition()) + serviceGenState.Definitions = append( + serviceGenState.Definitions, + servicetypes.GenOraclePriceSvcDefinition(), + ) + serviceGenState.Bindings = append( + serviceGenState.Bindings, + servicetypes.GenOraclePriceSvcBinding(sdk.DefaultBondDenom), + ) + serviceGenState.Definitions = append( + serviceGenState.Definitions, + randomtypes.GetSvcDefinition(), + ) genesisState[servicetypes.ModuleName] = app.appCodec.MustMarshalJSON(&serviceGenState) return app.mm.InitGenesis(ctx, app.appCodec, genesisState) @@ -799,7 +959,12 @@ func (app *SimApp) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APICon // RegisterTxService implements the Application.RegisterTxService method. func (app *SimApp) RegisterTxService(clientCtx client.Context) { - authtx.RegisterTxService(app.BaseApp.GRPCQueryRouter(), clientCtx, app.BaseApp.Simulate, app.interfaceRegistry) + authtx.RegisterTxService( + app.BaseApp.GRPCQueryRouter(), + clientCtx, + app.BaseApp.Simulate, + app.interfaceRegistry, + ) } func (app *SimApp) RegisterNodeService(clientCtx client.Context) { @@ -870,7 +1035,11 @@ func makeEncodingConfig() simappparams.EncodingConfig { } // initParamsKeeper init params keeper and its subspaces -func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino, key, tkey storetypes.StoreKey) paramskeeper.Keeper { +func initParamsKeeper( + appCodec codec.BinaryCodec, + legacyAmino *codec.LegacyAmino, + key, tkey storetypes.StoreKey, +) paramskeeper.Keeper { paramsKeeper := paramskeeper.NewKeeper(appCodec, legacyAmino, key, tkey) paramsKeeper.Subspace(authtypes.ModuleName) diff --git a/simapp/export.go b/simapp/export.go index e602ad08..1f0b5385 100644 --- a/simapp/export.go +++ b/simapp/export.go @@ -5,11 +5,11 @@ import ( "fmt" "log" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/irisnet/irismod/modules/htlc" "github.com/irisnet/irismod/modules/oracle" "github.com/irisnet/irismod/modules/random" "github.com/irisnet/irismod/modules/service" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" servertypes "github.com/cosmos/cosmos-sdk/server/types" sdk "github.com/cosmos/cosmos-sdk/types" @@ -77,10 +77,13 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs [] /* Handle fee distribution state. */ // withdraw all validator commission - app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) { - _, _ = app.DistrKeeper.WithdrawValidatorCommission(ctx, val.GetOperator()) - return false - }) + app.StakingKeeper.IterateValidators( + ctx, + func(_ int64, val stakingtypes.ValidatorI) (stop bool) { + _, _ = app.DistrKeeper.WithdrawValidatorCommission(ctx, val.GetOperator()) + return false + }, + ) // withdraw all delegator rewards dels := app.StakingKeeper.GetAllDelegations(ctx) @@ -106,18 +109,21 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs [] ctx = ctx.WithBlockHeight(0) // reinitialize all validators - app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) { - // donate any unwithdrawn outstanding reward fraction tokens to the community pool - scraps := app.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, val.GetOperator()) - feePool := app.DistrKeeper.GetFeePool(ctx) - feePool.CommunityPool = feePool.CommunityPool.Add(scraps...) - app.DistrKeeper.SetFeePool(ctx, feePool) - - if err := app.DistrKeeper.Hooks().AfterValidatorCreated(ctx, val.GetOperator()); err != nil { - panic(err) - } - return false - }) + app.StakingKeeper.IterateValidators( + ctx, + func(_ int64, val stakingtypes.ValidatorI) (stop bool) { + // donate any unwithdrawn outstanding reward fraction tokens to the community pool + scraps := app.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, val.GetOperator()) + feePool := app.DistrKeeper.GetFeePool(ctx) + feePool.CommunityPool = feePool.CommunityPool.Add(scraps...) + app.DistrKeeper.SetFeePool(ctx, feePool) + + if err := app.DistrKeeper.Hooks().AfterValidatorCreated(ctx, val.GetOperator()); err != nil { + panic(err) + } + return false + }, + ) // reinitialize all delegations for _, del := range dels { @@ -144,22 +150,28 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs [] /* Handle staking state. */ // iterate through redelegations, reset creation height - app.StakingKeeper.IterateRedelegations(ctx, func(_ int64, red stakingtypes.Redelegation) (stop bool) { - for i := range red.Entries { - red.Entries[i].CreationHeight = 0 - } - app.StakingKeeper.SetRedelegation(ctx, red) - return false - }) + app.StakingKeeper.IterateRedelegations( + ctx, + func(_ int64, red stakingtypes.Redelegation) (stop bool) { + for i := range red.Entries { + red.Entries[i].CreationHeight = 0 + } + app.StakingKeeper.SetRedelegation(ctx, red) + return false + }, + ) // iterate through unbonding delegations, reset creation height - app.StakingKeeper.IterateUnbondingDelegations(ctx, func(_ int64, ubd stakingtypes.UnbondingDelegation) (stop bool) { - for i := range ubd.Entries { - ubd.Entries[i].CreationHeight = 0 - } - app.StakingKeeper.SetUnbondingDelegation(ctx, ubd) - return false - }) + app.StakingKeeper.IterateUnbondingDelegations( + ctx, + func(_ int64, ubd stakingtypes.UnbondingDelegation) (stop bool) { + for i := range ubd.Entries { + ubd.Entries[i].CreationHeight = 0 + } + app.StakingKeeper.SetUnbondingDelegation(ctx, ubd) + return false + }, + ) // Iterate through validators by power descending, reset bond heights, and // update bond intra-tx counters. diff --git a/simapp/network.go b/simapp/network.go index 32bb59ea..3c1ada42 100644 --- a/simapp/network.go +++ b/simapp/network.go @@ -6,6 +6,8 @@ import ( "strings" "testing" + abci "github.com/cometbft/cometbft/abci/types" + coretypes "github.com/cometbft/cometbft/rpc/core/types" "github.com/cosmos/cosmos-sdk/client" clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" "github.com/cosmos/cosmos-sdk/testutil/network" @@ -13,8 +15,6 @@ import ( "github.com/gogo/protobuf/proto" "github.com/spf13/cobra" "github.com/stretchr/testify/require" - abci "github.com/tendermint/tendermint/abci/types" - coretypes "github.com/tendermint/tendermint/rpc/core/types" ) type Network struct { diff --git a/simapp/sim_bench_test.go b/simapp/sim_bench_test.go index c9e30c87..f8a6f567 100644 --- a/simapp/sim_bench_test.go +++ b/simapp/sim_bench_test.go @@ -5,8 +5,8 @@ import ( "os" "testing" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/stretchr/testify/require" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/server" @@ -24,7 +24,13 @@ func BenchmarkFullAppSimulation(b *testing.B) { config := simcli.NewConfigFromFlags() config.ChainID = SimAppChainID - db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", simcli.FlagVerboseValue, simcli.FlagEnabledValue) + db, dir, logger, skip, err := simtestutil.SetupSimulation( + config, + "leveldb-app-sim", + "Simulation", + simcli.FlagVerboseValue, + simcli.FlagEnabledValue, + ) if err != nil { b.Fatalf("simulation setup failed: %s", err.Error()) } @@ -76,7 +82,13 @@ func BenchmarkInvariants(b *testing.B) { config := simcli.NewConfigFromFlags() config.ChainID = SimAppChainID - db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", simcli.FlagVerboseValue, simcli.FlagEnabledValue) + db, dir, logger, skip, err := simtestutil.SetupSimulation( + config, + "leveldb-app-sim", + "Simulation", + simcli.FlagVerboseValue, + simcli.FlagEnabledValue, + ) if err != nil { b.Fatalf("simulation setup failed: %s", err.Error()) } diff --git a/simapp/sim_test.go b/simapp/sim_test.go index d3632fee..05f313e2 100644 --- a/simapp/sim_test.go +++ b/simapp/sim_test.go @@ -10,11 +10,11 @@ import ( "strings" "testing" + dbm "github.com/cometbft/cometbft-db" + abci "github.com/cometbft/cometbft/abci/types" + "github.com/cometbft/cometbft/libs/log" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/stretchr/testify/require" - abci "github.com/tendermint/tendermint/abci/types" - "github.com/tendermint/tendermint/libs/log" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - dbm "github.com/tendermint/tm-db" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client/flags" @@ -78,7 +78,13 @@ func TestFullAppSimulation(t *testing.T) { config := simcli.NewConfigFromFlags() config.ChainID = SimAppChainID - db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", simcli.FlagVerboseValue, simcli.FlagEnabledValue) + db, dir, logger, skip, err := simtestutil.SetupSimulation( + config, + "leveldb-app-sim", + "Simulation", + simcli.FlagVerboseValue, + simcli.FlagEnabledValue, + ) if skip { t.Skip("skipping application simulation") } @@ -123,7 +129,13 @@ func TestAppImportExport(t *testing.T) { config := simcli.NewConfigFromFlags() config.ChainID = SimAppChainID - db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", simcli.FlagVerboseValue, simcli.FlagEnabledValue) + db, dir, logger, skip, err := simtestutil.SetupSimulation( + config, + "leveldb-app-sim", + "Simulation", + simcli.FlagVerboseValue, + simcli.FlagEnabledValue, + ) if skip { t.Skip("skipping application simulation") } @@ -170,7 +182,13 @@ func TestAppImportExport(t *testing.T) { fmt.Printf("importing genesis...\n") - newDB, newDir, _, _, err := simtestutil.SetupSimulation(config, "leveldb-app-sim-2", "Simulation-2", simcli.FlagVerboseValue, simcli.FlagEnabledValue) + newDB, newDir, _, _, err := simtestutil.SetupSimulation( + config, + "leveldb-app-sim-2", + "Simulation-2", + simcli.FlagVerboseValue, + simcli.FlagEnabledValue, + ) require.NoError(t, err, "simulation setup failed") defer func() { @@ -213,7 +231,11 @@ func TestAppImportExport(t *testing.T) { {app.keys[slashingtypes.StoreKey], newApp.keys[slashingtypes.StoreKey], [][]byte{}}, {app.keys[minttypes.StoreKey], newApp.keys[minttypes.StoreKey], [][]byte{}}, {app.keys[distrtypes.StoreKey], newApp.keys[distrtypes.StoreKey], [][]byte{}}, - {app.keys[banktypes.StoreKey], newApp.keys[banktypes.StoreKey], [][]byte{banktypes.BalancesPrefix}}, + { + app.keys[banktypes.StoreKey], + newApp.keys[banktypes.StoreKey], + [][]byte{banktypes.BalancesPrefix}, + }, {app.keys[paramtypes.StoreKey], newApp.keys[paramtypes.StoreKey], [][]byte{}}, {app.keys[govtypes.StoreKey], newApp.keys[govtypes.StoreKey], [][]byte{}}, {app.keys[evidencetypes.StoreKey], newApp.keys[evidencetypes.StoreKey], [][]byte{}}, @@ -225,8 +247,16 @@ func TestAppImportExport(t *testing.T) { //mt.Supply is InitSupply, can be not equal to TotalSupply {app.keys[mttypes.StoreKey], newApp.keys[mttypes.StoreKey], [][]byte{mttypes.PrefixMT}}, {app.keys[nfttypes.StoreKey], newApp.keys[nfttypes.StoreKey], [][]byte{{0x05}}}, - {app.keys[servicetypes.StoreKey], newApp.keys[servicetypes.StoreKey], [][]byte{servicetypes.InternalCounterKey}}, - {app.keys[randomtypes.StoreKey], newApp.keys[randomtypes.StoreKey], [][]byte{randomtypes.RandomKey}}, + { + app.keys[servicetypes.StoreKey], + newApp.keys[servicetypes.StoreKey], + [][]byte{servicetypes.InternalCounterKey}, + }, + { + app.keys[randomtypes.StoreKey], + newApp.keys[randomtypes.StoreKey], + [][]byte{randomtypes.RandomKey}, + }, //{app.keys[recordtypes.StoreKey], newApp.keys[recordtypes.StoreKey], [][]byte{recordtypes.IntraTxCounterKey}}, {app.keys[htlctypes.StoreKey], newApp.keys[htlctypes.StoreKey], [][]byte{}}, {app.keys[coinswaptypes.StoreKey], newApp.keys[coinswaptypes.StoreKey], [][]byte{}}, @@ -239,11 +269,26 @@ func TestAppImportExport(t *testing.T) { failedKVAs, failedKVBs := sdk.DiffKVStores(storeA, storeB, skp.Prefixes) require.Equal(t, len(failedKVAs), len(failedKVBs), "unequal sets of key-values to compare") - fmt.Printf("compared %d different key/value pairs between %s and %s\n", len(failedKVAs), skp.A, skp.B) + fmt.Printf( + "compared %d different key/value pairs between %s and %s\n", + len(failedKVAs), + skp.A, + skp.B, + ) for _, kv := range failedKVAs { fmt.Printf("storeKey: %s,\n failedKVBs: %v,\n ", skp.A.Name(), kv.Key) } - require.Equal(t, 0, len(failedKVAs), simtestutil.GetSimulationLog(skp.A.Name(), app.SimulationManager().StoreDecoders, failedKVAs, failedKVBs)) + require.Equal( + t, + 0, + len(failedKVAs), + simtestutil.GetSimulationLog( + skp.A.Name(), + app.SimulationManager().StoreDecoders, + failedKVAs, + failedKVBs, + ), + ) } } @@ -251,7 +296,13 @@ func TestAppSimulationAfterImport(t *testing.T) { config := simcli.NewConfigFromFlags() config.ChainID = SimAppChainID - db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", simcli.FlagVerboseValue, simcli.FlagEnabledValue) + db, dir, logger, skip, err := simtestutil.SetupSimulation( + config, + "leveldb-app-sim", + "Simulation", + simcli.FlagVerboseValue, + simcli.FlagEnabledValue, + ) if skip { t.Skip("skipping application simulation") } @@ -303,7 +354,13 @@ func TestAppSimulationAfterImport(t *testing.T) { fmt.Printf("importing genesis...\n") - newDB, newDir, _, _, err := simtestutil.SetupSimulation(config, "leveldb-app-sim-2", "Simulation-2", simcli.FlagVerboseValue, simcli.FlagEnabledValue) + newDB, newDir, _, _, err := simtestutil.SetupSimulation( + config, + "leveldb-app-sim-2", + "Simulation-2", + simcli.FlagVerboseValue, + simcli.FlagEnabledValue, + ) require.NoError(t, err, "simulation setup failed") defer func() { diff --git a/simapp/state.go b/simapp/state.go index 254ff5c7..7ddd9ce2 100644 --- a/simapp/state.go +++ b/simapp/state.go @@ -8,8 +8,8 @@ import ( "math/rand" "time" - tmjson "github.com/tendermint/tendermint/libs/json" - tmtypes "github.com/tendermint/tendermint/types" + tmjson "github.com/cometbft/cometbft/libs/json" + tmtypes "github.com/cometbft/cometbft/types" sdkmath "cosmossdk.io/math" simappparams "cosmossdk.io/simapp/params" @@ -69,11 +69,25 @@ func AppStateFn(cdc codec.JSONCodec, simManager *module.SimulationManager) simty if err != nil { panic(err) } - appState, simAccs = AppStateRandomizedFn(simManager, r, cdc, accs, genesisTimestamp, appParams) + appState, simAccs = AppStateRandomizedFn( + simManager, + r, + cdc, + accs, + genesisTimestamp, + appParams, + ) default: appParams := make(simtypes.AppParams) - appState, simAccs = AppStateRandomizedFn(simManager, r, cdc, accs, genesisTimestamp, appParams) + appState, simAccs = AppStateRandomizedFn( + simManager, + r, + cdc, + accs, + genesisTimestamp, + appParams, + ) } rawState := make(map[string]json.RawMessage) @@ -201,7 +215,11 @@ func AppStateRandomizedFn( // AppStateFromGenesisFileFn util function to generate the genesis AppState // from a genesis.json file. -func AppStateFromGenesisFileFn(r io.Reader, cdc codec.JSONCodec, genesisFile string) (tmtypes.GenesisDoc, []simtypes.Account) { +func AppStateFromGenesisFileFn( + r io.Reader, + cdc codec.JSONCodec, + genesisFile string, +) (tmtypes.GenesisDoc, []simtypes.Account) { bytes, err := ioutil.ReadFile(genesisFile) if err != nil { panic(err) @@ -243,7 +261,11 @@ func AppStateFromGenesisFileFn(r io.Reader, cdc codec.JSONCodec, genesisFile str } // create simulator accounts - simAcc := simtypes.Account{PrivKey: privKey, PubKey: privKey.PubKey(), Address: a.GetAddress()} + simAcc := simtypes.Account{ + PrivKey: privKey, + PubKey: privKey.PubKey(), + Address: a.GetAddress(), + } newAccs[i] = simAcc } diff --git a/simapp/test_helpers.go b/simapp/test_helpers.go index f40da43d..d18554c1 100644 --- a/simapp/test_helpers.go +++ b/simapp/test_helpers.go @@ -12,13 +12,13 @@ import ( "time" "cosmossdk.io/simapp" + dbm "github.com/cometbft/cometbft-db" + abci "github.com/cometbft/cometbft/abci/types" + "github.com/cometbft/cometbft/libs/log" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + tmtypes "github.com/cometbft/cometbft/types" "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/require" - abci "github.com/tendermint/tendermint/abci/types" - "github.com/tendermint/tendermint/libs/log" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - tmtypes "github.com/tendermint/tendermint/types" - dbm "github.com/tendermint/tm-db" bam "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" @@ -83,7 +83,12 @@ func Setup(t *testing.T, isCheckTx bool) *SimApp { // generate genesis account senderPrivKey := secp256k1.GenPrivKey() - acc := authtypes.NewBaseAccount(senderPrivKey.PubKey().Address().Bytes(), senderPrivKey.PubKey(), 0, 0) + acc := authtypes.NewBaseAccount( + senderPrivKey.PubKey().Address().Bytes(), + senderPrivKey.PubKey(), + 0, + 0, + ) balance := banktypes.Balance{ Address: acc.GetAddress().String(), Coins: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100000000000000))), @@ -94,7 +99,10 @@ func Setup(t *testing.T, isCheckTx bool) *SimApp { return app } -func SetupWithGenesisStateFn(t *testing.T, merge func(cdc codec.Codec, state GenesisState) GenesisState) *SimApp { +func SetupWithGenesisStateFn( + t *testing.T, + merge func(cdc codec.Codec, state GenesisState) GenesisState, +) *SimApp { app, genesisState := setup(true, 5) privVal := mock.NewPV() @@ -107,12 +115,24 @@ func SetupWithGenesisStateFn(t *testing.T, merge func(cdc codec.Codec, state Gen // generate genesis account senderPrivKey := secp256k1.GenPrivKey() - acc := authtypes.NewBaseAccount(senderPrivKey.PubKey().Address().Bytes(), senderPrivKey.PubKey(), 0, 0) + acc := authtypes.NewBaseAccount( + senderPrivKey.PubKey().Address().Bytes(), + senderPrivKey.PubKey(), + 0, + 0, + ) balance := banktypes.Balance{ Address: acc.GetAddress().String(), Coins: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100000000000000))), } - genesisState = genesisStateWithValSet(t, app, genesisState, valSet, []authtypes.GenesisAccount{acc}, balance) + genesisState = genesisStateWithValSet( + t, + app, + genesisState, + valSet, + []authtypes.GenesisAccount{acc}, + balance, + ) if merge != nil { genesisState = merge(app.appCodec, genesisState) @@ -181,24 +201,35 @@ func genesisStateWithValSet(t *testing.T, pkAny, err := codectypes.NewAnyWithValue(pk) require.NoError(t, err) validator := stakingtypes.Validator{ - OperatorAddress: sdk.ValAddress(val.Address).String(), - ConsensusPubkey: pkAny, - Jailed: false, - Status: stakingtypes.Bonded, - Tokens: bondAmt, - DelegatorShares: sdk.OneDec(), - Description: stakingtypes.Description{}, - UnbondingHeight: int64(0), - UnbondingTime: time.Unix(0, 0).UTC(), - Commission: stakingtypes.NewCommission(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()), + OperatorAddress: sdk.ValAddress(val.Address).String(), + ConsensusPubkey: pkAny, + Jailed: false, + Status: stakingtypes.Bonded, + Tokens: bondAmt, + DelegatorShares: sdk.OneDec(), + Description: stakingtypes.Description{}, + UnbondingHeight: int64(0), + UnbondingTime: time.Unix(0, 0).UTC(), + Commission: stakingtypes.NewCommission( + sdk.ZeroDec(), + sdk.ZeroDec(), + sdk.ZeroDec(), + ), MinSelfDelegation: sdk.ZeroInt(), } validators = append(validators, validator) - delegations = append(delegations, stakingtypes.NewDelegation(genAccs[0].GetAddress(), val.Address.Bytes(), sdk.OneDec())) + delegations = append( + delegations, + stakingtypes.NewDelegation(genAccs[0].GetAddress(), val.Address.Bytes(), sdk.OneDec()), + ) } // set validators and delegations - stakingGenesis := stakingtypes.NewGenesisState(stakingtypes.DefaultParams(), validators, delegations) + stakingGenesis := stakingtypes.NewGenesisState( + stakingtypes.DefaultParams(), + validators, + delegations, + ) genesisState[stakingtypes.ModuleName] = app.AppCodec().MustMarshalJSON(stakingGenesis) totalSupply := sdk.NewCoins() @@ -219,7 +250,13 @@ func genesisStateWithValSet(t *testing.T, }) // update total supply - bankGenesis := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, totalSupply, []banktypes.Metadata{}, []banktypes.SendEnabled{}) + bankGenesis := banktypes.NewGenesisState( + banktypes.DefaultGenesisState().Params, + balances, + totalSupply, + []banktypes.Metadata{}, + []banktypes.SendEnabled{}, + ) genesisState[banktypes.ModuleName] = app.AppCodec().MustMarshalJSON(bankGenesis) return genesisState @@ -229,7 +266,12 @@ func genesisStateWithValSet(t *testing.T, // that also act as delegators. For simplicity, each validator is bonded with a delegation // of one consensus engine unit (10^6) in the default token of the simapp from first genesis // account. A Nop logger is set in SimApp. -func SetupWithGenesisValSet(t *testing.T, valSet *tmtypes.ValidatorSet, genAccs []authtypes.GenesisAccount, balances ...banktypes.Balance) *SimApp { +func SetupWithGenesisValSet( + t *testing.T, + valSet *tmtypes.ValidatorSet, + genAccs []authtypes.GenesisAccount, + balances ...banktypes.Balance, +) *SimApp { t.Helper() app, genesisState := setup(true, 5) @@ -261,7 +303,11 @@ func SetupWithGenesisValSet(t *testing.T, valSet *tmtypes.ValidatorSet, genAccs // SetupWithGenesisAccounts initializes a new SimApp with the provided genesis // accounts and possible balances. -func SetupWithGenesisAccounts(t *testing.T, genAccs []authtypes.GenesisAccount, balances ...banktypes.Balance) *SimApp { +func SetupWithGenesisAccounts( + t *testing.T, + genAccs []authtypes.GenesisAccount, + balances ...banktypes.Balance, +) *SimApp { t.Helper() privVal := mock.NewPV() @@ -353,7 +399,12 @@ func createIncrementalAccounts(accNum int) []sdk.AccAddress { } // AddTestAddrsFromPubKeys adds the addresses into the SimApp providing only the public keys. -func AddTestAddrsFromPubKeys(app *SimApp, ctx sdk.Context, pubKeys []cryptotypes.PubKey, accAmt sdk.Int) { +func AddTestAddrsFromPubKeys( + app *SimApp, + ctx sdk.Context, + pubKeys []cryptotypes.PubKey, + accAmt sdk.Int, +) { initCoins := sdk.NewCoins(sdk.NewCoin(app.StakingKeeper.BondDenom(ctx), accAmt)) for _, pk := range pubKeys { @@ -369,11 +420,22 @@ func AddTestAddrs(app *SimApp, ctx sdk.Context, accNum int, accAmt sdk.Int) []sd // AddTestAddrsIncremental constructs and returns accNum amount of accounts with an // initial balance of accAmt in random order -func AddTestAddrsIncremental(app *SimApp, ctx sdk.Context, accNum int, accAmt sdk.Int) []sdk.AccAddress { +func AddTestAddrsIncremental( + app *SimApp, + ctx sdk.Context, + accNum int, + accAmt sdk.Int, +) []sdk.AccAddress { return addTestAddrs(app, ctx, accNum, accAmt, createIncrementalAccounts) } -func addTestAddrs(app *SimApp, ctx sdk.Context, accNum int, accAmt sdk.Int, strategy GenerateAccountStrategy) []sdk.AccAddress { +func addTestAddrs( + app *SimApp, + ctx sdk.Context, + accNum int, + accAmt sdk.Int, + strategy GenerateAccountStrategy, +) []sdk.AccAddress { testAddrs := strategy(accNum) initCoins := sdk.NewCoins(sdk.NewCoin(app.StakingKeeper.BondDenom(ctx), accAmt)) @@ -440,8 +502,15 @@ func CheckBalance(t *testing.T, app *SimApp, addr sdk.AccAddress, balances sdk.C // the parameter 'expPass' against the result. A corresponding result is // returned. func SignCheckDeliver( - t *testing.T, txCfg client.TxConfig, app *bam.BaseApp, header tmproto.Header, msgs []sdk.Msg, - chainID string, accNums, accSeqs []uint64, expSimPass, expPass bool, priv ...cryptotypes.PrivKey, + t *testing.T, + txCfg client.TxConfig, + app *bam.BaseApp, + header tmproto.Header, + msgs []sdk.Msg, + chainID string, + accNums, accSeqs []uint64, + expSimPass, expPass bool, + priv ...cryptotypes.PrivKey, ) (sdk.GasInfo, *sdk.Result, error) { tx, err := simtestutil.GenSignedMockTx( @@ -491,7 +560,14 @@ func SignCheckDeliver( // GenSequenceOfTxs generates a set of signed transactions of messages, such // that they differ only by having the sequence numbers incremented between // every transaction. -func GenSequenceOfTxs(txGen client.TxConfig, msgs []sdk.Msg, accNums []uint64, initSeqNums []uint64, numToGenerate int, priv ...cryptotypes.PrivKey) ([]sdk.Tx, error) { +func GenSequenceOfTxs( + txGen client.TxConfig, + msgs []sdk.Msg, + accNums []uint64, + initSeqNums []uint64, + numToGenerate int, + priv ...cryptotypes.PrivKey, +) ([]sdk.Tx, error) { txs := make([]sdk.Tx, numToGenerate) var err error for i := 0; i < numToGenerate; i++ { @@ -529,8 +605,12 @@ func CreateTestPubKeys(numPubKeys int) []cryptotypes.PubKey { // start at 10 to avoid changing 1 to 01, 2 to 02, etc for i := 100; i < (numPubKeys + 100); i++ { numString := strconv.Itoa(i) - buffer.WriteString("0B485CFC0EECC619440448436F8FC9DF40566F2369E72400281454CB552AF") // base pubkey string - buffer.WriteString(numString) // adding on final two digits to make pubkeys unique + buffer.WriteString( + "0B485CFC0EECC619440448436F8FC9DF40566F2369E72400281454CB552AF", + ) // base pubkey string + buffer.WriteString( + numString, + ) // adding on final two digits to make pubkeys unique publicKeys = append(publicKeys, NewPubKeyFromHex(buffer.String())) buffer.Reset() } @@ -564,7 +644,12 @@ func (ao EmptyAppOptions) Get(o string) interface{} { // // TODO: Instead of using the mint module account, which has the // permission of minting, create a "faucet" account. (@fdymylja) -func FundAccount(bankKeeper bankkeeper.Keeper, ctx sdk.Context, addr sdk.AccAddress, amounts sdk.Coins) error { +func FundAccount( + bankKeeper bankkeeper.Keeper, + ctx sdk.Context, + addr sdk.AccAddress, + amounts sdk.Coins, +) error { if err := bankKeeper.MintCoins(ctx, minttypes.ModuleName, amounts); err != nil { return err } @@ -578,7 +663,12 @@ func FundAccount(bankKeeper bankkeeper.Keeper, ctx sdk.Context, addr sdk.AccAddr // // TODO: Instead of using the mint module account, which has the // permission of minting, create a "faucet" account. (@fdymylja) -func FundModuleAccount(bankKeeper bankkeeper.Keeper, ctx sdk.Context, recipientMod string, amounts sdk.Coins) error { +func FundModuleAccount( + bankKeeper bankkeeper.Keeper, + ctx sdk.Context, + recipientMod string, + amounts sdk.Coins, +) error { if err := bankKeeper.MintCoins(ctx, minttypes.ModuleName, amounts); err != nil { return err } @@ -586,7 +676,13 @@ func FundModuleAccount(bankKeeper bankkeeper.Keeper, ctx sdk.Context, recipientM return bankKeeper.SendCoinsFromModuleToModule(ctx, minttypes.ModuleName, recipientMod, amounts) } -func QueryBalancesExec(t *testing.T, network Network, clientCtx client.Context, address string, extraArgs ...string) sdk.Coins { +func QueryBalancesExec( + t *testing.T, + network Network, + clientCtx client.Context, + address string, + extraArgs ...string, +) sdk.Coins { args := []string{ address, fmt.Sprintf("--%s=json", "output"), @@ -598,7 +694,14 @@ func QueryBalancesExec(t *testing.T, network Network, clientCtx client.Context, return result.Balances } -func QueryBalanceExec(t *testing.T, network Network, clientCtx client.Context, address string, denom string, extraArgs ...string) *sdk.Coin { +func QueryBalanceExec( + t *testing.T, + network Network, + clientCtx client.Context, + address string, + denom string, + extraArgs ...string, +) *sdk.Coin { args := []string{ address, fmt.Sprintf("--%s=%s", bankcli.FlagDenom, denom), @@ -611,7 +714,13 @@ func QueryBalanceExec(t *testing.T, network Network, clientCtx client.Context, a return result } -func QueryAccountExec(t *testing.T, network Network, clientCtx client.Context, address string, extraArgs ...string) authtypes.AccountI { +func QueryAccountExec( + t *testing.T, + network Network, + clientCtx client.Context, + address string, + extraArgs ...string, +) authtypes.AccountI { args := []string{ address, fmt.Sprintf("--%s=json", "output"), @@ -630,7 +739,13 @@ func QueryAccountExec(t *testing.T, network Network, clientCtx client.Context, a return account } -func MsgSendExec(t *testing.T, network Network, clientCtx client.Context, from, to, amount fmt.Stringer, extraArgs ...string) *ResponseTx { +func MsgSendExec( + t *testing.T, + network Network, + clientCtx client.Context, + from, to, amount fmt.Stringer, + extraArgs ...string, +) *ResponseTx { args := []string{from.String(), to.String(), amount.String()} args = append(args, extraArgs...) @@ -642,7 +757,11 @@ func QueryTx(t *testing.T, clientCtx client.Context, txHash string) abci.Respons return txResult } -func QueryTxWithHeight(t *testing.T, clientCtx client.Context, txHash string) (abci.ResponseDeliverTx, int64) { +func QueryTxWithHeight( + t *testing.T, + clientCtx client.Context, + txHash string, +) (abci.ResponseDeliverTx, int64) { txHashBz, err := hex.DecodeString(txHash) require.NoError(t, err, "query tx failed") From b43d5b81c1c9d65130180199f423cc622d9954d3 Mon Sep 17 00:00:00 2001 From: Dreamer <745124335@qq.com> Date: Wed, 24 May 2023 17:31:50 +0800 Subject: [PATCH 3/5] fix test error --- go.mod | 5 +--- go.sum | 14 ++++------- modules/token/client/cli/cli_test.go | 9 ++++--- .../token/client/testutil/grpc_query_test.go | 8 +++---- simapp/state.go | 11 ++++++--- simapp/test_helpers.go | 24 +++++++++++++------ 6 files changed, 40 insertions(+), 31 deletions(-) diff --git a/go.mod b/go.mod index 93045a5e..0b6a9461 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ module github.com/irisnet/irismod require ( cosmossdk.io/api v0.3.1 cosmossdk.io/math v1.0.0 - cosmossdk.io/simapp v0.0.0-20221216140705-ee8890cf30e7 + cosmossdk.io/simapp v0.0.0-20230426205644-8f6a94cd1f9f github.com/cometbft/cometbft v0.37.1 github.com/cometbft/cometbft-db v0.7.0 github.com/cosmos/cosmos-proto v1.0.0-beta.2 @@ -58,7 +58,6 @@ require ( github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/go-bip39 v1.0.0 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect - github.com/cosmos/gorocksdb v1.2.0 // indirect github.com/cosmos/iavl v0.20.0 // indirect github.com/cosmos/ledger-cosmos-go v0.12.1 // indirect github.com/cosmos/rosetta-sdk-go v0.10.0 // indirect @@ -140,8 +139,6 @@ require ( github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect github.com/tendermint/go-amino v0.16.0 // indirect - github.com/tendermint/tendermint v0.37.0-rc2 // indirect - github.com/tendermint/tm-db v0.6.7 // indirect github.com/tidwall/btree v1.6.0 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.0 // indirect diff --git a/go.sum b/go.sum index 1b7090cc..55ab2b19 100644 --- a/go.sum +++ b/go.sum @@ -198,8 +198,8 @@ cosmossdk.io/errors v1.0.0-beta.7 h1:gypHW76pTQGVnHKo6QBkb4yFOJjC+sUGRc5Al3Odj1w cosmossdk.io/errors v1.0.0-beta.7/go.mod h1:mz6FQMJRku4bY7aqS/Gwfcmr/ue91roMEKAmDUDpBfE= cosmossdk.io/math v1.0.0 h1:ro9w7eKx23om2tZz/VM2Pf+z2WAbGX1yDQQOJ6iGeJw= cosmossdk.io/math v1.0.0/go.mod h1:Ygz4wBHrgc7g0N+8+MrnTfS9LLn9aaTGa9hKopuym5k= -cosmossdk.io/simapp v0.0.0-20221216140705-ee8890cf30e7 h1:8uwZLyQ6NMZNT0janUI86Q4vF1sIIquSUsijmOkgmp8= -cosmossdk.io/simapp v0.0.0-20221216140705-ee8890cf30e7/go.mod h1:zvJ3aFHDzqQ6NvkCcCHyolr5Wh2BJ9Rg4qVcN1T6Re0= +cosmossdk.io/simapp v0.0.0-20230426205644-8f6a94cd1f9f h1:OWwslwrNrQugijHNTPJ5wZauuKqhaWIrc4z9bdhSXCY= +cosmossdk.io/simapp v0.0.0-20230426205644-8f6a94cd1f9f/go.mod h1:ddYlMm7XC7t5BaQojpkFQpv30tidC6PGTTMkb7kmbcA= cosmossdk.io/tools/rosetta v0.2.1 h1:ddOMatOH+pbxWbrGJKRAawdBkPYLfKXutK9IETnjYxw= cosmossdk.io/tools/rosetta v0.2.1/go.mod h1:Pqdc1FdvkNV3LcNIkYWt2RQY6IP1ge6YWZk8MhhO9Hw= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= @@ -328,8 +328,6 @@ github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= github.com/cosmos/gogoproto v1.4.8 h1:BrHKc6WFZt8+jRV71vKSQE+JrfF+JAnzrKo2VP7wIZ4= github.com/cosmos/gogoproto v1.4.8/go.mod h1:hnb0DIEWTv+wdNzNcqus5xCQXq5+CXauq1FJuurRfVY= -github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4Y= -github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= github.com/cosmos/iavl v0.20.0 h1:fTVznVlepH0KK8NyKq8w+U7c2L6jofa27aFX6YGlm38= github.com/cosmos/iavl v0.20.0/go.mod h1:WO7FyvaZJoH65+HFOsDir7xU9FWk2w9cHXNW1XHcl7A= github.com/cosmos/keyring v1.2.0 h1:8C1lBP9xhImmIabyXW4c3vFjjLiBdGCmfLUfeZlV1Yo= @@ -430,8 +428,8 @@ github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= 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.10.0 h1:I7mrTYv78z8k8VXa/qJlOlEXn/nBh+BF8dHX5nt/dr0= github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos= +github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= 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/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= @@ -440,8 +438,8 @@ github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= 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.7 h1:IcB+Aqpx/iMHu5Yooh7jEzJk1JZ7Pjtmys2ukPr7EeM= github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk= 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/gofrs/uuid v4.3.0+incompatible h1:CaSVZxm5B+7o45rtab4jC2G37WGYX1zQfuU2i6DSvnc= @@ -932,10 +930,6 @@ github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzH github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= -github.com/tendermint/tendermint v0.37.0-rc2 h1:2n1em+jfbhSv6QnBj8F6KHCpbIzZCB8KgcjidJUQNlY= -github.com/tendermint/tendermint v0.37.0-rc2/go.mod h1:uYQO9DRNPeZROa9X3hJOZpYcVREDC2/HST+EiU5g2+A= -github.com/tendermint/tm-db v0.6.7 h1:fE00Cbl0jayAoqlExN6oyQJ7fR/ZtoVOmvPJ//+shu8= -github.com/tendermint/tm-db v0.6.7/go.mod h1:byQDzFkZV1syXr/ReXS808NxA2xvyuuVgXOJ/088L6I= 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/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= diff --git a/modules/token/client/cli/cli_test.go b/modules/token/client/cli/cli_test.go index 2102f9d7..b0e5be3a 100644 --- a/modules/token/client/cli/cli_test.go +++ b/modules/token/client/cli/cli_test.go @@ -124,14 +124,16 @@ func (s *IntegrationTestSuite) TestToken() { sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), ), } + coinMintedStr := fmt.Sprintf("%d%s", mintAmount, symbol) txResult = tokentestutil.MintTokenExec( s.T(), s.network, clientCtx, from.String(), - symbol, - args...) + coinMintedStr, + args..., + ) s.Require().Equal(expectedCode, txResult.Code) balance = simapp.QueryBalanceExec( @@ -158,12 +160,13 @@ func (s *IntegrationTestSuite) TestToken() { ), } + coinBurntStr := fmt.Sprintf("%d%s", burnAmount, symbol) txResult = tokentestutil.BurnTokenExec( s.T(), s.network, clientCtx, from.String(), - symbol, + coinBurntStr, args...) s.Require().Equal(expectedCode, txResult.Code) diff --git a/modules/token/client/testutil/grpc_query_test.go b/modules/token/client/testutil/grpc_query_test.go index 04fda16d..d5c4d6fb 100644 --- a/modules/token/client/testutil/grpc_query_test.go +++ b/modules/token/client/testutil/grpc_query_test.go @@ -82,7 +82,7 @@ func (s *IntegrationTestSuite) TestToken() { ) //------test GetCmdQueryTokens()------------- - url := fmt.Sprintf("%s/irismod/token/tokens", baseURL) + url := fmt.Sprintf("%s/irismod/token/v1/tokens", baseURL) resp, err := testutil.GetRequest(url) respType := proto.Message(&v1.QueryTokensResponse{}) s.Require().NoError(err) @@ -91,7 +91,7 @@ func (s *IntegrationTestSuite) TestToken() { s.Require().Equal(2, len(tokensResp.Tokens)) //------test GetCmdQueryToken()------------- - url = fmt.Sprintf("%s/irismod/token/tokens/%s", baseURL, tokenSymbol) + url = fmt.Sprintf("%s/irismod/token/v1/tokens/%s", baseURL, tokenSymbol) resp, err = testutil.GetRequest(url) respType = proto.Message(&v1.QueryTokenResponse{}) var token v1.TokenI @@ -105,7 +105,7 @@ func (s *IntegrationTestSuite) TestToken() { s.Require().Equal(uint64(initialSupply), token.GetInitialSupply()) //------test GetCmdQueryFee()------------- - url = fmt.Sprintf("%s/irismod/token/tokens/%s/fees", baseURL, tokenSymbol) + url = fmt.Sprintf("%s/irismod/token/v1/tokens/%s/fees", baseURL, tokenSymbol) resp, err = testutil.GetRequest(url) respType = proto.Message(&v1.QueryFeesResponse{}) s.Require().NoError(err) @@ -116,7 +116,7 @@ func (s *IntegrationTestSuite) TestToken() { s.Require().Equal(expectedFeeResp, string(result)) //------test GetCmdQueryParams()------------- - url = fmt.Sprintf("%s/irismod/token/params", baseURL) + url = fmt.Sprintf("%s/irismod/token/v1/params", baseURL) resp, err = testutil.GetRequest(url) respType = proto.Message(&v1.QueryParamsResponse{}) s.Require().NoError(err) diff --git a/simapp/state.go b/simapp/state.go index 7ddd9ce2..efd9e85c 100644 --- a/simapp/state.go +++ b/simapp/state.go @@ -12,7 +12,6 @@ import ( tmtypes "github.com/cometbft/cometbft/types" sdkmath "cosmossdk.io/math" - simappparams "cosmossdk.io/simapp/params" "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" sdk "github.com/cosmos/cosmos-sdk/types" @@ -24,6 +23,12 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ) +// Simulation parameter constants +const ( + StakePerAccount = "stake_per_account" + InitiallyBondedValidators = "initially_bonded_validators" +) + // AppStateFn returns the initial application state using a genesis or the simulation parameters. // It panics if the user provides files for both of them. // If a file is not given for the genesis or the sim params, it creates a randomized one. @@ -171,11 +176,11 @@ func AppStateRandomizedFn( initialStake sdkmath.Int ) appParams.GetOrGenerate( - cdc, simappparams.StakePerAccount, &initialStake, r, + cdc, StakePerAccount, &initialStake, r, func(r *rand.Rand) { initialStake = sdkmath.NewInt(r.Int63n(1e12)) }, ) appParams.GetOrGenerate( - cdc, simappparams.InitiallyBondedValidators, &numInitiallyBonded, r, + cdc, InitiallyBondedValidators, &numInitiallyBonded, r, func(r *rand.Rand) { numInitiallyBonded = int64(r.Intn(300)) }, ) diff --git a/simapp/test_helpers.go b/simapp/test_helpers.go index d18554c1..866f575c 100644 --- a/simapp/test_helpers.go +++ b/simapp/test_helpers.go @@ -169,17 +169,27 @@ func NewConfig() network.Config { cfg.TxConfig = encCfg.TxConfig cfg.LegacyAmino = encCfg.Amino cfg.InterfaceRegistry = encCfg.InterfaceRegistry - cfg.AppConstructor = SimAppConstructor + cfg.AppConstructor = func(val network.ValidatorI) servertypes.Application { + return NewSimApp( + val.GetCtx().Logger, + dbm.NewMemDB(), + nil, + true, + EmptyAppOptions{}, + bam.SetMinGasPrices(val.GetAppConfig().MinGasPrices), + bam.SetChainID(cfg.ChainID), + ) + } cfg.GenesisState = NewDefaultGenesisState(cfg.Codec) return cfg } -func SimAppConstructor(val network.ValidatorI) servertypes.Application { - return NewSimApp( - val.GetCtx().Logger, dbm.NewMemDB(), nil, true, EmptyAppOptions{}, - bam.SetMinGasPrices(val.GetAppConfig().MinGasPrices), - ) -} +// func SimAppConstructor(val network.ValidatorI) servertypes.Application { +// return NewSimApp( +// val.GetCtx().Logger, dbm.NewMemDB(), nil, true, EmptyAppOptions{}, +// bam.SetMinGasPrices(val.GetAppConfig().MinGasPrices), +// ) +// } func genesisStateWithValSet(t *testing.T, app *SimApp, genesisState GenesisState, From 732117c1e14951150fbe626d884d37352c2a0a69 Mon Sep 17 00:00:00 2001 From: Dreamer <745124335@qq.com> Date: Wed, 24 May 2023 17:42:26 +0800 Subject: [PATCH 4/5] fix simulation error --- simapp/sim_bench_test.go | 21 ++++++++++++-- simapp/sim_test.go | 60 ++++++++++++++++++++++++++++++++++++---- 2 files changed, 73 insertions(+), 8 deletions(-) diff --git a/simapp/sim_bench_test.go b/simapp/sim_bench_test.go index f8a6f567..07c9e745 100644 --- a/simapp/sim_bench_test.go +++ b/simapp/sim_bench_test.go @@ -8,6 +8,7 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/stretchr/testify/require" + "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/server" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" @@ -48,7 +49,15 @@ func BenchmarkFullAppSimulation(b *testing.B) { appOptions[flags.FlagHome] = DefaultNodeHome appOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue - app := NewSimApp(logger, db, nil, true, appOptions, interBlockCacheOpt()) + app := NewSimApp( + logger, + db, + nil, + true, + appOptions, + interBlockCacheOpt(), + baseapp.SetChainID(config.ChainID), + ) // run randomized simulation _, simParams, simErr := simulation.SimulateFromSeed( @@ -108,7 +117,15 @@ func BenchmarkInvariants(b *testing.B) { appOptions[flags.FlagHome] = DefaultNodeHome appOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue - app := NewSimApp(logger, db, nil, true, appOptions, interBlockCacheOpt()) + app := NewSimApp( + logger, + db, + nil, + true, + appOptions, + interBlockCacheOpt(), + baseapp.SetChainID(config.ChainID), + ) // run randomized simulation _, simParams, simErr := simulation.SimulateFromSeed( diff --git a/simapp/sim_test.go b/simapp/sim_test.go index 05f313e2..724b550d 100644 --- a/simapp/sim_test.go +++ b/simapp/sim_test.go @@ -99,7 +99,15 @@ func TestFullAppSimulation(t *testing.T) { appOptions[flags.FlagHome] = DefaultNodeHome appOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue - app := NewSimApp(logger, db, nil, true, appOptions, fauxMerkleModeOpt) + app := NewSimApp( + logger, + db, + nil, + true, + appOptions, + fauxMerkleModeOpt, + baseapp.SetChainID(config.ChainID), + ) require.Equal(t, "SimApp", app.Name()) // run randomized simulation @@ -150,7 +158,15 @@ func TestAppImportExport(t *testing.T) { appOptions[flags.FlagHome] = DefaultNodeHome appOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue - app := NewSimApp(logger, db, nil, true, appOptions, fauxMerkleModeOpt) + app := NewSimApp( + logger, + db, + nil, + true, + appOptions, + fauxMerkleModeOpt, + baseapp.SetChainID(config.ChainID), + ) require.Equal(t, "SimApp", app.Name()) // Run randomized simulation @@ -196,7 +212,15 @@ func TestAppImportExport(t *testing.T) { require.NoError(t, os.RemoveAll(newDir)) }() - newApp := NewSimApp(log.NewNopLogger(), newDB, nil, true, appOptions, fauxMerkleModeOpt) + newApp := NewSimApp( + log.NewNopLogger(), + newDB, + nil, + true, + appOptions, + fauxMerkleModeOpt, + baseapp.SetChainID(config.ChainID), + ) require.Equal(t, "SimApp", newApp.Name()) var genesisState GenesisState @@ -317,7 +341,15 @@ func TestAppSimulationAfterImport(t *testing.T) { appOptions[flags.FlagHome] = DefaultNodeHome appOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue - app := NewSimApp(logger, db, nil, true, appOptions, fauxMerkleModeOpt) + app := NewSimApp( + logger, + db, + nil, + true, + appOptions, + fauxMerkleModeOpt, + baseapp.SetChainID(config.ChainID), + ) require.Equal(t, "SimApp", app.Name()) // Run randomized simulation @@ -368,7 +400,15 @@ func TestAppSimulationAfterImport(t *testing.T) { require.NoError(t, os.RemoveAll(newDir)) }() - newApp := NewSimApp(log.NewNopLogger(), newDB, nil, true, appOptions, fauxMerkleModeOpt) + newApp := NewSimApp( + log.NewNopLogger(), + newDB, + nil, + true, + appOptions, + fauxMerkleModeOpt, + baseapp.SetChainID(config.ChainID), + ) require.Equal(t, "SimApp", newApp.Name()) newApp.InitChain(abci.RequestInitChain{ @@ -422,7 +462,15 @@ func TestAppStateDeterminism(t *testing.T) { } db := dbm.NewMemDB() - app := NewSimApp(logger, db, nil, true, appOptions, interBlockCacheOpt()) + app := NewSimApp( + logger, + db, + nil, + true, + appOptions, + interBlockCacheOpt(), + baseapp.SetChainID(config.ChainID), + ) fmt.Printf( "running non-determinism simulation; seed %d: %d/%d, attempt: %d/%d\n", From 5da3f7bd01b8f88c3ab9026b48f0c1bcb9d7c251 Mon Sep 17 00:00:00 2001 From: Dreamer <745124335@qq.com> Date: Tue, 6 Jun 2023 16:43:36 +0800 Subject: [PATCH 5/5] fix farm rest test --- .../farm/client/testutil/grpc_query_test.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/modules/farm/client/testutil/grpc_query_test.go b/modules/farm/client/testutil/grpc_query_test.go index fb627e90..7119c194 100644 --- a/modules/farm/client/testutil/grpc_query_test.go +++ b/modules/farm/client/testutil/grpc_query_test.go @@ -56,7 +56,11 @@ func (s *IntegrationTestSuite) TestRest() { globalFlags := []string{ fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf( + "--%s=%s", + flags.FlagFees, + sdk.NewCoins(sdk.NewCoin(s.network.BondDenom, sdk.NewInt(10))).String(), + ), } args := []string{ @@ -77,7 +81,11 @@ func (s *IntegrationTestSuite) TestRest() { args..., ) - poolId := s.network.GetAttribute(farmtypes.EventTypeCreatePool, farmtypes.AttributeValuePoolId, txResult.Events) + poolId := s.network.GetAttribute( + farmtypes.EventTypeCreatePool, + farmtypes.AttributeValuePoolId, + txResult.Events, + ) expectedContents := farmtypes.FarmPoolEntry{ Id: poolId, Description: description, @@ -128,6 +136,12 @@ func (s *IntegrationTestSuite) TestRest() { s.Require().NoError(err) s.Require().NoError(clientCtx.Codec.UnmarshalJSON(resp, queryFarmerRespType)) farmer := queryFarmerRespType.(*farmtypes.QueryFarmerResponse) + + if farmer.Height-txResult.Height > 0 { + expectFarmer.PendingReward = rewardPerBlock.MulInt( + sdk.NewInt((farmer.Height - txResult.Height)), + ) + } s.Require().EqualValues(expectFarmer, *farmer.List[0]) }