diff --git a/.env b/.env index da7aa6deaf..399b76c9eb 100644 --- a/.env +++ b/.env @@ -6,6 +6,7 @@ ROOT_DIR=${AKASH_ROOT} AKASH_DEVCACHE_BASE=${AKASH_ROOT}/.cache AKASH_DEVCACHE=${AKASH_DEVCACHE_BASE} AKASH_DEVCACHE_BIN=${AKASH_DEVCACHE}/bin +AKASH_DEVCACHE_LIB=${AKASH_DEVCACHE}/lib AKASH_DEVCACHE_INCLUDE=${AKASH_DEVCACHE}/include AKASH_DEVCACHE_VERSIONS=${AKASH_DEVCACHE}/versions AKASH_DEVCACHE_NODE_MODULES=${AKASH_DEVCACHE} diff --git a/.envrc b/.envrc index 9ea99da26f..32a57a9a33 100644 --- a/.envrc +++ b/.envrc @@ -99,8 +99,8 @@ export GOTOOLCHAIN export GOTOOLCHAIN_SEMVER export GOWORK -PATH_add "$AKASH_DEVCACHE_NODE_BIN" PATH_add "$AKASH_DEVCACHE_BIN" +PATH_add "$AKASH_DEVCACHE_NODE_BIN" AKASH_DIRENV_SET=1 AKASH=$AKASH_DEVCACHE_BIN/akash diff --git a/.github/actions/setup-ubuntu/action.yaml b/.github/actions/setup-ubuntu/action.yaml index d55423b38c..79f62fdb7d 100644 --- a/.github/actions/setup-ubuntu/action.yaml +++ b/.github/actions/setup-ubuntu/action.yaml @@ -14,7 +14,7 @@ runs: - name: Install dependencies # Shell must explicitly specify the shell for each step. https://github.com/orgs/community/discussions/18597 shell: bash - run: sudo apt install -y make direnv unzip lz4 wget curl npm jq pv coreutils + run: sudo apt install -y make direnv unzip lz4 wget curl npm jq pv coreutils musl-tools - name: Setup npm uses: actions/setup-node@v4 with: diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 0411e53f7d..dde5530d8e 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -47,7 +47,7 @@ jobs: uses: actions/checkout@v4 - name: Setup environment uses: ./.github/actions/setup-ubuntu - - run: make bins + - run: BUILD_OPTIONS=static-link make bins - run: make docker-image tests: diff --git a/.goreleaser-docker.yaml b/.goreleaser-docker.yaml index 224fcf3c8a..158b6bab09 100644 --- a/.goreleaser-docker.yaml +++ b/.goreleaser-docker.yaml @@ -20,10 +20,10 @@ builds: - "-tags={{ .Env.BUILD_TAGS }}" - -trimpath ldflags: - - "{{ .Env.BUILD_VARS }}" - - "{{ .Env.STRIP_FLAGS }}" - - "-linkmode={{ .Env.LINKMODE }}" - - -extldflags "-lc -lrt -lpthread --static" + - "{{ .Env.BUILD_LDFLAGS }}" + - -s -w + - -linkmode=external + - -extldflags "-L./.cache/lib -lwasmvm_muslc.x86_64 -Wl,-z,muldefs -lm -lrt -lc -static" - id: akash-linux-arm64 binary: akash main: ./cmd/akash @@ -39,12 +39,12 @@ builds: - "-tags={{ .Env.BUILD_TAGS }}" - -trimpath ldflags: - - "{{ .Env.BUILD_VARS }}" - - "{{ .Env.STRIP_FLAGS }}" - - "-linkmode={{ .Env.LINKMODE }}" - - -extldflags "-lc -lrt -lpthread --static" + - "{{ .Env.BUILD_LDFLAGS }}" + - -s -w + - -linkmode=external + - -extldflags "-L./.cache/lib -lwasmvm_muslc.aarch64 -Wl,-z,muldefs -lm -lrt -lc -static" dockers: - - dockerfile: _build/Dockerfile.akash + - dockerfile: _build/akash.Dockerfile use: buildx goarch: amd64 goos: linux @@ -59,7 +59,7 @@ dockers: - --label=org.opencontainers.image.revision={{ .FullCommit }} image_templates: - '{{ .Env.DOCKER_IMAGE }}:latest-amd64' - - dockerfile: _build/Dockerfile.akash + - dockerfile: _build/akash.Dockerfile use: buildx goarch: arm64 goos: linux diff --git a/.goreleaser-test-bins.yaml b/.goreleaser-test-bins.yaml index 3f484f6513..c67dde02a1 100644 --- a/.goreleaser-test-bins.yaml +++ b/.goreleaser-test-bins.yaml @@ -16,14 +16,16 @@ builds: env: - CC=o64-clang - CXX=o64-clang++ + - CGO_CFLAGS=-mmacosx-version-min=10.12 + - CGO_LDFLAGS=-L./.cache/lib -mmacosx-version-min=10.12 flags: - "-mod={{ .Env.MOD }}" - - "-tags={{ .Env.BUILD_TAGS }}" + - "-tags={{ .Env.BUILD_TAGS }} static_wasm" - -trimpath ldflags: - - "{{ .Env.BUILD_VARS }}" - - "{{ .Env.STRIP_FLAGS }}" - - "-linkmode={{ .Env.LINKMODE }}" + - "{{ .Env.BUILD_LDFLAGS }}" + - -s -w + - -linkmode=external - id: akash-darwin-arm64 binary: akash main: ./cmd/akash @@ -34,14 +36,16 @@ builds: env: - CC=oa64-clang - CXX=oa64-clang++ + - CGO_CFLAGS=-mmacosx-version-min=10.12 + - CGO_LDFLAGS=-L./.cache/lib -mmacosx-version-min=10.12 flags: - "-mod={{ .Env.MOD }}" - - "-tags={{ .Env.BUILD_TAGS }}" + - "-tags={{ .Env.BUILD_TAGS }} static_wasm" - -trimpath ldflags: - - "{{ .Env.BUILD_VARS }}" - - "{{ .Env.STRIP_FLAGS }}" - - "-linkmode={{ .Env.LINKMODE }}" + - "{{ .Env.BUILD_LDFLAGS }}" + - -s -w + - -linkmode=external - id: akash-linux-amd64 binary: akash main: ./cmd/akash @@ -57,10 +61,10 @@ builds: - "-tags={{ .Env.BUILD_TAGS }}" - -trimpath ldflags: - - "{{ .Env.BUILD_VARS }}" - - "{{ .Env.STRIP_FLAGS }}" - - "-linkmode={{ .Env.LINKMODE }}" - - -extldflags "-lc -lrt -lpthread --static" + - "{{ .Env.BUILD_LDFLAGS }}" + - -s -w + - -linkmode=external + - -extldflags "-L./.cache/lib -lwasmvm_muslc.x86_64 -Wl,-z,muldefs -lm -lrt -lc -static" - id: akash-linux-arm64 binary: akash main: ./cmd/akash @@ -76,10 +80,10 @@ builds: - "-tags={{ .Env.BUILD_TAGS }}" - -trimpath ldflags: - - "{{ .Env.BUILD_VARS }}" - - "{{ .Env.STRIP_FLAGS }}" - - "-linkmode={{ .Env.LINKMODE }}" - - -extldflags "-lc -lrt -lpthread --static" + - "{{ .Env.BUILD_LDFLAGS }}" + - -s -w + - -linkmode=external + - -extldflags "-L./.cache/lib -lwasmvm_muslc.aarch64 -Wl,-z,muldefs -lm -lrt -lc -static" universal_binaries: - id: akash-darwin-universal ids: diff --git a/.goreleaser.yaml b/.goreleaser.yaml index a90e84103e..8eeb4580f4 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -16,14 +16,16 @@ builds: env: - CC=o64-clang - CXX=o64-clang++ + - CGO_CFLAGS=-mmacosx-version-min=10.12 flags: - "-mod={{ .Env.MOD }}" - - "-tags={{ .Env.BUILD_TAGS }}" + - "-tags={{ .Env.BUILD_TAGS }} static_wasm" - -trimpath ldflags: - - "{{ .Env.BUILD_VARS }}" - - "{{ .Env.STRIP_FLAGS }}" - - "-linkmode={{ .Env.LINKMODE }}" + - "{{ .Env.BUILD_LDFLAGS }}" + - -s -w + - -linkmode=external + - -extldflags "-L./.cache/lib -mmacosx-version-min=10.12" - id: akash-darwin-arm64 binary: akash main: ./cmd/akash @@ -34,14 +36,16 @@ builds: env: - CC=oa64-clang - CXX=oa64-clang++ + - CGO_CFLAGS=-mmacosx-version-min=10.12 flags: - "-mod={{ .Env.MOD }}" - - "-tags={{ .Env.BUILD_TAGS }}" + - "-tags={{ .Env.BUILD_TAGS }} static_wasm" - -trimpath ldflags: - - "{{ .Env.BUILD_VARS }}" - - "{{ .Env.STRIP_FLAGS }}" - - "-linkmode={{ .Env.LINKMODE }}" + - "{{ .Env.BUILD_LDFLAGS }}" + - -s -w + - -linkmode=external + - -extldflags "-L./.cache/lib -mmacosx-version-min=10.12" - id: akash-linux-amd64 binary: akash main: ./cmd/akash @@ -57,10 +61,10 @@ builds: - "-tags={{ .Env.BUILD_TAGS }}" - -trimpath ldflags: - - "{{ .Env.BUILD_VARS }}" - - "{{ .Env.STRIP_FLAGS }}" - - "-linkmode={{ .Env.LINKMODE }}" - - -extldflags "-lc -lrt -lpthread --static" + - "{{ .Env.BUILD_LDFLAGS }}" + - -s -w + - -linkmode=external + - -extldflags "-L./.cache/lib -lwasmvm_muslc.x86_64 -Wl,-z,muldefs -lm -lrt -lc -static" - id: akash-linux-arm64 binary: akash main: ./cmd/akash @@ -76,10 +80,10 @@ builds: - "-tags={{ .Env.BUILD_TAGS }}" - -trimpath ldflags: - - "{{ .Env.BUILD_VARS }}" - - "{{ .Env.STRIP_FLAGS }}" - - "-linkmode={{ .Env.LINKMODE }}" - - -extldflags "-lc -lrt -lpthread --static" + - "{{ .Env.BUILD_LDFLAGS }}" + - -s -w + - -linkmode=external + - -extldflags "-L./.cache/lib -lwasmvm_muslc.aarch64 -Wl,-z,muldefs -lm -lrt -lc -static" universal_binaries: - id: akash-darwin-universal ids: @@ -117,7 +121,7 @@ checksum: name_template: "akash_{{ .Version }}_checksums.txt" dockers: - - dockerfile: _build/Dockerfile.akash + - dockerfile: _build/akash.Dockerfile use: buildx goarch: amd64 goos: linux @@ -134,7 +138,7 @@ dockers: - '{{ .Env.DOCKER_IMAGE }}:{{ .ShortCommit }}-amd64' - '{{ .Env.DOCKER_IMAGE }}:{{ replace .Version "+" "-" }}-amd64' - '{{ .Env.DOCKER_IMAGE }}:{{if eq .Env.STABLE "true"}}stable{{else}}latest{{end}}-amd64' - - dockerfile: _build/Dockerfile.akash + - dockerfile: _build/akash.Dockerfile use: buildx goarch: arm64 goos: linux diff --git a/Makefile b/Makefile index f8a0343741..ae9b8925eb 100644 --- a/Makefile +++ b/Makefile @@ -2,10 +2,6 @@ APP_DIR := ./app GOBIN ?= $(shell go env GOPATH)/bin -KIND_APP_IP ?= $(shell make -sC _run/kube kind-k8s-ip) -KIND_APP_PORT ?= $(shell make -sC _run/kube app-http-port) -KIND_VARS ?= KUBE_INGRESS_IP="$(KIND_APP_IP)" KUBE_INGRESS_PORT="$(KIND_APP_PORT)" - include make/init.mk .DEFAULT_GOAL := bins @@ -24,44 +20,69 @@ IS_PREREL := $(shell $(ROOT_DIR)/script/is_prerelease.sh "$(RELEASE_ IS_MAINNET := $(shell $(ROOT_DIR)/script/mainnet-from-tag.sh "$(RELEASE_TAG)" && echo "true" || echo "false") IS_STABLE ?= false -GO_LINKMODE ?= external -GOMOD ?= readonly -BUILD_TAGS ?= osusergo,netgo,ledger -GORELEASER_STRIP_FLAGS ?= - ifeq ($(IS_MAINNET), true) ifeq ($(IS_PREREL), false) IS_STABLE := true endif endif +GOMOD ?= readonly + +ifneq ($(UNAME_OS),Darwin) +BUILD_OPTIONS ?= static-link +endif + +BUILD_TAGS := osusergo netgo ledger muslc gcc +DB_BACKEND := goleveldb +BUILD_FLAGS := + +GORELEASER_STRIP_FLAGS ?= + +ifeq (cleveldb,$(findstring cleveldb,$(BUILD_OPTIONS))) + DB_BACKEND=cleveldb +else ifeq (rocksdb,$(findstring rocksdb,$(BUILD_OPTIONS))) + DB_BACKEND=rocksdb +else ifeq (goleveldb,$(findstring goleveldb,$(BUILD_OPTIONS))) + DB_BACKEND=goleveldb +endif + ifneq (,$(findstring cgotrace,$(BUILD_OPTIONS))) - BUILD_TAGS := $(BUILD_TAGS),cgotrace + BUILD_TAGS += cgotrace endif -GORELEASER_BUILD_VARS := \ --X github.com/cosmos/cosmos-sdk/version.Name=akash \ --X github.com/cosmos/cosmos-sdk/version.AppName=akash \ --X github.com/cosmos/cosmos-sdk/version.BuildTags=\"$(BUILD_TAGS)\" \ --X github.com/cosmos/cosmos-sdk/version.Version=$(RELEASE_TAG) \ --X github.com/cosmos/cosmos-sdk/version.Commit=$(GIT_HEAD_COMMIT_LONG) +build_tags := $(strip $(BUILD_TAGS)) +build_tags_cs := $(subst $(WHITESPACE),$(COMMA),$(build_tags)) -ldflags = -linkmode=$(GO_LINKMODE) -X github.com/cosmos/cosmos-sdk/version.Name=akash \ +ldflags := -X github.com/cosmos/cosmos-sdk/version.Name=akash \ -X github.com/cosmos/cosmos-sdk/version.AppName=akash \ --X github.com/cosmos/cosmos-sdk/version.BuildTags="$(BUILD_TAGS)" \ +-X github.com/cosmos/cosmos-sdk/version.BuildTags="$(build_tags_cs)" \ -X github.com/cosmos/cosmos-sdk/version.Version=$(shell git describe --tags | sed 's/^v//') \ --X github.com/cosmos/cosmos-sdk/version.Commit=$(GIT_HEAD_COMMIT_LONG) +-X github.com/cosmos/cosmos-sdk/version.Commit=$(GIT_HEAD_COMMIT_LONG) \ +-X github.com/cosmos/cosmos-sdk/types.DBBackend=$(DB_BACKEND) + +GORELEASER_LDFLAGS := $(ldflags) + +ldflags += -linkmode=external + +ifeq (static-link,$(findstring static-link,$(BUILD_OPTIONS))) + ldflags += -extldflags "-L$(AKASH_DEVCACHE_LIB) -lm -Wl,-z,muldefs -static" +else + ldflags += -extldflags "-L$(AKASH_DEVCACHE_LIB)" +endif # check for nostrip option ifeq (,$(findstring nostrip,$(BUILD_OPTIONS))) - ldflags += -s -w - GORELEASER_STRIP_FLAGS += -s -w + ldflags += -s -w + BUILD_FLAGS += -trimpath endif ldflags += $(LDFLAGS) ldflags := $(strip $(ldflags)) -BUILD_FLAGS := -mod=$(GOMOD) -tags='$(BUILD_TAGS)' -ldflags '$(ldflags)' +GORELEASER_TAGS := $(BUILD_TAGS) +GORELEASER_FLAGS := $(BUILD_FLAGS) -mod=$(GOMOD) -tags='$(build_tags)' + +BUILD_FLAGS += -mod=$(GOMOD) -tags='$(build_tags_cs)' -ldflags '$(ldflags)' .PHONY: all all: build bins diff --git a/_build/Dockerfile.akash b/_build/akash.Dockerfile similarity index 100% rename from _build/Dockerfile.akash rename to _build/akash.Dockerfile diff --git a/_build/Dockerfile.test b/_build/test.Dockerfile similarity index 100% rename from _build/Dockerfile.test rename to _build/test.Dockerfile diff --git a/_run/.env b/_run/.env new file mode 100644 index 0000000000..2ce77d5898 --- /dev/null +++ b/_run/.env @@ -0,0 +1,7 @@ +AKASH_KEYRING_BACKEND=test +AKASH_GAS_ADJUSTMENT=2 +AKASH_CHAIN_ID=local +AKASH_YES=true +AKASH_GAS_PRICES=0.025uakt +AKASH_GAS=auto +AKASH_NODE=http://localhost:26657 diff --git a/_run/.envrc b/_run/.envrc new file mode 100644 index 0000000000..5d87c0e683 --- /dev/null +++ b/_run/.envrc @@ -0,0 +1,11 @@ +source_up .envrc + +if ! has grpcurl ; then + echo -e "\033[31mgrpcurl is not installed"; exit 1 +fi + +if ! has tqdm ; then + echo -e "\033[31mtqdm is not installed. https://github.com/tqdm/tqdm"; exit 1 +fi + +dotenv .env diff --git a/_run/.envrc_run b/_run/.envrc_run new file mode 100644 index 0000000000..3c3ace4a66 --- /dev/null +++ b/_run/.envrc_run @@ -0,0 +1,8 @@ +source_up .envrc + +AKASH_RUN_NAME=$(basename "$(pwd)") +AKASH_RUN_DIR="${AKASH_RUN}/${AKASH_RUN_NAME}" + +export AKASH_HOME="${AKASH_RUN_DIR}/.akash" +export AKASH_RUN_NAME +export AKASH_RUN_DIR diff --git a/_run/common-base.mk b/_run/common-base.mk new file mode 100644 index 0000000000..521103c216 --- /dev/null +++ b/_run/common-base.mk @@ -0,0 +1,29 @@ +include $(abspath $(CURDIR)/../../make/init.mk) + +ifeq ($(AKASH_RUN_NAME),) +$(error "AKASH_RUN_NAME is not set") +endif + +ifeq ($(AKASH_RUN_DIR),) +$(error "AKASH_RUN_DIR is not set") +endif + +ifneq ($(AKASH_HOME),) +ifneq ($(DIRENV_FILE),$(CURDIR)/.envrc) +$(error "AKASH_HOME is set by the upper dir (probably in ~/.bashrc|~/.zshrc), \ +but direnv does not seem to be configured. \ +Ensure direnv is installed and hooked to your shell profile. Refer to the documentation for details. \ +") +endif +else +$(error "AKASH_HOME is not set") +endif + +.PHONY: akash +akash: +ifneq ($(SKIP_BUILD), true) + make -C $(AKASH_ROOT) akash +endif + +.PHONY: bins +bins: akash diff --git a/_run/common-commands.mk b/_run/common-commands.mk new file mode 100644 index 0000000000..5166f723f5 --- /dev/null +++ b/_run/common-commands.mk @@ -0,0 +1,47 @@ +KEY_NAME ?= main + +.PHONY: multisig-send +multisig-send: + $(AKASH) tx send \ + "$(shell $(AKASH) $(KEY_OPTS) keys show "$(MULTISIG_KEY)" -a)" \ + "$(shell $(AKASH) $(KEY_OPTS) keys show "$(KEY_NAME)" -a)" \ + 1000000uakt \ + --generate-only \ + > "$(AKASH_HOME)/multisig-tx.json" + $(AKASH) tx sign \ + "$(AKASH_HOME)/multisig-tx.json" \ + --multisig "$(shell $(AKASH) $(KEY_OPTS) keys show "$(MULTISIG_KEY)" -a)" \ + --from "main" \ + > "$(AKASH_HOME)/multisig-sig-main.json" + $(AKASH) tx sign \ + "$(AKASH_HOME)/multisig-tx.json" \ + --multisig "$(shell $(AKASH) $(KEY_OPTS) keys show "$(MULTISIG_KEY)" -a)" \ + --from "other" \ + > "$(AKASH_HOME)/multisig-sig-other.json" + $(AKASH) tx multisign \ + "$(AKASH_HOME)/multisig-tx.json" \ + "$(MULTISIG_KEY)" \ + "$(AKASH_HOME)/multisig-sig-main.json" \ + "$(AKASH_HOME)/multisig-sig-other.json" \ + > "$(AKASH_HOME)/multisig-final.json" + $(AKASH) $(CHAIN_OPTS) tx broadcast "$(AKASH_HOME)/multisig-final.json" + +.PHONY: akash-node-ready +akash-node-ready: SHELL=$(BASH_PATH) +akash-node-ready: + @( \ + max_retry=15; \ + counter=0; \ + while [[ $$counter -lt $$max_retry ]]; do \ + read block < <(curl -s $(AKASH_NODE)/status | jq -r '.result.sync_info.latest_block_height' 2> /dev/null); \ + if [[ $$? -ne 0 || $$block -lt 1 ]]; then \ + echo "unable to get node status. sleep for 1s"; \ + ((counter++)); \ + sleep 1; \ + else \ + echo "latest block height: $${block}"; \ + exit 0; \ + fi \ + done; \ + exit 1 \ + ) diff --git a/_run/common.mk b/_run/common.mk new file mode 100644 index 0000000000..d7422131fa --- /dev/null +++ b/_run/common.mk @@ -0,0 +1,143 @@ +OPTIONS ?= + +SKIP_BUILD := false + +# check for nostrip option +ifneq (,$(findstring nobuild,$(OPTIONS))) + SKIP_BUILD := true +endif + +include ../common-base.mk + +# https://stackoverflow.com/a/7531247 +# https://www.gnu.org/software/make/manual/make.html#Flavors +null := +space := $(null) # +comma := , + +export AKASH_KEYRING_BACKEND = test +export AKASH_GAS_ADJUSTMENT = 2 +export AKASH_CHAIN_ID = local +export AKASH_YES = true +export AKASH_GAS_PRICES = 0.025uakt +export AKASH_GAS = auto +export AKASH_NODE = http://localhost:26657 + +AKASH_INIT := $(AKASH_RUN_DIR)/.akash-init + +KEY_OPTS := --keyring-backend=$(AKASH_KEYRING_BACKEND) +GENESIS_PATH := $(AKASH_HOME)/config/genesis.json + +CHAIN_MIN_DEPOSIT := 10000000000000 +CHAIN_ACCOUNT_DEPOSIT := $(shell echo $$(($(CHAIN_MIN_DEPOSIT) * 10))) +CHAIN_VALIDATOR_DELEGATE := $(shell echo $$(($(CHAIN_MIN_DEPOSIT) / 2))) +CHAIN_TOKEN_DENOM := uakt + +KEY_NAMES := main provider validator other + +MULTISIG_KEY := msig +MULTISIG_SIGNERS := main other + +GENESIS_ACCOUNTS := $(KEY_NAMES) $(MULTISIG_KEY) + +CLIENT_CERTS := main validator other +SERVER_CERTS := provider + +.PHONY: init +init: bins akash-init + +$(AP_RUN_DIR): + mkdir -p $@ + +$(AKASH_HOME): + mkdir -p $@ + +$(AKASH_INIT): $(AKASH_HOME) client-init node-init + touch $@ + +.INTERMEDIATE: akash-init +akash-init: $(AKASH_INIT) + +.INTERMEDIATE: client-init +client-init: client-init-keys + +.INTERMEDIATE: client-init-keys +client-init-keys: $(patsubst %,client-init-key-%,$(KEY_NAMES)) client-init-key-multisig + +.INTERMEDIATE: $(patsubst %,client-init-key-%,$(KEY_NAMES)) +client-init-key-%: + $(AKASH) keys add "$(@:client-init-key-%=%)" + +.INTERMEDIATE: client-init-key-multisig +client-init-key-multisig: + $(AKASH) keys add \ + "$(MULTISIG_KEY)" \ + --multisig "$(subst $(space),$(comma),$(strip $(MULTISIG_SIGNERS)))" \ + --multisig-threshold 2 + +.NOTPARALLEL: node-init +.INTERMEDIATE: node-init +node-init: node-init-genesis node-init-genesis-accounts node-init-genesis-certs node-init-gentx node-init-finalize + +.INTERMEDIATE: node-init-genesis +node-init-genesis: + $(AKASH) genesis init node0 + cp "$(GENESIS_PATH)" "$(GENESIS_PATH).orig" + cat "$(GENESIS_PATH).orig" | \ + jq -M '.app_state.gov.voting_params.voting_period = "30s"' | \ + jq -rM '(..|objects|select(has("denom"))).denom |= "$(CHAIN_TOKEN_DENOM)"' | \ + jq -rM '(..|objects|select(has("bond_denom"))).bond_denom |= "$(CHAIN_TOKEN_DENOM)"' | \ + jq -rM '(..|objects|select(has("mint_denom"))).mint_denom |= "$(CHAIN_TOKEN_DENOM)"' > \ + "$(GENESIS_PATH)" + +.INTERMEDIATE: node-init-genesis-certs +node-init-genesis-certs: $(patsubst %,node-init-genesis-client-cert-%,$(CLIENT_CERTS)) $(patsubst %,node-init-genesis-server-cert-%,$(SERVER_CERTS)) + +.INTERMEDIATE: $(patsubst %,node-init-genesis-client-cert-%,$(CLIENT_CERTS)) +node-init-genesis-client-cert-%: + $(AKASH) tx cert generate client --from=$* + $(AKASH) tx cert publish client --to-genesis=true --from=$* + +.INTERMEDIATE: $(patsubst %,node-init-genesis-server-cert-%,$(SERVER_CERTS)) +node-init-genesis-server-cert-%: + $(AKASH) tx cert generate server localhost akash-provider.localhost --from=$* + $(AKASH) tx cert publish server --to-genesis=true --from=$* + +.INTERMEDIATE: node-init-genesis-accounts +node-init-genesis-accounts: $(patsubst %,node-init-genesis-account-%,$(GENESIS_ACCOUNTS)) + $(AKASH) genesis validate + +.INTERMEDIATE: $(patsubst %,node-init-genesis-account-%,$(GENESIS_ACCOUNTS)) +node-init-genesis-account-%: + $(AKASH) genesis add-account \ + "$(shell $(AKASH) $(KEY_OPTS) keys show "$(@:node-init-genesis-account-%=%)" -a)" \ + "$(CHAIN_MIN_DEPOSIT)$(CHAIN_TOKEN_DENOM)" + +.INTERMEDIATE: node-init-gentx +node-init-gentx: + $(AKASH) genesis gentx validator "$(CHAIN_VALIDATOR_DELEGATE)$(CHAIN_TOKEN_DENOM)" --min-self-delegation=1 --gas=auto --gas-prices=0.025uakt + +.INTERMEDIATE: node-init-finalize +node-init-finalize: + $(AKASH) genesis collect + $(AKASH) genesis validate + +.PHONY: node-run +node-run: + $(AKASH) start --minimum-gas-prices=$(AKASH_GAS_PRICES) + +.PHONY: node-status +node-status: + $(AKASH) status + +.PHONY: rest-server-run +rest-server-run: + $(AKASH) rest-server + +.PHONY: clean +clean: clean-$(AKASH_RUN_NAME) + rm -rf "$(AKASH_RUN)/$(AKASH_RUN_NAME)" + +.PHONY: rosetta-run +rosetta-run: + $(AKASH) rosetta --addr localhost:8080 --grpc localhost:9090 --network=$(AKASH_CHAIN_ID) --blockchain=akash diff --git a/_run/node/.envrc b/_run/node/.envrc new file mode 120000 index 0000000000..a4526206d7 --- /dev/null +++ b/_run/node/.envrc @@ -0,0 +1 @@ +../.envrc_run \ No newline at end of file diff --git a/_run/node/.gitignore b/_run/node/.gitignore new file mode 100644 index 0000000000..e934adfd1b --- /dev/null +++ b/_run/node/.gitignore @@ -0,0 +1 @@ +cache/ diff --git a/_run/node/Makefile b/_run/node/Makefile new file mode 100644 index 0000000000..bce7e8a5a7 --- /dev/null +++ b/_run/node/Makefile @@ -0,0 +1,5 @@ +include ../common.mk +include ../common-commands.mk + +.PHONY: clean-node +clean-node: diff --git a/app/app.go b/app/app.go index 9d5af9848c..29c25a32cc 100644 --- a/app/app.go +++ b/app/app.go @@ -11,8 +11,6 @@ import ( "github.com/gorilla/mux" "github.com/rakyll/statik/fs" "github.com/spf13/cast" - emodule "pkg.akt.dev/go/node/escrow/module" - "pkg.akt.dev/go/sdkutil" abci "github.com/cometbft/cometbft/abci/types" tmjson "github.com/cometbft/cometbft/libs/json" @@ -27,6 +25,9 @@ import ( evidencetypes "cosmossdk.io/x/evidence/types" "cosmossdk.io/x/feegrant" upgradetypes "cosmossdk.io/x/upgrade/types" + "github.com/CosmWasm/wasmd/x/wasm" + wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" + wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" dbm "github.com/cosmos/cosmos-db" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" @@ -64,14 +65,17 @@ import ( audittypes "pkg.akt.dev/go/node/audit/v1" certtypes "pkg.akt.dev/go/node/cert/v1" deploymenttypes "pkg.akt.dev/go/node/deployment/v1" + emodule "pkg.akt.dev/go/node/escrow/module" markettypes "pkg.akt.dev/go/node/market/v1" providertypes "pkg.akt.dev/go/node/provider/v1beta4" taketypes "pkg.akt.dev/go/node/take/v1" + "pkg.akt.dev/go/sdkutil" - apptypes "pkg.akt.dev/node/app/types" - utypes "pkg.akt.dev/node/upgrades/types" + apptypes "pkg.akt.dev/node/v2/app/types" + utypes "pkg.akt.dev/node/v2/upgrades/types" + awasm "pkg.akt.dev/node/v2/x/wasm" // unnamed import of statik for swagger UI support - _ "pkg.akt.dev/node/client/docs/statik" + _ "pkg.akt.dev/node/v2/client/docs/statik" ) const ( @@ -130,6 +134,14 @@ func NewApp( homePath = DefaultHome } + var wasmOpts []wasmkeeper.Option + + if val := appOpts.Get("wasm"); val != nil { + if vl, valid := val.([]wasmkeeper.Option); valid { + wasmOpts = append(wasmOpts, vl...) + } + } + app := &AkashApp{ BaseApp: bapp, App: &apptypes.App{ @@ -142,6 +154,20 @@ func NewApp( invCheckPeriod: invCheckPeriod, } + wasmDir := filepath.Join(homePath, "wasm") + wasmConfig, err := wasm.ReadNodeConfig(appOpts) + if err != nil { + panic(fmt.Sprintf("error while reading wasm config: %s", err)) + } + + // Memory limits - prevent DoS + wasmConfig.MemoryCacheSize = 100 // 100 MB max + // Query gas limit - prevent expensive queries + wasmConfig.SmartQueryGasLimit = 3_000_000 + // Debug mode - MUST be false in production + // Uncomment this for debugging contracts. In the future this could be made into a param passed by the tests + wasmConfig.ContractDebugMode = false + app.InitSpecialKeepers( app.cdc, aminoCdc, @@ -155,6 +181,9 @@ func NewApp( encodingConfig, app.BaseApp, ModuleAccountPerms(), + wasmDir, + wasmConfig, + wasmOpts, app.BlockedAddrs(), invCheckPeriod, ) @@ -196,7 +225,7 @@ func NewApp( app.MM.SetOrderInitGenesis(OrderInitGenesis(app.MM.ModuleNames())...) app.Configurator = module.NewConfigurator(app.AppCodec(), app.MsgServiceRouter(), app.GRPCQueryRouter()) - err := app.MM.RegisterServices(app.Configurator) + err = app.MM.RegisterServices(app.Configurator) if err != nil { panic(err) } @@ -288,6 +317,10 @@ func orderBeginBlockers(_ []string) []string { ibctm.ModuleName, ibchost.ModuleName, feegrant.ModuleName, + // akash wasm module must be prior wasm + awasm.ModuleName, + // wasm after ibc transfer + wasmtypes.ModuleName, } } @@ -317,6 +350,10 @@ func OrderEndBlockers(_ []string) []string { transfertypes.ModuleName, ibchost.ModuleName, feegrant.ModuleName, + // akash wasm module must be prior wasm + awasm.ModuleName, + // wasm after ibc transfer + wasmtypes.ModuleName, } } diff --git a/app/app_configure.go b/app/app_configure.go index f59ebcabde..d16cba00f7 100644 --- a/app/app_configure.go +++ b/app/app_configure.go @@ -4,6 +4,7 @@ import ( evidencetypes "cosmossdk.io/x/evidence/types" "cosmossdk.io/x/feegrant" upgradetypes "cosmossdk.io/x/upgrade/types" + wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" "github.com/cosmos/cosmos-sdk/types/module" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" @@ -24,13 +25,14 @@ import ( audittypes "pkg.akt.dev/go/node/audit/v1" taketypes "pkg.akt.dev/go/node/take/v1" - "pkg.akt.dev/node/x/audit" - "pkg.akt.dev/node/x/cert" - "pkg.akt.dev/node/x/deployment" - "pkg.akt.dev/node/x/escrow" - "pkg.akt.dev/node/x/market" - "pkg.akt.dev/node/x/provider" - "pkg.akt.dev/node/x/take" + "pkg.akt.dev/node/v2/x/audit" + "pkg.akt.dev/node/v2/x/cert" + "pkg.akt.dev/node/v2/x/deployment" + "pkg.akt.dev/node/v2/x/escrow" + "pkg.akt.dev/node/v2/x/market" + "pkg.akt.dev/node/v2/x/provider" + "pkg.akt.dev/node/v2/x/take" + awasm "pkg.akt.dev/node/v2/x/wasm" ) func akashModuleBasics() []module.AppModuleBasic { @@ -42,6 +44,7 @@ func akashModuleBasics() []module.AppModuleBasic { provider.AppModuleBasic{}, audit.AppModuleBasic{}, cert.AppModuleBasic{}, + awasm.AppModuleBasic{}, } } @@ -78,5 +81,7 @@ func OrderInitGenesis(_ []string) []string { provider.ModuleName, market.ModuleName, genutiltypes.ModuleName, + awasm.ModuleName, + wasmtypes.ModuleName, } } diff --git a/app/config.go b/app/config.go index 527ff0aa96..3784d9fc48 100644 --- a/app/config.go +++ b/app/config.go @@ -4,6 +4,7 @@ import ( "cosmossdk.io/x/evidence" feegrantmodule "cosmossdk.io/x/feegrant/module" "cosmossdk.io/x/upgrade" + "github.com/CosmWasm/wasmd/x/wasm" "github.com/cosmos/cosmos-sdk/types/module" "github.com/cosmos/cosmos-sdk/x/auth" "github.com/cosmos/cosmos-sdk/x/auth/vesting" @@ -60,6 +61,7 @@ var mbasics = module.NewBasicManager( transfer.AppModuleBasic{}, vesting.AppModuleBasic{}, feegrantmodule.AppModuleBasic{}, + wasm.AppModuleBasic{}, }, // akash akashModuleBasics()..., diff --git a/app/modules.go b/app/modules.go index a2287bf49a..c2f958d31c 100644 --- a/app/modules.go +++ b/app/modules.go @@ -4,6 +4,8 @@ import ( "cosmossdk.io/x/evidence" feegrantmodule "cosmossdk.io/x/feegrant/module" "cosmossdk.io/x/upgrade" + "github.com/CosmWasm/wasmd/x/wasm" + wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" addresscodec "github.com/cosmos/cosmos-sdk/codec/address" "github.com/cosmos/cosmos-sdk/types/module" "github.com/cosmos/cosmos-sdk/x/auth" @@ -32,13 +34,14 @@ import ( "pkg.akt.dev/go/sdkutil" - "pkg.akt.dev/node/x/audit" - "pkg.akt.dev/node/x/cert" - "pkg.akt.dev/node/x/deployment" - "pkg.akt.dev/node/x/escrow" - "pkg.akt.dev/node/x/market" - "pkg.akt.dev/node/x/provider" - "pkg.akt.dev/node/x/take" + "pkg.akt.dev/node/v2/x/audit" + "pkg.akt.dev/node/v2/x/cert" + "pkg.akt.dev/node/v2/x/deployment" + "pkg.akt.dev/node/v2/x/escrow" + "pkg.akt.dev/node/v2/x/market" + "pkg.akt.dev/node/v2/x/provider" + "pkg.akt.dev/node/v2/x/take" + awasm "pkg.akt.dev/node/v2/x/wasm" ) func appModules( @@ -190,6 +193,19 @@ func appModules( app.cdc, app.Keepers.Akash.Cert, ), + awasm.NewAppModule( + app.cdc, + app.Keepers.Akash.Wasm, + ), + wasm.NewAppModule( + app.cdc, + app.Keepers.Cosmos.Wasm, + app.Keepers.Cosmos.Staking, + app.Keepers.Cosmos.Acct, + app.Keepers.Cosmos.Bank, + app.MsgServiceRouter(), + app.GetSubspace(wasmtypes.ModuleName), + ), } } @@ -286,7 +302,6 @@ func appSimModules( app.cdc, app.Keepers.Akash.Take, ), - deployment.NewAppModule( app.cdc, app.Keepers.Akash.Deployment, @@ -321,5 +336,20 @@ func appSimModules( app.cdc, app.Keepers.Akash.Cert, ), + + awasm.NewAppModule( + app.cdc, + app.Keepers.Akash.Wasm, + ), + + wasm.NewAppModule( + app.cdc, + app.Keepers.Cosmos.Wasm, + app.Keepers.Cosmos.Staking, + app.Keepers.Cosmos.Acct, + app.Keepers.Cosmos.Bank, + app.MsgServiceRouter(), + app.GetSubspace(wasmtypes.ModuleName), + ), } } diff --git a/app/sim/sim_utils.go b/app/sim/sim_utils.go index 92baa1d74d..85e6927a99 100644 --- a/app/sim/sim_utils.go +++ b/app/sim/sim_utils.go @@ -14,7 +14,7 @@ import ( "github.com/cosmos/cosmos-sdk/runtime" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - akash "pkg.akt.dev/node/app" + akash "pkg.akt.dev/node/v2/app" ) // SetupSimulation creates the config, db (levelDB), temporary directory and logger for diff --git a/app/sim_test.go b/app/sim_test.go index b51ab4ecef..4a08b34808 100644 --- a/app/sim_test.go +++ b/app/sim_test.go @@ -5,12 +5,17 @@ import ( "fmt" "math/rand" "os" + "runtime/debug" + "strings" "testing" "time" + wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" + cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/spf13/viper" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + cflags "pkg.akt.dev/go/cli/flags" abci "github.com/cometbft/cometbft/abci/types" @@ -23,6 +28,7 @@ import ( dbm "github.com/cosmos/cosmos-db" "github.com/cosmos/cosmos-sdk/baseapp" sdksim "github.com/cosmos/cosmos-sdk/types/simulation" + simtypes "github.com/cosmos/cosmos-sdk/types/simulation" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper" authzkeys "github.com/cosmos/cosmos-sdk/x/authz/keeper/keys" @@ -46,9 +52,9 @@ import ( taketypes "pkg.akt.dev/go/node/take/v1" "pkg.akt.dev/go/sdkutil" - akash "pkg.akt.dev/node/app" - "pkg.akt.dev/node/app/sim" - simtestutil "pkg.akt.dev/node/testutil/sims" + akash "pkg.akt.dev/node/v2/app" + "pkg.akt.dev/node/v2/app/sim" + simtestutil "pkg.akt.dev/node/v2/testutil/sims" ) // AppChainID hardcoded chainID for simulation @@ -141,37 +147,14 @@ func TestFullAppSimulation(t *testing.T) { } func TestAppImportExport(t *testing.T) { - config, db, dir, logger, skip, err := sim.SetupSimulation("leveldb-app-sim", "Simulation") - if skip { - t.Skip("skipping application import/export simulation") - } - require.NoError(t, err, "simulation setup failed") - - defer func() { - _ = db.Close() - require.NoError(t, os.RemoveAll(dir)) - }() - - encodingConfig := sdkutil.MakeEncodingConfig() - - akash.ModuleBasics().RegisterInterfaces(encodingConfig.InterfaceRegistry) - - appOpts := viper.New() - appOpts.Set("home", akash.DefaultHome) - - r := rand.New(rand.NewSource(config.Seed)) // nolint: gosec - genTime := sdksim.RandTimestamp(r) - - appOpts.Set("GenesisTime", genTime) - - appA := akash.NewApp(logger, db, nil, true, sim.FlagPeriodValue, map[int64]bool{}, encodingConfig, appOpts, fauxMerkleModeOpt, baseapp.SetChainID(AppChainID)) - require.Equal(t, akash.AppName, appA.Name()) + config, encodingConfig, db, appOpts, logger, appA := setupSimulationApp(t, "skipping application import/export simulation") // Run randomized simulation _, simParams, simErr := simulateFromSeedFunc(t, appA, config) + require.Equal(t, akash.AppName, appA.Name()) // export state and simParams before the simulation error is checked - err = simtestutil.CheckExportSimulation(appA, config, simParams) + err := simtestutil.CheckExportSimulation(appA, config, simParams) require.NoError(t, err) require.NoError(t, simErr) @@ -179,38 +162,48 @@ func TestAppImportExport(t *testing.T) { sim.PrintStats(db) } - fmt.Printf("exporting genesis...\n") - + t.Log("exporting genesis...\n") exported, err := appA.ExportAppStateAndValidators(false, []string{}, []string{}) require.NoError(t, err) - fmt.Printf("importing genesis...\n") + t.Log("importing genesis...\n") - _, newDB, newDir, _, _, err := sim.SetupSimulation("leveldb-app-sim-2", "Simulation-2") + newDB, newDir, _, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim-2", "Simulation-2", sim.FlagVerboseValue, sim.FlagEnabledValue) require.NoError(t, err, "simulation setup failed") + if skip { + t.Skip("skipping application import/export simulation") + } defer func() { - _ = newDB.Close() + require.NoError(t, newDB.Close()) require.NoError(t, os.RemoveAll(newDir)) }() + appOpts[cflags.FlagHome] = t.TempDir() // ensure a unique folder for the new app appB := akash.NewApp(logger, newDB, nil, true, sim.FlagPeriodValue, map[int64]bool{}, encodingConfig, appOpts, fauxMerkleModeOpt, baseapp.SetChainID(AppChainID)) require.Equal(t, akash.AppName, appB.Name()) - var genesisState akash.GenesisState - err = json.Unmarshal(exported.AppState, &genesisState) - require.NoError(t, err) + ctxA := appA.NewContextLegacy(true, cmtproto.Header{Height: appA.LastBlockHeight()}) + ctxB := appB.NewContextLegacy(true, cmtproto.Header{Height: appA.LastBlockHeight()}) - ctxA := appA.NewContext(true) - ctxB := appB.NewContext(true) + initReq := &abci.RequestInitChain{ + AppStateBytes: exported.AppState, + } - _, err = appB.MM.InitGenesis(ctxB, appA.AppCodec(), genesisState) - require.NoError(t, err) + _, err = appB.InitChainer(ctxB, initReq) + if err != nil { + if strings.Contains(err.Error(), "validator set is empty after InitGenesis") { + t.Log("Skipping simulation as all validators have been unbonded") + t.Logf("err: %s stacktrace: %s\n", err, string(debug.Stack())) + return + } + } + require.NoError(t, err) err = appB.StoreConsensusParams(ctxB, exported.ConsensusParams) require.NoError(t, err) - fmt.Printf("comparing stores...\n") + t.Log("comparing stores...") storeKeysPrefixes := []StoreKeysPrefixes{ { @@ -360,6 +353,14 @@ func TestAppImportExport(t *testing.T) { appB, [][]byte{}, }, + { + wasmtypes.StoreKey, + appA, + appB, + [][]byte{ + wasmtypes.TXCounterPrefix, + }, + }, } for _, skp := range storeKeysPrefixes { @@ -399,8 +400,7 @@ func TestAppSimulationAfterImport(t *testing.T) { akash.ModuleBasics().RegisterInterfaces(encodingConfig.InterfaceRegistry) appOpts := viper.New() - - appOpts.Set("home", akash.DefaultHome) + appOpts.Set("home", t.TempDir()) // ensure a unique folder per run r := rand.New(rand.NewSource(config.Seed)) // nolint: gosec genTime := sdksim.RandTimestamp(r) @@ -442,6 +442,7 @@ func TestAppSimulationAfterImport(t *testing.T) { require.NoError(t, os.RemoveAll(newDir)) }() + appOpts.Set("home", t.TempDir()) // ensure a unique folder per run newApp := akash.NewApp(log.NewNopLogger(), newDB, nil, true, sim.FlagPeriodValue, map[int64]bool{}, encodingConfig, appOpts, fauxMerkleModeOpt, baseapp.SetChainID(AppChainID)) require.Equal(t, akash.AppName, newApp.Name()) @@ -487,7 +488,7 @@ func TestAppStateDeterminism(t *testing.T) { db := dbm.NewMemDB() appOpts := viper.New() - appOpts.Set("home", akash.DefaultHome) + appOpts.Set("home", t.TempDir()) // ensure a unique folder per run r := rand.New(rand.NewSource(config.Seed)) // nolint: gosec genTime := sdksim.RandTimestamp(r) @@ -521,3 +522,31 @@ func TestAppStateDeterminism(t *testing.T) { } } } + +func setupSimulationApp(t *testing.T, msg string) (simtypes.Config, sdkutil.EncodingConfig, dbm.DB, simtestutil.AppOptionsMap, log.Logger, *akash.AkashApp) { + config := sim.NewConfigFromFlags() + config.ChainID = AppChainID + + encodingConfig := sdkutil.MakeEncodingConfig() + + akash.ModuleBasics().RegisterInterfaces(encodingConfig.InterfaceRegistry) + + db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", sim.FlagVerboseValue, sim.FlagEnabledValue) + if skip { + t.Skip(msg) + } + require.NoError(t, err, "simulation setup failed") + + t.Cleanup(func() { + require.NoError(t, db.Close()) + require.NoError(t, os.RemoveAll(dir)) + }) + + appOpts := make(simtestutil.AppOptionsMap) + appOpts[cflags.FlagHome] = dir // ensure a unique folder + appOpts[cflags.FlagInvCheckPeriod] = sim.FlagPeriodValue + app := akash.NewApp(logger, db, nil, true, sim.FlagPeriodValue, map[int64]bool{}, encodingConfig, appOpts, fauxMerkleModeOpt, baseapp.SetChainID(AppChainID)) + + require.Equal(t, akash.AppName, app.Name()) + return config, encodingConfig, db, appOpts, logger, app +} diff --git a/app/testnet.go b/app/testnet.go index 4b2fe5e6cc..f2f318b15a 100644 --- a/app/testnet.go +++ b/app/testnet.go @@ -24,7 +24,7 @@ import ( "pkg.akt.dev/go/sdkutil" - utypes "pkg.akt.dev/node/upgrades/types" + utypes "pkg.akt.dev/node/v2/upgrades/types" ) type TestnetDelegation struct { diff --git a/app/types/app.go b/app/types/app.go index b07a4739bf..c4f8fbb289 100644 --- a/app/types/app.go +++ b/app/types/app.go @@ -14,6 +14,9 @@ import ( feegrantkeeper "cosmossdk.io/x/feegrant/keeper" upgradekeeper "cosmossdk.io/x/upgrade/keeper" upgradetypes "cosmossdk.io/x/upgrade/types" + "github.com/CosmWasm/wasmd/x/wasm" + wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" + wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/codec" addresscodec "github.com/cosmos/cosmos-sdk/codec/address" @@ -45,38 +48,41 @@ import ( slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - icacontrollertypes "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/controller/types" - icahosttypes "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/host/types" "github.com/cosmos/ibc-go/v10/modules/apps/transfer" ibctransferkeeper "github.com/cosmos/ibc-go/v10/modules/apps/transfer/keeper" ibctransfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" + transferv2 "github.com/cosmos/ibc-go/v10/modules/apps/transfer/v2" ibcclienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" ibcconnectiontypes "github.com/cosmos/ibc-go/v10/modules/core/03-connection/types" porttypes "github.com/cosmos/ibc-go/v10/modules/core/05-port/types" + ibcapi "github.com/cosmos/ibc-go/v10/modules/core/api" ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" ibckeeper "github.com/cosmos/ibc-go/v10/modules/core/keeper" ibctm "github.com/cosmos/ibc-go/v10/modules/light-clients/07-tendermint" - emodule "pkg.akt.dev/go/node/escrow/module" atypes "pkg.akt.dev/go/node/audit/v1" ctypes "pkg.akt.dev/go/node/cert/v1" dtypes "pkg.akt.dev/go/node/deployment/v1" dv1beta "pkg.akt.dev/go/node/deployment/v1beta3" + emodule "pkg.akt.dev/go/node/escrow/module" agovtypes "pkg.akt.dev/go/node/gov/v1beta3" mtypes "pkg.akt.dev/go/node/market/v1beta4" ptypes "pkg.akt.dev/go/node/provider/v1beta4" astakingtypes "pkg.akt.dev/go/node/staking/v1beta3" ttypes "pkg.akt.dev/go/node/take/v1" + wtypes "pkg.akt.dev/go/node/wasm/v1" "pkg.akt.dev/go/sdkutil" - akeeper "pkg.akt.dev/node/x/audit/keeper" - ckeeper "pkg.akt.dev/node/x/cert/keeper" - dkeeper "pkg.akt.dev/node/x/deployment/keeper" - ekeeper "pkg.akt.dev/node/x/escrow/keeper" - mhooks "pkg.akt.dev/node/x/market/hooks" - mkeeper "pkg.akt.dev/node/x/market/keeper" - pkeeper "pkg.akt.dev/node/x/provider/keeper" - tkeeper "pkg.akt.dev/node/x/take/keeper" + akeeper "pkg.akt.dev/node/v2/x/audit/keeper" + ckeeper "pkg.akt.dev/node/v2/x/cert/keeper" + dkeeper "pkg.akt.dev/node/v2/x/deployment/keeper" + ekeeper "pkg.akt.dev/node/v2/x/escrow/keeper" + mhooks "pkg.akt.dev/node/v2/x/market/hooks" + mkeeper "pkg.akt.dev/node/v2/x/market/keeper" + pkeeper "pkg.akt.dev/node/v2/x/provider/keeper" + tkeeper "pkg.akt.dev/node/v2/x/take/keeper" + awasm "pkg.akt.dev/node/v2/x/wasm" + wkeeper "pkg.akt.dev/node/v2/x/wasm/keeper" ) const ( @@ -103,6 +109,7 @@ type AppKeepers struct { IBC *ibckeeper.Keeper Evidence *evidencekeeper.Keeper Transfer ibctransferkeeper.Keeper + Wasm *wasmkeeper.Keeper } Akash struct { @@ -113,6 +120,7 @@ type AppKeepers struct { Provider pkeeper.IKeeper Audit akeeper.Keeper Cert ckeeper.Keeper + Wasm wkeeper.Keeper } Modules struct { @@ -238,6 +246,9 @@ func (app *App) InitNormalKeepers( encodingConfig sdkutil.EncodingConfig, bApp *baseapp.BaseApp, maccPerms map[string][]string, + wasmDir string, + wasmConfig wasmtypes.NodeConfig, + wasmOpts []wasmkeeper.Option, blockedAddresses map[string]bool, invCheckPeriod uint, ) { @@ -386,14 +397,6 @@ func (app *App) InitNormalKeepers( authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) - transferIBCModule := transfer.NewIBCModule(app.Keepers.Cosmos.Transfer) - - // Create static IBC router, add transfer route, then set and seal it - ibcRouter := porttypes.NewRouter() - ibcRouter.AddRoute(ibctransfertypes.ModuleName, transferIBCModule) - - app.Keepers.Cosmos.IBC.SetRouter(ibcRouter) - /// Light client modules clientKeeper := app.Keepers.Cosmos.IBC.ClientKeeper storeProvider := app.Keepers.Cosmos.IBC.ClientKeeper.GetStoreProvider() @@ -444,6 +447,66 @@ func (app *App) InitNormalKeepers( cdc, app.keys[ctypes.StoreKey], ) + + app.Keepers.Akash.Wasm = wkeeper.NewKeeper( + cdc, + app.keys[wtypes.StoreKey], + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) + + wOpts := make([]wasmkeeper.Option, 0, len(wasmOpts)+1) + + wOpts = append(wOpts, wasmkeeper.WithMessageHandlerDecorator( + app.Keepers.Akash.Wasm.NewMsgFilterDecorator(), + )) + + wOpts = append(wOpts, wasmOpts...) + + // The last arguments can contain custom message handlers and custom query handlers + // if we want to allow any custom callbacks + wasmCapabilities := wasmkeeper.BuiltInCapabilities() + wasmCapabilities = append(wasmCapabilities, "akash") + + wasmKeeper := wasmkeeper.NewKeeper( + cdc, + runtime.NewKVStoreService(app.keys[wasmtypes.StoreKey]), + app.Keepers.Cosmos.Acct, + app.Keepers.Cosmos.Bank, + *app.Keepers.Cosmos.Staking, + distrkeeper.NewQuerier(app.Keepers.Cosmos.Distr), + app.Keepers.Cosmos.IBC.ChannelKeeper, + app.Keepers.Cosmos.IBC.ChannelKeeper, + app.Keepers.Cosmos.IBC.ChannelKeeperV2, + app.Keepers.Cosmos.Transfer, + bApp.MsgServiceRouter(), + bApp.GRPCQueryRouter(), + wasmDir, + wasmConfig, + wasmtypes.VMConfig{}, + wasmCapabilities, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + wOpts..., + ) + app.Keepers.Cosmos.Wasm = &wasmKeeper + + // Create fee enabled wasm ibc Stack + wasmStackIBCHandler := wasm.NewIBCHandler(app.Keepers.Cosmos.Wasm, app.Keepers.Cosmos.IBC.ChannelKeeper, app.Keepers.Cosmos.Transfer, app.Keepers.Cosmos.IBC.ChannelKeeper) + + transferIBCModule := transfer.NewIBCModule(app.Keepers.Cosmos.Transfer) + + // Create static IBC router, add transfer route, then set and seal it + ibcRouter := porttypes.NewRouter() + ibcRouter.AddRoute(ibctransfertypes.ModuleName, transferIBCModule) + ibcRouter.AddRoute(wasmtypes.ModuleName, wasmStackIBCHandler) + + app.Keepers.Cosmos.IBC.SetRouter(ibcRouter) + + ibcRouterV2 := ibcapi.NewRouter() + ibcRouterV2 = ibcRouterV2. + AddRoute(ibctransfertypes.PortID, transferv2.NewIBCModule(app.Keepers.Cosmos.Transfer)). + AddPrefixRoute(wasmkeeper.PortIDPrefixV2, wasmkeeper.NewIBC2Handler(app.Keepers.Cosmos.Wasm)) + + app.Keepers.Cosmos.IBC.SetRouterV2(ibcRouterV2) } func (app *App) SetupHooks() { @@ -454,7 +517,6 @@ func (app *App) SetupHooks() { app.Keepers.Cosmos.Slashing.Hooks(), ), ) - app.Keepers.Cosmos.Gov.SetHooks( govtypes.NewMultiGovHooks( // insert governance hooks receivers here @@ -487,8 +549,6 @@ func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino paramsKeeper.Subspace(crisistypes.ModuleName).WithKeyTable(crisistypes.ParamKeyTable()) // nolint: staticcheck // SA1019 paramsKeeper.Subspace(ibctransfertypes.ModuleName).WithKeyTable(ibctransfertypes.ParamKeyTable()) paramsKeeper.Subspace(ibcexported.ModuleName).WithKeyTable(ibctable) - paramsKeeper.Subspace(icacontrollertypes.SubModuleName) - paramsKeeper.Subspace(icahosttypes.SubModuleName) // akash params subspaces paramsKeeper.Subspace(dtypes.ModuleName).WithKeyTable(dv1beta.ParamKeyTable()) @@ -517,6 +577,8 @@ func kvStoreKeys() []string { upgradetypes.StoreKey, evidencetypes.StoreKey, ibctransfertypes.StoreKey, + // wasm after ibc transfer + wasmtypes.ModuleName, } keys = append(keys, akashKVStoreKeys()...) @@ -533,6 +595,7 @@ func akashKVStoreKeys() []string { ptypes.StoreKey, atypes.StoreKey, ctypes.StoreKey, + awasm.StoreKey, } } diff --git a/app/upgrades.go b/app/upgrades.go index 4ef4974195..74e23dee1a 100644 --- a/app/upgrades.go +++ b/app/upgrades.go @@ -5,9 +5,9 @@ import ( upgradetypes "cosmossdk.io/x/upgrade/types" - utypes "pkg.akt.dev/node/upgrades/types" + utypes "pkg.akt.dev/node/v2/upgrades/types" // nolint: revive - _ "pkg.akt.dev/node/upgrades" + _ "pkg.akt.dev/node/v2/upgrades" ) func (app *AkashApp) registerUpgradeHandlers() error { @@ -20,7 +20,12 @@ func (app *AkashApp) registerUpgradeHandlers() error { return nil } - currentHeight := app.CommitMultiStore().LastCommitID().Version + cms := app.CommitMultiStore() + if cms == nil { + return fmt.Errorf("unable to get CommitMultiStore") + } + + currentHeight := cms.LastCommitID().Version if upgradeInfo.Height == currentHeight+1 { app.customPreUpgradeHandler(upgradeInfo) diff --git a/cmd/akash/cmd/app_creator.go b/cmd/akash/cmd/app_creator.go index 8a8f923be4..449b4794c9 100644 --- a/cmd/akash/cmd/app_creator.go +++ b/cmd/akash/cmd/app_creator.go @@ -22,7 +22,7 @@ import ( cflags "pkg.akt.dev/go/cli/flags" "pkg.akt.dev/go/sdkutil" - akash "pkg.akt.dev/node/app" + akash "pkg.akt.dev/node/v2/app" ) type appCreator struct { diff --git a/cmd/akash/cmd/config.go b/cmd/akash/cmd/config.go new file mode 100644 index 0000000000..bf50660bfc --- /dev/null +++ b/cmd/akash/cmd/config.go @@ -0,0 +1,31 @@ +package cmd + +import ( + wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" + serverconfig "github.com/cosmos/cosmos-sdk/server/config" +) + +type AppConfig struct { + serverconfig.Config + + WasmConfig wasmtypes.NodeConfig `mapstructure:"wasm"` +} + +var AppTemplate = serverconfig.DefaultConfigTemplate + ` +############################################################################### +### Wasm Configuration ### +############################################################################### +` + wasmtypes.DefaultConfigTemplate() + +func InitAppConfig() (string, interface{}) { + appCfg := AppConfig{ + Config: *serverconfig.DefaultConfig(), + WasmConfig: wasmtypes.DefaultNodeConfig(), + } + + appCfg.MinGasPrices = "0.0025uakt" + appCfg.API.Enable = true + appCfg.API.Address = "tcp://localhost:1317" + + return AppTemplate, appCfg +} diff --git a/cmd/akash/cmd/root.go b/cmd/akash/cmd/root.go index bcb9967fef..a6991800f0 100644 --- a/cmd/akash/cmd/root.go +++ b/cmd/akash/cmd/root.go @@ -3,14 +3,12 @@ package cmd import ( "context" + "github.com/CosmWasm/wasmd/x/wasm" "github.com/cosmos/cosmos-sdk/x/crisis" - "github.com/rs/zerolog" "github.com/spf13/cobra" - cmtcfg "github.com/cometbft/cometbft/config" cmtcli "github.com/cometbft/cometbft/libs/cli" - sdkclient "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/debug" "github.com/cosmos/cosmos-sdk/client/pruning" "github.com/cosmos/cosmos-sdk/client/snapshot" @@ -19,11 +17,10 @@ import ( rosettaCmd "github.com/cosmos/rosetta/cmd" "pkg.akt.dev/go/cli" - cflags "pkg.akt.dev/go/cli/flags" "pkg.akt.dev/go/sdkutil" - "pkg.akt.dev/node/app" - "pkg.akt.dev/node/cmd/akash/cmd/testnetify" + "pkg.akt.dev/node/v2/app" + "pkg.akt.dev/node/v2/cmd/akash/cmd/testnetify" ) // NewRootCmd creates a new root command for akash. It is called once in the @@ -33,11 +30,15 @@ func NewRootCmd() (*cobra.Command, sdkutil.EncodingConfig) { app.ModuleBasics().RegisterInterfaces(encodingConfig.InterfaceRegistry) rootCmd := &cobra.Command{ - Use: "akash", - Short: "Akash Blockchain Application", - Long: "Akash CLI Utility.\n\nAkash is a peer-to-peer marketplace for computing resources and \na deployment platform for heavily distributed applications. \nFind out more at https://akash.network", + Use: "akash", + Short: "Akash Blockchain Application", + Long: `Akash CLI Utility. + +Akash is a peer-to-peer marketplace for computing resources and +a deployment platform for heavily distributed applications. +Find out more at https://akash.network`, SilenceUsage: true, - PersistentPreRunE: cli.GetPersistentPreRunE(encodingConfig, []string{"AKASH"}, cli.DefaultHome), + PersistentPreRunE: cli.GetPersistentPreRunE(encodingConfig, []string{"AKASH"}, cli.DefaultHome, cli.WithPreRunAppConfig(InitAppConfig())), } initRootCmd(rootCmd, encodingConfig) @@ -54,29 +55,7 @@ func Execute(rootCmd *cobra.Command, envPrefix string) error { // getting and setting the client.Context. Ideally, we utilize // https://github.com/spf13/cobra/pull/1118. - return ExecuteWithCtx(context.Background(), rootCmd, envPrefix) -} - -// ExecuteWithCtx executes the root command. -func ExecuteWithCtx(ctx context.Context, rootCmd *cobra.Command, envPrefix string) error { - // Create and set a client.Context on the command's Context. During the pre-run - // of the root command, a default initialized client.Context is provided to - // seed child command execution with values such as AccountRetriver, Keyring, - // and a Tendermint RPC. This requires the use of a pointer reference when - // getting and setting the client.Context. Ideally, we utilize - // https://github.com/spf13/cobra/pull/1118. - srvCtx := sdkserver.NewDefaultContext() - - ctx = context.WithValue(ctx, sdkclient.ClientContextKey, &sdkclient.Context{}) - ctx = context.WithValue(ctx, sdkserver.ServerContextKey, srvCtx) - - rootCmd.PersistentFlags().String(cflags.FlagLogLevel, zerolog.InfoLevel.String(), "The logging level (trace|debug|info|warn|error|fatal|panic)") - rootCmd.PersistentFlags().String(cflags.FlagLogFormat, cmtcfg.LogFormatPlain, "The logging format (json|plain)") - rootCmd.PersistentFlags().Bool(cflags.FlagLogColor, false, "Pretty logging output. Applied only when log_format=plain") - rootCmd.PersistentFlags().String(cflags.FlagLogTimestamp, "", "Add timestamp prefix to the logs (rfc3339|rfc3339nano|kitchen)") - - executor := cmtcli.PrepareBaseCmd(rootCmd, envPrefix, app.DefaultHome) - return executor.ExecuteContext(ctx) + return cli.ExecuteWithCtx(context.Background(), rootCmd, envPrefix) } func initRootCmd(rootCmd *cobra.Command, encodingConfig sdkutil.EncodingConfig) { @@ -113,6 +92,7 @@ func initRootCmd(rootCmd *cobra.Command, encodingConfig sdkutil.EncodingConfig) func addModuleInitFlags(startCmd *cobra.Command) { crisis.AddModuleInitFlags(startCmd) //nolint: staticcheck + wasm.AddModuleInitFlags(startCmd) } // genesisCommand builds genesis-related `simd genesis` command. Users may provide application specific commands as a parameter diff --git a/cmd/akash/cmd/testnetify/config.go b/cmd/akash/cmd/testnetify/config.go index 251bda818c..3b616e449a 100644 --- a/cmd/akash/cmd/testnetify/config.go +++ b/cmd/akash/cmd/testnetify/config.go @@ -12,7 +12,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - akash "pkg.akt.dev/node/app" + akash "pkg.akt.dev/node/v2/app" ) type PrivValidatorKey struct { diff --git a/cmd/akash/cmd/testnetify/testnetify.go b/cmd/akash/cmd/testnetify/testnetify.go index 0ec2a2ba52..60b3843e68 100644 --- a/cmd/akash/cmd/testnetify/testnetify.go +++ b/cmd/akash/cmd/testnetify/testnetify.go @@ -39,8 +39,8 @@ import ( cflags "pkg.akt.dev/go/cli/flags" - akash "pkg.akt.dev/node/app" - "pkg.akt.dev/node/util/server" + akash "pkg.akt.dev/node/v2/app" + "pkg.akt.dev/node/v2/util/server" ) // GetCmd uses the provided chainID and operatorAddress as well as the local private validator key to diff --git a/cmd/akash/cmd/testnetify/utils.go b/cmd/akash/cmd/testnetify/utils.go index 150256a4fe..ccf332cc4a 100644 --- a/cmd/akash/cmd/testnetify/utils.go +++ b/cmd/akash/cmd/testnetify/utils.go @@ -11,7 +11,7 @@ import ( "golang.org/x/sync/errgroup" cflags "pkg.akt.dev/go/cli/flags" - "pkg.akt.dev/node/util/server" + "pkg.akt.dev/node/v2/util/server" ) func openDB(rootDir string, backendType dbm.BackendType) (dbm.DB, error) { diff --git a/cmd/akash/main.go b/cmd/akash/main.go index 6e6b39237d..67e514a614 100644 --- a/cmd/akash/main.go +++ b/cmd/akash/main.go @@ -5,7 +5,7 @@ import ( _ "pkg.akt.dev/go/sdkutil" - "pkg.akt.dev/node/cmd/akash/cmd" + "pkg.akt.dev/node/v2/cmd/akash/cmd" ) // In main we call the rootCmd diff --git a/docgen/main.go b/docgen/main.go index c6567f060a..05492e9bf7 100644 --- a/docgen/main.go +++ b/docgen/main.go @@ -5,7 +5,7 @@ import ( "os" "github.com/spf13/cobra/doc" - root "pkg.akt.dev/node/cmd/akash/cmd" + root "pkg.akt.dev/node/v2/cmd/akash/cmd" ) func main() { diff --git a/go.mod b/go.mod index 339852b4a9..128f4a817f 100644 --- a/go.mod +++ b/go.mod @@ -1,25 +1,27 @@ -module pkg.akt.dev/node +module pkg.akt.dev/node/v2 go 1.25.2 require ( cosmossdk.io/api v0.9.2 - cosmossdk.io/collections v1.2.1 + cosmossdk.io/collections v1.3.1 cosmossdk.io/core v0.11.3 cosmossdk.io/depinject v1.2.1 cosmossdk.io/errors v1.0.2 - cosmossdk.io/log v1.6.0 + cosmossdk.io/log v1.6.1 cosmossdk.io/math v1.5.3 cosmossdk.io/store v1.1.2 cosmossdk.io/x/evidence v0.2.0 cosmossdk.io/x/feegrant v0.2.0 cosmossdk.io/x/upgrade v0.2.0 + github.com/CosmWasm/wasmd v0.61.6 + github.com/CosmWasm/wasmvm/v3 v3.0.2 github.com/boz/go-lifecycle v0.1.1 github.com/cometbft/cometbft v0.38.17 - github.com/cosmos/cosmos-db v1.1.1 - github.com/cosmos/cosmos-sdk v0.53.3 + github.com/cosmos/cosmos-db v1.1.3 + github.com/cosmos/cosmos-sdk v0.53.4 github.com/cosmos/gogoproto v1.7.0 - github.com/cosmos/ibc-go/v10 v10.3.0 + github.com/cosmos/ibc-go/v10 v10.4.0 github.com/cosmos/rosetta v0.50.12 github.com/golang-jwt/jwt/v5 v5.2.3 github.com/google/go-github/v62 v62.0.0 @@ -29,24 +31,24 @@ require ( github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/ianlancetaylor/cgosymbolizer v0.0.0-20250410214317-b8ecc8b6bbe6 github.com/pkg/errors v0.9.1 - github.com/prometheus/client_golang v1.22.0 + github.com/prometheus/client_golang v1.23.2 github.com/rakyll/statik v0.1.7 github.com/regen-network/cosmos-proto v0.3.1 github.com/rs/zerolog v1.34.0 - github.com/spf13/cast v1.9.2 - github.com/spf13/cobra v1.9.1 - github.com/spf13/pflag v1.0.7 - github.com/spf13/viper v1.20.1 - github.com/stretchr/testify v1.10.0 + github.com/spf13/cast v1.10.0 + github.com/spf13/cobra v1.10.1 + github.com/spf13/pflag v1.0.10 + github.com/spf13/viper v1.21.0 + github.com/stretchr/testify v1.11.1 go.step.sm/crypto v0.45.1 - golang.org/x/mod v0.25.0 + golang.org/x/mod v0.26.0 golang.org/x/oauth2 v0.30.0 - golang.org/x/sync v0.16.0 - google.golang.org/grpc v1.74.2 + golang.org/x/sync v0.17.0 + google.golang.org/grpc v1.75.0 gopkg.in/yaml.v3 v3.0.1 gotest.tools/v3 v3.5.2 - pkg.akt.dev/go v0.1.5 - pkg.akt.dev/go/cli v0.1.4 + pkg.akt.dev/go v0.1.6-rc3 + pkg.akt.dev/go/cli v0.1.5-rc3 pkg.akt.dev/go/sdl v0.1.1 ) @@ -59,7 +61,7 @@ replace ( // use akash fork of cometbft github.com/cometbft/cometbft => github.com/akash-network/cometbft v0.38.19-akash.1 // use akash fork of cosmos sdk - github.com/cosmos/cosmos-sdk => github.com/akash-network/cosmos-sdk v0.53.4-akash.b.10 + github.com/cosmos/cosmos-sdk => github.com/akash-network/cosmos-sdk v0.53.4-akash.10 github.com/cosmos/gogoproto => github.com/akash-network/gogoproto v1.7.0-akash.2 @@ -92,7 +94,7 @@ require ( github.com/99designs/keyring v1.2.2 // indirect github.com/DataDog/datadog-go v4.8.3+incompatible // indirect github.com/DataDog/zstd v1.5.7 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.50.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.50.0 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect @@ -105,7 +107,7 @@ require ( github.com/bits-and-blooms/bitset v1.22.0 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/bytedance/gopkg v0.1.3 // indirect - github.com/bytedance/sonic v1.13.2 // indirect + github.com/bytedance/sonic v1.14.0 // indirect github.com/bytedance/sonic/loader v0.3.0 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect @@ -125,7 +127,7 @@ require ( github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect github.com/cosmos/go-bip39 v1.0.0 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect - github.com/cosmos/iavl v1.2.2 // indirect + github.com/cosmos/iavl v1.2.6 // indirect github.com/cosmos/ics23/go v0.11.0 // indirect github.com/cosmos/ledger-cosmos-go v0.14.0 // indirect github.com/cosmos/rosetta-sdk-go v0.10.0 // indirect @@ -136,6 +138,7 @@ require ( github.com/desertbit/timer v1.0.1 // indirect github.com/dgraph-io/badger/v4 v4.6.0 // indirect github.com/dgraph-io/ristretto/v2 v2.1.0 // indirect + github.com/distribution/reference v0.5.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/dvsekhvalnov/jose2go v1.8.0 // indirect github.com/edwingeng/deque/v2 v2.1.1 // indirect @@ -147,9 +150,9 @@ require ( github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/fxamacker/cbor/v2 v2.7.0 // indirect - github.com/getsentry/sentry-go v0.32.0 // indirect + github.com/getsentry/sentry-go v0.33.0 // indirect github.com/go-errors/errors v1.5.1 // indirect - github.com/go-jose/go-jose/v4 v4.0.5 // indirect + github.com/go-jose/go-jose/v4 v4.1.1 // indirect github.com/go-kit/kit v0.13.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect @@ -165,6 +168,7 @@ require ( github.com/google/flatbuffers v25.2.10+incompatible // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/go-querystring v1.1.0 // indirect + github.com/google/gofuzz v1.2.0 // indirect github.com/google/orderedcode v0.0.1 // indirect github.com/google/s2a-go v0.1.9 // indirect github.com/google/uuid v1.6.0 // indirect @@ -175,7 +179,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter v1.7.8 // indirect + github.com/hashicorp/go-getter v1.7.9 // indirect github.com/hashicorp/go-hclog v1.6.3 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-metrics v0.5.4 // indirect @@ -206,7 +210,6 @@ require ( github.com/mdp/qrterminal/v3 v3.2.1 // indirect github.com/minio/highwayhash v1.0.3 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect - github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect @@ -214,21 +217,23 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect github.com/oklog/run v1.1.0 // indirect + github.com/opencontainers/go-digest v1.0.0 // indirect github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 // indirect github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.63.0 // indirect - github.com/prometheus/procfs v0.15.1 // indirect + github.com/prometheus/client_model v0.6.2 // indirect + github.com/prometheus/common v0.66.1 // indirect + github.com/prometheus/procfs v0.16.1 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect github.com/rs/cors v1.11.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/sagikazarmark/locafero v0.7.0 // indirect + github.com/sagikazarmark/locafero v0.11.0 // indirect github.com/sasha-s/go-deadlock v0.3.5 // indirect - github.com/sourcegraph/conc v0.3.0 // indirect - github.com/spf13/afero v1.12.0 // indirect + github.com/shamaton/msgpack/v2 v2.2.3 // indirect + github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect + github.com/spf13/afero v1.15.0 // indirect github.com/spiffe/go-spiffe/v2 v2.5.0 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/subosito/gotenv v1.6.0 // indirect @@ -236,7 +241,7 @@ require ( github.com/tendermint/go-amino v0.16.0 // indirect github.com/tidwall/btree v1.7.0 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect - github.com/ulikunitz/xz v0.5.11 // indirect + github.com/ulikunitz/xz v0.5.14 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect @@ -249,34 +254,34 @@ require ( go.opentelemetry.io/contrib/detectors/gcp v1.36.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 // indirect - go.opentelemetry.io/otel v1.36.0 // indirect - go.opentelemetry.io/otel/metric v1.36.0 // indirect - go.opentelemetry.io/otel/sdk v1.36.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.36.0 // indirect - go.opentelemetry.io/otel/trace v1.36.0 // indirect + go.opentelemetry.io/otel v1.37.0 // indirect + go.opentelemetry.io/otel/metric v1.37.0 // indirect + go.opentelemetry.io/otel/sdk v1.37.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect + go.opentelemetry.io/otel/trace v1.37.0 // indirect go.uber.org/mock v0.5.2 // indirect - go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/arch v0.15.0 // indirect - golang.org/x/crypto v0.40.0 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/arch v0.17.0 // indirect + golang.org/x/crypto v0.41.0 // indirect golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect - golang.org/x/net v0.42.0 // indirect - golang.org/x/sys v0.34.0 // indirect - golang.org/x/term v0.33.0 // indirect - golang.org/x/text v0.27.0 // indirect + golang.org/x/net v0.43.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/term v0.34.0 // indirect + golang.org/x/text v0.28.0 // indirect golang.org/x/time v0.11.0 // indirect google.golang.org/api v0.229.0 // indirect google.golang.org/genproto v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect - google.golang.org/protobuf v1.36.6 // indirect + google.golang.org/protobuf v1.36.8 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect k8s.io/api v0.33.3 // indirect k8s.io/apimachinery v0.33.3 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect - nhooyr.io/websocket v1.8.11 // indirect + nhooyr.io/websocket v1.8.17 // indirect pgregory.net/rapid v1.2.0 // indirect pkg.akt.dev/specs v0.0.1 // indirect rsc.io/qr v0.2.0 // indirect diff --git a/go.sum b/go.sum index 617a7731c5..61cedd0959 100644 --- a/go.sum +++ b/go.sum @@ -1209,16 +1209,16 @@ cloud.google.com/go/workflows v1.12.2/go.mod h1:+OmBIgNqYJPVggnMo9nqmizW0qEXHhmn cloud.google.com/go/workflows v1.12.3/go.mod h1:fmOUeeqEwPzIU81foMjTRQIdwQHADi/vEr1cx9R1m5g= cosmossdk.io/api v0.9.2 h1:9i9ptOBdmoIEVEVWLtYYHjxZonlF/aOVODLFaxpmNtg= cosmossdk.io/api v0.9.2/go.mod h1:CWt31nVohvoPMTlPv+mMNCtC0a7BqRdESjCsstHcTkU= -cosmossdk.io/collections v1.2.1 h1:mAlNMs5vJwkda4TA+k5q/43p24RVAQ/qyDrjANu3BXE= -cosmossdk.io/collections v1.2.1/go.mod h1:PSsEJ/fqny0VPsHLFT6gXDj/2C1tBOTS9eByK0+PBFU= +cosmossdk.io/collections v1.3.1 h1:09e+DUId2brWsNOQ4nrk+bprVmMUaDH9xvtZkeqIjVw= +cosmossdk.io/collections v1.3.1/go.mod h1:ynvkP0r5ruAjbmedE+vQ07MT6OtJ0ZIDKrtJHK7Q/4c= cosmossdk.io/core v0.11.3 h1:mei+MVDJOwIjIniaKelE3jPDqShCc/F4LkNNHh+4yfo= cosmossdk.io/core v0.11.3/go.mod h1:9rL4RE1uDt5AJ4Tg55sYyHWXA16VmpHgbe0PbJc6N2Y= cosmossdk.io/depinject v1.2.1 h1:eD6FxkIjlVaNZT+dXTQuwQTKZrFZ4UrfCq1RKgzyhMw= cosmossdk.io/depinject v1.2.1/go.mod h1:lqQEycz0H2JXqvOgVwTsjEdMI0plswI7p6KX+MVqFOM= cosmossdk.io/errors v1.0.2 h1:wcYiJz08HThbWxd/L4jObeLaLySopyyuUFB5w4AGpCo= cosmossdk.io/errors v1.0.2/go.mod h1:0rjgiHkftRYPj//3DrD6y8hcm40HcPv/dR4R/4efr0k= -cosmossdk.io/log v1.6.0 h1:SJIOmJ059wi1piyRgNRXKXhlDXGqnB5eQwhcZKv2tOk= -cosmossdk.io/log v1.6.0/go.mod h1:5cXXBvfBkR2/BcXmosdCSLXllvgSjphrrDVdfVRmBGM= +cosmossdk.io/log v1.6.1 h1:YXNwAgbDwMEKwDlCdH8vPcoggma48MgZrTQXCfmMBeI= +cosmossdk.io/log v1.6.1/go.mod h1:gMwsWyyDBjpdG9u2avCFdysXqxq28WJapJvu+vF1y+E= cosmossdk.io/math v1.5.3 h1:WH6tu6Z3AUCeHbeOSHg2mt9rnoiUWVWaQ2t6Gkll96U= cosmossdk.io/math v1.5.3/go.mod h1:uqcZv7vexnhMFJF+6zh9EWdm/+Ylyln34IvPnBauPCQ= cosmossdk.io/schema v1.1.0 h1:mmpuz3dzouCoyjjcMcA/xHBEmMChN+EHh8EHxHRHhzE= @@ -1244,13 +1244,17 @@ github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/CosmWasm/wasmd v0.61.6 h1:wa1rY/mZi8OYnf0f6a02N7o3vBockOfL3P37hSH0XtY= +github.com/CosmWasm/wasmd v0.61.6/go.mod h1:Wg2gfY2qrjjFY8UvpkTCRdy8t67qebOQn7UvRiGRzDw= +github.com/CosmWasm/wasmvm/v3 v3.0.2 h1:+MLkOX+IdklITLqfG26PCFv5OXdZvNb8z5Wq5JFXTRM= +github.com/CosmWasm/wasmvm/v3 v3.0.2/go.mod h1:oknpb1bFERvvKcY7vHRp1F/Y/z66xVrsl7n9uWkOAlM= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/datadog-go v4.8.3+incompatible h1:fNGaYSuObuQb5nzeTQqowRAd9bpDIRRV4/gUtIBjh8Q= github.com/DataDog/datadog-go v4.8.3+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.5.7 h1:ybO8RBeh29qrxIhCA9E8gKY6xfONU9T6G6aP9DTKfLE= github.com/DataDog/zstd v1.5.7/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0 h1:ErKg/3iS1AKcTkf3yixlZ54f9U1rljCkQyEXWUnIUxc= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0/go.mod h1:yAZHSGnqScoU556rBOVkwLze6WP5N+U11RHuWaGVxwY= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 h1:UQUsRi8WTzhZntp5313l+CHIAT95ojUI2lpP/ExlZa4= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0/go.mod h1:Cz6ft6Dkn3Et6l2v2a9/RpN7epQ1GtDlO6lj8bEcOvw= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.50.0 h1:5IT7xOdq17MtcdtL/vtl6mGfzhaq4m4vpollPRmlsBQ= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.50.0/go.mod h1:ZV4VOm0/eHR06JLrXWe09068dHpr3TRpY9Uo7T+anuA= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.50.0 h1:nNMpRpnkWDAaqcpxMJvxa/Ud98gjbYwayJY4/9bdjiU= @@ -1281,8 +1285,8 @@ github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3 github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= github.com/akash-network/cometbft v0.38.19-akash.1 h1:am45M/0vjs1FEwh1WiLv/cp92Yskj2Dls997phjnxso= github.com/akash-network/cometbft v0.38.19-akash.1/go.mod h1:UCu8dlHqvkAsmAFmWDRWNZJPlu6ya2fTWZlDrWsivwo= -github.com/akash-network/cosmos-sdk v0.53.4-akash.b.10 h1:zPQVFSuBQKE3orKGgePPLU6eWn7kTAMCfuqFFa1Gc3Y= -github.com/akash-network/cosmos-sdk v0.53.4-akash.b.10/go.mod h1:gZcyUJu6h94FfxgJbuBpiW7RPCFEV/+GJdy4UAJ3Y1Q= +github.com/akash-network/cosmos-sdk v0.53.4-akash.10 h1:8XyxL+VfqkdVYaDudk4lrNX9vH/n3JxRizcLQlUiC/o= +github.com/akash-network/cosmos-sdk v0.53.4-akash.10/go.mod h1:gZcyUJu6h94FfxgJbuBpiW7RPCFEV/+GJdy4UAJ3Y1Q= github.com/akash-network/gogoproto v1.7.0-akash.2 h1:zY5seM6kBOLMBWn15t8vrY1ao4J1HjrhNaEeO/Soro0= github.com/akash-network/gogoproto v1.7.0-akash.2/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -1418,18 +1422,18 @@ github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV 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-db v1.1.1 h1:FezFSU37AlBC8S98NlSagL76oqBRWq/prTPvFcEJNCM= -github.com/cosmos/cosmos-db v1.1.1/go.mod h1:AghjcIPqdhSLP/2Z0yha5xPH3nLnskz81pBx3tcVSAw= +github.com/cosmos/cosmos-db v1.1.3 h1:7QNT77+vkefostcKkhrzDK9uoIEryzFrU9eoMeaQOPY= +github.com/cosmos/cosmos-db v1.1.3/go.mod h1:kN+wGsnwUJZYn8Sy5Q2O0vCYA99MJllkKASbs6Unb9U= github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= github.com/cosmos/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/iavl v1.2.2 h1:qHhKW3I70w+04g5KdsdVSHRbFLgt3yY3qTMd4Xa4rC8= -github.com/cosmos/iavl v1.2.2/go.mod h1:GiM43q0pB+uG53mLxLDzimxM9l/5N9UuSY3/D0huuVw= -github.com/cosmos/ibc-go/v10 v10.3.0 h1:w5DkHih8qn15deAeFoTk778WJU+xC1krJ5kDnicfUBc= -github.com/cosmos/ibc-go/v10 v10.3.0/go.mod h1:CthaR7n4d23PJJ7wZHegmNgbVcLXCQql7EwHrAXnMtw= +github.com/cosmos/iavl v1.2.6 h1:Hs3LndJbkIB+rEvToKJFXZvKo6Vy0Ex1SJ54hhtioIs= +github.com/cosmos/iavl v1.2.6/go.mod h1:GiM43q0pB+uG53mLxLDzimxM9l/5N9UuSY3/D0huuVw= +github.com/cosmos/ibc-go/v10 v10.4.0 h1:dPMtBw1vb/CdXQuiue+JfGwS/BYbbEFJaeSVFx86nMw= +github.com/cosmos/ibc-go/v10 v10.4.0/go.mod h1:a74pAPUSJ7NewvmvELU74hUClJhwnmm5MGbEaiTw/kE= github.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5RtnU= github.com/cosmos/ics23/go v0.11.0/go.mod h1:A8OjxPE67hHST4Icw94hOxxFEJMBG031xIGF/JHNIY0= github.com/cosmos/keyring v1.2.0 h1:8C1lBP9xhImmIabyXW4c3vFjjLiBdGCmfLUfeZlV1Yo= @@ -1465,6 +1469,8 @@ github.com/dgraph-io/ristretto/v2 v2.1.0/go.mod h1:uejeqfYXpUomfse0+lO+13ATz4Typ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= 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/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= +github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -1537,8 +1543,8 @@ github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= -github.com/getsentry/sentry-go v0.32.0 h1:YKs+//QmwE3DcYtfKRH8/KyOOF/I6Qnx7qYGNHCGmCY= -github.com/getsentry/sentry-go v0.32.0/go.mod h1:CYNcMMz73YigoHljQRG+qPF+eMq8gG72XcGN/p71BAY= +github.com/getsentry/sentry-go v0.33.0 h1:YWyDii0KGVov3xOaamOnF0mjOrqSjBqwv48UEzn7QFg= +github.com/getsentry/sentry-go v0.33.0/go.mod h1:C55omcY9ChRQIUcVcGcs+Zdy4ZpQGvNJ7JYHIoSWOtE= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= @@ -1549,8 +1555,8 @@ github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3 github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= -github.com/go-jose/go-jose/v4 v4.0.5 h1:M6T8+mKZl/+fNNuFHvGIzDz7BTLQPIounk/b9dw3AaE= -github.com/go-jose/go-jose/v4 v4.0.5/go.mod h1:s3P1lRrkT8igV8D9OjyL4WRyHvjB6a4JSllnOrmmBOA= +github.com/go-jose/go-jose/v4 v4.1.1 h1:JYhSgy4mXXzAdF3nUx3ygx347LRXJRrpgyU3adRmkAI= +github.com/go-jose/go-jose/v4 v4.1.1/go.mod h1:BdsZGqgdO3b6tTc6LSE56wcDbMMLuPsw5d4ZD5f94kA= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= @@ -1783,8 +1789,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.7.8 h1:mshVHx1Fto0/MydBekWan5zUipGq7jO0novchgMmSiY= -github.com/hashicorp/go-getter v1.7.8/go.mod h1:2c6CboOEb9jG6YvmC9xdD+tyAFsrUaJPedwXDGr0TM4= +github.com/hashicorp/go-getter v1.7.9 h1:G9gcjrDixz7glqJ+ll5IWvggSBR+R0B54DSRt4qfdC4= +github.com/hashicorp/go-getter v1.7.9/go.mod h1:dyFCmT1AQkDfOIt9NH8pw9XBDqNrIKJT5ylbpi7zPNE= github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= @@ -1947,8 +1953,6 @@ github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrk 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/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= @@ -2055,8 +2059,8 @@ github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeD github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= -github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= +github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= +github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -2066,8 +2070,8 @@ github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6T github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= -github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= -github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= +github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= 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.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= @@ -2075,8 +2079,8 @@ github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8b github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= -github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= +github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= +github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -2084,8 +2088,8 @@ github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+Gx github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= +github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= 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= @@ -2116,12 +2120,14 @@ github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sagikazarmark/locafero v0.7.0 h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsFaodPcyo= -github.com/sagikazarmark/locafero v0.7.0/go.mod h1:2za3Cg5rMaTMoG/2Ulr9AwtFaIppKXTRYnozin4aB5k= +github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc= +github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU= github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/shamaton/msgpack/v2 v2.2.3 h1:uDOHmxQySlvlUYfQwdjxyybAOzjlQsD1Vjy+4jmO9NM= +github.com/shamaton/msgpack/v2 v2.2.3/go.mod h1:6khjYnkx73f7VQU7wjcFS9DFjs+59naVWJv1TB7qdOI= 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= @@ -2135,27 +2141,27 @@ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1 github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= -github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= -github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= +github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw= +github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= -github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= -github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= -github.com/spf13/cast v1.9.2 h1:SsGfm7M8QOFtEzumm7UZrZdLLquNdzFYfIbEXntcFbE= -github.com/spf13/cast v1.9.2/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= +github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I= +github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg= +github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= +github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= -github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= +github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= +github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= -github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.20.1 h1:ZMi+z/lvLyPSCoNtFCpqjy0S4kPbirhpTMwl8BkW9X4= -github.com/spf13/viper v1.20.1/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4= +github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= +github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU= +github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY= github.com/spiffe/go-spiffe/v2 v2.5.0 h1:N2I01KCUkv1FAjZXJMwh95KK1ZIQLYbPfhaxw8WS0hE= github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= @@ -2180,8 +2186,8 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= @@ -2197,8 +2203,8 @@ github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2 github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= 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/ulikunitz/xz v0.5.14 h1:uv/0Bq533iFdnMHZdRBTOlaNMdb1+ZxXIlHDZHIHcvg= +github.com/ulikunitz/xz v0.5.14/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/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= @@ -2251,24 +2257,24 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 h1:sbiXRND go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0/go.mod h1:69uWxva0WgAA/4bu2Yy70SLDBwZXuQ6PbBpbsa5iZrQ= go.opentelemetry.io/otel v1.19.0/go.mod h1:i0QyjOq3UPoTzff0PJB2N66fb4S0+rSbSB15/oyH9fY= go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= -go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= -go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= +go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= +go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0 h1:WDdP9acbMYjbKIyJUhTvtzj601sVJOqgWdUxSdR/Ysc= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0/go.mod h1:BLbf7zbNIONBLPwvFnwNHGj4zge8uTCM/UPIVW1Mq2I= go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319EUrDVLrt7jqt8= go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= -go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= -go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= +go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= +go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A= go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= -go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= -go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= -go.opentelemetry.io/otel/sdk/metric v1.36.0 h1:r0ntwwGosWGaa0CrSt8cuNuTcccMXERFwHX4dThiPis= -go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4= +go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= +go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= +go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= +go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo= go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= -go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= -go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= +go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= +go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= @@ -2287,18 +2293,16 @@ go.uber.org/mock v0.5.2/go.mod h1:wLlUxC2vVTPTaE3UD51E0BGOAElKrILxhVSDYQLld5o= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= -go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= -go.yaml.in/yaml/v3 v3.0.3 h1:bXOww4E/J3f66rav3pX3m8w6jDE4knZjGOw8b5Y6iNE= -go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= -golang.org/x/arch v0.15.0 h1:QtOrQd0bTUnhNVNndMpLHNWrDmYzZ2KDqSrEymqInZw= -golang.org/x/arch v0.15.0/go.mod h1:JmwW7aLIoRUKgaTzhkiEFxvcEiQGyOg9BMonBJUS7EE= +go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= +golang.org/x/arch v0.17.0 h1:4O3dfLzd+lQewptAHqjewQZQDyEdejz3VwgeYwkZneU= +golang.org/x/arch v0.17.0/go.mod h1:bdwinDaKcfZUGpH09BB7ZmOfhalA8lQdzl62l8gGWsk= 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-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -2329,8 +2333,8 @@ golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1m golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= -golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= -golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= +golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= +golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb h1:xIApU0ow1zwMa2uL1VDNeQlNVFTWMQxZUZCMDy0Q4Us= golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= @@ -2375,8 +2379,8 @@ golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= -golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/mod v0.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg= +golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= 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= @@ -2461,8 +2465,8 @@ golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= -golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= -golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= 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= @@ -2523,8 +2527,8 @@ golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= 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= @@ -2640,8 +2644,8 @@ golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= -golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= 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= @@ -2664,8 +2668,8 @@ golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= -golang.org/x/term v0.33.0 h1:NuFncQrRcaRvVmgRkvM3j/F00gWIAlcmlB8ACEKmGIg= -golang.org/x/term v0.33.0/go.mod h1:s18+ql9tYWp1IfpV9DmCtQDDSRBUjKaw9M1eAv5UeF0= +golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= +golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= 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= @@ -2689,8 +2693,8 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= -golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= 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= @@ -2785,6 +2789,8 @@ gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJ gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= 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= gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= @@ -3144,8 +3150,8 @@ google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9Y google.golang.org/grpc v1.60.0/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= -google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= -google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= +google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= +google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= 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= @@ -3167,8 +3173,8 @@ google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= -google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= +google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= 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= @@ -3272,14 +3278,14 @@ modernc.org/token v1.0.1/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= -nhooyr.io/websocket v1.8.11 h1:f/qXNc2/3DpoSZkHt1DQu6rj4zGC8JmkkLkWss0MgN0= -nhooyr.io/websocket v1.8.11/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= +nhooyr.io/websocket v1.8.17 h1:KEVeLJkUywCKVsnLIDlD/5gtayKp8VoCkksHCGGfT9Y= +nhooyr.io/websocket v1.8.17/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= pgregory.net/rapid v0.5.5 h1:jkgx1TjbQPD/feRoK+S/mXw9e1uj6WilpHrXJowi6oA= pgregory.net/rapid v0.5.5/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= -pkg.akt.dev/go v0.1.5 h1:UdhU70YOzfJzzd1mT6dpnK7/5RWwV7N1zr1HRNmqtaw= -pkg.akt.dev/go v0.1.5/go.mod h1:67LZ0QbZMoCipadLNIR8HzMFcL4A4My7h9aMo516SGk= -pkg.akt.dev/go/cli v0.1.4 h1:wFPegnPwimWHi0v5LN6AnWZnwtwpnD6mb7Dp1HSuzlw= -pkg.akt.dev/go/cli v0.1.4/go.mod h1:ZLqHZcq+D/8a27WTPYhmfCm2iGbNicWV1AwOhdspJ4Y= +pkg.akt.dev/go v0.1.6-rc3 h1:7w0TyrMLAJH7hOWTHOjCH69Ofh93DYWoSSeZWs1uG7E= +pkg.akt.dev/go v0.1.6-rc3/go.mod h1:XAwgUugjjoSqiUNM3Ph/jZMZxDbo6fhJpZlEk5XRmOk= +pkg.akt.dev/go/cli v0.1.5-rc3 h1:82X7H8LuSTftog1N70Zw4duwLMCGhUZHUsD19LhYcVE= +pkg.akt.dev/go/cli v0.1.5-rc3/go.mod h1:AJinKcxEzo/YTxvEcvQOnCoHeGXQh8FfZePy8Q3aJnc= pkg.akt.dev/go/sdl v0.1.1 h1:3CcAqWeKouFlvUSjQMktWLDqftOjn4cBX37TRFT7BRM= pkg.akt.dev/go/sdl v0.1.1/go.mod h1:ADsH8/kh61tWTax8nV0utelOaKWfU3qbG+OT3v9nmeY= pkg.akt.dev/specs v0.0.1 h1:OP0zil3Fr4kcCuybFqQ8LWgSlSP2Yn7306meWpu6/S4= diff --git a/make/init.mk b/make/init.mk index 52c0bf4f9c..0f73f97b56 100644 --- a/make/init.mk +++ b/make/init.mk @@ -25,7 +25,8 @@ $(error "GOTOOLCHAIN is not set") endif NULL := -SPACE := $(NULL) # +SPACE := $(NULL) +WHITESPACE := $(NULL) $(NULL) COMMA := , BINS := $(AKASH) @@ -36,12 +37,6 @@ else endif ifneq ($(GOWORK),off) -# ifeq ($(shell test -e $(AKASH_ROOT)/go.work && echo -n yes),yes) -# GOWORK=${AKASH_ROOT}/go.work -# else -# GOWORK=off -# endif - ifeq ($(GOMOD),$(filter $(GOMOD),mod "")) $(error '-mod may only be set to readonly or vendor when in workspace mode, but it is set to ""') endif @@ -73,6 +68,9 @@ GIT_CHGLOG_VERSION ?= v0.15.1 MOCKERY_VERSION ?= 3.5.0 COSMOVISOR_VERSION ?= v1.7.1 +WASMVM_MOD := $(shell $(GO) list -m -f '{{ .Path }}' all | grep github.com/CosmWasm/wasmvm) +WASMVM_VERSION := $(shell $(GO) list -mod=readonly -m -f '{{ .Version }}' $(WASMVM_MOD)) + # ==== Build tools version tracking ==== # _VERSION_FILE points to the marker file for the installed version. # If _VERSION_FILE is changed, the binary will be re-downloaded. @@ -92,7 +90,13 @@ STATIK := $(AKASH_DEVCACHE_BIN)/statik COSMOVISOR := $(AKASH_DEVCACHE_BIN)/cosmovisor COSMOVISOR_DEBUG := $(AKASH_RUN_BIN)/cosmovisor +RELEASE_TAG ?= $(shell git describe --tags --abbrev=0) -RELEASE_TAG ?= $(shell git describe --tags --abbrev=0) +WASMVM_LIBS := libwasmvm_muslc.x86_64.a \ +libwasmvm_muslc.aarch64.a \ +libwasmvmstatic_darwin.a \ +libwasmvm.aarch64.so \ +libwasmvm.dylib \ +libwasmvm.x86_64.so include $(AKASH_ROOT)/make/setup-cache.mk diff --git a/make/releasing.mk b/make/releasing.mk index 7a5f8c31c2..60ba53de7f 100644 --- a/make/releasing.mk +++ b/make/releasing.mk @@ -34,22 +34,22 @@ ifeq ($(GORELEASER_MOUNT_CONFIG),true) endif .PHONY: bins -bins: $(BINS) +bins: $(AKASH) .PHONY: build -build: - $(GO_BUILD) -a ./... +build: wasmvm-libs + $(GO_BUILD) -a $(BUILD_FLAGS) ./... .PHONY: $(AKASH) -$(AKASH): - $(GO_BUILD) -o $@ $(BUILD_FLAGS) ./cmd/akash +$(AKASH): wasmvm-libs + $(GO_BUILD) -v $(BUILD_FLAGS) -o $@ ./cmd/akash .PHONY: akash akash: $(AKASH) .PHONY: akash_docgen akash_docgen: $(AKASH_DEVCACHE) - $(GO_BUILD) -o $(AKASH_DEVCACHE_BIN)/akash_docgen $(BUILD_FLAGS) ./docgen + $(GO_BUILD) $(BUILD_FLAGS) -o $(AKASH_DEVCACHE_BIN)/akash_docgen ./docgen .PHONY: install install: @@ -61,15 +61,13 @@ image-minikube: eval $$(minikube docker-env) && docker-image .PHONY: test-bins -test-bins: +test-bins: wasmvm-libs docker run \ --rm \ - -e STABLE=$(IS_STABLE) \ -e MOD="$(GOMOD)" \ - -e BUILD_TAGS="$(BUILD_TAGS)" \ - -e BUILD_VARS="$(GORELEASER_BUILD_VARS)" \ - -e STRIP_FLAGS="$(GORELEASER_STRIP_FLAGS)" \ - -e LINKMODE="$(GO_LINKMODE)" \ + -e STABLE=$(IS_STABLE) \ + -e BUILD_TAGS="$(GORELEASER_TAGS)" \ + -e BUILD_LDFLAGS="$(GORELEASER_LDFLAGS)" \ -e DOCKER_IMAGE=$(RELEASE_DOCKER_IMAGE) \ -e GOPATH=/go \ -e GOTOOLCHAIN="$(GOTOOLCHAIN)" \ @@ -86,15 +84,13 @@ test-bins: --snapshot .PHONY: docker-image -docker-image: +docker-image: wasmvm-libs docker run \ --rm \ - -e STABLE=$(IS_STABLE) \ -e MOD="$(GOMOD)" \ - -e BUILD_TAGS="$(BUILD_TAGS)" \ - -e BUILD_VARS="$(GORELEASER_BUILD_VARS)" \ - -e STRIP_FLAGS="$(GORELEASER_STRIP_FLAGS)" \ - -e LINKMODE="$(GO_LINKMODE)" \ + -e STABLE=$(IS_STABLE) \ + -e BUILD_TAGS="$(GORELEASER_TAGS)" \ + -e BUILD_LDFLAGS="$(GORELEASER_LDFLAGS)" \ -e DOCKER_IMAGE=$(RELEASE_DOCKER_IMAGE) \ -e GOPATH=/go \ -e GOTOOLCHAIN="$(GOTOOLCHAIN)" \ @@ -116,15 +112,13 @@ gen-changelog: $(GIT_CHGLOG) ./script/genchangelog.sh "$(RELEASE_TAG)" .cache/changelog.md .PHONY: release -release: gen-changelog +release: wasmvm-libs gen-changelog docker run \ --rm \ - -e STABLE=$(IS_STABLE) \ -e MOD="$(GOMOD)" \ - -e BUILD_TAGS="$(BUILD_TAGS)" \ - -e BUILD_VARS="$(GORELEASER_BUILD_VARS)" \ - -e STRIP_FLAGS="$(GORELEASER_STRIP_FLAGS)" \ - -e LINKMODE="$(GO_LINKMODE)" \ + -e STABLE=$(IS_STABLE) \ + -e BUILD_TAGS="$(GORELEASER_TAGS)" \ + -e BUILD_LDFLAGS="$(GORELEASER_LDFLAGS)" \ -e GITHUB_TOKEN="$(GITHUB_TOKEN)" \ -e GORELEASER_CURRENT_TAG="$(RELEASE_TAG)" \ -e DOCKER_IMAGE=$(RELEASE_DOCKER_IMAGE) \ diff --git a/make/setup-cache.mk b/make/setup-cache.mk index cfabcd2f31..2a2b019102 100644 --- a/make/setup-cache.mk +++ b/make/setup-cache.mk @@ -2,6 +2,7 @@ $(AKASH_DEVCACHE): @echo "creating .cache dir structure..." mkdir -p $@ mkdir -p $(AKASH_DEVCACHE_BIN) + mkdir -p $(AKASH_DEVCACHE_LIB) mkdir -p $(AKASH_DEVCACHE_INCLUDE) mkdir -p $(AKASH_DEVCACHE_VERSIONS) mkdir -p $(AKASH_DEVCACHE_NODE_MODULES) @@ -57,3 +58,23 @@ $(COSMOVISOR): $(COSMOVISOR_VERSION_FILE) cache-clean: rm -rf $(AKASH_DEVCACHE) + +$(AKASH_DEVCACHE_LIB)/%: + wget -q --show-progress https://github.com/CosmWasm/wasmvm/releases/download/$(WASMVM_VERSION)/$* -O $@ + @rm -f $(AKASH_DEVCACHE_LIB)/.wasmvm_verified + +$(AKASH_DEVCACHE_LIB)/wasmvm_checksums.txt: + wget -q --show-progress https://github.com/CosmWasm/wasmvm/releases/download/$(WASMVM_VERSION)/checksums.txt -O $@ + @rm -f $(AKASH_DEVCACHE_LIB)/.wasmvm_verified + +$(AKASH_DEVCACHE_LIB)/.wasmvm_verified: $(patsubst %, $(AKASH_DEVCACHE_LIB)/%,$(WASMVM_LIBS)) $(AKASH_DEVCACHE_LIB)/wasmvm_checksums.txt + cd $(AKASH_DEVCACHE_LIB) && sha256sum -c --ignore-missing wasmvm_checksums.txt + @touch $@ + +.PHONY: wasmvm-libs-verify +wasmvm-libs-verify: + @$(MAKE) -s $(AKASH_DEVCACHE_LIB)/.wasmvm_verified + +.NOTPARALLEL: wasmvm-libs +.PHONY: wasmvm-libs +wasmvm-libs: $(AKASH_DEVCACHE) $(patsubst %, $(AKASH_DEVCACHE_LIB)/%,$(WASMVM_LIBS)) $(AKASH_DEVCACHE_LIB)/wasmvm_checksums.txt wasmvm-libs-verify diff --git a/make/test-integration.mk b/make/test-integration.mk index ee4b63bddb..23df9ecac4 100644 --- a/make/test-integration.mk +++ b/make/test-integration.mk @@ -7,28 +7,28 @@ TEST_MODULES ?= $(shell $(GO) list ./... | grep -v '/mocks') ############################################################################### .PHONY: test -test: - $(GO_TEST) -v -timeout 600s $(TEST_MODULES) +test: wasmvm-libs + $(GO_TEST) $(BUILD_FLAGS) -v -timeout 600s $(TEST_MODULES) .PHONY: test-nocache -test-nocache: - $(GO_TEST) -count=1 $(TEST_MODULES) +test-nocache: wasmvm-libs + $(GO_TEST) $(BUILD_FLAGS) -count=1 $(TEST_MODULES) .PHONY: test-full -test-full: - $(GO_TEST) -v -tags=$(BUILD_TAGS) $(TEST_MODULES) +test-full: wasmvm-libs + $(GO_TEST) -v $(BUILD_FLAGS) $(TEST_MODULES) .PHONY: test-integration test-integration: - $(GO_TEST) -v -tags="e2e.integration" $(TEST_MODULES) + $(GO_TEST) -v -tags="e2e.integration" -ldflags '$(ldflags)' $(TEST_MODULES) .PHONY: test-coverage -test-coverage: - $(GO_TEST) -tags=$(BUILD_MAINNET) -coverprofile=coverage.txt \ +test-coverage: wasmvm-libs + $(GO_TEST) $(BUILD_FLAGS) -coverprofile=coverage.txt \ -covermode=count \ -coverpkg="$(COVER_PACKAGES)" \ ./... .PHONY: test-vet -test-vet: - $(GO_VET) ./... +test-vet: wasmvm-libs + $(GO_VET) $(BUILD_FLAGS) ./... diff --git a/make/test-upgrade.mk b/make/test-upgrade.mk index 29fdad29de..04faf20390 100644 --- a/make/test-upgrade.mk +++ b/make/test-upgrade.mk @@ -21,7 +21,7 @@ UPGRADE_FROM := $(shell cat $(ROOT_DIR)/meta.json | jq -r --arg name GENESIS_BINARY_VERSION := $(shell cat $(ROOT_DIR)/meta.json | jq -r --arg name $(UPGRADE_TO) '.upgrades[$$name].from_binary' | tr -d '\n') UPGRADE_BINARY_VERSION ?= local -SNAPSHOT_SOURCE ?= sandbox1 +SNAPSHOT_SOURCE ?= sandbox ifeq ($(SNAPSHOT_SOURCE),mainnet) SNAPSHOT_NETWORK := akashnet-2 @@ -29,9 +29,6 @@ ifeq ($(SNAPSHOT_SOURCE),mainnet) else ifeq ($(SNAPSHOT_SOURCE),sandbox) SNAPSHOT_NETWORK := sandbox-2 CHAIN_METADATA_URL := https://raw.githubusercontent.com/akash-network/net/master/sandbox-2/meta.json -else ifeq ($(SNAPSHOT_SOURCE),sandbox1) - SNAPSHOT_NETWORK := sandbox-01 - CHAIN_METADATA_URL := https://raw.githubusercontent.com/akash-network/net/master/sandbox/meta.json else $(error "invalid snapshot source $(SNAPSHOT_SOURCE)") endif @@ -67,6 +64,7 @@ test: init $(GO_TEST) -run "^\QTestUpgrade\E$$" -tags e2e.upgrade -timeout 180m -v -args \ -cosmovisor=$(COSMOVISOR) \ -workdir=$(AP_RUN_DIR)/validators \ + -sourcesdir=$(AKASH_ROOT) \ -config=$(TEST_CONFIG) \ -upgrade-name=$(UPGRADE_TO) \ -upgrade-version="$(UPGRADE_BINARY_VERSION)" \ @@ -75,7 +73,7 @@ test: init .PHONY: test-reset test-reset: $(ROOT_DIR)/script/upgrades.sh --workdir=$(AP_RUN_DIR) --config="$(PWD)/config.json" --uto=$(UPGRADE_TO) --snapshot-url=$(SNAPSHOT_URL) --chain-meta=$(CHAIN_METADATA_URL) --max-validators=$(MAX_VALIDATORS) clean - #$(ROOT_DIR)/script/upgrades.sh --workdir=$(AP_RUN_DIR) --config="$(PWD)/config.json" --uto=$(UPGRADE_TO) --snapshot-url=$(SNAPSHOT_URL) --gbv=$(GENESIS_BINARY_VERSION) --chain-meta=$(CHAIN_METADATA_URL) bins + $(ROOT_DIR)/script/upgrades.sh --workdir=$(AP_RUN_DIR) --config="$(PWD)/config.json" --uto=$(UPGRADE_TO) --snapshot-url=$(SNAPSHOT_URL) --gbv=$(GENESIS_BINARY_VERSION) --chain-meta=$(CHAIN_METADATA_URL) bins $(ROOT_DIR)/script/upgrades.sh --workdir=$(AP_RUN_DIR) --config="$(PWD)/config.json" --uto=$(UPGRADE_TO) --snapshot-url=$(SNAPSHOT_URL) --chain-meta=$(CHAIN_METADATA_URL) keys $(ROOT_DIR)/script/upgrades.sh --workdir=$(AP_RUN_DIR) --config="$(PWD)/config.json" --state-config=$(STATE_CONFIG) --snapshot-url=$(SNAPSHOT_URL) --chain-meta=$(CHAIN_METADATA_URL) --max-validators=$(MAX_VALIDATORS) prepare-state diff --git a/meta.json b/meta.json index 5dc439ee52..ef73220d59 100644 --- a/meta.json +++ b/meta.json @@ -44,6 +44,11 @@ "skipped": false, "from_binary": "v0.38.6-rc2", "from_version": "v0.38.0" + }, + "v2.0.0": { + "skipped": false, + "from_binary": "v1.0.3-rc4", + "from_version": "v1.0.0" } } } diff --git a/pubsub/bus_test.go b/pubsub/bus_test.go index 747c400102..1187d70926 100644 --- a/pubsub/bus_test.go +++ b/pubsub/bus_test.go @@ -6,7 +6,7 @@ import ( "github.com/cometbft/cometbft/crypto/ed25519" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "pkg.akt.dev/node/pubsub" + "pkg.akt.dev/node/v2/pubsub" ) func TestBus(t *testing.T) { diff --git a/script/upgrades.sh b/script/upgrades.sh index 97f209d606..8d24b51b38 100755 --- a/script/upgrades.sh +++ b/script/upgrades.sh @@ -548,7 +548,7 @@ function prepare_state() { valjson=$(cat "$valdir/validator.json") if [[ $cnt -gt 0 ]]; then if [[ $($semver compare "$akashversion" v1.0.0-rc0) -ge 0 ]]; then - $AKASH tx staking create-validator "$valjson" --home="$rvaldir" --from="validator$cnt" --yes + $AKASH tx staking create-validator "$valdir/validator.json" --home="$rvaldir" --from="validator$cnt" --yes else $AKASH tx staking create-validator \ --home="$rvaldir" \ diff --git a/tests/e2e/certs_cli_test.go b/tests/e2e/certs_cli_test.go index 57e607159d..c6c017ae97 100644 --- a/tests/e2e/certs_cli_test.go +++ b/tests/e2e/certs_cli_test.go @@ -6,7 +6,7 @@ import ( "github.com/stretchr/testify/require" clitestutil "pkg.akt.dev/go/cli/testutil" - "pkg.akt.dev/node/testutil" + "pkg.akt.dev/node/v2/testutil" "pkg.akt.dev/go/cli" utiltls "pkg.akt.dev/go/util/tls" diff --git a/tests/e2e/certs_grpc_test.go b/tests/e2e/certs_grpc_test.go index 8140092baf..db43d65849 100644 --- a/tests/e2e/certs_grpc_test.go +++ b/tests/e2e/certs_grpc_test.go @@ -13,7 +13,7 @@ import ( "github.com/stretchr/testify/require" types "pkg.akt.dev/go/node/cert/v1" - "pkg.akt.dev/node/testutil" + "pkg.akt.dev/node/v2/testutil" ) type certsGRPCRestTestSuite struct { diff --git a/tests/e2e/cli_test.go b/tests/e2e/cli_test.go index 647769fffa..20bf3e5d0d 100644 --- a/tests/e2e/cli_test.go +++ b/tests/e2e/cli_test.go @@ -8,7 +8,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/suite" - "pkg.akt.dev/node/testutil" + "pkg.akt.dev/node/v2/testutil" ) var DefaultDeposit = sdk.NewCoin("uakt", sdk.NewInt(5000000)) diff --git a/tests/e2e/deployment_cli_test.go b/tests/e2e/deployment_cli_test.go index 9f314a992a..6fef619745 100644 --- a/tests/e2e/deployment_cli_test.go +++ b/tests/e2e/deployment_cli_test.go @@ -22,7 +22,7 @@ import ( "pkg.akt.dev/go/cli" clitestutil "pkg.akt.dev/go/cli/testutil" - "pkg.akt.dev/node/testutil" + "pkg.akt.dev/node/v2/testutil" ) type deploymentIntegrationTestSuite struct { diff --git a/tests/e2e/deployment_grpc_test.go b/tests/e2e/deployment_grpc_test.go index 6373d1004c..dcebbd231c 100644 --- a/tests/e2e/deployment_grpc_test.go +++ b/tests/e2e/deployment_grpc_test.go @@ -14,7 +14,7 @@ import ( v1 "pkg.akt.dev/go/node/deployment/v1" "pkg.akt.dev/go/node/deployment/v1beta4" - "pkg.akt.dev/node/testutil" + "pkg.akt.dev/node/v2/testutil" ) type deploymentGRPCRestTestSuite struct { diff --git a/tests/e2e/grpc_test.go b/tests/e2e/grpc_test.go index 57768a574a..0810d5af11 100644 --- a/tests/e2e/grpc_test.go +++ b/tests/e2e/grpc_test.go @@ -7,7 +7,7 @@ import ( "github.com/stretchr/testify/suite" - "pkg.akt.dev/node/testutil" + "pkg.akt.dev/node/v2/testutil" ) func TestIntegrationGRPC(t *testing.T) { diff --git a/tests/e2e/market_cli_test.go b/tests/e2e/market_cli_test.go index 73346ae86d..d799a1d9e1 100644 --- a/tests/e2e/market_cli_test.go +++ b/tests/e2e/market_cli_test.go @@ -17,7 +17,7 @@ import ( "pkg.akt.dev/go/cli" clitestutil "pkg.akt.dev/go/cli/testutil" - "pkg.akt.dev/node/testutil" + "pkg.akt.dev/node/v2/testutil" ) type marketIntegrationTestSuite struct { diff --git a/tests/e2e/market_grpc_test.go b/tests/e2e/market_grpc_test.go index e7009120e0..d75cba641e 100644 --- a/tests/e2e/market_grpc_test.go +++ b/tests/e2e/market_grpc_test.go @@ -19,7 +19,7 @@ import ( "pkg.akt.dev/go/cli" clitestutil "pkg.akt.dev/go/cli/testutil" - "pkg.akt.dev/node/testutil" + "pkg.akt.dev/node/v2/testutil" ) type marketGRPCRestTestSuite struct { diff --git a/tests/e2e/provider_cli_test.go b/tests/e2e/provider_cli_test.go index 93a6b122b9..db32075bbe 100644 --- a/tests/e2e/provider_cli_test.go +++ b/tests/e2e/provider_cli_test.go @@ -11,7 +11,7 @@ import ( types "pkg.akt.dev/go/node/provider/v1beta4" - "pkg.akt.dev/node/testutil" + "pkg.akt.dev/node/v2/testutil" ) type providerIntegrationTestSuite struct { diff --git a/tests/e2e/provider_grpc_test.go b/tests/e2e/provider_grpc_test.go index ef26357ddd..8d595e53eb 100644 --- a/tests/e2e/provider_grpc_test.go +++ b/tests/e2e/provider_grpc_test.go @@ -13,7 +13,7 @@ import ( sdktestutil "github.com/cosmos/cosmos-sdk/testutil" types "pkg.akt.dev/go/node/provider/v1beta4" - "pkg.akt.dev/node/testutil" + "pkg.akt.dev/node/v2/testutil" ) type providerGRPCRestTestSuite struct { diff --git a/tests/upgrade/config-v0.24.0.tmpl.json b/tests/upgrade/config-v0.24.0.tmpl.json deleted file mode 100644 index 6a67ae1dbc..0000000000 --- a/tests/upgrade/config-v0.24.0.tmpl.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "chain_id": "localakash", - "accounts": { - "add": [ - { - "address": "{{ (ds "account_address") }}", - "pubkey": {{ (ds "account_pubkey") }}, - "coins": [ - "2000000000000000uakt" - ] - } - ] - }, - "validators": { - "add": [ - { - "name": "upgrade-tester", - "pubkey": {{ (ds "validator_pubkey") }}, - "rates": { - "rate": "0.05", - "maxRate": "0.8", - "maxChangeRate": "0.1" - }, - "bonded": true, - "delegators": [ - { - "address": "{{ (ds "account_address") }}", - "coins": [ - "1950000000000000uakt" - ] - } - ] - } - ] - }, - "gov": { - "voting_params": { - "voting_period": "60s" - } - } -} diff --git a/tests/upgrade/sdktypes.go b/tests/upgrade/sdktypes.go new file mode 100644 index 0000000000..990506122c --- /dev/null +++ b/tests/upgrade/sdktypes.go @@ -0,0 +1,56 @@ +package upgrade + +import ( + "encoding/json" + + upgradetypes "cosmossdk.io/x/upgrade/types" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// These files defines sdk specific types necessary to perform upgrade simulation. +// we're not using SDK generated types to prevent import of different types of cosmos sdk + +type nodeStatus struct { + SyncInfo struct { + LatestBlockHeight string `json:"latest_block_height"` + CatchingUp bool `json:"catching_up"` + } `json:"sync_info"` +} + +type votingParams struct { + VotingPeriod string `json:"voting_period"` +} + +type depositParams struct { + MinDeposit sdk.Coins `json:"min_deposit"` +} + +type govParams struct { + VotingParams votingParams `json:"voting_params"` + DepositParams depositParams `json:"deposit_params"` +} + +type proposalResp struct { + ID string `json:"id"` + Title string `json:"title"` +} + +type proposalsResp struct { + Proposals []proposalResp `json:"proposals"` +} + +type SoftwareUpgradeProposal struct { + Type string `json:"@type"` + Authority string `json:"authority"` + Plan upgradetypes.Plan `json:"plan"` +} + +type ProposalMsg struct { + // Msgs defines an array of sdk.Msgs proto-JSON-encoded as Anys. + Messages []json.RawMessage `json:"messages,omitempty"` + Metadata string `json:"metadata"` + Deposit string `json:"deposit"` + Title string `json:"title"` + Summary string `json:"summary"` + Expedited bool `json:"expedited"` +} diff --git a/tests/upgrade/test-cases.json b/tests/upgrade/test-cases.json index 9edaacc110..657fe006af 100644 --- a/tests/upgrade/test-cases.json +++ b/tests/upgrade/test-cases.json @@ -1,4 +1,12 @@ { + "v2.0.0": { + "modules": { + "added": [ + "wasm", + "awasm" + ] + } + }, "v1.0.0": { "modules": { "added": [ diff --git a/tests/upgrade/test-config.json b/tests/upgrade/test-config.json index c6f36a4220..a9ec58b481 100644 --- a/tests/upgrade/test-config.json +++ b/tests/upgrade/test-config.json @@ -1,8 +1,7 @@ { "chain-id": "localakash", "validators": [ - ".akash0", - ".akash1" + ".akash0" ], "work": { "home": ".akash0", diff --git a/tests/upgrade/testdata/hackatom.wasm b/tests/upgrade/testdata/hackatom.wasm new file mode 100644 index 0000000000..5333788263 Binary files /dev/null and b/tests/upgrade/testdata/hackatom.wasm differ diff --git a/tests/upgrade/types/types.go b/tests/upgrade/types/types.go index cfc20f4cd5..5c5741a057 100644 --- a/tests/upgrade/types/types.go +++ b/tests/upgrade/types/types.go @@ -11,6 +11,7 @@ import ( type TestParams struct { Home string Node string + SourceDir string ChainID string KeyringBackend string From string diff --git a/tests/upgrade/upgrade_test.go b/tests/upgrade/upgrade_test.go index 8ff059ab5e..a9c4e60e84 100644 --- a/tests/upgrade/upgrade_test.go +++ b/tests/upgrade/upgrade_test.go @@ -22,7 +22,7 @@ import ( "testing" "time" - sdkmath "cosmossdk.io/math" + upgradetypes "cosmossdk.io/x/upgrade/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "golang.org/x/mod/semver" @@ -33,9 +33,9 @@ import ( // init sdk config _ "pkg.akt.dev/go/sdkutil" - "pkg.akt.dev/node/pubsub" - uttypes "pkg.akt.dev/node/tests/upgrade/types" - "pkg.akt.dev/node/util/cli" + "pkg.akt.dev/node/v2/pubsub" + uttypes "pkg.akt.dev/node/v2/tests/upgrade/types" + "pkg.akt.dev/node/v2/util/cli" ) const ( @@ -131,42 +131,11 @@ type postUpgradeTestDone struct{} type eventShutdown struct{} -type votingParams struct { - VotingPeriod string `json:"voting_period"` -} - -type depositParams struct { - MinDeposit sdk.Coins `json:"min_deposit"` -} - -type govParams struct { - VotingParams votingParams `json:"voting_params"` - DepositParams depositParams `json:"deposit_params"` -} - -type proposalResp struct { - ProposalID string `json:"proposal_id"` - Content struct { - Title string `json:"title"` - } `json:"content"` -} - -type proposalsResp struct { - Proposals []proposalResp `json:"proposals"` -} - type wdReq struct { event watchdogCtrl resp chan<- struct{} } -type nodeStatus struct { - SyncInfo struct { - LatestBlockHeight string `json:"latest_block_height"` - CatchingUp bool `json:"catching_up"` - } `json:"SyncInfo"` -} - type testMigration struct { From string `json:"from"` To string `json:"to"` @@ -238,6 +207,7 @@ type upgradeTest struct { cancel context.CancelFunc group *errgroup.Group cmdr *commander + cacheDir string upgradeName string upgradeInfo string postUpgradeParams uttypes.TestParams @@ -261,6 +231,7 @@ type nodeInitParams struct { var ( workdir = flag.String("workdir", "", "work directory") + sourcesdir = flag.String("sourcesdir", "", "sources directory") config = flag.String("config", "", "config file") cosmovisor = flag.String("cosmovisor", "", "path to cosmovisor") upgradeVersion = flag.String("upgrade-version", "local", "akash release to download. local if it is built locally") @@ -297,6 +268,7 @@ func TestUpgrade(t *testing.T) { t.Log("detecting arguments") require.NotEqual(t, "", *workdir, "empty workdir flag") + require.NotEqual(t, "", *sourcesdir, "empty sourcesdir flag") require.NotEqual(t, "", *config, "empty config flag") require.NotEqual(t, "", *upgradeVersion, "empty upgrade-version flag") require.NotEqual(t, "", *upgradeName, "empty upgrade-name flag") @@ -312,6 +284,7 @@ func TestUpgrade(t *testing.T) { require.True(t, info.IsDir(), "workdir flag is not a dir") *workdir = strings.TrimSuffix(*workdir, "/") + *sourcesdir = strings.TrimSuffix(*sourcesdir, "/") info, err = os.Stat(*cosmovisor) require.NoError(t, err) @@ -373,9 +346,14 @@ func TestUpgrade(t *testing.T) { postUpgradeParams := uttypes.TestParams{} + var upgradeCache string for idx, name := range cfg.Validators { homedir := fmt.Sprintf("%s/%s", *workdir, name) + if idx == 0 { + upgradeCache = homedir + } + genesisBin := fmt.Sprintf("%s/cosmovisor/genesis/bin/akash", homedir) info, err = os.Stat(genesisBin) @@ -417,6 +395,7 @@ func TestUpgrade(t *testing.T) { t.Logf("validator address: \"%s\"", addr.String()) postUpgradeParams.Home = homedir + postUpgradeParams.SourceDir = *sourcesdir postUpgradeParams.ChainID = cfg.ChainID postUpgradeParams.Node = "tcp://127.0.0.1:26657" postUpgradeParams.KeyringBackend = "test" @@ -533,6 +512,7 @@ func TestUpgrade(t *testing.T) { ctx: ctx, group: group, cmdr: cmdr, + cacheDir: upgradeCache, upgradeName: *upgradeName, upgradeInfo: upgradeInfo, postUpgradeParams: postUpgradeParams, @@ -658,6 +638,18 @@ loop: return err } +type baseAccount struct { + Address string `json:"address"` +} + +type moduleAccount struct { + BaseAccount baseAccount `json:"base_account"` +} + +type accountResp struct { + Account moduleAccount `json:"account"` +} + func (l *upgradeTest) submitUpgradeProposal() error { var err error @@ -688,17 +680,29 @@ func (l *upgradeTest) submitUpgradeProposal() error { } } - tm := time.NewTimer(30 * time.Second) - select { - case <-l.ctx.Done(): - if !tm.Stop() { - <-tm.C - } - err = l.ctx.Err() + cmdRes, err = l.cmdr.execute(l.ctx, "query auth module-account gov") + if err != nil { + l.t.Logf("executing cmd failed: %s\n", string(cmdRes)) return err - case <-tm.C: } + macc := accountResp{} + err = json.Unmarshal(cmdRes, &macc) + if err != nil { + return err + } + + //tm := time.NewTimer(30 * time.Second) + //select { + //case <-l.ctx.Done(): + // if !tm.Stop() { + // <-tm.C + // } + // err = l.ctx.Err() + // return err + //case <-tm.C: + //} + cmdRes, err = l.cmdr.execute(l.ctx, "query gov params") if err != nil { l.t.Logf("executing cmd failed: %s\n", string(cmdRes)) @@ -712,13 +716,11 @@ func (l *upgradeTest) submitUpgradeProposal() error { return err } - votePeriod, valid := sdkmath.NewIntFromString(params.VotingParams.VotingPeriod) - if !valid { + votePeriod, err := time.ParseDuration(params.VotingParams.VotingPeriod) + if err != nil { return fmt.Errorf("invalid vote period value (%s)", params.VotingParams.VotingPeriod) } - votePeriod = votePeriod.QuoRaw(1e9) - cmdRes, err = l.cmdr.execute(l.ctx, "status") if err != nil { l.t.Logf("executing cmd failed: %s\n", string(cmdRes)) @@ -730,27 +732,55 @@ func (l *upgradeTest) submitUpgradeProposal() error { return err } - upgradeHeight, err := strconv.ParseUint(statusResp.SyncInfo.LatestBlockHeight, 10, 64) + upgradeHeight, err := strconv.ParseInt(statusResp.SyncInfo.LatestBlockHeight, 10, 64) + if err != nil { + return err + } + + upgradeHeight += int64(votePeriod/(6*time.Second)) + 10 + + upgradeProp := SoftwareUpgradeProposal{ + Type: "/cosmos.upgrade.v1beta1.MsgSoftwareUpgrade", + Authority: macc.Account.BaseAccount.Address, + Plan: upgradetypes.Plan{ + Name: l.upgradeName, + Height: upgradeHeight, + Info: l.upgradeInfo, + }, + } + + jup, err := json.Marshal(&upgradeProp) + if err != nil { + return err + } + + prop := &ProposalMsg{ + Messages: []json.RawMessage{ + jup, + }, + Deposit: params.DepositParams.MinDeposit[0].String(), + Title: l.upgradeName, + Summary: l.upgradeName, + Expedited: false, + } + + jProp, err := json.Marshal(prop) if err != nil { return err } - upgradeHeight += (votePeriod.Uint64() / 6) + 10 + propFile := fmt.Sprintf("%s/upgrade-prop-%s.json", l.cacheDir, l.upgradeName) + err = os.WriteFile(propFile, jProp, 0644) + if err != nil { + return err + } - l.t.Logf("voting period: %ss, curr height: %s, upgrade height: %d", + l.t.Logf("voting period: %s, curr height: %s, upgrade height: %d", votePeriod, statusResp.SyncInfo.LatestBlockHeight, upgradeHeight) - cmd := fmt.Sprintf(`tx gov submit-proposal software-upgrade %s --title=%[1]s --description="%[1]s" --upgrade-height=%d --deposit=%s`, - l.upgradeName, - upgradeHeight, - params.DepositParams.MinDeposit[0].String(), - ) - - if l.upgradeInfo != "" { - cmd += fmt.Sprintf(` --upgrade-info='%s'`, l.upgradeInfo) - } + cmd := fmt.Sprintf(`tx gov submit-proposal %s`, propFile) cmdRes, err = l.cmdr.execute(l.ctx, cmd) if err != nil { @@ -758,8 +788,8 @@ func (l *upgradeTest) submitUpgradeProposal() error { return err } - // give it two blocks to make sure proposal has been commited - tmctx, cancel := context.WithTimeout(l.ctx, 12*time.Second) + // give it two blocks to make sure a proposal has been commited + tmctx, cancel := context.WithTimeout(l.ctx, 18*time.Second) defer cancel() <-tmctx.Done() @@ -784,8 +814,8 @@ func (l *upgradeTest) submitUpgradeProposal() error { var propID string for i := len(proposals.Proposals) - 1; i >= 0; i-- { - if proposals.Proposals[i].Content.Title == l.upgradeName { - propID = proposals.Proposals[i].ProposalID + if proposals.Proposals[i].Title == l.upgradeName { + propID = proposals.Proposals[i].ID break } } diff --git a/tests/upgrade/workers_test.go b/tests/upgrade/workers_test.go index 171802ba3d..a12b1d70da 100644 --- a/tests/upgrade/workers_test.go +++ b/tests/upgrade/workers_test.go @@ -4,141 +4,143 @@ package upgrade import ( "context" + "fmt" + "os" "testing" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" "github.com/stretchr/testify/require" - sdkmath "cosmossdk.io/math" + "github.com/CosmWasm/wasmd/x/wasm/ioutils" + wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" sdkclient "github.com/cosmos/cosmos-sdk/client" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "pkg.akt.dev/go/cli/flags" - arpcclient "pkg.akt.dev/go/node/client" - aclient "pkg.akt.dev/go/node/client/discovery" + client "pkg.akt.dev/go/node/client/discovery" cltypes "pkg.akt.dev/go/node/client/types" - "pkg.akt.dev/go/node/client/v1beta3" + clt "pkg.akt.dev/go/node/client/v1beta3" + + cflags "pkg.akt.dev/go/cli/flags" + arpcclient "pkg.akt.dev/go/node/client" "pkg.akt.dev/go/sdkutil" - "pkg.akt.dev/node/app" - uttypes "pkg.akt.dev/node/tests/upgrade/types" + akash "pkg.akt.dev/node/v2/app" + uttypes "pkg.akt.dev/node/v2/tests/upgrade/types" ) func init() { - uttypes.RegisterPostUpgradeWorker("v1.0.0", &postUpgrade{}) + uttypes.RegisterPostUpgradeWorker("v2.0.0", &postUpgrade{}) } -type postUpgrade struct { - cl v1beta3.Client -} +type postUpgrade struct{} var _ uttypes.TestWorker = (*postUpgrade)(nil) func (pu *postUpgrade) Run(ctx context.Context, t *testing.T, params uttypes.TestParams) { - encodingConfig := sdkutil.MakeEncodingConfig() - app.ModuleBasics().RegisterInterfaces(encodingConfig.InterfaceRegistry) + encCfg := sdkutil.MakeEncodingConfig() + akash.ModuleBasics().RegisterInterfaces(encCfg.InterfaceRegistry) rpcClient, err := arpcclient.NewClient(ctx, params.Node) require.NoError(t, err) cctx := sdkclient.Context{}. - WithCodec(encodingConfig.Codec). - WithInterfaceRegistry(encodingConfig.InterfaceRegistry). - WithTxConfig(encodingConfig.TxConfig). - WithLegacyAmino(encodingConfig.Amino). + WithCodec(encCfg.Codec). + WithInterfaceRegistry(encCfg.InterfaceRegistry). + WithTxConfig(encCfg.TxConfig). + WithLegacyAmino(encCfg.Amino). WithAccountRetriever(authtypes.AccountRetriever{}). - WithBroadcastMode(flags.BroadcastBlock). + WithBroadcastMode(cflags.BroadcastBlock). WithHomeDir(params.Home). WithChainID(params.ChainID). WithNodeURI(params.Node). WithClient(rpcClient). WithSkipConfirmation(true). WithFrom(params.From). - WithFromName(params.From). - WithFromAddress(params.FromAddress). WithKeyringDir(params.Home). - WithSignModeStr(flags.SignModeDirect). - WithSimulation(false) + WithSignModeStr("direct") kr, err := sdkclient.NewKeyringFromBackend(cctx, params.KeyringBackend) require.NoError(t, err) cctx = cctx.WithKeyring(kr) + info, err := kr.Key(params.From) + require.NoError(t, err) + + mainAddr, err := info.GetAddress() + require.NoError(t, err) + + mainCctx := cctx.WithFromName(info.Name). + WithFromAddress(mainAddr) + opts := []cltypes.ClientOption{ cltypes.WithGasPrices("0.025uakt"), cltypes.WithGas(cltypes.GasSetting{Simulate: false, Gas: 1000000}), cltypes.WithGasAdjustment(2), } - pu.cl, err = aclient.DiscoverClient(ctx, cctx, opts...) + mcl, err := client.DiscoverClient(ctx, mainCctx, opts...) require.NoError(t, err) - require.NotNil(t, pu.cl) + require.NotNil(t, mcl) - pu.testGov(ctx, t) - - pu.testStaking(ctx, t) -} - -func (pu *postUpgrade) testGov(ctx context.Context, t *testing.T) { - t.Logf("testing gov module") - cctx := pu.cl.ClientContext() - - paramsResp, err := pu.cl.Query().Gov().Params(ctx, &govtypes.QueryParamsRequest{ParamsType: "deposit"}) + // should not be able to deploy smart contract directly + wasm, err := os.ReadFile(fmt.Sprintf("%s/tests/upgrade/testdata/hackatom.wasm", params.SourceDir)) require.NoError(t, err) - require.NotNil(t, paramsResp) - - // paramsResp.Params.ExpeditedMinDeposit. - require.Equal(t, sdk.Coins{sdk.NewCoin("uakt", sdkmath.NewInt(2000000000))}.String(), sdk.Coins(paramsResp.Params.ExpeditedMinDeposit).String(), "ExpeditedMinDeposit must have 2000AKT") - require.Equal(t, paramsResp.Params.MinInitialDepositRatio, sdkmath.LegacyNewDecWithPrec(40, 2).String(), "MinInitialDepositRatio must be 40%") - opAddr := sdk.ValAddress(cctx.FromAddress) + // gzip the wasm file + if ioutils.IsWasm(wasm) { + wasm, err = ioutils.GzipIt(wasm) + require.NoError(t, err) + } else { + require.True(t, ioutils.IsGzip(wasm)) + } - comVal := sdkmath.LegacyNewDecWithPrec(4, 2) + msg := &wasmtypes.MsgStoreCode{ + Sender: mainAddr.String(), + WASMByteCode: wasm, + InstantiatePermission: &wasmtypes.AllowNobody, + } - valResp, err := pu.cl.Query().Staking().Validator(ctx, &stakingtypes.QueryValidatorRequest{ValidatorAddr: opAddr.String()}) + err = msg.ValidateBasic() require.NoError(t, err) - minSelfDelegation := sdkmath.NewInt(1) - - tx := stakingtypes.NewMsgEditValidator(opAddr.String(), valResp.Validator.Description, &comVal, &minSelfDelegation) - broadcastResp, err := pu.cl.Tx().BroadcastMsgs(ctx, []sdk.Msg{tx}) + resp, err := mcl.Tx().BroadcastMsgs(ctx, []sdk.Msg{msg}) require.Error(t, err) - require.NotNil(t, broadcastResp) - - require.IsType(t, &sdk.TxResponse{}, broadcastResp) - txResp := broadcastResp.(*sdk.TxResponse) - require.NotEqual(t, uint32(0), txResp.Code, "update validator commission should fail if new value is < 5%") -} - -func (pu *postUpgrade) testStaking(ctx context.Context, t *testing.T) { - t.Logf("testing staking module") - - cctx := pu.cl.ClientContext() + require.NotNil(t, resp) + require.IsType(t, &sdk.TxResponse{}, resp) + require.ErrorIs(t, err, sdkerrors.ErrUnauthorized) - paramsResp, err := pu.cl.Query().Staking().Params(ctx, &stakingtypes.QueryParamsRequest{}) + govMsg, err := govv1.NewMsgSubmitProposal([]sdk.Msg{msg}, sdk.Coins{sdk.NewInt64Coin("uakt", 1000000000)}, mainCctx.GetFromAddress().String(), "", "test wasm store", "test wasm store", false) require.NoError(t, err) - require.NotNil(t, paramsResp) - require.True(t, paramsResp.Params.MinCommissionRate.GTE(sdkmath.LegacyNewDecWithPrec(5, 2)), "per upgrade v1.0.0 MinCommissionRate should be 5%") - - opAddr := sdk.ValAddress(cctx.FromAddress) + // sending contract via gov with sender not as the gov module account should fail as well + resp, err = mcl.Tx().BroadcastMsgs(ctx, []sdk.Msg{govMsg}) + require.Error(t, err) + require.NotNil(t, resp) + require.IsType(t, &sdk.TxResponse{}, resp) - comVal := sdkmath.LegacyNewDecWithPrec(4, 2) + qResp, err := mcl.Query().Auth().ModuleAccountByName(ctx, &authtypes.QueryModuleAccountByNameRequest{Name: "gov"}) + require.NoError(t, err) + require.NotNil(t, qResp) - valResp, err := pu.cl.Query().Staking().Validator(ctx, &stakingtypes.QueryValidatorRequest{ValidatorAddr: opAddr.String()}) + var acc sdk.AccountI + err = encCfg.InterfaceRegistry.UnpackAny(qResp.Account, &acc) require.NoError(t, err) + macc, ok := acc.(sdk.ModuleAccountI) + require.True(t, ok) - minSelfDelegation := sdkmath.NewInt(1) + err = encCfg.InterfaceRegistry.UnpackAny(qResp.Account, &macc) + require.NoError(t, err) + msg.Sender = macc.GetAddress().String() - tx := stakingtypes.NewMsgEditValidator(opAddr.String(), valResp.Validator.Description, &comVal, &minSelfDelegation) - broadcastResp, err := pu.cl.Tx().BroadcastMsgs(ctx, []sdk.Msg{tx}) - require.Error(t, err) - require.NotNil(t, broadcastResp) + govMsg, err = govv1.NewMsgSubmitProposal([]sdk.Msg{msg}, sdk.Coins{sdk.NewInt64Coin("uakt", 1000000000)}, mainCctx.GetFromAddress().String(), "", "test wasm store", "test wasm store", false) + require.NoError(t, err) - require.IsType(t, &sdk.TxResponse{}, broadcastResp) - txResp := broadcastResp.(*sdk.TxResponse) - require.NotEqual(t, uint32(0), txResp.Code, "update validator commission should fail if new value is < 5%") + // sending contract via gov with sender as the gov module account shall pass + resp, err = mcl.Tx().BroadcastMsgs(ctx, []sdk.Msg{govMsg}, clt.WithGas(cltypes.GasSetting{Simulate: true})) + require.NoError(t, err) + require.NotNil(t, resp) + require.IsType(t, &sdk.TxResponse{}, resp) } diff --git a/testutil/network/network.go b/testutil/network/network.go index 3c40c510a2..5cd1f9069c 100644 --- a/testutil/network/network.go +++ b/testutil/network/network.go @@ -49,7 +49,7 @@ import ( cflags "pkg.akt.dev/go/cli/flags" "pkg.akt.dev/go/sdkutil" - "pkg.akt.dev/node/app" + "pkg.akt.dev/node/v2/app" ) const ( diff --git a/testutil/network_suite.go b/testutil/network_suite.go index a4052329be..105de40403 100644 --- a/testutil/network_suite.go +++ b/testutil/network_suite.go @@ -26,7 +26,7 @@ import ( cclient "pkg.akt.dev/go/node/client/v1beta3" sdktestutil "pkg.akt.dev/go/testutil" - "pkg.akt.dev/node/testutil/network" + "pkg.akt.dev/node/v2/testutil/network" ) type NetworkTestSuite struct { diff --git a/testutil/sims/simulation_helpers.go b/testutil/sims/simulation_helpers.go index 6876fde201..b9614ffaee 100644 --- a/testutil/sims/simulation_helpers.go +++ b/testutil/sims/simulation_helpers.go @@ -21,7 +21,7 @@ import ( ) // SetupSimulation creates the config, db (levelDB), temporary directory and logger for the simulation tests. -// If `skip` is false it skips the current test. `skip` should be set using the `FlagEnabledValue` flag. +// If `skip` is false, it skips the current test. `skip` should be set using the `FlagEnabledValue` flag. // Returns error on an invalid db instantiation or temp dir creation. func SetupSimulation(config simtypes.Config, dirPrefix, dbName string, verbose, skip bool) (dbm.DB, string, log.Logger, bool, error) { if !skip { @@ -56,7 +56,7 @@ func SimulationOperations(app runtime.AppI, cdc codec.JSONCodec, config simtypes } // BuildSimulationOperations retrieves the simulation params from the provided file path -// and returns all the modules weighted operations +// and returns all the module-weighted operations func BuildSimulationOperations(app runtime.AppI, cdc codec.JSONCodec, config simtypes.Config, txConfig client.TxConfig) []simtypes.WeightedOperation { simState := module.SimulationState{ AppParams: make(simtypes.AppParams), @@ -196,8 +196,8 @@ func getDiffFromKVPair(kvAs, kvBs []kv.Pair) (diffA, diffB []kv.Pair) { } index := make(map[string][]byte, len(kvBs)) - for _, kv := range kvBs { - index[string(kv.Key)] = kv.Value + for _, pair := range kvBs { + index[string(pair.Key)] = pair.Value } for _, kvA := range kvAs { diff --git a/testutil/state/suite.go b/testutil/state/suite.go index f068097faa..a13fbee607 100644 --- a/testutil/state/suite.go +++ b/testutil/state/suite.go @@ -26,15 +26,15 @@ import ( ptypes "pkg.akt.dev/go/node/provider/v1beta4" ttypes "pkg.akt.dev/go/node/take/v1" - "pkg.akt.dev/node/app" - emocks "pkg.akt.dev/node/testutil/cosmos/mocks" - akeeper "pkg.akt.dev/node/x/audit/keeper" - dkeeper "pkg.akt.dev/node/x/deployment/keeper" - ekeeper "pkg.akt.dev/node/x/escrow/keeper" - mhooks "pkg.akt.dev/node/x/market/hooks" - mkeeper "pkg.akt.dev/node/x/market/keeper" - pkeeper "pkg.akt.dev/node/x/provider/keeper" - tkeeper "pkg.akt.dev/node/x/take/keeper" + "pkg.akt.dev/node/v2/app" + emocks "pkg.akt.dev/node/v2/testutil/cosmos/mocks" + akeeper "pkg.akt.dev/node/v2/x/audit/keeper" + dkeeper "pkg.akt.dev/node/v2/x/deployment/keeper" + ekeeper "pkg.akt.dev/node/v2/x/escrow/keeper" + mhooks "pkg.akt.dev/node/v2/x/market/hooks" + mkeeper "pkg.akt.dev/node/v2/x/market/keeper" + pkeeper "pkg.akt.dev/node/v2/x/provider/keeper" + tkeeper "pkg.akt.dev/node/v2/x/take/keeper" ) // TestSuite encapsulates a functional Akash nodes data stores for @@ -105,7 +105,6 @@ func SetupTestSuiteWithKeepers(t testing.TB, keepers Keepers) *TestSuite { ) ctx := app.NewContext(false) - cdc := app.AppCodec() vals, err := app.Keepers.Cosmos.Staking.GetAllValidators(ctx) diff --git a/testutil/types.go b/testutil/types.go index 440853fd95..3429b5559b 100644 --- a/testutil/types.go +++ b/testutil/types.go @@ -14,8 +14,8 @@ import ( cflags "pkg.akt.dev/go/cli/flags" "pkg.akt.dev/go/sdkutil" - "pkg.akt.dev/node/app" - "pkg.akt.dev/node/testutil/network" + "pkg.akt.dev/node/v2/app" + "pkg.akt.dev/node/v2/testutil/network" ) // NewTestNetworkFixture returns a new simapp AppConstructor for network simulation tests diff --git a/tools/upgrade-info/main.go b/tools/upgrade-info/main.go index 2af65403b8..93776c7c5d 100644 --- a/tools/upgrade-info/main.go +++ b/tools/upgrade-info/main.go @@ -8,7 +8,7 @@ import ( "github.com/spf13/cobra" - utilcli "pkg.akt.dev/node/util/cli" + utilcli "pkg.akt.dev/node/v2/util/cli" ) func main() { diff --git a/upgrades/software/v1.0.0/audit.go b/upgrades/software/v1.0.0/audit.go deleted file mode 100644 index 27608de207..0000000000 --- a/upgrades/software/v1.0.0/audit.go +++ /dev/null @@ -1,56 +0,0 @@ -// Package v1_0_0 -// nolint revive -package v1_0_0 - -import ( - "cosmossdk.io/store/prefix" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkmodule "github.com/cosmos/cosmos-sdk/types/module" - types "pkg.akt.dev/go/node/audit/v1" - - "pkg.akt.dev/go/node/migrate" - - utypes "pkg.akt.dev/node/upgrades/types" - akeeper "pkg.akt.dev/node/x/audit/keeper" -) - -type auditMigrations struct { - utypes.Migrator -} - -func newAuditMigration(m utypes.Migrator) utypes.Migration { - return auditMigrations{Migrator: m} -} - -func (m auditMigrations) GetHandler() sdkmodule.MigrationHandler { - return m.handler -} - -// handler migrates audit store from version 2 to 3. -func (m auditMigrations) handler(ctx sdk.Context) (err error) { - cdc := m.Codec() - - store := ctx.KVStore(m.StoreKey()) - oStore := prefix.NewStore(store, migrate.AuditedAttributesV1beta3Prefix()) - - iter := oStore.Iterator(nil, nil) - defer func() { - err = iter.Close() - }() - - for ; iter.Valid(); iter.Next() { - val := migrate.AuditedProviderFromV1beta3(cdc, iter.Value()) - - owner := sdk.MustAccAddressFromBech32(val.Owner) - auditor := sdk.MustAccAddressFromBech32(val.Auditor) - - key := akeeper.ProviderKey(types.ProviderID{Owner: owner, Auditor: auditor}) - - bz := cdc.MustMarshal(&types.AuditedAttributesStore{Attributes: val.Attributes}) - - oStore.Delete(iter.Key()) - store.Set(key, bz) - } - - return nil -} diff --git a/upgrades/software/v1.0.0/cert.go b/upgrades/software/v1.0.0/cert.go deleted file mode 100644 index b9ec7eafe2..0000000000 --- a/upgrades/software/v1.0.0/cert.go +++ /dev/null @@ -1,54 +0,0 @@ -// Package v1_0_0 -// nolint revive -package v1_0_0 - -import ( - "cosmossdk.io/store/prefix" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkmodule "github.com/cosmos/cosmos-sdk/types/module" - "pkg.akt.dev/go/node/migrate" - - utypes "pkg.akt.dev/node/upgrades/types" - ckeeper "pkg.akt.dev/node/x/cert/keeper" -) - -type certsMigrations struct { - utypes.Migrator -} - -func newCertsMigration(m utypes.Migrator) utypes.Migration { - return certsMigrations{Migrator: m} -} - -func (m certsMigrations) GetHandler() sdkmodule.MigrationHandler { - return m.handler -} - -// handler migrates certificates store from version 2 to 3. -func (m certsMigrations) handler(ctx sdk.Context) (err error) { - cdc := m.Codec() - - store := ctx.KVStore(m.StoreKey()) - oStore := prefix.NewStore(store, migrate.CertV1beta3Prefix()) - - iter := oStore.Iterator(nil, nil) - defer func() { - err = iter.Close() - }() - - for ; iter.Valid(); iter.Next() { - val := migrate.CertFromV1beta3(cdc, iter.Value()) - - id, err := ckeeper.ParseCertID(nil, iter.Key()) - if err != nil { - return err - } - - bz := cdc.MustMarshal(&val) - key := ckeeper.MustCertificateKey(val.State, id) - oStore.Delete(iter.Key()) - store.Set(key, bz) - } - - return nil -} diff --git a/upgrades/software/v1.0.0/deployment.go b/upgrades/software/v1.0.0/deployment.go deleted file mode 100644 index f3085bd6ed..0000000000 --- a/upgrades/software/v1.0.0/deployment.go +++ /dev/null @@ -1,123 +0,0 @@ -// Package v1_0_0 -// nolint revive -package v1_0_0 - -import ( - "fmt" - - "cosmossdk.io/store/prefix" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkmodule "github.com/cosmos/cosmos-sdk/types/module" - dv1 "pkg.akt.dev/go/node/deployment/v1" - dv1beta "pkg.akt.dev/go/node/deployment/v1beta4" - "pkg.akt.dev/go/node/migrate" - - utypes "pkg.akt.dev/node/upgrades/types" - dkeeper "pkg.akt.dev/node/x/deployment/keeper" -) - -type deploymentsMigrations struct { - utypes.Migrator -} - -func newDeploymentsMigration(m utypes.Migrator) utypes.Migration { - return deploymentsMigrations{Migrator: m} -} - -func (m deploymentsMigrations) GetHandler() sdkmodule.MigrationHandler { - return m.handler -} - -// handler migrates deployment store from version 4 to 5 -func (m deploymentsMigrations) handler(ctx sdk.Context) error { - store := ctx.KVStore(m.StoreKey()) - - // deployment prefix does not change in this upgrade - oStore := prefix.NewStore(store, dkeeper.DeploymentPrefix) - - iter := oStore.Iterator(nil, nil) - defer func() { - _ = iter.Close() - }() - - var deploymentsTotal uint64 - var deploymentsActive uint64 - var deploymentsClosed uint64 - - cdc := m.Codec() - - for ; iter.Valid(); iter.Next() { - nVal := migrate.DeploymentFromV1beta3(cdc, iter.Value()) - bz := cdc.MustMarshal(&nVal) - - switch nVal.State { - case dv1.DeploymentActive: - deploymentsActive++ - case dv1.DeploymentClosed: - deploymentsClosed++ - default: - return fmt.Errorf("unknown order state %d", nVal.State) - } - - deploymentsTotal++ - - key := dkeeper.MustDeploymentKey(dkeeper.DeploymentStateToPrefix(nVal.State), nVal.ID) - - oStore.Delete(iter.Key()) - store.Set(key, bz) - } - - // group prefix does not change in this upgrade - oStore = prefix.NewStore(store, dkeeper.GroupPrefix) - - iter = oStore.Iterator(nil, nil) - defer func() { - _ = iter.Close() - }() - - var groupsTotal uint64 - var groupsOpen uint64 - var groupsPaused uint64 - var groupsInsufficientFunds uint64 - var groupsClosed uint64 - - for ; iter.Valid(); iter.Next() { - nVal := migrate.GroupFromV1Beta3(cdc, iter.Value()) - bz := cdc.MustMarshal(&nVal) - - switch nVal.State { - case dv1beta.GroupOpen: - groupsOpen++ - case dv1beta.GroupPaused: - groupsPaused++ - case dv1beta.GroupInsufficientFunds: - groupsInsufficientFunds++ - case dv1beta.GroupClosed: - groupsClosed++ - default: - return fmt.Errorf("unknown order state %d", nVal.State) - } - - groupsTotal++ - - key := dkeeper.MustGroupKey(dkeeper.GroupStateToPrefix(nVal.State), nVal.ID) - - oStore.Delete(iter.Key()) - store.Set(key, bz) - } - - ctx.Logger().Info(fmt.Sprintf("[upgrade %s]: updated x/deployment store keys:"+ - "\n\tdeployments total: %d"+ - "\n\tdeployments active: %d"+ - "\n\tdeployments closed: %d"+ - "\n\tgroups total: %d"+ - "\n\tgroups open: %d"+ - "\n\tgroups paused: %d"+ - "\n\tgroups insufficient funds: %d"+ - "\n\tgroups closed: %d", - UpgradeName, - deploymentsTotal, deploymentsActive, deploymentsClosed, - groupsTotal, groupsOpen, groupsPaused, groupsInsufficientFunds, groupsClosed)) - - return nil -} diff --git a/upgrades/software/v1.0.0/escrow.go b/upgrades/software/v1.0.0/escrow.go deleted file mode 100644 index 60bf5563e8..0000000000 --- a/upgrades/software/v1.0.0/escrow.go +++ /dev/null @@ -1,120 +0,0 @@ -// Package v1_0_0 -// nolint revive -package v1_0_0 - -import ( - "fmt" - - "cosmossdk.io/store/prefix" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkmodule "github.com/cosmos/cosmos-sdk/types/module" - etypes "pkg.akt.dev/go/node/escrow/types/v1" - "pkg.akt.dev/go/node/migrate" - - utypes "pkg.akt.dev/node/upgrades/types" - ekeeper "pkg.akt.dev/node/x/escrow/keeper" -) - -type escrowMigrations struct { - utypes.Migrator -} - -func newEscrowMigration(m utypes.Migrator) utypes.Migration { - return escrowMigrations{Migrator: m} -} - -func (m escrowMigrations) GetHandler() sdkmodule.MigrationHandler { - return m.handler -} - -// handler migrates escrow store from version 2 to 3. -func (m escrowMigrations) handler(ctx sdk.Context) error { - store := ctx.KVStore(m.StoreKey()) - - oStore := prefix.NewStore(store, migrate.AccountV1beta3Prefix()) - - iter := oStore.Iterator(nil, nil) - defer func() { - _ = iter.Close() - }() - - cdc := m.Codec() - - var accountsTotal uint64 - var accountsActive uint64 - var accountsClosed uint64 - var accountsOverdrawn uint64 - - for ; iter.Valid(); iter.Next() { - key := append(migrate.AccountV1beta3Prefix(), iter.Key()...) - - nVal := migrate.AccountFromV1beta3(cdc, key, iter.Value()) - bz := cdc.MustMarshal(&nVal.State) - - switch nVal.State.State { - case etypes.StateOpen: - accountsActive++ - case etypes.StateClosed: - accountsClosed++ - case etypes.StateOverdrawn: - accountsOverdrawn++ - } - - accountsTotal++ - - oStore.Delete(key) - - key = ekeeper.BuildAccountsKey(nVal.State.State, &nVal.ID) - store.Set(key, bz) - } - - oStore = prefix.NewStore(store, migrate.PaymentV1beta3Prefix()) - - iter = oStore.Iterator(nil, nil) - defer func() { - _ = iter.Close() - }() - - var paymentsTotal uint64 - var paymentsActive uint64 - var paymentsClosed uint64 - var paymentsOverdrawn uint64 - - for ; iter.Valid(); iter.Next() { - key := append(migrate.PaymentV1beta3Prefix(), iter.Key()...) - - nVal := migrate.PaymentFromV1beta3(cdc, key, iter.Value()) - bz := cdc.MustMarshal(&nVal.State) - - switch nVal.State.State { - case etypes.StateOpen: - paymentsActive++ - case etypes.StateClosed: - paymentsClosed++ - case etypes.StateOverdrawn: - paymentsOverdrawn++ - } - - paymentsTotal++ - - oStore.Delete(key) - - key = ekeeper.BuildPaymentsKey(nVal.State.State, &nVal.ID) - store.Set(key, bz) - } - - ctx.Logger().Info(fmt.Sprintf("[upgrade %s]: updated x/escrow store keys:"+ - "\n\taccounts total: %d"+ - "\n\taccounts open: %d"+ - "\n\taccounts closed: %d"+ - "\n\taccounts overdrawn: %d"+ - "\n\tpayments total: %d"+ - "\n\tpayments open: %d"+ - "\n\tpayments closed: %d"+ - "\n\tpayments overdrawn: %d", - UpgradeName, - accountsTotal, accountsActive, accountsClosed, accountsOverdrawn, - paymentsTotal, paymentsActive, paymentsClosed, paymentsOverdrawn)) - - return nil -} diff --git a/upgrades/software/v1.0.0/init.go b/upgrades/software/v1.0.0/init.go deleted file mode 100644 index 94567250d0..0000000000 --- a/upgrades/software/v1.0.0/init.go +++ /dev/null @@ -1,27 +0,0 @@ -// Package v1_0_0 -// nolint revive -package v1_0_0 - -import ( - av1 "pkg.akt.dev/go/node/audit/v1" - cv1 "pkg.akt.dev/go/node/cert/v1" - dv1 "pkg.akt.dev/go/node/deployment/v1" - emodule "pkg.akt.dev/go/node/escrow/module" - mv1 "pkg.akt.dev/go/node/market/v1" - pv1 "pkg.akt.dev/go/node/provider/v1beta4" - tv1 "pkg.akt.dev/go/node/take/v1" - - utypes "pkg.akt.dev/node/upgrades/types" -) - -func init() { - utypes.RegisterUpgrade(UpgradeName, initUpgrade) - - utypes.RegisterMigration(av1.ModuleName, 2, newAuditMigration) - utypes.RegisterMigration(cv1.ModuleName, 3, newCertsMigration) - utypes.RegisterMigration(dv1.ModuleName, 4, newDeploymentsMigration) - utypes.RegisterMigration(emodule.ModuleName, 2, newEscrowMigration) - utypes.RegisterMigration(mv1.ModuleName, 6, newMarketMigration) - utypes.RegisterMigration(pv1.ModuleName, 2, newProviderMigration) - utypes.RegisterMigration(tv1.ModuleName, 2, newTakeMigration) -} diff --git a/upgrades/software/v1.0.0/market.go b/upgrades/software/v1.0.0/market.go deleted file mode 100644 index 6274f2caf0..0000000000 --- a/upgrades/software/v1.0.0/market.go +++ /dev/null @@ -1,198 +0,0 @@ -// Package v1_0_0 -// nolint revive -package v1_0_0 - -import ( - "fmt" - - storetypes "cosmossdk.io/store/types" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkmodule "github.com/cosmos/cosmos-sdk/types/module" - mv1 "pkg.akt.dev/go/node/market/v1" - mv1beta "pkg.akt.dev/go/node/market/v1beta5" - - "pkg.akt.dev/go/node/migrate" - - utypes "pkg.akt.dev/node/upgrades/types" - mkeys "pkg.akt.dev/node/x/market/keeper/keys" -) - -type marketMigrations struct { - utypes.Migrator -} - -func newMarketMigration(m utypes.Migrator) utypes.Migration { - return marketMigrations{Migrator: m} -} - -func (m marketMigrations) GetHandler() sdkmodule.MigrationHandler { - return m.handler -} - -// handler migrates market from version 6 to 7. -func (m marketMigrations) handler(ctx sdk.Context) error { - store := ctx.KVStore(m.StoreKey()) - - cdc := m.Codec() - - // order prefix does not change in this upgrade - oiter := storetypes.KVStorePrefixIterator(store, mkeys.OrderPrefix) - defer func() { - _ = oiter.Close() - }() - - var ordersTotal uint64 - var ordersOpen uint64 - var ordersActive uint64 - var ordersClosed uint64 - - for ; oiter.Valid(); oiter.Next() { - nVal := migrate.OrderFromV1beta4(cdc, oiter.Value()) - - switch nVal.State { - case mv1beta.OrderOpen: - ordersOpen++ - case mv1beta.OrderActive: - ordersActive++ - case mv1beta.OrderClosed: - ordersClosed++ - default: - return fmt.Errorf("unknown order state %d", nVal.State) - } - - ordersTotal++ - - bz := cdc.MustMarshal(&nVal) - - store.Delete(oiter.Key()) - - key := mkeys.MustOrderKey(mkeys.OrderStateToPrefix(nVal.State), nVal.ID) - store.Set(key, bz) - } - - // bid prefixes do not change in this upgrade - store.Delete(mkeys.BidPrefixReverse) - biter := storetypes.KVStorePrefixIterator(store, mkeys.BidPrefix) - defer func() { - _ = biter.Close() - }() - - var bidsTotal uint64 - var bidsOpen uint64 - var bidsActive uint64 - var bidsLost uint64 - var bidsClosed uint64 - - for ; biter.Valid(); biter.Next() { - nVal := migrate.BidFromV1beta4(cdc, biter.Value()) - - switch nVal.State { - case mv1beta.BidOpen: - bidsOpen++ - case mv1beta.BidActive: - bidsActive++ - case mv1beta.BidLost: - bidsLost++ - case mv1beta.BidClosed: - bidsClosed++ - default: - panic(fmt.Sprintf("unknown order state %d", nVal.State)) - } - - bidsTotal++ - - store.Delete(biter.Key()) - - data, err := m.Codec().Marshal(&nVal) - if err != nil { - return err - } - - state := mkeys.BidStateToPrefix(nVal.State) - key, err := mkeys.BidKey(state, nVal.ID) - if err != nil { - return err - } - - revKey, err := mkeys.BidReverseKey(state, nVal.ID) - if err != nil { - return err - } - - store.Set(key, data) - if len(revKey) > 0 { - store.Set(revKey, data) - } - } - - // lease prefixes do not change in this upgrade - store.Delete(mkeys.LeasePrefixReverse) - liter := storetypes.KVStorePrefixIterator(store, mkeys.LeasePrefix) - defer func() { - _ = liter.Close() - }() - - var leasesTotal uint64 - var leasesActive uint64 - var leasesInsufficientFunds uint64 - var leasesClosed uint64 - - for ; liter.Valid(); liter.Next() { - nVal := migrate.LeaseFromV1beta4(cdc, liter.Value()) - - switch nVal.State { - case mv1.LeaseActive: - leasesActive++ - case mv1.LeaseInsufficientFunds: - leasesInsufficientFunds++ - case mv1.LeaseClosed: - leasesClosed++ - default: - panic(fmt.Sprintf("unknown order state %d", nVal.State)) - } - - leasesTotal++ - store.Delete(liter.Key()) - - data, err := m.Codec().Marshal(&nVal) - if err != nil { - return err - } - - state := mkeys.LeaseStateToPrefix(nVal.State) - key, err := mkeys.LeaseKey(state, nVal.ID) - if err != nil { - return err - } - - revKey, err := mkeys.LeaseReverseKey(state, nVal.ID) - if err != nil { - return err - } - - store.Set(key, data) - if len(revKey) > 0 { - store.Set(revKey, data) - } - } - ctx.Logger().Info(fmt.Sprintf("[upgrade %s]: updated x/market store keys:"+ - "\n\torders total: %d"+ - "\n\torders open: %d"+ - "\n\torders active: %d"+ - "\n\torders closed: %d"+ - "\n\tbids total: %d"+ - "\n\tbids open: %d"+ - "\n\tbids active: %d"+ - "\n\tbids lost: %d"+ - "\n\tbids closed: %d"+ - "\n\tleases total: %d"+ - "\n\tleases active: %d"+ - "\n\tleases insufficient funds: %d"+ - "\n\tleases closed: %d", - UpgradeName, - ordersTotal, ordersOpen, ordersActive, ordersClosed, - bidsTotal, bidsOpen, bidsActive, bidsLost, bidsClosed, - leasesTotal, leasesActive, leasesInsufficientFunds, leasesClosed)) - - return nil -} diff --git a/upgrades/software/v1.0.0/provider.go b/upgrades/software/v1.0.0/provider.go deleted file mode 100644 index 50d2c77920..0000000000 --- a/upgrades/software/v1.0.0/provider.go +++ /dev/null @@ -1,65 +0,0 @@ -// Package v1_0_0 -// nolint revive -package v1_0_0 - -import ( - "fmt" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/address" - sdkmodule "github.com/cosmos/cosmos-sdk/types/module" - "pkg.akt.dev/go/node/migrate" - "pkg.akt.dev/go/sdkutil" - - utypes "pkg.akt.dev/node/upgrades/types" - pkeeper "pkg.akt.dev/node/x/provider/keeper" -) - -type providerMigrations struct { - utypes.Migrator -} - -func newProviderMigration(m utypes.Migrator) utypes.Migration { - return providerMigrations{Migrator: m} -} - -func (m providerMigrations) GetHandler() sdkmodule.MigrationHandler { - return m.handler -} - -func ProviderKey(id sdk.Address) []byte { - return address.MustLengthPrefix(id.Bytes()) -} - -// handler migrates provider store from version 2 to 3. -func (m providerMigrations) handler(ctx sdk.Context) (err error) { - store := ctx.KVStore(m.StoreKey()) - - iter := store.Iterator(nil, nil) - defer func() { - err = iter.Close() - }() - - cdc := m.Codec() - - var providersTotal uint64 - - for ; iter.Valid(); iter.Next() { - to := migrate.ProviderFromV1beta3(cdc, iter.Value()) - - id := sdkutil.MustAccAddressFromBech32(to.Owner) - bz := cdc.MustMarshal(&to) - - providersTotal++ - - store.Delete(iter.Key()) - store.Set(pkeeper.ProviderKey(id), bz) - } - - ctx.Logger().Info(fmt.Sprintf("[upgrade %s]: updated x/provider store keys:"+ - "\n\tproviders total: %d", - UpgradeName, - providersTotal)) - - return nil -} diff --git a/upgrades/software/v1.0.0/take.go b/upgrades/software/v1.0.0/take.go deleted file mode 100644 index ef06f2e2a4..0000000000 --- a/upgrades/software/v1.0.0/take.go +++ /dev/null @@ -1,27 +0,0 @@ -// Package v1_0_0 -// nolint revive -package v1_0_0 - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - sdkmodule "github.com/cosmos/cosmos-sdk/types/module" - - utypes "pkg.akt.dev/node/upgrades/types" -) - -type takeMigrations struct { - utypes.Migrator -} - -func newTakeMigration(m utypes.Migrator) utypes.Migration { - return takeMigrations{Migrator: m} -} - -func (m takeMigrations) GetHandler() sdkmodule.MigrationHandler { - return m.handler -} - -// handler migrates provider store from version 2 to 3. -func (m takeMigrations) handler(_ sdk.Context) error { - return nil -} diff --git a/upgrades/software/v1.0.0/upgrade.go b/upgrades/software/v1.0.0/upgrade.go deleted file mode 100644 index 06dc36c2a3..0000000000 --- a/upgrades/software/v1.0.0/upgrade.go +++ /dev/null @@ -1,346 +0,0 @@ -// Package v1_0_0 -// nolint revive -package v1_0_0 - -import ( - "context" - "fmt" - "reflect" - "time" - - "cosmossdk.io/log" - sdkmath "cosmossdk.io/math" - storetypes "cosmossdk.io/store/types" - upgradetypes "cosmossdk.io/x/upgrade/types" - "github.com/cosmos/cosmos-sdk/baseapp" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" - "github.com/cosmos/cosmos-sdk/x/authz" - consensustypes "github.com/cosmos/cosmos-sdk/x/consensus/types" - crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" - paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - - dv1 "pkg.akt.dev/go/node/deployment/v1" - dv1beta3 "pkg.akt.dev/go/node/deployment/v1beta3" - dv1beta "pkg.akt.dev/go/node/deployment/v1beta4" - ev1 "pkg.akt.dev/go/node/escrow/v1" - agovtypes "pkg.akt.dev/go/node/gov/v1beta3" - mv1 "pkg.akt.dev/go/node/market/v1" - mv1beta4 "pkg.akt.dev/go/node/market/v1beta4" - mv1beta "pkg.akt.dev/go/node/market/v1beta5" - astakingtypes "pkg.akt.dev/go/node/staking/v1beta3" - taketypes "pkg.akt.dev/go/node/take/v1" - - apptypes "pkg.akt.dev/node/app/types" - utypes "pkg.akt.dev/node/upgrades/types" -) - -const ( - UpgradeName = "v1.0.0" -) - -type upgrade struct { - *apptypes.App - log log.Logger -} - -var _ utypes.IUpgrade = (*upgrade)(nil) - -func initUpgrade(log log.Logger, app *apptypes.App) (utypes.IUpgrade, error) { - up := &upgrade{ - App: app, - log: log.With("module", fmt.Sprintf("upgrade/%s", UpgradeName)), - } - - return up, nil -} - -func (up *upgrade) StoreLoader() *storetypes.StoreUpgrades { - return &storetypes.StoreUpgrades{ - Added: []string{ - // With the migrations of all modules away from x/params, the crisis module now has a store. - // The store must be created during a chain upgrade to v0.53.x. - consensustypes.ModuleName, - }, - Deleted: []string{ - "agov", - "astaking", - crisistypes.ModuleName, - }, - } -} - -type AccountKeeper interface { - NewAccount(sdk.Context, sdk.AccountI) sdk.AccountI - - GetAccount(ctx sdk.Context, addr sdk.AccAddress) sdk.AccountI - SetAccount(ctx sdk.Context, acc sdk.AccountI) -} - -// AkashUtilsExtraAccountTypes is a map of extra account types that can be overridden. -// This is defined as a global variable, so it can be modified in the chain's app.go and used here without -// having to import the chain. Specifically, this is used for compatibility with Akash' Cosmos SDK fork -var AkashUtilsExtraAccountTypes map[reflect.Type]struct{} - -// CanCreateModuleAccountAtAddr tells us if we can safely make a module account at -// a given address. By collision resistance of the address (given API safe construction), -// the only way for an account to be already be at this address is if its claimed by the same -// pre-image from the correct module, -// or some SDK command breaks assumptions and creates an account at designated address. -// This function checks if there is an account at that address, and runs some safety checks -// to be extra-sure its not a user account (e.g. non-zero sequence, pubkey, of fore-seen account types). -// If there is no account, or if we believe its not a user-spendable account, we allow module account -// creation at the address. -// else, we do not. -// -// TODO: This is generally from an SDK design flaw -// code based off wasmd code: https://github.com/CosmWasm/wasmd/pull/996 -// Its _mandatory_ that the caller do the API safe construction to generate a module account addr, -// namely, address.Module(ModuleName, {key}) -func CanCreateModuleAccountAtAddr(ctx sdk.Context, ak AccountKeeper, addr sdk.AccAddress) error { - existingAcct := ak.GetAccount(ctx, addr) - if existingAcct == nil { - return nil - } - if existingAcct.GetSequence() != 0 || existingAcct.GetPubKey() != nil { - return fmt.Errorf("cannot create module account %s, "+ - "due to an account at that address already existing & having sent txs", addr) - } - overrideAccountTypes := map[reflect.Type]struct{}{ - reflect.TypeOf(&authtypes.BaseAccount{}): {}, - reflect.TypeOf(&vestingtypes.DelayedVestingAccount{}): {}, - reflect.TypeOf(&vestingtypes.ContinuousVestingAccount{}): {}, - reflect.TypeOf(&vestingtypes.BaseVestingAccount{}): {}, - reflect.TypeOf(&vestingtypes.PeriodicVestingAccount{}): {}, - reflect.TypeOf(&vestingtypes.PermanentLockedAccount{}): {}, - } - for extraAccountType := range AkashUtilsExtraAccountTypes { - overrideAccountTypes[extraAccountType] = struct{}{} - } - - if _, isClear := overrideAccountTypes[reflect.TypeOf(existingAcct)]; isClear { - return nil - } - - return fmt.Errorf("cannot create module account %s, "+ - "due to an account at that address already existing & not being an overridable type", existingAcct) -} - -// CreateModuleAccountByName creates a module account at the provided name -func CreateModuleAccountByName(ctx sdk.Context, ak AccountKeeper, name string) error { - addr := authtypes.NewModuleAddress(name) - err := CanCreateModuleAccountAtAddr(ctx, ak, addr) - if err != nil { - return err - } - - acc := ak.NewAccount( - ctx, - authtypes.NewModuleAccount( - authtypes.NewBaseAccountWithAddress(addr), - name, - ), - ) - ak.SetAccount(ctx, acc) - return nil -} - -func (up *upgrade) UpgradeHandler() upgradetypes.UpgradeHandler { - baseAppLegacySS := up.Keepers.Cosmos.Params.Subspace(baseapp.Paramspace).WithKeyTable(paramstypes.ConsensusParamsKeyTable()) - - return func(ctx context.Context, plan upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) { - // Migrate Tendermint consensus parameters from x/params module to a - // dedicated x/consensus module. - sctx := sdk.UnwrapSDKContext(ctx) - - err := baseapp.MigrateParams(sctx, baseAppLegacySS, up.Keepers.Cosmos.ConsensusParams.ParamsStore) - if err != nil { - return nil, err - } - sspace, exists := up.Keepers.Cosmos.Params.GetSubspace(stakingtypes.ModuleName) - if !exists { - return nil, fmt.Errorf("params subspace \"%s\" not found", stakingtypes.ModuleName) - } - - up.log.Info("migrating x/take to self-managed params") - sspace, exists = up.Keepers.Cosmos.Params.GetSubspace(taketypes.ModuleName) - if !exists { - return nil, fmt.Errorf("params subspace \"%s\" not found", taketypes.ModuleName) - } - - tparams := taketypes.Params{} - sspace.Get(sctx, taketypes.KeyDefaultTakeRate, &tparams.DefaultTakeRate) - sspace.Get(sctx, taketypes.KeyDenomTakeRates, &tparams.DenomTakeRates) - - err = up.Keepers.Akash.Take.SetParams(sctx, tparams) - if err != nil { - return nil, err - } - - up.log.Info("migrating x/deployment to self-managed params") - sspace, exists = up.Keepers.Cosmos.Params.GetSubspace(dv1.ModuleName) - if !exists { - return nil, fmt.Errorf("params subspace \"%s\" not found", dv1.ModuleName) - } - - deplParams := &dv1beta3.Params{} - sspace.GetParamSet(sctx, deplParams) - - nDeplParams := dv1beta.Params{ - MinDeposits: make(sdk.Coins, 0, len(deplParams.MinDeposits)), - } - - for _, coin := range deplParams.MinDeposits { - nDeplParams.MinDeposits = append(nDeplParams.MinDeposits, sdk.Coin{ - Denom: coin.Denom, - Amount: sdkmath.NewIntFromBigInt(coin.Amount.BigInt()), - }) - } - err = up.Keepers.Akash.Deployment.SetParams(sctx, nDeplParams) - if err != nil { - return nil, err - } - - up.log.Info("migrating x/market to self-managed params") - sspace, exists = up.Keepers.Cosmos.Params.GetSubspace(mv1.ModuleName) - if !exists { - return nil, fmt.Errorf("params subspace \"%s\" not found", mv1.ModuleName) - } - - mParams := &mv1beta4.Params{} - sspace.GetParamSet(sctx, mParams) - - err = up.Keepers.Akash.Market.SetParams(sctx, mv1beta.Params{ - BidMinDeposit: mParams.BidMinDeposit, - OrderMaxBids: mParams.OrderMaxBids, - }) - if err != nil { - return nil, err - } - - sspace, exists = up.Keepers.Cosmos.Params.GetSubspace("agov") - if !exists { - return nil, fmt.Errorf("params subspace \"%s\" not found", "agov") - } - - dparams := agovtypes.DepositParams{} - sspace.Get(sctx, agovtypes.KeyDepositParams, &dparams) - - sspace, exists = up.Keepers.Cosmos.Params.GetSubspace(astakingtypes.ModuleName) - if !exists { - return nil, fmt.Errorf("params subspace \"%s\" not found", astakingtypes.ModuleName) - } - - sparam := sdkmath.LegacyDec{} - sspace.Get(sctx, astakingtypes.KeyMinCommissionRate, &sparam) - - toVM, err := up.MM.RunMigrations(ctx, up.Configurator, fromVM) - if err != nil { - return nil, err - } - - // patch deposit authorizations after authz store upgrade - err = up.patchDepositAuthorizations(sctx) - if err != nil { - return nil, err - } - - up.log.Info(fmt.Sprintf("migrating param agov.MinInitialDepositRate to gov.MinInitialDepositRatio")) - up.log.Info(fmt.Sprintf("setting gov.ExpeditedMinDeposit to 2000akt")) - up.log.Info(fmt.Sprintf("setting gov.ExpeditedThreshold to 67%%")) - - // Migrate governance min deposit parameter to builtin gov params - gparams, err := up.Keepers.Cosmos.Gov.Params.Get(ctx) - if err != nil { - return nil, err - } - - gparams.MinInitialDepositRatio = dparams.MinInitialDepositRate.String() - - // min deposit for an expedited proposal is set to 2000AKT - gparams.ExpeditedMinDeposit = sdk.NewCoins(sdk.NewCoin("uakt", sdkmath.NewInt(2000000000))) - gparams.ExpeditedThreshold = sdkmath.LegacyNewDecWithPrec(667, 3).String() - - eVotePeriod := time.Hour * 24 - gparams.ExpeditedVotingPeriod = &eVotePeriod - - err = up.Keepers.Cosmos.Gov.Params.Set(ctx, gparams) - if err != nil { - return nil, err - } - - up.log.Info(fmt.Sprintf("migrating param astaking.MinCommissionRate to staking.MinCommissionRate")) - sparams, err := up.Keepers.Cosmos.Staking.GetParams(sctx) - if err != nil { - return nil, err - } - sparams.MinCommissionRate = sparam - - err = up.Keepers.Cosmos.Staking.SetParams(ctx, sparams) - if err != nil { - return nil, err - } - - up.log.Info(fmt.Sprintf("all migrations have been completed")) - - return toVM, err - } -} - -func (up *upgrade) patchDepositAuthorizations(ctx sdk.Context) error { - msgUrlOld := "/akash.deployment.v1beta3.MsgDepositDeployment" - - var err error - up.log.Info(fmt.Sprintf("migrating \"%s\" to \"%s\"", msgUrlOld, (&ev1.DepositAuthorization{}).MsgTypeURL())) - up.Keepers.Cosmos.Authz.IterateGrants(ctx, func(granterAddr sdk.AccAddress, granteeAddr sdk.AccAddress, grant authz.Grant) bool { - var authorization authz.Authorization - authorization, err = grant.GetAuthorization() - if err != nil { - up.log.Error(fmt.Sprintf("unable to get authorization. err=%s", err.Error())) - return false - } - - var nAuthz authz.Authorization - - switch authorization.MsgTypeURL() { - case msgUrlOld: - authzOld, valid := authorization.(*dv1beta3.DepositDeploymentAuthorization) - if !valid { - up.log.Error(fmt.Sprintf("invalid authorization type %s", reflect.TypeOf(authorization).String())) - return false - } - nAuthz = ev1.NewDepositAuthorization(ev1.DepositAuthorizationScopes{ev1.DepositScopeDeployment}, authzOld.SpendLimit) - default: - return false - } - - err = up.Keepers.Cosmos.Authz.DeleteGrant(ctx, granteeAddr, granterAddr, authorization.MsgTypeURL()) - if err != nil { - up.log.Error(fmt.Sprintf("unable to delete autorization. err=%s", err.Error())) - return false - } - - err = up.Keepers.Cosmos.Authz.SaveGrant(ctx, granteeAddr, granterAddr, nAuthz, grant.Expiration) - if err != nil { - up.log.Error(fmt.Sprintf("unable to save autorization. err=%s", err.Error())) - return true - } - - return false - }) - if err != nil { - return err - } - - up.log.Info("cleaning expired grants") - err = up.Keepers.Cosmos.Authz.DequeueAndDeleteExpiredGrants(ctx) - if err != nil { - return err - } - up.log.Info("cleaning expired grants - DONE") - - return nil -} diff --git a/upgrades/software/v2.0.0/init.go b/upgrades/software/v2.0.0/init.go new file mode 100644 index 0000000000..d19b34204d --- /dev/null +++ b/upgrades/software/v2.0.0/init.go @@ -0,0 +1,11 @@ +// Package v2_0_0 +// nolint revive +package v2_0_0 + +import ( + utypes "pkg.akt.dev/node/v2/upgrades/types" +) + +func init() { + utypes.RegisterUpgrade(UpgradeName, initUpgrade) +} diff --git a/upgrades/software/v2.0.0/upgrade.go b/upgrades/software/v2.0.0/upgrade.go new file mode 100644 index 0000000000..7df10c36af --- /dev/null +++ b/upgrades/software/v2.0.0/upgrade.go @@ -0,0 +1,86 @@ +// Package v2_0_0 +// nolint revive +package v2_0_0 + +import ( + "context" + "fmt" + + "cosmossdk.io/log" + storetypes "cosmossdk.io/store/types" + upgradetypes "cosmossdk.io/x/upgrade/types" + wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" + "github.com/cosmos/cosmos-sdk/types/module" + + apptypes "pkg.akt.dev/node/v2/app/types" + utypes "pkg.akt.dev/node/v2/upgrades/types" + awasm "pkg.akt.dev/node/v2/x/wasm" +) + +const ( + UpgradeName = "v2.0.0" +) + +type upgrade struct { + *apptypes.App + log log.Logger +} + +var _ utypes.IUpgrade = (*upgrade)(nil) + +func initUpgrade(log log.Logger, app *apptypes.App) (utypes.IUpgrade, error) { + up := &upgrade{ + App: app, + log: log.With("module", fmt.Sprintf("upgrade/%s", UpgradeName)), + } + + return up, nil +} + +func (up *upgrade) StoreLoader() *storetypes.StoreUpgrades { + return &storetypes.StoreUpgrades{ + Added: []string{ + awasm.StoreKey, + wasmtypes.StoreKey, + }, + Deleted: []string{}, + } +} + +func (up *upgrade) UpgradeHandler() upgradetypes.UpgradeHandler { + return func(ctx context.Context, plan upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) { + // Set wasm old version to 1 if we want to call wasm's InitGenesis ourselves + // in this upgrade logic ourselves. + // + // vm[wasm.ModuleName] = wasm.ConsensusVersion + // + // Otherwise we run this, which will run wasm.InitGenesis(wasm.DefaultGenesis()) + // and then override it after. + + // Set the initial wasm module version + //fromVM[wasmtypes.ModuleName] = wasm.AppModule{}.ConsensusVersion() + + toVM, err := up.MM.RunMigrations(ctx, up.Configurator, fromVM) + if err != nil { + return toVM, err + } + + params := up.Keepers.Cosmos.Wasm.GetParams(ctx) + // Configure code upload access - RESTRICTED TO GOVERNANCE ONLY + // Only governance proposals can upload contract code + // This provides maximum security for mainnet deployment + params.CodeUploadAccess = wasmtypes.AccessConfig{ + Permission: wasmtypes.AccessTypeNobody, + } + + // Configure instantiate default permission + params.InstantiateDefaultPermission = wasmtypes.AccessTypeEverybody + + err = up.Keepers.Cosmos.Wasm.SetParams(ctx, params) + if err != nil { + return toVM, err + } + + return toVM, err + } +} diff --git a/upgrades/types/types.go b/upgrades/types/types.go index cbd69bca1d..ca2be6bd4e 100644 --- a/upgrades/types/types.go +++ b/upgrades/types/types.go @@ -10,7 +10,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkmodule "github.com/cosmos/cosmos-sdk/types/module" - apptypes "pkg.akt.dev/node/app/types" + apptypes "pkg.akt.dev/node/v2/app/types" ) var ( diff --git a/upgrades/upgrades.go b/upgrades/upgrades.go index ea143ded18..b04dad889f 100644 --- a/upgrades/upgrades.go +++ b/upgrades/upgrades.go @@ -2,5 +2,5 @@ package upgrades import ( // nolint: revive - _ "pkg.akt.dev/node/upgrades/software/v1.0.0" + _ "pkg.akt.dev/node/v2/upgrades/software/v2.0.0" ) diff --git a/upgrades/upgrades_test.go b/upgrades/upgrades_test.go index fc379aa757..b0496c7e09 100644 --- a/upgrades/upgrades_test.go +++ b/upgrades/upgrades_test.go @@ -8,7 +8,7 @@ import ( "github.com/stretchr/testify/require" "golang.org/x/mod/semver" - utypes "pkg.akt.dev/node/upgrades/types" + utypes "pkg.akt.dev/node/v2/upgrades/types" ) func TestUpgradesName(t *testing.T) { diff --git a/util/partialord/internal/dag/dag_test.go b/util/partialord/internal/dag/dag_test.go index 7a7cbf4551..ffee61b490 100644 --- a/util/partialord/internal/dag/dag_test.go +++ b/util/partialord/internal/dag/dag_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "pkg.akt.dev/node/util/partialord/internal/dag" + "pkg.akt.dev/node/v2/util/partialord/internal/dag" ) type edge struct { diff --git a/util/partialord/partialord.go b/util/partialord/partialord.go index d1d4387e5f..aa81843964 100644 --- a/util/partialord/partialord.go +++ b/util/partialord/partialord.go @@ -3,7 +3,7 @@ package partialord import ( "sort" - "pkg.akt.dev/node/util/partialord/internal/dag" + "pkg.akt.dev/node/v2/util/partialord/internal/dag" ) type PartialOrdering struct { diff --git a/util/partialord/partialord_test.go b/util/partialord/partialord_test.go index 451cf29718..c2cf7d8253 100644 --- a/util/partialord/partialord_test.go +++ b/util/partialord/partialord_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "pkg.akt.dev/node/util/partialord" + "pkg.akt.dev/node/v2/util/partialord" ) func TestAPI(t *testing.T) { diff --git a/util/query/pagination.go b/util/query/pagination.go index 9138469a60..85b097f8a2 100644 --- a/util/query/pagination.go +++ b/util/query/pagination.go @@ -5,7 +5,7 @@ import ( "fmt" "hash/crc32" - "pkg.akt.dev/node/util/validation" + "pkg.akt.dev/node/v2/util/validation" ) var ( diff --git a/wasmvm.go b/wasmvm.go new file mode 100644 index 0000000000..e745e2390e --- /dev/null +++ b/wasmvm.go @@ -0,0 +1,3 @@ +package node + +// #cgo LDFLAGS: -Wl,-rpath,${SRCDIR}/.cache/lib -L${SRCDIR}/.cache/lib diff --git a/x/audit/alias.go b/x/audit/alias.go index 4500cd1be4..c00657554c 100644 --- a/x/audit/alias.go +++ b/x/audit/alias.go @@ -3,7 +3,7 @@ package audit import ( types "pkg.akt.dev/go/node/audit/v1" - "pkg.akt.dev/node/x/audit/keeper" + "pkg.akt.dev/node/v2/x/audit/keeper" ) const ( diff --git a/x/audit/genesis.go b/x/audit/genesis.go index 0ffcffadf8..918f40a141 100644 --- a/x/audit/genesis.go +++ b/x/audit/genesis.go @@ -10,7 +10,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" types "pkg.akt.dev/go/node/audit/v1" - "pkg.akt.dev/node/x/audit/keeper" + "pkg.akt.dev/node/v2/x/audit/keeper" ) // ValidateGenesis does validation check of the Genesis and returns error in-case of failure diff --git a/x/audit/handler/handler.go b/x/audit/handler/handler.go index 112323a8e8..715ee040b8 100644 --- a/x/audit/handler/handler.go +++ b/x/audit/handler/handler.go @@ -9,7 +9,7 @@ import ( types "pkg.akt.dev/go/node/audit/v1" - "pkg.akt.dev/node/x/audit/keeper" + "pkg.akt.dev/node/v2/x/audit/keeper" ) // NewHandler returns a handler for "provider" type messages. diff --git a/x/audit/handler/handler_test.go b/x/audit/handler/handler_test.go index b1fecf6232..1c85a47028 100644 --- a/x/audit/handler/handler_test.go +++ b/x/audit/handler/handler_test.go @@ -23,8 +23,8 @@ import ( "pkg.akt.dev/go/testutil" - "pkg.akt.dev/node/x/audit/handler" - "pkg.akt.dev/node/x/audit/keeper" + "pkg.akt.dev/node/v2/x/audit/handler" + "pkg.akt.dev/node/v2/x/audit/keeper" ) type testSuite struct { diff --git a/x/audit/handler/msg_server.go b/x/audit/handler/msg_server.go index f5aac32c55..5628df5293 100644 --- a/x/audit/handler/msg_server.go +++ b/x/audit/handler/msg_server.go @@ -7,7 +7,7 @@ import ( types "pkg.akt.dev/go/node/audit/v1" - "pkg.akt.dev/node/x/audit/keeper" + "pkg.akt.dev/node/v2/x/audit/keeper" ) type msgServer struct { diff --git a/x/audit/keeper/grpc_query_test.go b/x/audit/keeper/grpc_query_test.go index f267e7ff7c..069b2b796e 100644 --- a/x/audit/keeper/grpc_query_test.go +++ b/x/audit/keeper/grpc_query_test.go @@ -13,8 +13,8 @@ import ( types "pkg.akt.dev/go/node/audit/v1" "pkg.akt.dev/go/testutil" - "pkg.akt.dev/node/app" - "pkg.akt.dev/node/x/audit/keeper" + "pkg.akt.dev/node/v2/app" + "pkg.akt.dev/node/v2/x/audit/keeper" ) type grpcTestSuite struct { @@ -31,7 +31,7 @@ func setupTest(t *testing.T) *grpcTestSuite { t: t, } - suite.app = app.Setup(app.WithGenesis(app.GenesisStateWithValSet)) + suite.app = app.Setup(app.WithHome(t.TempDir()), app.WithGenesis(app.GenesisStateWithValSet)) suite.ctx, suite.keeper = setupKeeper(t) querier := keeper.Querier{Keeper: suite.keeper} diff --git a/x/audit/keeper/keeper_test.go b/x/audit/keeper/keeper_test.go index 23f1f05215..4b2b17a83c 100644 --- a/x/audit/keeper/keeper_test.go +++ b/x/audit/keeper/keeper_test.go @@ -21,7 +21,7 @@ import ( types "pkg.akt.dev/go/node/audit/v1" "pkg.akt.dev/go/testutil" - "pkg.akt.dev/node/x/audit/keeper" + "pkg.akt.dev/node/v2/x/audit/keeper" ) func TestProviderCreate(t *testing.T) { diff --git a/x/audit/keeper/key.go b/x/audit/keeper/key.go index 75cf186c2f..e0e03dd5a9 100644 --- a/x/audit/keeper/key.go +++ b/x/audit/keeper/key.go @@ -10,7 +10,7 @@ import ( types "pkg.akt.dev/go/node/audit/v1" - "pkg.akt.dev/node/util/validation" + "pkg.akt.dev/node/v2/util/validation" ) func ProviderKey(id types.ProviderID) []byte { diff --git a/x/audit/module.go b/x/audit/module.go index b4d0078e2e..c70f068c21 100644 --- a/x/audit/module.go +++ b/x/audit/module.go @@ -19,8 +19,8 @@ import ( types "pkg.akt.dev/go/node/audit/v1" - "pkg.akt.dev/node/x/audit/handler" - "pkg.akt.dev/node/x/audit/keeper" + "pkg.akt.dev/node/v2/x/audit/handler" + "pkg.akt.dev/node/v2/x/audit/keeper" ) var ( @@ -35,17 +35,17 @@ var ( _ module.AppModuleSimulation = AppModule{} ) -// AppModuleBasic defines the basic application module used by the provider module. +// AppModuleBasic defines the basic application module used by the audit module. type AppModuleBasic struct { cdc codec.Codec } -// Name returns provider module's name +// Name returns audit module's name func (AppModuleBasic) Name() string { return types.ModuleName } -// RegisterLegacyAminoCodec registers the provider module's types for the given codec. +// RegisterLegacyAminoCodec registers the audit module's types for the given codec. func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { types.RegisterLegacyAminoCodec(cdc) // nolint: staticcheck } @@ -55,8 +55,7 @@ func (b AppModuleBasic) RegisterInterfaces(registry cdctypes.InterfaceRegistry) types.RegisterInterfaces(registry) } -// DefaultGenesis returns default genesis state as raw bytes for the provider -// module. +// DefaultGenesis returns default genesis state as raw bytes for the audit module. func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { return cdc.MustMarshalJSON(DefaultGenesisState()) } @@ -84,7 +83,7 @@ func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, _ client.TxEncodingCo // rest.RegisterRoutes(clientCtx, rtr, StoreKey) // } -// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the provider module. +// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the audit module. func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { err := types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) if err != nil { @@ -166,7 +165,7 @@ func (am AppModule) BeginBlock(_ context.Context) error { return nil } -// EndBlock returns the end blocker for the deployment module. It returns no validator +// EndBlock returns the end blocker for the audit module. It returns no validator // updates. func (am AppModule) EndBlock(_ context.Context) error { return nil diff --git a/x/cert/alias.go b/x/cert/alias.go index 97dc00d932..e146a74674 100644 --- a/x/cert/alias.go +++ b/x/cert/alias.go @@ -3,7 +3,7 @@ package cert import ( types "pkg.akt.dev/go/node/cert/v1" - "pkg.akt.dev/node/x/cert/keeper" + "pkg.akt.dev/node/v2/x/cert/keeper" ) const ( diff --git a/x/cert/genesis.go b/x/cert/genesis.go index 5e902d4f24..0e5cd4c01c 100644 --- a/x/cert/genesis.go +++ b/x/cert/genesis.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" - "pkg.akt.dev/node/x/cert/keeper" + "pkg.akt.dev/node/v2/x/cert/keeper" types "pkg.akt.dev/go/node/cert/v1" ) diff --git a/x/cert/handler/handler.go b/x/cert/handler/handler.go index e80a034e42..e8761292f3 100644 --- a/x/cert/handler/handler.go +++ b/x/cert/handler/handler.go @@ -7,7 +7,7 @@ import ( types "pkg.akt.dev/go/node/cert/v1" - "pkg.akt.dev/node/x/cert/keeper" + "pkg.akt.dev/node/v2/x/cert/keeper" ) // NewHandler returns a handler for "provider" type messages. diff --git a/x/cert/handler/handler_test.go b/x/cert/handler/handler_test.go index 73345eef06..ee5535d7e8 100644 --- a/x/cert/handler/handler_test.go +++ b/x/cert/handler/handler_test.go @@ -22,8 +22,8 @@ import ( types "pkg.akt.dev/go/node/cert/v1" "pkg.akt.dev/go/testutil" - "pkg.akt.dev/node/x/cert/handler" - "pkg.akt.dev/node/x/cert/keeper" + "pkg.akt.dev/node/v2/x/cert/handler" + "pkg.akt.dev/node/v2/x/cert/keeper" ) type testSuite struct { diff --git a/x/cert/handler/msg_server.go b/x/cert/handler/msg_server.go index b92685765e..39201cdd51 100644 --- a/x/cert/handler/msg_server.go +++ b/x/cert/handler/msg_server.go @@ -7,7 +7,7 @@ import ( types "pkg.akt.dev/go/node/cert/v1" - "pkg.akt.dev/node/x/cert/keeper" + "pkg.akt.dev/node/v2/x/cert/keeper" ) type msgServer struct { diff --git a/x/cert/keeper/grpc_query.go b/x/cert/keeper/grpc_query.go index 9826cb2ba2..1b61a0e01b 100644 --- a/x/cert/keeper/grpc_query.go +++ b/x/cert/keeper/grpc_query.go @@ -12,7 +12,7 @@ import ( types "pkg.akt.dev/go/node/cert/v1" - "pkg.akt.dev/node/util/query" + "pkg.akt.dev/node/v2/util/query" ) // Querier is used as Keeper will have duplicate methods if used directly, and gRPC names take precedence over keeper diff --git a/x/cert/keeper/grpc_query_test.go b/x/cert/keeper/grpc_query_test.go index 44ee036d71..6eb3bfb95a 100644 --- a/x/cert/keeper/grpc_query_test.go +++ b/x/cert/keeper/grpc_query_test.go @@ -14,8 +14,8 @@ import ( types "pkg.akt.dev/go/node/cert/v1" "pkg.akt.dev/go/testutil" - "pkg.akt.dev/node/app" - "pkg.akt.dev/node/x/cert/keeper" + "pkg.akt.dev/node/v2/app" + "pkg.akt.dev/node/v2/x/cert/keeper" ) type grpcTestSuite struct { diff --git a/x/cert/keeper/keeper_test.go b/x/cert/keeper/keeper_test.go index 83da5c9142..55a5d2dfa3 100644 --- a/x/cert/keeper/keeper_test.go +++ b/x/cert/keeper/keeper_test.go @@ -19,7 +19,7 @@ import ( types "pkg.akt.dev/go/node/cert/v1" "pkg.akt.dev/go/testutil" - "pkg.akt.dev/node/x/cert/keeper" + "pkg.akt.dev/node/v2/x/cert/keeper" ) func TestCertKeeperCreate(t *testing.T) { diff --git a/x/cert/keeper/key.go b/x/cert/keeper/key.go index 87f02a7d35..1e1e8e0573 100644 --- a/x/cert/keeper/key.go +++ b/x/cert/keeper/key.go @@ -13,7 +13,7 @@ import ( types "pkg.akt.dev/go/node/cert/v1" - "pkg.akt.dev/node/util/validation" + "pkg.akt.dev/node/v2/util/validation" ) const ( diff --git a/x/cert/module.go b/x/cert/module.go index 29b5e14259..b4edb9898e 100644 --- a/x/cert/module.go +++ b/x/cert/module.go @@ -18,9 +18,9 @@ import ( types "pkg.akt.dev/go/node/cert/v1" - "pkg.akt.dev/node/x/cert/handler" - "pkg.akt.dev/node/x/cert/keeper" - "pkg.akt.dev/node/x/cert/simulation" + "pkg.akt.dev/node/v2/x/cert/handler" + "pkg.akt.dev/node/v2/x/cert/keeper" + "pkg.akt.dev/node/v2/x/cert/simulation" ) var ( @@ -35,23 +35,23 @@ var ( _ module.AppModuleSimulation = AppModule{} ) -// AppModuleBasic defines the basic application module used by the provider module. +// AppModuleBasic defines the basic application module used by the cert module. type AppModuleBasic struct { cdc codec.Codec } -// AppModule implements an application module for the audit module. +// AppModule implements an application module for the cert module. type AppModule struct { AppModuleBasic keeper keeper.Keeper } -// Name returns provider module's name +// Name returns cert module's name func (AppModuleBasic) Name() string { return types.ModuleName } -// RegisterLegacyAminoCodec registers the provider module's types for the given codec. +// RegisterLegacyAminoCodec registers the cert module's types for the given codec. func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { types.RegisterLegacyAminoCodec(cdc) // nolint: staticcheck } @@ -61,8 +61,7 @@ func (b AppModuleBasic) RegisterInterfaces(registry cdctypes.InterfaceRegistry) types.RegisterInterfaces(registry) } -// DefaultGenesis returns default genesis state as raw bytes for the provider -// module. +// DefaultGenesis returns default genesis state as raw bytes for the cert module. func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { return cdc.MustMarshalJSON(DefaultGenesisState()) } @@ -83,7 +82,7 @@ func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, _ client.TxEncodingCo return ValidateGenesis(&data) } -// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the provider module. +// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the cert module. func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { err := types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) if err != nil { @@ -136,7 +135,7 @@ func (am AppModule) BeginBlock(_ context.Context) error { return nil } -// EndBlock returns the end blocker for the deployment module. It returns no validator +// EndBlock returns the end blocker for the cert module. It returns no validator // updates. func (am AppModule) EndBlock(_ context.Context) error { return nil diff --git a/x/cert/utils/key_pair_manager.go b/x/cert/utils/key_pair_manager.go index 5ab6776154..8132b92e2a 100644 --- a/x/cert/utils/key_pair_manager.go +++ b/x/cert/utils/key_pair_manager.go @@ -27,7 +27,7 @@ import ( types "pkg.akt.dev/go/node/cert/v1" - certerrors "pkg.akt.dev/node/x/cert/errors" + certerrors "pkg.akt.dev/node/v2/x/cert/errors" ) var ( diff --git a/x/cert/utils/utils.go b/x/cert/utils/utils.go index 19f854e980..66c9806d2a 100644 --- a/x/cert/utils/utils.go +++ b/x/cert/utils/utils.go @@ -7,7 +7,7 @@ import ( "io" "time" - certerrors "pkg.akt.dev/node/x/cert/errors" + certerrors "pkg.akt.dev/node/v2/x/cert/errors" "github.com/cosmos/cosmos-sdk/client" diff --git a/x/deployment/alias.go b/x/deployment/alias.go index 8ffc73a9b0..b38bec9771 100644 --- a/x/deployment/alias.go +++ b/x/deployment/alias.go @@ -3,7 +3,7 @@ package deployment import ( types "pkg.akt.dev/go/node/deployment/v1" - "pkg.akt.dev/node/x/deployment/keeper" + "pkg.akt.dev/node/v2/x/deployment/keeper" ) const ( diff --git a/x/deployment/genesis.go b/x/deployment/genesis.go index e60754a3bb..32fac6183c 100644 --- a/x/deployment/genesis.go +++ b/x/deployment/genesis.go @@ -10,7 +10,7 @@ import ( "pkg.akt.dev/go/node/deployment/v1" "pkg.akt.dev/go/node/deployment/v1beta4" - "pkg.akt.dev/node/x/deployment/keeper" + "pkg.akt.dev/node/v2/x/deployment/keeper" ) // ValidateGenesis does validation check of the Genesis and return error in case of failure diff --git a/x/deployment/handler/handler.go b/x/deployment/handler/handler.go index 865b819961..e788711a6f 100644 --- a/x/deployment/handler/handler.go +++ b/x/deployment/handler/handler.go @@ -7,7 +7,7 @@ import ( types "pkg.akt.dev/go/node/deployment/v1beta4" - "pkg.akt.dev/node/x/deployment/keeper" + "pkg.akt.dev/node/v2/x/deployment/keeper" ) // NewHandler returns a handler for "deployment" type messages diff --git a/x/deployment/handler/handler_test.go b/x/deployment/handler/handler_test.go index f058b32f31..6665aa3fd7 100644 --- a/x/deployment/handler/handler_test.go +++ b/x/deployment/handler/handler_test.go @@ -25,12 +25,12 @@ import ( deposit "pkg.akt.dev/go/node/types/deposit/v1" "pkg.akt.dev/go/testutil" - cmocks "pkg.akt.dev/node/testutil/cosmos/mocks" - "pkg.akt.dev/node/testutil/state" - "pkg.akt.dev/node/x/deployment/handler" - "pkg.akt.dev/node/x/deployment/keeper" - ehandler "pkg.akt.dev/node/x/escrow/handler" - mkeeper "pkg.akt.dev/node/x/market/keeper" + cmocks "pkg.akt.dev/node/v2/testutil/cosmos/mocks" + "pkg.akt.dev/node/v2/testutil/state" + "pkg.akt.dev/node/v2/x/deployment/handler" + "pkg.akt.dev/node/v2/x/deployment/keeper" + ehandler "pkg.akt.dev/node/v2/x/escrow/handler" + mkeeper "pkg.akt.dev/node/v2/x/market/keeper" ) type testSuite struct { diff --git a/x/deployment/handler/server.go b/x/deployment/handler/server.go index 54f6b2a6e4..dace203894 100644 --- a/x/deployment/handler/server.go +++ b/x/deployment/handler/server.go @@ -11,7 +11,7 @@ import ( v1 "pkg.akt.dev/go/node/deployment/v1" types "pkg.akt.dev/go/node/deployment/v1beta4" - "pkg.akt.dev/node/x/deployment/keeper" + "pkg.akt.dev/node/v2/x/deployment/keeper" ) var _ types.MsgServer = msgServer{} diff --git a/x/deployment/keeper/grpc_query.go b/x/deployment/keeper/grpc_query.go index 14d75f97bc..a4bf7964e3 100644 --- a/x/deployment/keeper/grpc_query.go +++ b/x/deployment/keeper/grpc_query.go @@ -14,7 +14,7 @@ import ( "pkg.akt.dev/go/node/deployment/v1" types "pkg.akt.dev/go/node/deployment/v1beta4" - "pkg.akt.dev/node/util/query" + "pkg.akt.dev/node/v2/util/query" ) // Querier is used as Keeper will have duplicate methods if used directly, and gRPC names take precedence over keeper diff --git a/x/deployment/keeper/grpc_query_test.go b/x/deployment/keeper/grpc_query_test.go index f48a4baf7d..95e5b16c29 100644 --- a/x/deployment/keeper/grpc_query_test.go +++ b/x/deployment/keeper/grpc_query_test.go @@ -18,10 +18,10 @@ import ( eid "pkg.akt.dev/go/node/escrow/id/v1" "pkg.akt.dev/go/testutil" - "pkg.akt.dev/node/app" - "pkg.akt.dev/node/testutil/state" - "pkg.akt.dev/node/x/deployment/keeper" - ekeeper "pkg.akt.dev/node/x/escrow/keeper" + "pkg.akt.dev/node/v2/app" + "pkg.akt.dev/node/v2/testutil/state" + "pkg.akt.dev/node/v2/x/deployment/keeper" + ekeeper "pkg.akt.dev/node/v2/x/escrow/keeper" ) type grpcTestSuite struct { diff --git a/x/deployment/keeper/keeper_test.go b/x/deployment/keeper/keeper_test.go index 834edec661..097207ca33 100644 --- a/x/deployment/keeper/keeper_test.go +++ b/x/deployment/keeper/keeper_test.go @@ -11,8 +11,8 @@ import ( types "pkg.akt.dev/go/node/deployment/v1" "pkg.akt.dev/go/testutil" - "pkg.akt.dev/node/testutil/state" - "pkg.akt.dev/node/x/deployment/keeper" + "pkg.akt.dev/node/v2/testutil/state" + "pkg.akt.dev/node/v2/x/deployment/keeper" ) func Test_Create(t *testing.T) { diff --git a/x/deployment/module.go b/x/deployment/module.go index a6a8bcc87a..693ecafa32 100644 --- a/x/deployment/module.go +++ b/x/deployment/module.go @@ -22,9 +22,9 @@ import ( types "pkg.akt.dev/go/node/deployment/v1beta4" "pkg.akt.dev/go/node/migrate" - "pkg.akt.dev/node/x/deployment/handler" - "pkg.akt.dev/node/x/deployment/keeper" - "pkg.akt.dev/node/x/deployment/simulation" + "pkg.akt.dev/node/v2/x/deployment/handler" + "pkg.akt.dev/node/v2/x/deployment/keeper" + "pkg.akt.dev/node/v2/x/deployment/simulation" ) // type check to ensure the interface is properly implemented diff --git a/x/deployment/simulation/operations.go b/x/deployment/simulation/operations.go index c3c87c291b..ab8d5790d8 100644 --- a/x/deployment/simulation/operations.go +++ b/x/deployment/simulation/operations.go @@ -21,9 +21,9 @@ import ( sdlv1 "pkg.akt.dev/go/sdl" - appparams "pkg.akt.dev/node/app/params" - testsim "pkg.akt.dev/node/testutil/sim" - "pkg.akt.dev/node/x/deployment/keeper" + appparams "pkg.akt.dev/node/v2/app/params" + testsim "pkg.akt.dev/node/v2/testutil/sim" + "pkg.akt.dev/node/v2/x/deployment/keeper" ) // Simulation operation weights constants diff --git a/x/escrow/genesis.go b/x/escrow/genesis.go index 4e276d6c4e..9b19543c53 100644 --- a/x/escrow/genesis.go +++ b/x/escrow/genesis.go @@ -11,7 +11,7 @@ import ( emodule "pkg.akt.dev/go/node/escrow/module" etypes "pkg.akt.dev/go/node/escrow/types/v1" - "pkg.akt.dev/node/x/escrow/keeper" + "pkg.akt.dev/node/v2/x/escrow/keeper" types "pkg.akt.dev/go/node/escrow/v1" ) diff --git a/x/escrow/handler/handler.go b/x/escrow/handler/handler.go index a4a227418d..9479c61cff 100644 --- a/x/escrow/handler/handler.go +++ b/x/escrow/handler/handler.go @@ -6,7 +6,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" types "pkg.akt.dev/go/node/escrow/v1" - "pkg.akt.dev/node/x/escrow/keeper" + "pkg.akt.dev/node/v2/x/escrow/keeper" ) // NewHandler returns a handler for "deployment" type messages diff --git a/x/escrow/handler/server.go b/x/escrow/handler/server.go index d86e52bdfd..7798286e30 100644 --- a/x/escrow/handler/server.go +++ b/x/escrow/handler/server.go @@ -6,7 +6,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" types "pkg.akt.dev/go/node/escrow/v1" - "pkg.akt.dev/node/x/escrow/keeper" + "pkg.akt.dev/node/v2/x/escrow/keeper" ) var _ types.MsgServer = msgServer{} diff --git a/x/escrow/keeper/grpc_query.go b/x/escrow/keeper/grpc_query.go index 92233f491f..143a5cb865 100644 --- a/x/escrow/keeper/grpc_query.go +++ b/x/escrow/keeper/grpc_query.go @@ -13,7 +13,7 @@ import ( types "pkg.akt.dev/go/node/escrow/types/v1" "pkg.akt.dev/go/node/escrow/v1" - "pkg.akt.dev/node/util/query" + "pkg.akt.dev/node/v2/util/query" ) // Querier is used as Keeper will have duplicate methods if used directly, and gRPC names take precedence over keeper diff --git a/x/escrow/keeper/grpc_query_test.go b/x/escrow/keeper/grpc_query_test.go index b2b2e8ed4f..58f2a65582 100644 --- a/x/escrow/keeper/grpc_query_test.go +++ b/x/escrow/keeper/grpc_query_test.go @@ -19,9 +19,9 @@ import ( deposit "pkg.akt.dev/go/node/types/deposit/v1" "pkg.akt.dev/go/testutil" - "pkg.akt.dev/node/app" - "pkg.akt.dev/node/testutil/state" - ekeeper "pkg.akt.dev/node/x/escrow/keeper" + "pkg.akt.dev/node/v2/app" + "pkg.akt.dev/node/v2/testutil/state" + ekeeper "pkg.akt.dev/node/v2/x/escrow/keeper" ) type grpcTestSuite struct { diff --git a/x/escrow/keeper/keeper_test.go b/x/escrow/keeper/keeper_test.go index 427dfef6db..180c6b00f9 100644 --- a/x/escrow/keeper/keeper_test.go +++ b/x/escrow/keeper/keeper_test.go @@ -10,9 +10,9 @@ import ( etypes "pkg.akt.dev/go/node/escrow/types/v1" "pkg.akt.dev/go/testutil" - cmocks "pkg.akt.dev/node/testutil/cosmos/mocks" - "pkg.akt.dev/node/testutil/state" - "pkg.akt.dev/node/x/escrow/keeper" + cmocks "pkg.akt.dev/node/v2/testutil/cosmos/mocks" + "pkg.akt.dev/node/v2/testutil/state" + "pkg.akt.dev/node/v2/x/escrow/keeper" ) func Test_AccountCreate(t *testing.T) { diff --git a/x/escrow/module.go b/x/escrow/module.go index 92ffd660d1..c39faeaa1e 100644 --- a/x/escrow/module.go +++ b/x/escrow/module.go @@ -20,9 +20,9 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" v1 "pkg.akt.dev/go/node/escrow/v1" - "pkg.akt.dev/node/x/escrow/client/rest" - "pkg.akt.dev/node/x/escrow/handler" - "pkg.akt.dev/node/x/escrow/keeper" + "pkg.akt.dev/node/v2/x/escrow/client/rest" + "pkg.akt.dev/node/v2/x/escrow/handler" + "pkg.akt.dev/node/v2/x/escrow/keeper" ) var ( @@ -37,17 +37,17 @@ var ( _ module.AppModuleSimulation = AppModule{} ) -// AppModuleBasic defines the basic application module used by the provider module. +// AppModuleBasic defines the basic application module used by the escrow module. type AppModuleBasic struct { cdc codec.Codec } -// Name returns provider module's name +// Name returns escrow module's name func (AppModuleBasic) Name() string { return emodule.ModuleName } -// RegisterLegacyAminoCodec registers the provider module's types for the given codec. +// RegisterLegacyAminoCodec registers the escrow module's types for the given codec. func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { v1.RegisterLegacyAminoCodec(cdc) } @@ -57,8 +57,7 @@ func (b AppModuleBasic) RegisterInterfaces(registry cdctypes.InterfaceRegistry) v1.RegisterInterfaces(registry) } -// DefaultGenesis returns default genesis state as raw bytes for the provider -// module. +// DefaultGenesis returns default genesis state as raw bytes for the escrow module. func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { return cdc.MustMarshalJSON(DefaultGenesisState()) } @@ -84,7 +83,7 @@ func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Rout rest.RegisterRoutes(clientCtx, rtr, emodule.StoreKey) } -// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the provider module. +// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the escrow module. func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { err := v1.RegisterQueryHandlerClient(context.Background(), mux, v1.NewQueryClient(clientCtx)) if err != nil { @@ -162,7 +161,7 @@ func (am AppModule) BeginBlock(_ context.Context) error { return nil } -// EndBlock returns the end blocker for the deployment module. It returns no validator +// EndBlock returns the end blocker for the escrow module. It returns no validator // updates. func (am AppModule) EndBlock(_ context.Context) error { return nil diff --git a/x/escrow/query/querier.go b/x/escrow/query/querier.go index 8e8e47f68f..76db96d258 100644 --- a/x/escrow/query/querier.go +++ b/x/escrow/query/querier.go @@ -4,7 +4,7 @@ package query // "github.com/cosmos/cosmos-sdk/codec" // sdk "github.com/cosmos/cosmos-sdk/types" // -// "pkg.akt.dev/node/x/escrow/keeper" +// "pkg.akt.dev/node/v2/x/escrow/keeper" // ) // // func NewQuerier(keeper keeper.Keeper, cdc *codec.LegacyAmino) sdk.Querier { diff --git a/x/market/alias.go b/x/market/alias.go index 330e4913e5..322dd0f07e 100644 --- a/x/market/alias.go +++ b/x/market/alias.go @@ -3,7 +3,7 @@ package market import ( v1 "pkg.akt.dev/go/node/market/v1" - "pkg.akt.dev/node/x/market/keeper" + "pkg.akt.dev/node/v2/x/market/keeper" ) const ( diff --git a/x/market/client/rest/params.go b/x/market/client/rest/params.go index a51bb5fe78..eabee87ad5 100644 --- a/x/market/client/rest/params.go +++ b/x/market/client/rest/params.go @@ -8,7 +8,7 @@ package rest // "pkg.akt.dev/go/node/market/v1" // "pkg.akt.dev/go/node/market/v1beta5" // -// drest "pkg.akt.dev/node/x/deployment/client/rest" +// drest "pkg.akt.dev/node/v2/x/deployment/client/rest" // ) // // // OrderIDFromRequest returns OrderID from parsing request diff --git a/x/market/client/rest/rest.go b/x/market/client/rest/rest.go index 3cadc1c21a..7ab1a06606 100644 --- a/x/market/client/rest/rest.go +++ b/x/market/client/rest/rest.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" "github.com/gorilla/mux" - // "pkg.akt.dev/node/x/market/query" + // "pkg.akt.dev/node/v2/x/market/query" ) // RegisterRoutes registers all query routes diff --git a/x/market/genesis.go b/x/market/genesis.go index 99485cd201..6bf8f54bc9 100644 --- a/x/market/genesis.go +++ b/x/market/genesis.go @@ -10,8 +10,8 @@ import ( "pkg.akt.dev/go/node/market/v1" "pkg.akt.dev/go/node/market/v1beta5" - "pkg.akt.dev/node/x/market/keeper" - "pkg.akt.dev/node/x/market/keeper/keys" + "pkg.akt.dev/node/v2/x/market/keeper" + "pkg.akt.dev/node/v2/x/market/keeper/keys" ) // ValidateGenesis does validation check of the Genesis diff --git a/x/market/handler/handler_test.go b/x/market/handler/handler_test.go index 8285dece1a..72eef95e77 100644 --- a/x/market/handler/handler_test.go +++ b/x/market/handler/handler_test.go @@ -24,8 +24,8 @@ import ( deposit "pkg.akt.dev/go/node/types/deposit/v1" "pkg.akt.dev/go/testutil" - "pkg.akt.dev/node/testutil/state" - "pkg.akt.dev/node/x/market/handler" + "pkg.akt.dev/node/v2/testutil/state" + "pkg.akt.dev/node/v2/x/market/handler" ) type testSuite struct { diff --git a/x/market/handler/keepers.go b/x/market/handler/keepers.go index c9a3ca3423..c20d4ea05b 100644 --- a/x/market/handler/keepers.go +++ b/x/market/handler/keepers.go @@ -16,7 +16,7 @@ import ( etypes "pkg.akt.dev/go/node/escrow/types/v1" ptypes "pkg.akt.dev/go/node/provider/v1beta4" - "pkg.akt.dev/node/x/market/keeper" + "pkg.akt.dev/node/v2/x/market/keeper" ) type EscrowKeeper interface { diff --git a/x/market/keeper/grpc_query.go b/x/market/keeper/grpc_query.go index 4eb06ac8ff..bd4d431cf9 100644 --- a/x/market/keeper/grpc_query.go +++ b/x/market/keeper/grpc_query.go @@ -13,8 +13,8 @@ import ( "pkg.akt.dev/go/node/market/v1" types "pkg.akt.dev/go/node/market/v1beta5" - "pkg.akt.dev/node/util/query" - "pkg.akt.dev/node/x/market/keeper/keys" + "pkg.akt.dev/node/v2/util/query" + "pkg.akt.dev/node/v2/x/market/keeper/keys" ) // Querier is used as Keeper will have duplicate methods if used directly, and gRPC names take precedence over keeper diff --git a/x/market/keeper/grpc_query_test.go b/x/market/keeper/grpc_query_test.go index 3b1bfa08a2..b03ad30847 100644 --- a/x/market/keeper/grpc_query_test.go +++ b/x/market/keeper/grpc_query_test.go @@ -16,8 +16,8 @@ import ( "pkg.akt.dev/go/node/market/v1beta5" "pkg.akt.dev/go/testutil" - "pkg.akt.dev/node/testutil/state" - "pkg.akt.dev/node/x/market/keeper" + "pkg.akt.dev/node/v2/testutil/state" + "pkg.akt.dev/node/v2/x/market/keeper" ) type grpcTestSuite struct { diff --git a/x/market/keeper/keeper.go b/x/market/keeper/keeper.go index 107f983046..7dad13c3df 100644 --- a/x/market/keeper/keeper.go +++ b/x/market/keeper/keeper.go @@ -12,7 +12,7 @@ import ( mv1 "pkg.akt.dev/go/node/market/v1" types "pkg.akt.dev/go/node/market/v1beta5" - "pkg.akt.dev/node/x/market/keeper/keys" + "pkg.akt.dev/node/v2/x/market/keeper/keys" ) type IKeeper interface { diff --git a/x/market/keeper/keeper_test.go b/x/market/keeper/keeper_test.go index 09ae00e538..b35fe28ba8 100644 --- a/x/market/keeper/keeper_test.go +++ b/x/market/keeper/keeper_test.go @@ -14,8 +14,8 @@ import ( deposit "pkg.akt.dev/go/node/types/deposit/v1" "pkg.akt.dev/go/testutil" - "pkg.akt.dev/node/testutil/state" - "pkg.akt.dev/node/x/market/keeper" + "pkg.akt.dev/node/v2/testutil/state" + "pkg.akt.dev/node/v2/x/market/keeper" ) func Test_CreateOrder(t *testing.T) { diff --git a/x/market/module.go b/x/market/module.go index cad5c0f872..ca360a3fa1 100644 --- a/x/market/module.go +++ b/x/market/module.go @@ -21,11 +21,11 @@ import ( bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" types "pkg.akt.dev/go/node/market/v1beta5" - akeeper "pkg.akt.dev/node/x/audit/keeper" - ekeeper "pkg.akt.dev/node/x/escrow/keeper" - "pkg.akt.dev/node/x/market/handler" - "pkg.akt.dev/node/x/market/keeper" - "pkg.akt.dev/node/x/market/simulation" + akeeper "pkg.akt.dev/node/v2/x/audit/keeper" + ekeeper "pkg.akt.dev/node/v2/x/escrow/keeper" + "pkg.akt.dev/node/v2/x/market/handler" + "pkg.akt.dev/node/v2/x/market/keeper" + "pkg.akt.dev/node/v2/x/market/simulation" ) // type check to ensure the interface is properly implemented @@ -156,7 +156,7 @@ func (am AppModule) BeginBlock(_ context.Context) error { return nil } -// EndBlock returns the end blocker for the deployment module. It returns no validator +// EndBlock returns the end blocker for the market module. It returns no validator // updates. func (am AppModule) EndBlock(_ context.Context) error { return nil diff --git a/x/market/query/path.go b/x/market/query/path.go index f686237048..161b648218 100644 --- a/x/market/query/path.go +++ b/x/market/query/path.go @@ -8,7 +8,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" v1 "pkg.akt.dev/go/node/market/v1" - dpath "pkg.akt.dev/node/x/deployment/query" + dpath "pkg.akt.dev/node/v2/x/deployment/query" ) const ( diff --git a/x/market/simulation/operations.go b/x/market/simulation/operations.go index 7ee5552472..46870a75d8 100644 --- a/x/market/simulation/operations.go +++ b/x/market/simulation/operations.go @@ -17,9 +17,9 @@ import ( "pkg.akt.dev/go/node/market/v1" types "pkg.akt.dev/go/node/market/v1beta5" - appparams "pkg.akt.dev/node/app/params" - testsim "pkg.akt.dev/node/testutil/sim" - keepers "pkg.akt.dev/node/x/market/handler" + appparams "pkg.akt.dev/node/v2/app/params" + testsim "pkg.akt.dev/node/v2/testutil/sim" + keepers "pkg.akt.dev/node/v2/x/market/handler" ) // Simulation operation weights constants diff --git a/x/market/simulation/utils.go b/x/market/simulation/utils.go index 2b15153407..bfddde1b7f 100644 --- a/x/market/simulation/utils.go +++ b/x/market/simulation/utils.go @@ -6,7 +6,7 @@ import ( ptypes "pkg.akt.dev/go/node/provider/v1beta4" - keepers "pkg.akt.dev/node/x/market/handler" + keepers "pkg.akt.dev/node/v2/x/market/handler" ) func getOrdersWithState(ctx sdk.Context, ks keepers.Keepers, state v1beta5.Order_State) v1beta5.Orders { diff --git a/x/provider/alias.go b/x/provider/alias.go index 90407bcba8..3e64924663 100644 --- a/x/provider/alias.go +++ b/x/provider/alias.go @@ -3,7 +3,7 @@ package provider import ( types "pkg.akt.dev/go/node/provider/v1beta4" - "pkg.akt.dev/node/x/provider/keeper" + "pkg.akt.dev/node/v2/x/provider/keeper" ) const ( diff --git a/x/provider/genesis.go b/x/provider/genesis.go index 3e1c7ac179..1290febb4e 100644 --- a/x/provider/genesis.go +++ b/x/provider/genesis.go @@ -9,7 +9,7 @@ import ( types "pkg.akt.dev/go/node/provider/v1beta4" - "pkg.akt.dev/node/x/provider/keeper" + "pkg.akt.dev/node/v2/x/provider/keeper" ) // ValidateGenesis does validation check of the Genesis and returns error in case of failure diff --git a/x/provider/handler/handler.go b/x/provider/handler/handler.go index 4d2e742c0f..dc47e76ab5 100644 --- a/x/provider/handler/handler.go +++ b/x/provider/handler/handler.go @@ -7,8 +7,8 @@ import ( types "pkg.akt.dev/go/node/provider/v1beta4" - mkeeper "pkg.akt.dev/node/x/market/keeper" - "pkg.akt.dev/node/x/provider/keeper" + mkeeper "pkg.akt.dev/node/v2/x/market/keeper" + "pkg.akt.dev/node/v2/x/provider/keeper" ) // NewHandler returns a handler for "provider" type messages. diff --git a/x/provider/handler/handler_test.go b/x/provider/handler/handler_test.go index bd13daff5c..4438368f97 100644 --- a/x/provider/handler/handler_test.go +++ b/x/provider/handler/handler_test.go @@ -15,10 +15,10 @@ import ( akashtypes "pkg.akt.dev/go/node/types/attributes/v1" "pkg.akt.dev/go/testutil" - "pkg.akt.dev/node/testutil/state" - mkeeper "pkg.akt.dev/node/x/market/keeper" - "pkg.akt.dev/node/x/provider/handler" - "pkg.akt.dev/node/x/provider/keeper" + "pkg.akt.dev/node/v2/testutil/state" + mkeeper "pkg.akt.dev/node/v2/x/market/keeper" + "pkg.akt.dev/node/v2/x/provider/handler" + "pkg.akt.dev/node/v2/x/provider/keeper" ) const ( diff --git a/x/provider/handler/server.go b/x/provider/handler/server.go index d353df7fd2..045d01003a 100644 --- a/x/provider/handler/server.go +++ b/x/provider/handler/server.go @@ -8,8 +8,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" types "pkg.akt.dev/go/node/provider/v1beta4" - mkeeper "pkg.akt.dev/node/x/market/keeper" - "pkg.akt.dev/node/x/provider/keeper" + mkeeper "pkg.akt.dev/node/v2/x/market/keeper" + "pkg.akt.dev/node/v2/x/provider/keeper" ) var ( diff --git a/x/provider/keeper/grpc_query_test.go b/x/provider/keeper/grpc_query_test.go index 06891f9c16..0d63ffdd76 100644 --- a/x/provider/keeper/grpc_query_test.go +++ b/x/provider/keeper/grpc_query_test.go @@ -13,9 +13,9 @@ import ( types "pkg.akt.dev/go/node/provider/v1beta4" "pkg.akt.dev/go/testutil" - "pkg.akt.dev/node/app" - "pkg.akt.dev/node/testutil/state" - "pkg.akt.dev/node/x/provider/keeper" + "pkg.akt.dev/node/v2/app" + "pkg.akt.dev/node/v2/testutil/state" + "pkg.akt.dev/node/v2/x/provider/keeper" ) type grpcTestSuite struct { diff --git a/x/provider/keeper/keeper_test.go b/x/provider/keeper/keeper_test.go index a65852bfaf..cb55306c1e 100644 --- a/x/provider/keeper/keeper_test.go +++ b/x/provider/keeper/keeper_test.go @@ -10,8 +10,8 @@ import ( types "pkg.akt.dev/go/node/provider/v1beta4" "pkg.akt.dev/go/testutil" - "pkg.akt.dev/node/testutil/state" - "pkg.akt.dev/node/x/provider/keeper" + "pkg.akt.dev/node/v2/testutil/state" + "pkg.akt.dev/node/v2/x/provider/keeper" ) func TestProviderCreate(t *testing.T) { diff --git a/x/provider/module.go b/x/provider/module.go index 4123e310c1..5338be45b4 100644 --- a/x/provider/module.go +++ b/x/provider/module.go @@ -20,10 +20,10 @@ import ( types "pkg.akt.dev/go/node/provider/v1beta4" - mkeeper "pkg.akt.dev/node/x/market/keeper" - "pkg.akt.dev/node/x/provider/handler" - "pkg.akt.dev/node/x/provider/keeper" - "pkg.akt.dev/node/x/provider/simulation" + mkeeper "pkg.akt.dev/node/v2/x/market/keeper" + "pkg.akt.dev/node/v2/x/provider/handler" + "pkg.akt.dev/node/v2/x/provider/keeper" + "pkg.akt.dev/node/v2/x/provider/simulation" ) // type check to ensure the interface is properly implemented @@ -69,8 +69,7 @@ func (b AppModuleBasic) RegisterInterfaces(registry cdctypes.InterfaceRegistry) types.RegisterInterfaces(registry) } -// DefaultGenesis returns default genesis state as raw bytes for the provider -// module. +// DefaultGenesis returns default genesis state as raw bytes for the provider module. func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { return cdc.MustMarshalJSON(DefaultGenesisState()) } @@ -143,7 +142,7 @@ func (am AppModule) BeginBlock(_ context.Context) error { return nil } -// EndBlock returns the end blocker for the deployment module. It returns no validator +// EndBlock returns the end blocker for the provider module. It returns no validator // updates. func (am AppModule) EndBlock(_ context.Context) error { return nil diff --git a/x/provider/simulation/operations.go b/x/provider/simulation/operations.go index 7eb0286518..eee7469290 100644 --- a/x/provider/simulation/operations.go +++ b/x/provider/simulation/operations.go @@ -19,10 +19,10 @@ import ( types "pkg.akt.dev/go/node/provider/v1beta4" - appparams "pkg.akt.dev/node/app/params" - testsim "pkg.akt.dev/node/testutil/sim" - "pkg.akt.dev/node/x/provider/config" - "pkg.akt.dev/node/x/provider/keeper" + appparams "pkg.akt.dev/node/v2/app/params" + testsim "pkg.akt.dev/node/v2/testutil/sim" + "pkg.akt.dev/node/v2/x/provider/config" + "pkg.akt.dev/node/v2/x/provider/keeper" ) // Simulation operation weights constants diff --git a/x/take/genesis.go b/x/take/genesis.go index 7391ab625b..02a2713cd8 100644 --- a/x/take/genesis.go +++ b/x/take/genesis.go @@ -5,7 +5,7 @@ import ( types "pkg.akt.dev/go/node/take/v1" - "pkg.akt.dev/node/x/take/keeper" + "pkg.akt.dev/node/v2/x/take/keeper" ) // ValidateGenesis does validation check of the Genesis and return error incase of failure diff --git a/x/take/handler/server.go b/x/take/handler/server.go index 1dcdb75acf..01cd806b3e 100644 --- a/x/take/handler/server.go +++ b/x/take/handler/server.go @@ -8,7 +8,7 @@ import ( types "pkg.akt.dev/go/node/take/v1" - "pkg.akt.dev/node/x/take/keeper" + "pkg.akt.dev/node/v2/x/take/keeper" ) var _ types.MsgServer = msgServer{} diff --git a/x/take/module.go b/x/take/module.go index fb16f4ea61..62e9130c80 100644 --- a/x/take/module.go +++ b/x/take/module.go @@ -17,9 +17,9 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" types "pkg.akt.dev/go/node/take/v1" - "pkg.akt.dev/node/x/take/handler" - "pkg.akt.dev/node/x/take/keeper" - "pkg.akt.dev/node/x/take/simulation" + "pkg.akt.dev/node/v2/x/take/handler" + "pkg.akt.dev/node/v2/x/take/keeper" + "pkg.akt.dev/node/v2/x/take/simulation" ) var ( @@ -34,7 +34,7 @@ var ( _ module.AppModuleSimulation = AppModule{} ) -// AppModuleBasic defines the basic application module used by the provider module. +// AppModuleBasic defines the basic application module used by the take module. type AppModuleBasic struct { cdc codec.Codec } @@ -45,12 +45,12 @@ type AppModule struct { keeper keeper.IKeeper } -// Name returns provider module's name +// Name returns take module's name func (AppModuleBasic) Name() string { return types.ModuleName } -// RegisterLegacyAminoCodec registers the provider module's types for the given codec. +// RegisterLegacyAminoCodec registers the take module's types for the given codec. func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { types.RegisterLegacyAminoCodec(cdc) // nolint staticcheck } @@ -60,8 +60,7 @@ func (b AppModuleBasic) RegisterInterfaces(registry cdctypes.InterfaceRegistry) types.RegisterInterfaces(registry) } -// DefaultGenesis returns default genesis state as raw bytes for the provider -// module. +// DefaultGenesis returns default genesis state as raw bytes for the take module. func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { return cdc.MustMarshalJSON(DefaultGenesisState()) } @@ -82,7 +81,7 @@ func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, _ client.TxEncodingCo return ValidateGenesis(&data) } -// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the provider module. +// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the take module. func (AppModuleBasic) RegisterGRPCGatewayRoutes(cctx client.Context, mux *runtime.ServeMux) { if err := types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(cctx)); err != nil { panic(err) @@ -135,7 +134,7 @@ func (am AppModule) BeginBlock(_ context.Context) error { return nil } -// EndBlock returns the end blocker for the deployment module. It returns no validator +// EndBlock returns the end blocker for the take module. It returns no validator // updates. func (am AppModule) EndBlock(_ context.Context) error { return nil diff --git a/x/wasm/alias.go b/x/wasm/alias.go new file mode 100644 index 0000000000..56f36b6779 --- /dev/null +++ b/x/wasm/alias.go @@ -0,0 +1,12 @@ +package wasm + +import ( + types "pkg.akt.dev/go/node/wasm/v1" +) + +const ( + // StoreKey represents storekey of wasm module + StoreKey = types.StoreKey + // ModuleName represents current module name + ModuleName = types.ModuleName +) diff --git a/x/wasm/genesis.go b/x/wasm/genesis.go new file mode 100644 index 0000000000..c08296b14e --- /dev/null +++ b/x/wasm/genesis.go @@ -0,0 +1,50 @@ +package wasm + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + + types "pkg.akt.dev/go/node/wasm/v1" + + "pkg.akt.dev/node/v2/x/wasm/keeper" +) + +// ValidateGenesis does validation check of the Genesis and return error incase of failure +func ValidateGenesis(data *types.GenesisState) error { + return data.Params.Validate() +} + +// DefaultGenesisState returns default genesis state as raw bytes for the deployment +// module. +func DefaultGenesisState() *types.GenesisState { + params := types.DefaultParams() + params.BlockedAddresses = []string{ + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + authtypes.NewModuleAddress(distrtypes.ModuleName).String(), + authtypes.NewModuleAddress(stakingtypes.BondedPoolName).String(), + authtypes.NewModuleAddress(stakingtypes.NotBondedPoolName).String(), + } + + return &types.GenesisState{ + Params: params, + } +} + +// InitGenesis initiate genesis state and return updated validator details +func InitGenesis(ctx sdk.Context, keeper keeper.Keeper, data *types.GenesisState) { + err := keeper.SetParams(ctx, data.Params) + if err != nil { + panic(err.Error()) + } +} + +// ExportGenesis returns genesis state for the deployment module +func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { + params := k.GetParams(ctx) + return &types.GenesisState{ + Params: params, + } +} diff --git a/x/wasm/handler/server.go b/x/wasm/handler/server.go new file mode 100644 index 0000000000..d6186a0430 --- /dev/null +++ b/x/wasm/handler/server.go @@ -0,0 +1,39 @@ +package handler + +import ( + "context" + + sdk "github.com/cosmos/cosmos-sdk/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + + types "pkg.akt.dev/go/node/wasm/v1" + + "pkg.akt.dev/node/v2/x/wasm/keeper" +) + +var _ types.MsgServer = msgServer{} + +type msgServer struct { + keeper keeper.Keeper +} + +// NewMsgServerImpl returns an implementation of the akash staking MsgServer interface +// for the provided Keeper. +func NewMsgServerImpl(k keeper.Keeper) types.MsgServer { + return &msgServer{ + keeper: k, + } +} + +func (ms msgServer) UpdateParams(goCtx context.Context, req *types.MsgUpdateParams) (*types.MsgUpdateParamsResponse, error) { + if ms.keeper.GetAuthority() != req.Authority { + return nil, govtypes.ErrInvalidSigner.Wrapf("invalid authority; expected %s, got %s", ms.keeper.GetAuthority(), req.Authority) + } + + ctx := sdk.UnwrapSDKContext(goCtx) + if err := ms.keeper.SetParams(ctx, req.Params); err != nil { + return nil, err + } + + return &types.MsgUpdateParamsResponse{}, nil +} diff --git a/x/wasm/keeper/grpc_query.go b/x/wasm/keeper/grpc_query.go new file mode 100644 index 0000000000..643811b736 --- /dev/null +++ b/x/wasm/keeper/grpc_query.go @@ -0,0 +1,30 @@ +package keeper + +import ( + "context" + + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + + sdk "github.com/cosmos/cosmos-sdk/types" + + types "pkg.akt.dev/go/node/wasm/v1" +) + +// Querier is used as Keeper will have duplicate methods if used directly, and gRPC names take precedence over keeper +type Querier struct { + Keeper +} + +var _ types.QueryServer = Querier{} + +func (k Querier) Params(ctx context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { + if req == nil { + return nil, status.Errorf(codes.InvalidArgument, "empty request") + } + + sdkCtx := sdk.UnwrapSDKContext(ctx) + params := k.GetParams(sdkCtx) + + return &types.QueryParamsResponse{Params: params}, nil +} diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go new file mode 100644 index 0000000000..4eca06d15f --- /dev/null +++ b/x/wasm/keeper/keeper.go @@ -0,0 +1,102 @@ +package keeper + +import ( + storetypes "cosmossdk.io/store/types" + wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" + "github.com/cosmos/cosmos-sdk/codec" + sdk "github.com/cosmos/cosmos-sdk/types" + + types "pkg.akt.dev/go/node/wasm/v1" +) + +type SetParamsHook func(sdk.Context, types.Params) + +type Keeper interface { + StoreKey() storetypes.StoreKey + Codec() codec.BinaryCodec + GetParams(ctx sdk.Context) (params types.Params) + SetParams(ctx sdk.Context, params types.Params) error + NewMsgFilterDecorator() func(wasmkeeper.Messenger) wasmkeeper.Messenger + + AddOnSetParamsHook(SetParamsHook) Keeper + + NewQuerier() Querier + GetAuthority() string +} + +// Keeper of the deployment store +type keeper struct { + skey storetypes.StoreKey + cdc codec.BinaryCodec + hooks struct { + onSetParams []SetParamsHook + } + + // The address capable of executing an MsgUpdateParams message. + // This should be the x/gov module account. + authority string +} + +// NewKeeper creates and returns an instance of take keeper +func NewKeeper(cdc codec.BinaryCodec, skey storetypes.StoreKey, authority string) Keeper { + return &keeper{ + skey: skey, + cdc: cdc, + authority: authority, + } +} + +// Codec returns keeper codec +func (k *keeper) Codec() codec.BinaryCodec { + return k.cdc +} + +func (k *keeper) StoreKey() storetypes.StoreKey { + return k.skey +} + +func (k *keeper) NewQuerier() Querier { + return Querier{k} +} + +// GetAuthority returns the x/mint module's authority. +func (k *keeper) GetAuthority() string { + return k.authority +} + +// SetParams sets the x/take module parameters. +func (k *keeper) SetParams(ctx sdk.Context, p types.Params) error { + if err := p.Validate(); err != nil { + return err + } + + store := ctx.KVStore(k.skey) + bz := k.cdc.MustMarshal(&p) + store.Set(types.ParamsPrefix(), bz) + + // call hooks + for _, hook := range k.hooks.onSetParams { + hook(ctx, p) + } + + return nil +} + +// GetParams returns the current x/take module parameters. +func (k *keeper) GetParams(ctx sdk.Context) (p types.Params) { + store := ctx.KVStore(k.skey) + bz := store.Get(types.ParamsPrefix()) + if bz == nil { + return p + } + + k.cdc.MustUnmarshal(bz, &p) + + return p +} + +func (k *keeper) AddOnSetParamsHook(hook SetParamsHook) Keeper { + k.hooks.onSetParams = append(k.hooks.onSetParams, hook) + + return k +} diff --git a/x/wasm/keeper/msg_filter.go b/x/wasm/keeper/msg_filter.go new file mode 100644 index 0000000000..afd8230fa9 --- /dev/null +++ b/x/wasm/keeper/msg_filter.go @@ -0,0 +1,209 @@ +package keeper + +import ( + errorsmod "cosmossdk.io/errors" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + + wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" + wasmvmtypes "github.com/CosmWasm/wasmvm/v3/types" + + sdk "github.com/cosmos/cosmos-sdk/types" + + wv1 "pkg.akt.dev/go/node/wasm/v1" +) + +// FilterMessenger wraps the default messenger with Phase 1 restrictions +type FilterMessenger struct { + k *keeper + next wasmkeeper.Messenger +} + +// NewMsgFilterDecorator returns the message filter decorator +func (k *keeper) NewMsgFilterDecorator() func(wasmkeeper.Messenger) wasmkeeper.Messenger { + return func(next wasmkeeper.Messenger) wasmkeeper.Messenger { + return &FilterMessenger{ + k: k, + next: next, + } + } +} + +// DispatchMsg applies Phase 1 filtering before dispatching +func (m *FilterMessenger) DispatchMsg( + ctx sdk.Context, + contractAddr sdk.AccAddress, + contractIBCPortID string, + msg wasmvmtypes.CosmosMsg, +) (events []sdk.Event, data [][]byte, msgResponses [][]*codectypes.Any, err error) { + // Apply Phase 1 restrictions + if err := m.k.FilterMessage(ctx, contractAddr, msg); err != nil { + // Emit event for monitoring + _ = ctx.EventManager().EmitTypedEvent( + &wv1.EventMsgBlocked{ + ContractAddress: contractAddr.String(), + MsgType: getMessageType(msg), + Reason: err.Error(), + }, + ) + + ctx.Logger().Info("Phase 1: Message blocked", + "contract", contractAddr.String(), + "type", getMessageType(msg), + "reason", err.Error(), + ) + + return nil, nil, nil, err + } + + // Pass to wrapped messenger + return m.next.DispatchMsg(ctx, contractAddr, contractIBCPortID, msg) +} + +// FilterMessage applies Phase 1 filtering rules +func (k *keeper) FilterMessage(sctx sdk.Context, contractAddr sdk.AccAddress, msg wasmvmtypes.CosmosMsg, +) error { + // ALLOW Bank messages (with restrictions) + if msg.Bank != nil { + return k.filterBankMessage(sctx, msg.Bank) + } + + // BLOCK Staking messages + if msg.Staking != nil { + return errorsmod.Wrap( + sdkerrors.ErrUnauthorized, + "Staking operations not allowed", + ) + } + + // BLOCK Distribution messages + if msg.Distribution != nil { + return errorsmod.Wrap( + sdkerrors.ErrUnauthorized, + "Distribution operations not allowed", + ) + } + + // BLOCK Governance messages + if msg.Gov != nil { + return errorsmod.Wrap( + sdkerrors.ErrUnauthorized, + "Governance operations not allowed", + ) + } + + // BLOCK IBC messages + if msg.IBC != nil { + return errorsmod.Wrap( + sdkerrors.ErrUnauthorized, + "IBC messages not allowed", + ) + } + + if msg.IBC2 != nil { + return errorsmod.Wrap( + sdkerrors.ErrUnauthorized, + "IBC2 messages not allowed", + ) + } + + // BLOCK Custom messages (no Akash bindings) + if msg.Custom != nil { + return errorsmod.Wrap( + sdkerrors.ErrUnauthorized, + "Custom messages not allowed", + ) + } + + // BLOCK Any messages (no Akash bindings) + if msg.Any != nil { + return errorsmod.Wrap( + sdkerrors.ErrUnauthorized, + "Any messages not allowed", + ) + } + + // ALLOW Wasm messages (contract-to-contract calls) + if msg.Wasm != nil { + // Wasm execute/instantiate allowed + return nil + } + + // BLOCK unknown/unhandled message types + return errorsmod.Wrap( + sdkerrors.ErrUnauthorized, + "Unknown message type not allowed", + ) +} + +// filterBankMessage applies restrictions to bank operations +func (k *keeper) filterBankMessage(sctx sdk.Context, msg *wasmvmtypes.BankMsg) error { + // Allow send with restrictions + if msg.Send != nil { + params := k.GetParams(sctx) + + // Block transfers to critical addresses + for _, addr := range params.BlockedAddresses { + if addr == msg.Send.ToAddress { + return errorsmod.Wrapf( + sdkerrors.ErrUnauthorized, + "Transfers to %s blocked (critical address)", + msg.Send.ToAddress, + ) + } + } + + // Transfers to regular addresses allowed + return nil + } + + // Deny burns + if msg.Burn != nil { + return errorsmod.Wrapf( + sdkerrors.ErrUnauthorized, + "Burn is not allowed", + ) + } + + return nil +} + +// getMessageType returns a human-readable message type +func getMessageType(msg wasmvmtypes.CosmosMsg) string { + if msg.Bank != nil { + if msg.Bank.Send != nil { + return "bank.send" + } + if msg.Bank.Burn != nil { + return "bank.burn" + } + return "bank.unknown" + } + if msg.Staking != nil { + return "staking" + } + if msg.Distribution != nil { + return "distribution" + } + if msg.IBC != nil { + return "ibc" + } + if msg.IBC2 != nil { + return "ibc2" + } + if msg.Wasm != nil { + return "wasm" + } + if msg.Gov != nil { + return "gov" + } + if msg.Custom != nil { + return "custom" + } + + if msg.Any != nil { + return msg.Any.TypeURL + } + + return "unknown" +} diff --git a/x/wasm/module.go b/x/wasm/module.go new file mode 100644 index 0000000000..970fcd4c41 --- /dev/null +++ b/x/wasm/module.go @@ -0,0 +1,182 @@ +package wasm + +import ( + "context" + "encoding/json" + "fmt" + + "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/spf13/cobra" + + "cosmossdk.io/core/appmodule" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/codec" + cdctypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + + types "pkg.akt.dev/go/node/wasm/v1" + + "pkg.akt.dev/node/v2/x/wasm/handler" + "pkg.akt.dev/node/v2/x/wasm/keeper" + "pkg.akt.dev/node/v2/x/wasm/simulation" +) + +var ( + _ module.AppModuleBasic = AppModuleBasic{} + _ module.HasGenesisBasics = AppModuleBasic{} + + _ appmodule.AppModule = AppModule{} + _ module.HasConsensusVersion = AppModule{} + _ module.HasGenesis = AppModule{} + _ module.HasServices = AppModule{} + + _ module.AppModuleSimulation = AppModule{} +) + +// AppModuleBasic defines the basic application module used by the wasm module. +type AppModuleBasic struct { + cdc codec.Codec +} + +// AppModule implements an application module for the wasm module. +type AppModule struct { + AppModuleBasic + keeper keeper.Keeper +} + +// Name returns wasm module's name +func (AppModuleBasic) Name() string { + return types.ModuleName +} + +// RegisterLegacyAminoCodec registers the wasm module's types for the given codec. +func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { + types.RegisterLegacyAminoCodec(cdc) // nolint staticcheck +} + +// RegisterInterfaces registers the module's interface types +func (b AppModuleBasic) RegisterInterfaces(registry cdctypes.InterfaceRegistry) { + types.RegisterInterfaces(registry) +} + +// DefaultGenesis returns default genesis state as raw bytes for the wasm module. +func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { + return cdc.MustMarshalJSON(DefaultGenesisState()) +} + +// ValidateGenesis validation check of the Genesis +func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, _ client.TxEncodingConfig, bz json.RawMessage) error { + if bz == nil { + return nil + } + + var data types.GenesisState + + err := cdc.UnmarshalJSON(bz, &data) + if err != nil { + return fmt.Errorf("failed to unmarshal %s genesis state: %v", types.ModuleName, err) + } + + return ValidateGenesis(&data) +} + +// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the wasm module. +func (AppModuleBasic) RegisterGRPCGatewayRoutes(cctx client.Context, mux *runtime.ServeMux) { + if err := types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(cctx)); err != nil { + panic(err) + } +} + +// GetQueryCmd returns the root query command of this module +func (AppModuleBasic) GetQueryCmd() *cobra.Command { + panic("akash modules do not export cli commands via cosmos interface") +} + +// GetTxCmd returns the transaction commands for this module +func (AppModuleBasic) GetTxCmd() *cobra.Command { + panic("akash modules do not export cli commands via cosmos interface") +} + +// NewAppModule creates a new AppModule object +func NewAppModule(cdc codec.Codec, k keeper.Keeper) AppModule { + return AppModule{ + AppModuleBasic: AppModuleBasic{cdc: cdc}, + keeper: k, + } +} + +// Name returns the provider module name +func (AppModule) Name() string { + return types.ModuleName +} + +// IsOnePerModuleType implements the depinject.OnePerModuleType interface. +func (am AppModule) IsOnePerModuleType() {} + +// IsAppModule implements the appmodule.AppModule interface. +func (am AppModule) IsAppModule() {} + +// QuerierRoute returns the wasm module's querier route name. +func (am AppModule) QuerierRoute() string { + return types.ModuleName +} + +// RegisterServices registers the module's services +func (am AppModule) RegisterServices(cfg module.Configurator) { + types.RegisterMsgServer(cfg.MsgServer(), handler.NewMsgServerImpl(am.keeper)) + querier := am.keeper.NewQuerier() + types.RegisterQueryServer(cfg.QueryServer(), querier) +} + +// BeginBlock performs no-op +func (am AppModule) BeginBlock(_ context.Context) error { + return nil +} + +// EndBlock returns the end blocker for the wasm module. It returns no validator +// updates. +func (am AppModule) EndBlock(_ context.Context) error { + return nil +} + +// InitGenesis performs genesis initialization for the wasm module. It returns +// no validator updates. +func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) { + var genesisState types.GenesisState + cdc.MustUnmarshalJSON(data, &genesisState) + InitGenesis(ctx, am.keeper, &genesisState) +} + +// ExportGenesis returns the exported genesis state as raw bytes for the wasm +// module. +func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage { + gs := ExportGenesis(ctx, am.keeper) + return cdc.MustMarshalJSON(gs) +} + +// ConsensusVersion implements module.AppModule#ConsensusVersion +func (am AppModule) ConsensusVersion() uint64 { + return 1 +} + +// AppModuleSimulation functions + +// GenerateGenesisState creates a randomized GenState of the staking module. +func (AppModule) GenerateGenesisState(simState *module.SimulationState) { + simulation.RandomizedGenState(simState) +} + +// ProposalMsgs returns msgs used for governance proposals for simulations. +func (AppModule) ProposalMsgs(_ module.SimulationState) []simtypes.WeightedProposalMsg { + return simulation.ProposalMsgs() +} + +// RegisterStoreDecoder registers a decoder for take module's types. +func (am AppModule) RegisterStoreDecoder(_ simtypes.StoreDecoderRegistry) {} + +// WeightedOperations doesn't return any take module operation. +func (am AppModule) WeightedOperations(_ module.SimulationState) []simtypes.WeightedOperation { + return nil +} diff --git a/x/wasm/simulation/decoder.go b/x/wasm/simulation/decoder.go new file mode 100644 index 0000000000..c1be5a2b23 --- /dev/null +++ b/x/wasm/simulation/decoder.go @@ -0,0 +1,17 @@ +package simulation + +// NewDecodeStore returns a decoder function closure that unmarshals the KVPair's +// Value to the corresponding mint type. +// func NewDecodeStore(_ codec.Codec) func(kvA, kvB kv.Pair) string { +// return func(kvA, kvB kv.Pair) string { +// switch { +// case bytes.Equal(kvA.Key, types.MinterKey): +// var minterA, minterB types.Minter +// cdc.MustUnmarshal(kvA.Value, &minterA) +// cdc.MustUnmarshal(kvB.Value, &minterB) +// return fmt.Sprintf("%v\n%v", minterA, minterB) +// default: +// panic(fmt.Sprintf("invalid mint key %X", kvA.Key)) +// } +// } +// } diff --git a/x/wasm/simulation/genesis.go b/x/wasm/simulation/genesis.go new file mode 100644 index 0000000000..aa1e5ee055 --- /dev/null +++ b/x/wasm/simulation/genesis.go @@ -0,0 +1,16 @@ +package simulation + +import ( + "github.com/cosmos/cosmos-sdk/types/module" + + types "pkg.akt.dev/go/node/wasm/v1" +) + +// RandomizedGenState generates a random GenesisState for supply +func RandomizedGenState(simState *module.SimulationState) { + takeGenesis := &types.GenesisState{ + Params: types.DefaultParams(), + } + + simState.GenState[types.ModuleName] = simState.Cdc.MustMarshalJSON(takeGenesis) +} diff --git a/x/wasm/simulation/proposals.go b/x/wasm/simulation/proposals.go new file mode 100644 index 0000000000..bd76c12b01 --- /dev/null +++ b/x/wasm/simulation/proposals.go @@ -0,0 +1,42 @@ +package simulation + +import ( + "math/rand" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/address" + simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + "github.com/cosmos/cosmos-sdk/x/simulation" + + types "pkg.akt.dev/go/node/wasm/v1" +) + +// Simulation operation weights constants +const ( + DefaultWeightMsgUpdateParams int = 100 + + OpWeightMsgUpdateParams = "op_weight_msg_update_params" //nolint:gosec +) + +// ProposalMsgs defines the module weighted proposals' contents +func ProposalMsgs() []simtypes.WeightedProposalMsg { + return []simtypes.WeightedProposalMsg{ + simulation.NewWeightedProposalMsg( + OpWeightMsgUpdateParams, + DefaultWeightMsgUpdateParams, + SimulateMsgUpdateParams, + ), + } +} + +func SimulateMsgUpdateParams(r *rand.Rand, _ sdk.Context, _ []simtypes.Account) sdk.Msg { + // use the default gov module account address as authority + var authority sdk.AccAddress = address.Module("gov") + + params := types.DefaultParams() + + return &types.MsgUpdateParams{ + Authority: authority.String(), + Params: params, + } +}