diff --git a/.depguard.yaml b/.depguard.yaml new file mode 100644 index 0000000000..389e0a8178 --- /dev/null +++ b/.depguard.yaml @@ -0,0 +1,9 @@ +Main: + files: + - $all + - "!$test" + allow: + - $gostd + - github.com/cosmos/** + - github.com/tendermint/** + - github.com/cosmos/cosmos-sdk \ No newline at end of file diff --git a/.github/workflows/release-umee-docker.yml b/.github/workflows/release-umee-docker.yml index d86ed84951..bd2275015d 100644 --- a/.github/workflows/release-umee-docker.yml +++ b/.github/workflows/release-umee-docker.yml @@ -46,6 +46,11 @@ jobs: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} + + - name: Generate swagger docs + run: | + make proto-swagger-gen + make proto-update-swagger-docs - name: Build and push uses: docker/build-push-action@v4 diff --git a/.github/workflows/release-umee.yml b/.github/workflows/release-umee.yml index 5ef76af362..591964ffb6 100644 --- a/.github/workflows/release-umee.yml +++ b/.github/workflows/release-umee.yml @@ -29,6 +29,11 @@ jobs: run: echo "TM_VERSION=$(go list -m github.com/tendermint/tendermint | sed 's:.* ::')" >> $GITHUB_ENV # useful to test builds. However will require to add "push" rule to the "on" section + - name: generate and update swagger docs + run: | + make proto-swagger-gen + make proto-update-swagger-docs + - name: goreleaser test-build uses: goreleaser/goreleaser-action@v4 if: github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'Enable:ReleaseBuild') diff --git a/.gitignore b/.gitignore index 905a59c025..e4ee17afb9 100644 --- a/.gitignore +++ b/.gitignore @@ -39,12 +39,18 @@ dist/ *.DS_Store # e2e test keychain folder -tests/e2e/keyring-test - +***/keyring-test # private files private* #IntelliJ .idea/ -.vscode \ No newline at end of file + +#Vscode +.vscode + +# Swagger UI +swagger/statik/statik.go +swagger/swagger-ui + diff --git a/.golangci.yml b/.golangci.yml index d532e4682c..1f542c6c9a 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -20,7 +20,8 @@ linters: # - wsl - asciicheck - bodyclose - - depguard + # TODO; we need re-enable this linter once golangci-lint or .depguard.yaml is done + # - depguard - dogsled - errcheck - exportloopref diff --git a/CHANGELOG.md b/CHANGELOG.md index e50534805b..ba48c6f9d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -50,8 +50,24 @@ Ref: https://keepachangelog.com/en/1.0.0/ - [1952](https://github.com/umee-network/umee/pull/1952) Add `x/incentive` module. - [2015](https://github.com/umee-network/umee/pull/2015), [2050](https://github.com/umee-network/umee/pull/2050) Add `x/ugov` module. +- [2078](https://github.com/umee-network/umee/pull/2078) Upgrade `ibc-go` to v6.2. -## [v5.0.0](https://github.com/umee-network/umee/releases/tag/v5.0.0-rc1) - 2023-05-31 +### Improvements + +- [2057](https://github.com/umee-network/umee/pull/2057) Cosmwasm QA tests. + +## [v5.0.0](https://github.com/umee-network/umee/releases/tag/v5.0.0) - 2023-06-07 + +### Improvements + +- [2076](https://github.com/umee-network/umee/pull/2076) Cosmwasm: registering `cosmwasm_1_2` capability. +- [2083](https://github.com/umee-network/umee/pull/2083) Update `wasmvm` to 1.2.4. + +### Fixes + +- [2089](https://github.com/umee-network/umee/pull/2089) MsgSupplyCollateral no longer fails when market is below MinCollateralLiquidity. + +## [v5.0.0-rc1](https://github.com/umee-network/umee/releases/tag/v5.0.0-rc1) - 2023-05-31 ### Features @@ -78,6 +94,10 @@ Ref: https://keepachangelog.com/en/1.0.0/ - [2052](https://github.com/umee-network/umee/pull/2052) Allow liquidation threshold == collateral weight in token validation. - [2072](https://github.com/umee-network/umee/pull/2072) Fix an int64 overflow when computing module liquidity for high-exponent assets. +## [v4.4.2](https://github.com/umee-network/umee/releases/tag/v4.4.2) - 2023-06-08 + +- [2090](https://github.com/umee-network/umee/pull/2090) Bump Cosmos SDK to v0.46.13 and CometBFT to v0.34.28 and IAVL to v0.19.6. + ## [v4.4.1](https://github.com/umee-network/umee/releases/tag/v4.4.1) - 2023-05-25 ### Improvements diff --git a/Makefile b/Makefile index 6e25ca6994..34bed427c6 100644 --- a/Makefile +++ b/Makefile @@ -241,6 +241,9 @@ test-e2e-clean: docker stop umee0 umee1 umee2 umee-gaia-relayer gaiaval0 umee-price-feeder docker rm umee0 umee1 umee2 umee-gaia-relayer gaiaval0 umee-price-feeder +test-qa: + @go test ./tests/qa/... -timeout 30m -v -tags='test_qa' + $(MOCKS_DIR): mkdir -p $(MOCKS_DIR) mocks: $(MOCKS_DIR) @@ -356,3 +359,8 @@ proto-lint: proto-check-breaking: @echo "Checking for breaking changes" @$(DOCKER_BUF) breaking --against $(HTTPS_GIT)#branch=main + +proto-update-swagger-docs: + @echo "Updating Protobuf Swagger Docs" + @if docker ps -a --format '{{.Names}}' | grep -Eq "^${containerProtoGenSwagger}$$"; then docker start -a $(containerProtoGenSwagger); else docker run --name $(containerProtoGenSwagger) -v $(CURDIR):/workspace --workdir /workspace $(protoImageName) \ + sh ./contrib/scripts/protoc-update-swagger-docs.sh; fi diff --git a/README.md b/README.md index 5e2e5da1b6..c9414119a3 100644 --- a/README.md +++ b/README.md @@ -26,8 +26,11 @@ Umee will allow a multitude of decentralized debt products. - [Table of Contents](#table-of-contents) - [Releases](#releases) - [Release Compatibility Matrix](#release-compatibility-matrix) -- [Active Networks](#active-networks) + - [Price Feeder](#price-feeder) + - [libwasmvm](#libwasmvm) + - [Active Networks](#active-networks) - [Build](#build) + - [Recommended Database Backend](#recommended-database-backend) - [Swagger](#swagger) - [Cosmovisor](#cosmovisor) - [Liquidators](#liquidators) @@ -107,6 +110,25 @@ db_backend = "rocksdb" ### Swagger +- To update the latest swagger docs, follow these steps + +Generate the latest swagger: + + ```bash + $ make proto-swagger-gen + $ make proto-update-swagger-docs + ``` + +Build the new binary or install the new binary with the latest swagger docs: + + ```bash + $ make build + # or + $ make install + ``` + +Make sure to execute these commands whenever you want to update the swagger documentation. + - To enable it, modify the node config at `$UMEE_HOME/config/app.toml` to `api.swagger` `true` - Run the node normally `umeed start` - Enter the swagger docs `http://localhost:1317/swagger/` diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 8879b71761..55de887850 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -10,18 +10,28 @@ Release Procedure is defined in the [CONTRIBUTING](CONTRIBUTING.md#release-proce Highlights: -- Cosmwasm integration. +- Cosmwasm integration (v0.31). - Gravity Bridge phase-3: shutdown of the transfers. In this release we introduce valset burn mechanism, which will block the Ethereum smart contract for processing any further transactions, as well as sending transfers back to Ethereum. This follows the plan approved through in the [prop-67](https://www.mintscan.io/umee/proposals/67). NOTE: All validators must continue to use Peggo to not get slashed. - Updated to the latest Cosmos SDK v0.46.12 +- New generic functions for storage management: `util/store`. -See [CHANGELOG](https://github.com/umee-network/umee/blob/v5.0.0-rc1/CHANGELOG.md) +See [CHANGELOG](https://github.com/umee-network/umee/blob/v5.0.0/CHANGELOG.md). ### Validators +#### libwasmvm update + +Our dependencies have been updated. Now the binary requires `libwasmvm v1.2.4`. When you build the binary from source on the server machine you probably don't need any change. However when you download a binary from GitHub, or from other source, make sure you update the `/usr/lib/libwasmvm..so`. For example: + +- copy from `$GOPATH/pkg/mod/github.com/!cosm!wasm/wasmvm@v1.2.4/internal/api/libwasmvm.$(uname -m).so` +- or download from github `wget https://raw.githubusercontent.com/CosmWasm/wasmvm/v1.2.4/internal/api/libwasmvm.$(uname -m).so -O /lib/libwasmvm.$(uname -m).so` + +You don't need to do anything if you are using our Docker image. + #### Min Gas Prices Since v4.2 release we request all validators set a `minimum-gas-prices` setting (in app `config/app.toml` file, general settings). We recommend `0.1uumee` which is equal the current Keplr _average_ setting: diff --git a/client/auth.go b/client/auth.go new file mode 100644 index 0000000000..674bada036 --- /dev/null +++ b/client/auth.go @@ -0,0 +1,29 @@ +package client + +import ( + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" +) + +func (c Client) AuthQClient() authtypes.QueryClient { + return authtypes.NewQueryClient(c.Query.GrpcConn) +} + +func (c Client) QueryAuthSeq(accAddr string) (uint64, error) { + ctx, cancel := c.NewQCtx() + defer cancel() + + queryResponse, err := c.AuthQClient().Account(ctx, &authtypes.QueryAccountRequest{ + Address: accAddr, + }) + if err != nil { + return 0, err + } + + var baseAccount authtypes.AccountI + err = c.codec.UnpackAny(queryResponse.Account, &baseAccount) + if err != nil { + return 0, err + } + accSeq := baseAccount.GetSequence() + return accSeq, nil +} diff --git a/client/client.go b/client/client.go index 1cba8ba6d7..1163da9650 100644 --- a/client/client.go +++ b/client/client.go @@ -3,6 +3,7 @@ package client import ( "context" + "github.com/cosmos/cosmos-sdk/codec" sdkparams "github.com/cosmos/cosmos-sdk/simapp/params" "github.com/umee-network/umee/v5/sdkclient" ) @@ -10,6 +11,7 @@ import ( // Client sdkclient.Client and provides umee chain specific transactions and queries. type Client struct { sdkclient.Client + codec codec.Codec } // NewClient constructs Client object. @@ -29,6 +31,7 @@ func NewClient( } return Client{ Client: c, + codec: encCfg.Codec, }, nil } diff --git a/client/wasm.go b/client/wasm.go new file mode 100644 index 0000000000..577cea7c9d --- /dev/null +++ b/client/wasm.go @@ -0,0 +1,19 @@ +package client + +import ( + wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" +) + +func (c Client) WasmClient() wasmtypes.QueryClient { + return wasmtypes.NewQueryClient(c.Query.GrpcConn) +} + +func (c Client) QueryContract(contractAddr string, query []byte) (*wasmtypes.QuerySmartContractStateResponse, error) { + ctx, cancel := c.NewQCtx() + defer cancel() + + return c.WasmClient().SmartContractState(ctx, &wasmtypes.QuerySmartContractStateRequest{ + Address: contractAddr, + QueryData: query, + }) +} diff --git a/contrib/scripts/protoc-swagger-gen.sh b/contrib/scripts/protoc-swagger-gen.sh index 0d23ccdc6a..dae416773d 100755 --- a/contrib/scripts/protoc-swagger-gen.sh +++ b/contrib/scripts/protoc-swagger-gen.sh @@ -1,8 +1,7 @@ #!/usr/bin/env bash - set -eo pipefail -if ! [ -x "$(command -v swagger-combine )" ]; then +if ! [ -x "$(command -v swagger-combine)" ]; then echo 'Error: swagger-combine is not installed. Install with $~ npm i -g swagger-combine' >&2 exit 1 fi @@ -19,6 +18,7 @@ for dir in $proto_dirs; do done cd .. + # combine swagger files # uses nodejs package `swagger-combine`. # all the individual swagger files need to be configured in `config.json` for merging diff --git a/contrib/scripts/protoc-update-swagger-docs.sh b/contrib/scripts/protoc-update-swagger-docs.sh new file mode 100644 index 0000000000..a2e60ce704 --- /dev/null +++ b/contrib/scripts/protoc-update-swagger-docs.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash +set -eo pipefail + +SWAGGER_DIR=./swagger +SWAGGER_UI_DIR=${SWAGGER_DIR}/swagger-ui + +# TODO: needs to fix merge issue of cosmos swagger and ibc-go swagger +# SDK_VERSION=$(go list -m -f '{{ .Version }}' github.com/cosmos/cosmos-sdk) +# IBC_VERSION=$(go list -m -f '{{ .Version }}' github.com/cosmos/ibc-go/v6) + +# SDK_RAW_URL=https://raw.githubusercontent.com/cosmos/cosmos-sdk/${SDK_VERSION}/client/docs/swagger-ui/swagger.yaml +# IBC_RAW_URL=https://raw.githubusercontent.com/cosmos/ibc-go/${IBC_VERSION}/docs/client/swagger-ui/swagger.yaml + +# # download Cosmos SDK swagger yaml file +# echo "SDK version ${SDK_VERSION}" +# wget "${SDK_RAW_URL}" -O ./tmp-swagger-gen/cosmos-sdk-swagger.yaml + +# # download IBC swagger yaml file +# echo "IBC version ${IBC_VERSION}" +# wget "${IBC_RAW_URL}" -O ./tmp-swagger-gen/ibc-go-swagger.yaml + +SWAGGER_UI_VERSION=4.18.3 +SWAGGER_UI_DOWNLOAD_URL=https://github.com/swagger-api/swagger-ui/archive/refs/tags/v${SWAGGER_UI_VERSION}.zip +SWAGGER_UI_PACKAGE_NAME=${SWAGGER_DIR}/swagger-ui-${SWAGGER_UI_VERSION} + +# if swagger-ui does not exist locally, download swagger-ui and move dist directory to +# swagger-ui directory, then remove zip file and unzipped swagger-ui directory +if [ ! -d ${SWAGGER_UI_DIR} ]; then + # download swagger-ui + wget ${SWAGGER_UI_DOWNLOAD_URL} -O ${SWAGGER_UI_PACKAGE_NAME}.zip + # unzip swagger-ui package + unzip ${SWAGGER_UI_PACKAGE_NAME}.zip -d ${SWAGGER_DIR} + # move swagger-ui dist directory to swagger-ui directory + mv ${SWAGGER_UI_PACKAGE_NAME}/dist ${SWAGGER_UI_DIR} + # remove swagger-ui zip file and unzipped swagger-ui directory + rm -rf ${SWAGGER_UI_PACKAGE_NAME}.zip ${SWAGGER_UI_PACKAGE_NAME} + # replacing default swagger with our generated swagger yaml file + sed -i 's+https://petstore.swagger.io/v2/swagger.json+./swagger.yaml+g' ${SWAGGER_DIR}/swagger-ui/swagger-initializer.js +fi + +# move generated swagger yaml file to swagger-ui directory +cp ${SWAGGER_DIR}/swagger.yaml ${SWAGGER_DIR}/swagger-ui/ + +# install statik if not present +go install github.com/rakyll/statik + +# generate statik golang code using updated swagger-ui directory +statik -src=${SWAGGER_DIR}/swagger-ui -dest=${SWAGGER_DIR} -f -m + +# log whether or not the swagger directory was updated +if [ -n "$(git status ${SWAGGER_DIR} --porcelain)" ]; then + echo "Swagger is updated" +else + echo "Swagger in sync" +fi \ No newline at end of file diff --git a/go.mod b/go.mod index b0b3b2e24f..a12cd83391 100644 --- a/go.mod +++ b/go.mod @@ -6,22 +6,22 @@ require ( cosmossdk.io/errors v1.0.0-beta.7 cosmossdk.io/math v1.0.1 github.com/CosmWasm/wasmd v0.31.0 - github.com/CosmWasm/wasmvm v1.2.3 + github.com/CosmWasm/wasmvm v1.2.4 github.com/cosmos/cosmos-proto v1.0.0-beta.3 - github.com/cosmos/cosmos-sdk v0.46.12 + github.com/cosmos/cosmos-sdk v0.46.13 github.com/cosmos/go-bip39 v1.0.0 - github.com/cosmos/ibc-go/v6 v6.1.1 + github.com/cosmos/ibc-go/v6 v6.2.0 github.com/gogo/protobuf v1.3.3 github.com/golang/mock v1.6.0 github.com/golang/protobuf v1.5.3 - github.com/golangci/golangci-lint v1.52.2 + github.com/golangci/golangci-lint v1.53.2 github.com/gorilla/mux v1.8.0 github.com/grpc-ecosystem/grpc-gateway v1.16.0 - github.com/ignite/cli v0.26.1 github.com/mgechev/revive v1.3.2 github.com/ory/dockertest/v3 v3.10.0 github.com/osmosis-labs/bech32-ibc v0.3.1 github.com/prometheus/client_golang v1.15.1 + github.com/rakyll/statik v0.1.7 github.com/rs/zerolog v1.29.1 github.com/spf13/cast v1.5.1 github.com/spf13/cobra v1.7.0 @@ -46,21 +46,23 @@ require ( cloud.google.com/go/iam v0.13.0 // indirect cloud.google.com/go/storage v1.28.1 // indirect filippo.io/edwards25519 v1.0.0-rc.1 // indirect + github.com/4meepo/tagalign v1.2.2 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.1 // indirect github.com/Abirdcfly/dupword v0.0.11 // indirect - github.com/Antonboom/errname v0.1.9 // indirect - github.com/Antonboom/nilnil v0.1.3 // indirect + github.com/Antonboom/errname v0.1.10 // indirect + github.com/Antonboom/nilnil v0.1.5 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect - github.com/BurntSushi/toml v1.2.1 // indirect + github.com/BurntSushi/toml v1.3.0 // indirect github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0 // indirect github.com/Masterminds/semver v1.5.0 // indirect github.com/Microsoft/go-winio v0.6.0 // indirect github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 // indirect - github.com/OpenPeeDeeP/depguard v1.1.1 // indirect + github.com/OpenPeeDeeP/depguard/v2 v2.1.0 // indirect github.com/Workiva/go-datastructures v1.0.53 // indirect + github.com/alexkohler/nakedret/v2 v2.0.1 // indirect github.com/alexkohler/prealloc v1.0.0 // indirect github.com/alingse/asasalint v0.0.11 // indirect github.com/armon/go-metrics v0.4.1 // indirect @@ -76,7 +78,8 @@ require ( github.com/breml/bidichk v0.2.4 // indirect github.com/breml/errchkjson v0.3.1 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect - github.com/butuzov/ireturn v0.1.1 // indirect + github.com/butuzov/ireturn v0.2.0 // indirect + github.com/butuzov/mirror v1.1.0 // indirect github.com/cenkalti/backoff/v4 v4.1.3 // indirect github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect @@ -91,14 +94,14 @@ require ( github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/gogoproto v1.4.8 // indirect github.com/cosmos/gorocksdb v1.2.0 // indirect - github.com/cosmos/iavl v0.19.5 // indirect + github.com/cosmos/iavl v0.19.6 // indirect github.com/cosmos/ledger-cosmos-go v0.12.2 // indirect github.com/creachadair/taskgroup v0.3.2 // indirect github.com/curioswitch/go-reassign v0.2.0 // indirect github.com/daixiang0/gci v0.10.1 // indirect github.com/danieljoos/wincred v1.1.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect github.com/denis-tingaikin/go-header v0.4.3 // indirect github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect github.com/dgraph-io/badger/v2 v2.2007.4 // indirect @@ -120,7 +123,7 @@ require ( github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/fzipp/gocyclo v0.6.0 // indirect github.com/gin-gonic/gin v1.9.1 // indirect - github.com/go-critic/go-critic v0.7.0 // indirect + github.com/go-critic/go-critic v0.8.1 // indirect github.com/go-kit/kit v0.12.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.5.1 // indirect @@ -188,18 +191,17 @@ require ( github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/julz/importas v0.1.0 // indirect - github.com/junk1tm/musttag v0.5.0 // indirect github.com/kisielk/errcheck v1.6.3 // indirect github.com/kisielk/gotool v1.0.0 // indirect github.com/kkHAIKE/contextcheck v1.1.4 // indirect - github.com/klauspost/compress v1.15.15 // indirect + github.com/klauspost/compress v1.16.0 // indirect github.com/kulti/thelper v0.6.3 // indirect - github.com/kunwardeep/paralleltest v1.0.6 // indirect + github.com/kunwardeep/paralleltest v1.0.7 // indirect github.com/kyoh86/exportloopref v0.1.11 // indirect github.com/ldez/gomoddirectives v0.2.3 // indirect - github.com/ldez/tagliatelle v0.4.0 // indirect + github.com/ldez/tagliatelle v0.5.0 // indirect github.com/leonklingele/grouper v1.1.1 // indirect - github.com/lib/pq v1.10.7 // indirect + github.com/lib/pq v1.10.9 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/lufeee/execinquery v1.2.1 // indirect github.com/magiconair/properties v1.8.7 // indirect @@ -223,19 +225,19 @@ require ( github.com/mtibben/percent v0.2.1 // indirect github.com/nakabonne/nestif v0.3.1 // indirect github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354 // indirect - github.com/nishanths/exhaustive v0.9.5 // indirect + github.com/nishanths/exhaustive v0.10.0 // indirect github.com/nishanths/predeclared v0.2.2 // indirect - github.com/nunnatsa/ginkgolinter v0.9.0 // indirect + github.com/nunnatsa/ginkgolinter v0.12.0 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect - github.com/onsi/ginkgo v1.16.4 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0-rc2 // indirect github.com/opencontainers/runc v1.1.5 // indirect + github.com/otiai10/copy v1.9.0 // indirect github.com/pelletier/go-toml/v2 v2.0.8 // indirect - github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect + github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/polyfloyd/go-errorlint v1.4.0 // indirect + github.com/polyfloyd/go-errorlint v1.4.2 // indirect github.com/prometheus/client_model v0.3.0 // indirect github.com/prometheus/common v0.42.0 // indirect github.com/prometheus/procfs v0.9.0 // indirect @@ -243,7 +245,6 @@ require ( github.com/quasilyte/gogrep v0.5.0 // indirect github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect - github.com/rakyll/statik v0.1.7 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/regen-network/cosmos-proto v0.3.1 // indirect github.com/rivo/uniseg v0.4.2 // indirect @@ -254,10 +255,10 @@ require ( github.com/sasha-s/go-deadlock v0.3.1 // indirect github.com/sashamelentyev/interfacebloat v1.1.0 // indirect github.com/sashamelentyev/usestdlibvars v1.23.0 // indirect - github.com/securego/gosec/v2 v2.15.0 // indirect + github.com/securego/gosec/v2 v2.16.0 // indirect github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect - github.com/sirupsen/logrus v1.9.0 // indirect - github.com/sivchari/containedctx v1.0.2 // indirect + github.com/sirupsen/logrus v1.9.2 // indirect + github.com/sivchari/containedctx v1.0.3 // indirect github.com/sivchari/nosnakecase v1.7.0 // indirect github.com/sivchari/tenv v1.7.1 // indirect github.com/sonatard/noctx v0.0.2 // indirect @@ -269,14 +270,14 @@ require ( github.com/stbenjam/no-sprintf-host-port v0.1.1 // indirect github.com/stretchr/objx v0.5.0 // indirect github.com/subosito/gotenv v1.4.2 // indirect - github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect + github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c // indirect github.com/tdakkota/asciicheck v0.2.0 // indirect github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect github.com/tendermint/go-amino v0.16.0 // indirect github.com/tetafro/godot v1.4.11 // indirect github.com/tidwall/btree v1.5.0 // indirect - github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e // indirect + github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 // indirect github.com/timonwong/loggercheck v0.9.4 // indirect github.com/tomarrell/wrapcheck/v2 v2.8.1 // indirect github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect @@ -287,19 +288,22 @@ require ( github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xeipuuv/gojsonschema v1.2.0 // indirect + github.com/xen0n/gosmopolitan v1.2.1 // indirect github.com/yagipy/maintidx v1.0.0 // indirect github.com/yeya24/promlinter v0.2.0 // indirect + github.com/ykadowak/zerologlint v0.1.1 // indirect github.com/zondax/hid v0.9.1 // indirect github.com/zondax/ledger-go v0.14.1 // indirect gitlab.com/bosi/decorder v0.2.3 // indirect go.etcd.io/bbolt v1.3.6 // indirect go.opencensus.io v0.24.0 // indirect + go.tmz.dev/musttag v0.7.0 // indirect go.uber.org/atomic v1.10.0 // indirect go.uber.org/goleak v1.1.12 // indirect go.uber.org/multierr v1.8.0 // indirect go.uber.org/zap v1.24.0 // indirect golang.org/x/crypto v0.9.0 // indirect - golang.org/x/exp v0.0.0-20230206171751-46f607a40771 // indirect + golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea // indirect golang.org/x/exp/typeparams v0.0.0-20230224173230-c95f2b4c22f2 // indirect golang.org/x/mod v0.10.0 // indirect golang.org/x/net v0.10.0 // indirect @@ -308,7 +312,7 @@ require ( golang.org/x/sys v0.8.0 // indirect golang.org/x/term v0.8.0 // indirect golang.org/x/text v0.9.0 // indirect - golang.org/x/tools v0.9.1 // indirect + golang.org/x/tools v0.9.3 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/api v0.122.0 // indirect google.golang.org/appengine v1.6.7 // indirect @@ -324,10 +328,11 @@ require ( replace ( github.com/CosmWasm/wasmd => github.com/notional-labs/wasmd v0.31.0-umee.46 - github.com/cosmos/cosmos-sdk => github.com/umee-network/cosmos-sdk v0.46.12-umee + github.com/cosmos/cosmos-sdk => github.com/umee-network/cosmos-sdk v0.46.13-umee // dgrijalva/jwt-go is deprecated and doesn't receive security updates. github.com/dgrijalva/jwt-go => github.com/golang-jwt/jwt/v4 v4.4.2 github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 github.com/osmosis-labs/bech32-ibc => github.com/umee-network/bech32-ibc v0.3.3 + github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 github.com/tendermint/tendermint => github.com/cometbft/cometbft v0.34.28 ) diff --git a/go.sum b/go.sum index 0acaed9b19..401e8d472c 100644 --- a/go.sum +++ b/go.sum @@ -205,29 +205,31 @@ filippo.io/edwards25519 v1.0.0-rc.1 h1:m0VOOB23frXZvAOK44usCgLWvtsxIoMCTBGJZlpmG filippo.io/edwards25519 v1.0.0-rc.1/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= git.sr.ht/~sircmpwn/getopt v0.0.0-20191230200459-23622cc906b3/go.mod h1:wMEGFFFNuPos7vHmWXfszqImLppbc0wEhh6JBfJIUgw= git.sr.ht/~sircmpwn/go-bare v0.0.0-20210406120253-ab86bc2846d9/go.mod h1:BVJwbDfVjCjoFiKrhkei6NdGcZYpkDkdyCdg1ukytRA= +github.com/4meepo/tagalign v1.2.2 h1:kQeUTkFTaBRtd/7jm8OKJl9iHk0gAO+TDFPHGSna0aw= +github.com/4meepo/tagalign v1.2.2/go.mod h1:Q9c1rYMZJc9dPRkbQPpcBNCLEmY2njbAsXhQOZFE2dE= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= github.com/99designs/keyring v1.2.1 h1:tYLp1ULvO7i3fI5vE21ReQuj99QFSs7lGm0xWyJo87o= github.com/99designs/keyring v1.2.1/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= github.com/Abirdcfly/dupword v0.0.11 h1:z6v8rMETchZXUIuHxYNmlUAuKuB21PeaSymTed16wgU= github.com/Abirdcfly/dupword v0.0.11/go.mod h1:wH8mVGuf3CP5fsBTkfWwwwKTjDnVVCxtU8d8rgeVYXA= -github.com/Antonboom/errname v0.1.9 h1:BZDX4r3l4TBZxZ2o2LNrlGxSHran4d1u4veZdoORTT4= -github.com/Antonboom/errname v0.1.9/go.mod h1:nLTcJzevREuAsgTbG85UsuiWpMpAqbKD1HNZ29OzE58= -github.com/Antonboom/nilnil v0.1.3 h1:6RTbx3d2mcEu3Zwq9TowQpQMVpP75zugwOtqY1RTtcE= -github.com/Antonboom/nilnil v0.1.3/go.mod h1:iOov/7gRcXkeEU+EMGpBu2ORih3iyVEiWjeste1SJm8= +github.com/Antonboom/errname v0.1.10 h1:RZ7cYo/GuZqjr1nuJLNe8ZH+a+Jd9DaZzttWzak9Bls= +github.com/Antonboom/errname v0.1.10/go.mod h1:xLeiCIrvVNpUtsN0wxAh05bNIZpqE22/qDMnTBTttiA= +github.com/Antonboom/nilnil v0.1.5 h1:X2JAdEVcbPaOom2TUa1FxZ3uyuUlex0XMLGYMemu6l0= +github.com/Antonboom/nilnil v0.1.5/go.mod h1:I24toVuBKhfP5teihGWctrRiPbRKHwZIFOvc6v3HZXk= github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0/go.mod h1:tPaiy8S5bQ+S5sOiDlINkp7+Ef339+Nz5L5XO+cnOHo= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= -github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/toml v1.3.0 h1:Ws8e5YmnrGEHzZEzg0YvK/7COGYtTC5PbaH9oSSbgfA= +github.com/BurntSushi/toml v1.3.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= -github.com/CosmWasm/wasmvm v1.2.3 h1:OKYlobwmVGbl0eSn0mXoAAjE5hIuXnQCLPjbNd91sVY= -github.com/CosmWasm/wasmvm v1.2.3/go.mod h1:vW/E3h8j9xBQs9bCoijDuawKo9kCtxOaS8N8J7KFtkc= +github.com/CosmWasm/wasmvm v1.2.4 h1:6OfeZuEcEH/9iqwrg2pkeVtDCkMoj9U6PpKtcrCyVrQ= +github.com/CosmWasm/wasmvm v1.2.4/go.mod h1:vW/E3h8j9xBQs9bCoijDuawKo9kCtxOaS8N8J7KFtkc= github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= @@ -244,8 +246,8 @@ github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEV github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/OpenPeeDeeP/depguard v1.1.1 h1:TSUznLjvp/4IUP+OQ0t/4jF4QUyxIcVX8YnghZdunyA= -github.com/OpenPeeDeeP/depguard v1.1.1/go.mod h1:JtAMzWkmFEzDPyAd+W0NHl1lvpQKTvT9jnRVsohBKpc= +github.com/OpenPeeDeeP/depguard/v2 v2.1.0 h1:aQl70G173h/GZYhWf36aE5H0KaujXfVMnn/f1kSDVYY= +github.com/OpenPeeDeeP/depguard/v2 v2.1.0/go.mod h1:PUBgk35fX4i7JDmwzlJwJ+GMe6NfO1723wmJMgPThNQ= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= @@ -264,6 +266,8 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/alexkohler/nakedret/v2 v2.0.1 h1:DLFVWaHbEntNHBYGhPX+AhCM1gCErTs35IFWPh6Bnn0= +github.com/alexkohler/nakedret/v2 v2.0.1/go.mod h1:2b8Gkk0GsOrqQv/gPWjNLDSKwG8I5moSXG1K4VIBcTQ= github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw= @@ -345,8 +349,11 @@ github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= -github.com/butuzov/ireturn v0.1.1 h1:QvrO2QF2+/Cx1WA/vETCIYBKtRjc30vesdoPUNo1EbY= -github.com/butuzov/ireturn v0.1.1/go.mod h1:Wh6Zl3IMtTpaIKbmwzqi6olnM9ptYQxxVacMsOEFPoc= +github.com/bufbuild/protocompile v0.1.0 h1:HjgJBI85hY/qmW5tw/66sNDZ7z0UDdVSi/5r40WHw4s= +github.com/butuzov/ireturn v0.2.0 h1:kCHi+YzC150GE98WFuZQu9yrTn6GEydO2AuPLbTgnO4= +github.com/butuzov/ireturn v0.2.0/go.mod h1:Wh6Zl3IMtTpaIKbmwzqi6olnM9ptYQxxVacMsOEFPoc= +github.com/butuzov/mirror v1.1.0 h1:ZqX54gBVMXu78QLoiqdwpl2mgmoOJTk7s4p4o+0avZI= +github.com/butuzov/mirror v1.1.0/go.mod h1:8Q0BdQU6rC6WILDiBM60DBfvV78OLJmMmixe7GF45AE= github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s= github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= @@ -430,10 +437,10 @@ github.com/cosmos/gogoproto v1.4.8 h1:BrHKc6WFZt8+jRV71vKSQE+JrfF+JAnzrKo2VP7wIZ github.com/cosmos/gogoproto v1.4.8/go.mod h1:hnb0DIEWTv+wdNzNcqus5xCQXq5+CXauq1FJuurRfVY= github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4Y= github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= -github.com/cosmos/iavl v0.19.5 h1:rGA3hOrgNxgRM5wYcSCxgQBap7fW82WZgY78V9po/iY= -github.com/cosmos/iavl v0.19.5/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw= -github.com/cosmos/ibc-go/v6 v6.1.1 h1:oqqMNyjj6SLQF8rvgCaDGwfdITEIsbhs8F77/8xvRIo= -github.com/cosmos/ibc-go/v6 v6.1.1/go.mod h1:NL17FpFAaWjRFVb1T7LUKuOoMSsATPpu+Icc4zL5/Ik= +github.com/cosmos/iavl v0.19.6 h1:XY78yEeNPrEYyNCKlqr9chrwoeSDJ0bV2VjocTk//OU= +github.com/cosmos/iavl v0.19.6/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw= +github.com/cosmos/ibc-go/v6 v6.2.0 h1:HKS5WNxQrlmjowHb73J9LqlNJfvTnvkbhXZ9QzNTU7Q= +github.com/cosmos/ibc-go/v6 v6.2.0/go.mod h1:+S3sxcNwOhgraYDJAhIFDg5ipXHaUnJrg7tOQqGyWlc= github.com/cosmos/interchain-accounts v0.4.3 h1:WedxEa/Hj/2GY7AF6CafkEPJ/Z9rhl3rT1mRwNHsdts= github.com/cosmos/ledger-cosmos-go v0.12.2 h1:/XYaBlE2BJxtvpkHiBm97gFGSGmYGKunKyF3nNqAXZA= github.com/cosmos/ledger-cosmos-go v0.12.2/go.mod h1:ZcqYgnfNJ6lAXe4HPtWgarNEY+B74i+2/8MhZw4ziiI= @@ -462,8 +469,9 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo= github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 h1:HbphB4TFFXpv7MNrT52FGrrgVXF1owhMVTHFZIlnvd4= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2UO1+lbSKsdiOoYi9Zzey7Fc= github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= github.com/deepmap/oapi-codegen v1.6.0/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE9iAUlWl9Al3M= github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw= @@ -565,8 +573,8 @@ github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SU github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= -github.com/go-critic/go-critic v0.7.0 h1:tqbKzB8pqi0NsRZ+1pyU4aweAF7A7QN0Pi4Q02+rYnQ= -github.com/go-critic/go-critic v0.7.0/go.mod h1:moYzd7GdVXE2C2hYTwd7h0CPcqlUeclsyBRwMa38v64= +github.com/go-critic/go-critic v0.8.1 h1:16omCF1gN3gTzt4j4J6fKI/HnRojhEp+Eks6EuKw3vw= +github.com/go-critic/go-critic v0.8.1/go.mod h1:kpzXl09SIJX1cr9TB/g/sAG+eFEl7ZS9f9cqvZtyNl0= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -583,7 +591,7 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= @@ -599,7 +607,7 @@ github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-toolsmith/astcast v1.1.0 h1:+JN9xZV1A+Re+95pgnMgDboWNVnIMMQXwfBwLRPgSC8= github.com/go-toolsmith/astcast v1.1.0/go.mod h1:qdcuFWeGGS2xX5bLM/c3U9lewg7+Zu4mr+xPwZIB4ZU= github.com/go-toolsmith/astcopy v1.1.0 h1:YGwBN0WM+ekI/6SS6+52zLDEf8Yvp3n2seZITCUBt5s= @@ -694,8 +702,8 @@ github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe h1:6RGUuS7EGotKx6 github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe/go.mod h1:gjqyPShc/m8pEMpk0a3SeagVb0kaqvhscv+i9jI5ZhQ= github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2 h1:amWTbTGqOZ71ruzrdA+Nx5WA3tV1N0goTspwmKCQvBY= github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2/go.mod h1:9wOXstvyDRshQ9LggQuzBCGysxs3b6Uo/1MvYCR2NMs= -github.com/golangci/golangci-lint v1.52.2 h1:FrPElUUI5rrHXg1mQ7KxI1MXPAw5lBVskiz7U7a8a1A= -github.com/golangci/golangci-lint v1.52.2/go.mod h1:S5fhC5sHM5kE22/HcATKd1XLWQxX+y7mHj8B5H91Q/0= +github.com/golangci/golangci-lint v1.53.2 h1:52pgJKXiAuyfcOa8HJPIrZk1oMgpyXeN8TUxpcteweM= +github.com/golangci/golangci-lint v1.53.2/go.mod h1:fz9DDC9UABJ7SFHTz0XnkiYzb4su7YpuB9ucsgdUfCk= github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 h1:MfyDlzVjl1hoaPzPD4Gpb/QgoRfSBR0jdhwGyAWwMSA= github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= @@ -755,6 +763,7 @@ github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.3 h1:FAgZmpLl/SXurPEZyCMPBIiiYeTbqfjlbdnCNTAkbGE= @@ -883,8 +892,6 @@ github.com/huin/goupnp v1.0.3-0.20220313090229-ca81a64b4204/go.mod h1:ZxNlw5WqJj github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ignite/cli v0.26.1 h1:T4qMjM9H38JOBsgCruilGcsfrlDGHO2K1V88gIe0ubs= -github.com/ignite/cli v0.26.1/go.mod h1:0BQcJCseK0O5RG8HYP/lvVTFbZQjkw+AY8B+wDklj38= github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= @@ -910,7 +917,7 @@ github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jgautheron/goconst v1.5.1 h1:HxVbL1MhydKs8R8n/HE5NPvzfaYmQJA3o879lE4+WcM= github.com/jgautheron/goconst v1.5.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= -github.com/jhump/protoreflect v1.12.1-0.20220721211354-060cc04fc18b h1:izTof8BKh/nE1wrKOrloNA5q4odOarjf+Xpe+4qow98= +github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs= github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af h1:KA9BjwUk7KlCh6S9EAGWBt1oExIUv9WyNCiRz5amv48= @@ -942,8 +949,6 @@ github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8 github.com/julz/importas v0.1.0 h1:F78HnrsjY3cR7j0etXy5+TU1Zuy7Xt08X/1aJnH5xXY= github.com/julz/importas v0.1.0/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= -github.com/junk1tm/musttag v0.5.0 h1:bV1DTdi38Hi4pG4OVWa7Kap0hi0o7EczuK6wQt9zPOM= -github.com/junk1tm/musttag v0.5.0/go.mod h1:PcR7BA+oREQYvHwgjIDmw3exJeds5JzRcvEJTfjrA0M= github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0= github.com/karalabe/usb v0.0.2/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -959,8 +964,8 @@ github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYs github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.15.15 h1:EF27CXIuDsYJ6mmvtBRlEuB2UVOqHG1tAXgZ7yIO+lw= -github.com/klauspost/compress v1.15.15/go.mod h1:ZcK2JAFqKOpnBlxcLsJzYfrS9X1akm9fHZNnD9+Vo/4= +github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4= +github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5 h1:2U0HzY8BJ8hVwDKIzp7y4voR9CX/nvcfymLmg2UiOio= github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= @@ -979,8 +984,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kulti/thelper v0.6.3 h1:ElhKf+AlItIu+xGnI990no4cE2+XaSu1ULymV2Yulxs= github.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I= -github.com/kunwardeep/paralleltest v1.0.6 h1:FCKYMF1OF2+RveWlABsdnmsvJrei5aoyZoaGS+Ugg8g= -github.com/kunwardeep/paralleltest v1.0.6/go.mod h1:Y0Y0XISdZM5IKm3TREQMZ6iteqn1YuwCsJO/0kL9Zes= +github.com/kunwardeep/paralleltest v1.0.7 h1:2uCk94js0+nVNQoHZNLBkAR1DQJrVzw6T0RMzJn55dQ= +github.com/kunwardeep/paralleltest v1.0.7/go.mod h1:2C7s65hONVqY7Q5Efj5aLzRCNLjw2h4eMc9EcypGjcY= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/kyoh86/exportloopref v0.1.11 h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ymEyhQ= github.com/kyoh86/exportloopref v0.1.11/go.mod h1:qkV4UF1zGl6EkF1ox8L5t9SwyeBAZ3qLMd6up458uqA= @@ -988,16 +993,16 @@ github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4F github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/ldez/gomoddirectives v0.2.3 h1:y7MBaisZVDYmKvt9/l1mjNCiSA1BVn34U0ObUcJwlhA= github.com/ldez/gomoddirectives v0.2.3/go.mod h1:cpgBogWITnCfRq2qGoDkKMEVSaarhdBr6g8G04uz6d0= -github.com/ldez/tagliatelle v0.4.0 h1:sylp7d9kh6AdXN2DpVGHBRb5guTVAgOxqNGhbqc4b1c= -github.com/ldez/tagliatelle v0.4.0/go.mod h1:mNtTfrHy2haaBAw+VT7IBV6VXBThS7TCreYWbBcJ87I= +github.com/ldez/tagliatelle v0.5.0 h1:epgfuYt9v0CG3fms0pEgIMNPuFf/LpPIfjk4kyqSioo= +github.com/ldez/tagliatelle v0.5.0/go.mod h1:rj1HmWiL1MiKQuOONhd09iySTEkUuE/8+5jtPYz9xa4= github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= github.com/leonklingele/grouper v1.1.1 h1:suWXRU57D4/Enn6pXR0QVqqWWrnJ9Osrz+5rjt8ivzU= github.com/leonklingele/grouper v1.1.1/go.mod h1:uk3I3uDfi9B6PeUjsCKi6ndcf63Uy7snXgR4yDYQVDY= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= -github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= @@ -1114,17 +1119,16 @@ github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354 h1:4kuARK6Y6Fx github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354/go.mod h1:KSVJerMDfblTH7p5MZaTt+8zaT2iEk3AkVb9PQdZuE8= github.com/neilotoole/errgroup v0.1.6/go.mod h1:Q2nLGf+594h0CLBs/Mbg6qOr7GtqDK7C2S41udRnToE= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nishanths/exhaustive v0.9.5 h1:TzssWan6orBiLYVqewCG8faud9qlFntJE30ACpzmGME= -github.com/nishanths/exhaustive v0.9.5/go.mod h1:IbwrGdVMizvDcIxPYGVdQn5BqWJaOwpCvg4RGb8r/TA= +github.com/nishanths/exhaustive v0.10.0 h1:BMznKAcVa9WOoLq/kTGp4NJOJSMwEpcpjFNAVRfPlSo= +github.com/nishanths/exhaustive v0.10.0/go.mod h1:IbwrGdVMizvDcIxPYGVdQn5BqWJaOwpCvg4RGb8r/TA= github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= github.com/notional-labs/wasmd v0.31.0-umee.46 h1:wsEWfXhsTw39gtIhLdMNRKVe023LZz0gO0UQS0b1t7E= github.com/notional-labs/wasmd v0.31.0-umee.46/go.mod h1:S5TjKrcwxj/h4cnAiX4z2yxYox0JgUzzADo28W52uK8= -github.com/nunnatsa/ginkgolinter v0.9.0 h1:Sm0zX5QfjJzkeCjEp+t6d3Ha0jwvoDjleP9XCsrEzOA= -github.com/nunnatsa/ginkgolinter v0.9.0/go.mod h1:FHaMLURXP7qImeH6bvxWJUpyH+2tuqe5j4rW1gxJRmI= +github.com/nunnatsa/ginkgolinter v0.12.0 h1:seZo112n+lt0gdLJ/Jh70mzvrqbABWFpXd1bZTLTByM= +github.com/nunnatsa/ginkgolinter v0.12.0/go.mod h1:dJIGXYXbkBswqa/pIzG0QlVTTDSBMxDoCFwhsl4Uras= +github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= -github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= @@ -1134,15 +1138,14 @@ github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6 github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= -github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/ginkgo/v2 v2.8.0 h1:pAM+oBNPrpXRs+E/8spkeGx9QgekbRVyr74EUvRVOUI= +github.com/onsi/ginkgo/v2 v2.9.4 h1:xR7vG4IXt5RWx6FfIjyAtsoMAtnc3C/rFXBBd2AjZwE= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.26.0 h1:03cDLK28U6hWvCAns6NeydX3zIm4SF3ci69ulidS32Q= +github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= @@ -1166,10 +1169,12 @@ github.com/ory/dockertest/v3 v3.10.0 h1:4K3z2VMe8Woe++invjaTB7VRyQXQy5UY+loujO4a github.com/ory/dockertest/v3 v3.10.0/go.mod h1:nr57ZbRWMqfsdGdFNLHz5jjNdDb7VVFnzAeW1n5N1Lg= github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= github.com/otiai10/copy v1.9.0 h1:7KFNiCgZ91Ru4qW4CWPf/7jqtxLagGRmIxWldPP9VY4= +github.com/otiai10/copy v1.9.0/go.mod h1:hsfX19wcn0UWIHUQ3/4fHuehhk2UyArQ9dVFAn3FczI= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= +github.com/otiai10/mint v1.4.0/go.mod h1:gifjb2MYOoULtKLqUAEILUG/9KONW6f7YsJ6vQLTlFI= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= @@ -1182,8 +1187,9 @@ github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNc github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= -github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 h1:q2e307iGHPdTGp0hoxKjt1H5pDo6utceo3dQVK3I5XQ= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= +github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 h1:hDSdbBuw3Lefr6R18ax0tZ2BJeNB3NehB3trOwYBsdU= +github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= @@ -1197,8 +1203,8 @@ github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qR github.com/pkg/term v0.0.0-20180730021639-bffc007b7fd5/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/polyfloyd/go-errorlint v1.4.0 h1:b+sQ5HibPIAjEZwtuwU8Wz/u0dMZ7YL+bk+9yWyHVJk= -github.com/polyfloyd/go-errorlint v1.4.0/go.mod h1:qJCkPeBn+0EXkdKTrUCcuFStM2xrDKfxI3MGLXPexUs= +github.com/polyfloyd/go-errorlint v1.4.2 h1:CU+O4181IxFDdPH6t/HT7IiDj1I7zxNi1RIUxYwn8d0= +github.com/polyfloyd/go-errorlint v1.4.2/go.mod h1:k6fU/+fQe38ednoZS51T7gSIGQW1y94d6TkSr35OzH8= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= @@ -1292,8 +1298,8 @@ github.com/sashamelentyev/usestdlibvars v1.23.0 h1:01h+/2Kd+NblNItNeux0veSL5cBF1 github.com/sashamelentyev/usestdlibvars v1.23.0/go.mod h1:YPwr/Y1LATzHI93CqoPUN/2BzGQ/6N/cl/KwgR0B/aU= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= -github.com/securego/gosec/v2 v2.15.0 h1:v4Ym7FF58/jlykYmmhZ7mTm7FQvN/setNm++0fgIAtw= -github.com/securego/gosec/v2 v2.15.0/go.mod h1:VOjTrZOkUtSDt2QLSJmQBMWnvwiQPEjg0l+5juIqGk8= +github.com/securego/gosec/v2 v2.16.0 h1:Pi0JKoasQQ3NnoRao/ww/N/XdynIB9NRYYZT5CyOs5U= +github.com/securego/gosec/v2 v2.16.0/go.mod h1:xvLcVZqUfo4aAQu56TNv7/Ltz6emAOQAEsrZrt7uGlI= github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= @@ -1309,10 +1315,10 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= -github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/sivchari/containedctx v1.0.2 h1:0hLQKpgC53OVF1VT7CeoFHk9YKstur1XOgfYIc1yrHI= -github.com/sivchari/containedctx v1.0.2/go.mod h1:PwZOeqm4/DLoJOqMSIJs3aKqXRX4YO+uXww087KZ7Bw= +github.com/sirupsen/logrus v1.9.2 h1:oxx1eChJGI6Uks2ZC4W1zpLlVgqB8ner4EuQwV4Ik1Y= +github.com/sirupsen/logrus v1.9.2/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sivchari/containedctx v1.0.3 h1:x+etemjbsh2fB5ewm5FeLNi5bUjK0V8n0RB+Wwfd0XE= +github.com/sivchari/containedctx v1.0.3/go.mod h1:c1RDvCbnJLtH4lLcYD/GqwiBSSf4F5Qk0xld2rBqzJ4= github.com/sivchari/nosnakecase v1.7.0 h1:7QkpWIRMe8x25gckkFd2A5Pi6Ymo0qgr4JrhGt95do8= github.com/sivchari/nosnakecase v1.7.0/go.mod h1:CwDzrzPea40/GB6uynrNLiorAlgFRvRbFSgJx2Gs+QY= github.com/sivchari/tenv v1.7.1 h1:PSpuD4bu6fSmtWMxSGWcvqUUgIn7k3yOJhOIzVWn8Ak= @@ -1404,8 +1410,8 @@ github.com/tidwall/gjson v1.14.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vl github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.4/go.mod h1:098SZ494YoMWPmMO6ct4dcFnqxwj9r/gF0Etp19pSNM= -github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e h1:MV6KaVu/hzByHP0UvJ4HcMGE/8a6A4Rggc/0wx2AvJo= -github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e/go.mod h1:27bSVNWSBOHm+qRp1T9qzaIpsWEP6TbUnei/43HK+PQ= +github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 h1:quvGphlmUVU+nhpFa4gg4yJyTRJ13reZMDHrKwYw53M= +github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966/go.mod h1:27bSVNWSBOHm+qRp1T9qzaIpsWEP6TbUnei/43HK+PQ= github.com/timonwong/loggercheck v0.9.4 h1:HKKhqrjcVj8sxL7K77beXh0adEm6DLjV/QOGeMXEVi4= github.com/timonwong/loggercheck v0.9.4/go.mod h1:caz4zlPcgvpEkXgVnAJGowHAMW2NwHaNlpS8xDbVhTg= github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= @@ -1435,8 +1441,8 @@ github.com/ultraware/whitespace v0.0.5 h1:hh+/cpIcopyMYbZNVov9iSxvJU3OYQg78Sfaqz github.com/ultraware/whitespace v0.0.5/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA= github.com/umee-network/bech32-ibc v0.3.3 h1:wUX5uSYZl8yiFdttOvunfRihsE4miYmzl7pK2FEUs+U= github.com/umee-network/bech32-ibc v0.3.3/go.mod h1:UbhzCKN+Z7RoUdCkAanmIy+wufwQ/aQJrDEoVORhC2Y= -github.com/umee-network/cosmos-sdk v0.46.12-umee h1:s8/vB6M5psGNBFfwakV2z6oWFkZ377DDlh0TZfwRqbM= -github.com/umee-network/cosmos-sdk v0.46.12-umee/go.mod h1:bG4AkW9bqc8ycrryyKGQEl3YV9BY2wr6HggGq8kvcgM= +github.com/umee-network/cosmos-sdk v0.46.13-umee h1:EeSalZHGoWdkKkCNhNd80jzRMNEQWLyDPUU5aUJQpIs= +github.com/umee-network/cosmos-sdk v0.46.13-umee/go.mod h1:EfY521ATNEla8eJ6oJuZBdgP5+p360s7InnRqX+TWdM= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= @@ -1457,6 +1463,8 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHo github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= +github.com/xen0n/gosmopolitan v1.2.1 h1:3pttnTuFumELBRSh+KQs1zcz4fN6Zy7aB0xlnQSn1Iw= +github.com/xen0n/gosmopolitan v1.2.1/go.mod h1:JsHq/Brs1o050OOdmzHeOr0N7OtlnKRAGAsElF8xBQA= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= @@ -1465,6 +1473,8 @@ github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsT github.com/ybbus/jsonrpc v2.1.2+incompatible/go.mod h1:XJrh1eMSzdIYFbM08flv0wp5G35eRniyeGut1z+LSiE= github.com/yeya24/promlinter v0.2.0 h1:xFKDQ82orCU5jQujdaD8stOHiv8UN68BSdn2a8u8Y3o= github.com/yeya24/promlinter v0.2.0/go.mod h1:u54lkmBOZrpEbQQ6gox2zWKKLKu2SGe+2KOiextY+IA= +github.com/ykadowak/zerologlint v0.1.1 h1:CA1+RsGS1DbBn3jJP2jpWfiMJipWdeqJfSY0GpNgqaY= +github.com/ykadowak/zerologlint v0.1.1/go.mod h1:KaUskqF3e/v59oPmdq1U1DnKcuHokl2/K1U4pmIELKg= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -1478,6 +1488,7 @@ github.com/zondax/ledger-go v0.14.1 h1:Pip65OOl4iJ84WTpA4BKChvOufMhhbxED3BaihoZN github.com/zondax/ledger-go v0.14.1/go.mod h1:fZ3Dqg6qcdXWSOJFKMG8GCTnD7slO/RL2feOQv8K320= gitlab.com/bosi/decorder v0.2.3 h1:gX4/RgK16ijY8V+BRQHAySfQAb354T7/xQpDB2n10P0= gitlab.com/bosi/decorder v0.2.3/go.mod h1:9K1RB5+VPNQYtXtTDAzd2OEftsZb1oV0IrJrzChSdGE= +go-simpler.org/assert v0.5.0 h1:+5L/lajuQtzmbtEfh69sr5cRf2/xZzyJhFjoOz/PPqs= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= @@ -1494,6 +1505,8 @@ go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.tmz.dev/musttag v0.7.0 h1:QfytzjTWGXZmChoX0L++7uQN+yRCPfyFm+whsM+lfGc= +go.tmz.dev/musttag v0.7.0/go.mod h1:oTFPvgOkJmp5kYL02S8+jrH0eLrBIl57rzWeA26zDEM= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= @@ -1554,8 +1567,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20230206171751-46f607a40771 h1:xP7rWLUr1e1n2xkK5YB4LI0hPEy3LJC6Wk+D4pGlOJg= -golang.org/x/exp v0.0.0-20230206171751-46f607a40771/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= +golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea h1:vLCWI/yYrdEHyN2JzIzPO3aaQJHQdp89IZBA/+azVC4= +golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/exp/typeparams v0.0.0-20230224173230-c95f2b4c22f2 h1:J74nGeMgeFnYQJN59eFwh06jX/V8g0lB7LWpjSLxtgU= @@ -1772,7 +1785,6 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1930,7 +1942,6 @@ golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -1951,8 +1962,8 @@ golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.9.1 h1:8WMNJAz3zrtPmnYC7ISf5dEn3MT0gY7jBJfw27yrrLo= -golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/tools v0.9.3 h1:Gn1I8+64MsuTb/HpH+LmQtNas23LhUVr3rYZ0eKuaMM= +golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/sdkclient/query/gov.go b/sdkclient/query/gov.go deleted file mode 100644 index 8880f21a6e..0000000000 --- a/sdkclient/query/gov.go +++ /dev/null @@ -1,20 +0,0 @@ -package query - -import ( - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1" -) - -func (c *Client) GovClient() govtypes.QueryClient { - return govtypes.NewQueryClient(c.GrpcConn) -} - -func (c *Client) GovProposal(proposalID uint64) (*govtypes.Proposal, error) { - ctx, cancel := c.NewCtx() - defer cancel() - - queryResponse, err := c.GovClient().Proposal(ctx, &govtypes.QueryProposalRequest{ProposalId: proposalID}) - if err != nil { - return nil, err - } - return queryResponse.Proposal, nil -} diff --git a/sdkclient/tx/client.go b/sdkclient/tx/client.go index 13e0559a80..f5e976a628 100644 --- a/sdkclient/tx/client.go +++ b/sdkclient/tx/client.go @@ -114,7 +114,9 @@ func (c *Client) initTxFactory() { WithGasAdjustment(c.gasAdjustment). WithKeybase(c.ClientContext.Keyring). WithSignMode(signing.SignMode_SIGN_MODE_DIRECT). - WithSimulateAndExecute(true) + WithSimulateAndExecute(true). + WithFees("20000000uumee"). + WithGas(0) c.txFactory = &f } @@ -124,3 +126,18 @@ func (c *Client) BroadcastTx(msgs ...sdk.Msg) (*sdk.TxResponse, error) { c.ClientContext.FromAddress, _ = c.keyringRecord[0].GetAddress() return BroadcastTx(*c.ClientContext, *c.txFactory, msgs...) } + +func (c *Client) WithAccSeq(seq uint64) *Client { + c.txFactory.WithSequence(seq) + return c +} + +func (c *Client) WithAsyncBlock() *Client { + c.ClientContext.BroadcastMode = flags.BroadcastAsync + return c +} + +func (c *Client) SenderAddr() sdk.AccAddress { + addr, _ := c.keyringRecord[0].GetAddress() + return addr +} diff --git a/sdkclient/tx/wasm.go b/sdkclient/tx/wasm.go new file mode 100644 index 0000000000..bcf5828f00 --- /dev/null +++ b/sdkclient/tx/wasm.go @@ -0,0 +1,94 @@ +package tx + +import ( + "fmt" + "os" + + "github.com/CosmWasm/wasmd/x/wasm/ioutils" + "github.com/CosmWasm/wasmd/x/wasm/types" + sdk "github.com/cosmos/cosmos-sdk/types" + + appparams "github.com/umee-network/umee/v5/app/params" + "github.com/umee-network/umee/v5/util/coin" +) + +func (c *Client) TxSubmitWasmContract(contractPath string) (*sdk.TxResponse, error) { + fromAddr, err := c.keyringRecord[0].GetAddress() + if err != nil { + return nil, err + } + + msg, err := readWasmCode(contractPath, fromAddr) + if err != nil { + return nil, err + } + + return c.BroadcastTx(&msg) +} + +func (c *Client) TxWasmInstantiateContract(storeCode uint64, initMsg []byte) (*sdk.TxResponse, error) { + fromAddr, err := c.keyringRecord[0].GetAddress() + if err != nil { + return nil, err + } + amount := sdk.NewCoins(sdk.NewCoin(appparams.BondDenom, sdk.NewInt(1))) + msg := types.MsgInstantiateContract{ + Sender: fromAddr.String(), + CodeID: storeCode, + Label: "label", + Funds: amount, + Msg: initMsg, + Admin: "", + } + + return c.BroadcastTx(&msg) +} + +func (c *Client) TxWasmExecuteContractByAccSeq(contractAddr string, execMsg []byte, + accSeq uint64) (*sdk.TxResponse, error) { + fromAddr, err := c.keyringRecord[0].GetAddress() + if err != nil { + return nil, err + } + amount := sdk.NewCoins(coin.Umee1) + msg := types.MsgExecuteContract{ + Sender: fromAddr.String(), + Contract: contractAddr, + Funds: amount, + Msg: execMsg, + } + if accSeq != 0 { + return c.WithAccSeq(accSeq).WithAsyncBlock().BroadcastTx(&msg) + } + return c.WithAsyncBlock().BroadcastTx(&msg) +} + +func (c *Client) TxWasmExecuteContract(contractAddr string, execMsg []byte) (*sdk.TxResponse, error) { + return c.TxWasmExecuteContractByAccSeq(contractAddr, execMsg, 0) +} + +// Prepares MsgStoreCode object from flags with gzipped wasm byte code field +func readWasmCode(file string, sender sdk.AccAddress) (types.MsgStoreCode, error) { + wasm, err := os.ReadFile(file) + if err != nil { + return types.MsgStoreCode{}, err + } + + // gzip the wasm file + if ioutils.IsWasm(wasm) { + wasm, err = ioutils.GzipIt(wasm) + + if err != nil { + return types.MsgStoreCode{}, err + } + } else if !ioutils.IsGzip(wasm) { + return types.MsgStoreCode{}, fmt.Errorf("invalid input file. Use wasm binary or gzip") + } + + msg := types.MsgStoreCode{ + Sender: sender.String(), + WASMByteCode: wasm, + InstantiatePermission: &types.AllowEverybody, + } + return msg, nil +} diff --git a/swagger/proto-config-gen.json b/swagger/proto-config-gen.json index f3bfaee077..a658f766ef 100644 --- a/swagger/proto-config-gen.json +++ b/swagger/proto-config-gen.json @@ -21,6 +21,30 @@ "Params": "OracleParams" } } + }, + { + "url": "./tmp-swagger-gen/umee/uibc/v1/query.swagger.json", + "operationIds": { + "rename": { + "Params": "UIBCParams" + } + } + }, + { + "url": "./tmp-swagger-gen/umee/ugov/v1/query.swagger.json", + "operationIds": { + "rename": { + "Params": "UGovParams" + } + } + }, + { + "url": "./tmp-swagger-gen/umee/incentive/v1/query.swagger.json", + "operationIds": { + "rename": { + "Params": "IncentiveParams" + } + } } ] -} +} \ No newline at end of file diff --git a/swagger/statik/init.go b/swagger/statik/init.go new file mode 100644 index 0000000000..defdb7673f --- /dev/null +++ b/swagger/statik/init.go @@ -0,0 +1 @@ +package statik diff --git a/swagger/swagger.go b/swagger/swagger.go index fdfc801c31..604c8bc2e6 100644 --- a/swagger/swagger.go +++ b/swagger/swagger.go @@ -1,18 +1,22 @@ package swagger import ( - "embed" "net/http" "github.com/gorilla/mux" - "github.com/ignite/cli/ignite/pkg/openapiconsole" -) + "github.com/rakyll/statik/fs" -//go:embed swagger.yaml -var Docs embed.FS + // unnamed import of statik for swagger UI support + _ "github.com/umee-network/umee/v5/swagger/statik" +) // RegisterSwaggerAPI registers swagger route with API Server func RegisterSwaggerAPI(rtr *mux.Router) { - rtr.Handle("/swagger.yaml", http.FileServer(http.FS(Docs))) - rtr.HandleFunc("/swagger/", openapiconsole.Handler("umee", "/swagger.yaml")) + statikFS, err := fs.New() + if err != nil { + panic(err) + } + + staticServer := http.FileServer(statikFS) + rtr.PathPrefix("/swagger/").Handler(http.StripPrefix("/swagger/", staticServer)) } diff --git a/swagger/swagger.yaml b/swagger/swagger.yaml index 19d2c72598..8d9e322d50 100644 --- a/swagger/swagger.yaml +++ b/swagger/swagger.yaml @@ -1905,6 +1905,1333 @@ paths: type: string tags: - Query + /umee/uibc/v1/all-outflows: + get: + summary: AllOutflow returns outflows for each denom in the current quota period. + operationId: AllOutflows + responses: + '200': + description: A successful response. + schema: + type: object + properties: + outflows: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a decimal + amount. + + + NOTE: The amount field is an Dec which implements the custom + method + + signatures required by gogoproto. + title: QueryOutflowResponse defines response type of Query/Outflow + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /umee/uibc/v1/outflows: + get: + summary: |- + Outflow returns IBC denom outflows in the current quota period. + If denom is not specified, returns sum of all registered outflows. + operationId: Outflows + responses: + '200': + description: A successful response. + schema: + type: object + properties: + amount: + type: string + title: QueryOutflowResponse defines response type of Query/Outflow + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: denom + in: query + required: false + type: string + tags: + - Query + /umee/uibc/v1/params: + get: + summary: Params queries the parameters of the x/uibc module. + operationId: UIBCParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + type: object + properties: + ibc_status: + description: >- + ibc_status defines the IBC ICS20 status (transfer quota or + transfers disabled). + type: string + enum: + - IBC_TRANSFER_STATUS_UNSPECIFIED + - IBC_TRANSFER_STATUS_QUOTA_DISABLED + - IBC_TRANSFER_STATUS_QUOTA_ENABLED + - IBC_TRANSFER_STATUS_QUOTA_OUT_DISABLED + - IBC_TRANSFER_STATUS_QUOTA_IN_DISABLED + - IBC_TRANSFER_STATUS_TRANSFERS_PAUSED + default: IBC_TRANSFER_STATUS_UNSPECIFIED + title: >- + IBCTransferStatus status of ibc-transfer quota check for + inflow and outflow + total_quota: + type: string + title: >- + total_quota defines the total outflow limit of + ibc-transfer in USD + token_quota: + type: string + title: token_quota defines the outflow limit per token in USD + quota_duration: + type: string + title: >- + quota_duration defines quota expires for each ibc-transfer + denom in seconds + title: Params of x/uibc module + description: >- + QueryParamsResponse defines the response structure for the Params + gRPC + + service handler. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /umee/ugov/v1/min-gas-price: + get: + summary: MinGasPrice returns minimum transaction fees. + operationId: MinGasPrice + responses: + '200': + description: A successful response. + schema: + type: object + properties: + min_gas_price: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a decimal + amount. + + + NOTE: The amount field is an Dec which implements the custom + method + + signatures required by gogoproto. + description: QueryMinGasPriceResponse response type. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /umee/incentive/v1/account_bonds/{address}: + get: + summary: >- + AccountBonds queries all bonded collateral and unbondings associated + with an account. + operationId: AccountBonds + responses: + '200': + description: A successful response. + schema: + type: object + properties: + bonded: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + unbonding: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + unbondings: + type: array + items: + type: object + properties: + start: + type: string + format: int64 + end: + type: string + format: int64 + uToken: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: >- + Unbonding is a structure that tracks an in-progress token + unbonding. + + It tracks both its start time and end time, so that if the + module's + + unbonding time changes, the unbonding can complete at the + earlier of + + its original end time or its new one based on the new + parameter. + description: >- + QueryAccountBondsResponse defines the response structure for the + AccountBonds gRPC service handler. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: address + in: path + required: true + type: string + tags: + - Query + /umee/incentive/v1/actual_rates: + get: + summary: >- + ActualRates queries the hypothetical return of a bonded uToken + denomination + + if current incentive rewards continued for one year. The response is an + sdk.Dec + + representing an oracle-adjusted APY. + operationId: ActualRates + responses: + '200': + description: A successful response. + schema: + type: object + properties: + APY: + type: string + description: APY is the oracle price-adjusted APY of the bonded uToken. + description: >- + QueryActualRatesResponse defines the response structure for the + ActualRates gRPC service handler. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: uToken + description: >- + uToken is the uToken denomination whose current annual rate of + rewards is being queried. + in: query + required: false + type: string + tags: + - Query + /umee/incentive/v1/current_rates: + get: + summary: >- + CurrentRates queries the hypothetical return of a bonded uToken + denomination + + if current incentive rewards continued for one year. The response is an + sdk.Coins + + of base token rewards, per reference amount (usually 10^exponent of the + uToken.) + operationId: CurrentRates + responses: + '200': + description: A successful response. + schema: + type: object + properties: + reference_bond: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + rewards: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: >- + Rewards are the amount of base token rewards that the + reference amount of bonded uTokens would earn + + if current rates continued for a full year. + description: >- + QueryCurrentRatesResponse defines the response structure for the + CurrentRates gRPC service handler. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: uToken + description: >- + uToken is the uToken denomination whose current annual rate of + rewards is being queried. + in: query + required: false + type: string + tags: + - Query + /umee/incentive/v1/last_reward_time: + get: + summary: >- + LastRewardTime queries the last block time at which incentive rewards + were calculated. + operationId: LastRewardTime + responses: + '200': + description: A successful response. + schema: + type: object + properties: + time: + type: string + format: int64 + description: >- + QueryLastRewardTimeResponse defines the response structure for the + LastRewardTime gRPC + + service handler. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /umee/incentive/v1/params: + get: + summary: Params queries the parameters of the x/incentive module. + operationId: IncentiveParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + type: object + properties: + max_unbondings: + type: integer + format: int64 + description: >- + max_unbondings is the maximum amount of concurrent + unbondings an address can have + + of each bonded uToken denom. Zero is interpreted as no + limit. + unbonding_duration: + type: string + format: int64 + description: unbonding_duration is the unbonding duration (in seconds). + emergency_unbond_fee: + type: string + description: >- + emergency_unbond_fee is the portion of a bond that is paid + when it is instantly + + released using MsgEmergencyUnbond. For example, 0.01 is a + 1% fee. Ranges 0-1. + description: Params defines the parameters for the incentive module. + description: >- + QueryParamsResponse defines the response structure for the Params + gRPC + + service handler. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /umee/incentive/v1/pending_rewards/{address}: + get: + summary: >- + PendingRewards queries unclaimed incentive rewards associated with an + account. + operationId: PendingRewards + responses: + '200': + description: A successful response. + schema: + type: object + properties: + rewards: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: >- + QueryPendingRewardsResponse defines the response structure for the + PendingRewards gRPC service handler. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: address + in: path + required: true + type: string + tags: + - Query + /umee/incentive/v1/program/{id}: + get: + summary: IncentiveProgram queries a single incentive program by ID. + operationId: IncentiveProgram + responses: + '200': + description: A successful response. + schema: + type: object + properties: + program: + type: object + properties: + ID: + type: integer + format: int64 + description: >- + ID uniquely identifies the incentive program after it has + been created. + + It is zero when the program is being proposed by + governance, and is set + + to its final value when the proposal passes. + start_time: + type: string + format: int64 + description: >- + start_time is the unix time (in seconds) at which the + incentives begin. + + If a program is passed after its intended start time, its + start time + + will be increased to the current time, with program + duration unchanged. + duration: + type: string + format: int64 + description: >- + duration is the length of the incentive program from start + time to + + completion in seconds. + uToken: + type: string + description: >- + uToken is the incentivized uToken collateral denom. + Suppliers who collateralize + + this asset then bond it to the incentive module are + eligible for this program's + + rewards. + funded: + type: boolean + description: >- + funded indicates whether a program bas been funded. This + can happen when + + a program passes if funding from community fund, or any + time before the + + program's start time if funding with MsgSponsor. A program + that reaches + + its start time without being funded is cancelled. + total_rewards: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + remaining_rewards: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: >- + IncentiveProgram defines a liquidity mining incentive program + on a single + + locked uToken denom that will run for a set amount of time. + description: >- + QueryIncentivePrograResponse defines the response structure for + the + + IncentiveProgram gRPC service handler. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: id + description: ID specifies which program to query for + in: path + required: true + type: integer + format: int64 + tags: + - Query + /umee/incentive/v1/programs/completed: + get: + summary: >- + CompletedIncentivePrograms queries for all incentives programs that have + been passed + + by governance, and either run to completion or expired immediately due + to not being funded. + operationId: CompletedIncentivePrograms + responses: + '200': + description: A successful response. + schema: + type: object + properties: + programs: + type: array + items: + type: object + properties: + ID: + type: integer + format: int64 + description: >- + ID uniquely identifies the incentive program after it + has been created. + + It is zero when the program is being proposed by + governance, and is set + + to its final value when the proposal passes. + start_time: + type: string + format: int64 + description: >- + start_time is the unix time (in seconds) at which the + incentives begin. + + If a program is passed after its intended start time, + its start time + + will be increased to the current time, with program + duration unchanged. + duration: + type: string + format: int64 + description: >- + duration is the length of the incentive program from + start time to + + completion in seconds. + uToken: + type: string + description: >- + uToken is the incentivized uToken collateral denom. + Suppliers who collateralize + + this asset then bond it to the incentive module are + eligible for this program's + + rewards. + funded: + type: boolean + description: >- + funded indicates whether a program bas been funded. This + can happen when + + a program passes if funding from community fund, or any + time before the + + program's start time if funding with MsgSponsor. A + program that reaches + + its start time without being funded is cancelled. + total_rewards: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + remaining_rewards: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: >- + IncentiveProgram defines a liquidity mining incentive + program on a single + + locked uToken denom that will run for a set amount of time. + description: >- + QueryCompletedIncentiveProgramsResponse defines the response + structure for the + + CompletedIncentivePrograms gRPC service handler. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /umee/incentive/v1/programs/ongoing: + get: + summary: >- + OngoingIncentivePrograms queries for all incentives programs that have + been passed + + by governance, funded, and started but not yet completed. + operationId: OngoingIncentivePrograms + responses: + '200': + description: A successful response. + schema: + type: object + properties: + programs: + type: array + items: + type: object + properties: + ID: + type: integer + format: int64 + description: >- + ID uniquely identifies the incentive program after it + has been created. + + It is zero when the program is being proposed by + governance, and is set + + to its final value when the proposal passes. + start_time: + type: string + format: int64 + description: >- + start_time is the unix time (in seconds) at which the + incentives begin. + + If a program is passed after its intended start time, + its start time + + will be increased to the current time, with program + duration unchanged. + duration: + type: string + format: int64 + description: >- + duration is the length of the incentive program from + start time to + + completion in seconds. + uToken: + type: string + description: >- + uToken is the incentivized uToken collateral denom. + Suppliers who collateralize + + this asset then bond it to the incentive module are + eligible for this program's + + rewards. + funded: + type: boolean + description: >- + funded indicates whether a program bas been funded. This + can happen when + + a program passes if funding from community fund, or any + time before the + + program's start time if funding with MsgSponsor. A + program that reaches + + its start time without being funded is cancelled. + total_rewards: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + remaining_rewards: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: >- + IncentiveProgram defines a liquidity mining incentive + program on a single + + locked uToken denom that will run for a set amount of time. + description: >- + QueryOngoingIncentiveProgramsResponse defines the response + structure for the + + OngoingIncentivePrograms and UpcomingIncentivePrograms gRPC + service handlers. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /umee/incentive/v1/programs/upcoming: + get: + summary: >- + UpcomingIncentivePrograms queries for all incentives programs that have + been passed + + by governance, but not yet started. They may or may not have been + funded. + operationId: UpcomingIncentivePrograms + responses: + '200': + description: A successful response. + schema: + type: object + properties: + programs: + type: array + items: + type: object + properties: + ID: + type: integer + format: int64 + description: >- + ID uniquely identifies the incentive program after it + has been created. + + It is zero when the program is being proposed by + governance, and is set + + to its final value when the proposal passes. + start_time: + type: string + format: int64 + description: >- + start_time is the unix time (in seconds) at which the + incentives begin. + + If a program is passed after its intended start time, + its start time + + will be increased to the current time, with program + duration unchanged. + duration: + type: string + format: int64 + description: >- + duration is the length of the incentive program from + start time to + + completion in seconds. + uToken: + type: string + description: >- + uToken is the incentivized uToken collateral denom. + Suppliers who collateralize + + this asset then bond it to the incentive module are + eligible for this program's + + rewards. + funded: + type: boolean + description: >- + funded indicates whether a program bas been funded. This + can happen when + + a program passes if funding from community fund, or any + time before the + + program's start time if funding with MsgSponsor. A + program that reaches + + its start time without being funded is cancelled. + total_rewards: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + remaining_rewards: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: >- + IncentiveProgram defines a liquidity mining incentive + program on a single + + locked uToken denom that will run for a set amount of time. + description: >- + QueryUpcomingIncentiveProgramsResponse defines the response + structure for the + + OngoingIncentivePrograms and UpcomingIncentivePrograms gRPC + service handlers. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /umee/incentive/v1/total_bonded: + get: + summary: TotalBonded queries the sum of all bonded collateral uTokens. + operationId: TotalBonded + responses: + '200': + description: A successful response. + schema: + type: object + properties: + bonded: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: >- + QueryTotalBondedResponse defines the response structure for the + TotalBonded gRPC service handler. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: denom + description: >- + denom is an optional field which causes the query to return the + totals of only one uToken. + in: query + required: false + type: string + tags: + - Query + /umee/incentive/v1/total_unbonding: + get: + summary: TotalUnbonding queries the sum of all unbonding collateral uTokens. + operationId: TotalUnbonding + responses: + '200': + description: A successful response. + schema: + type: object + properties: + unbonding: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: >- + QueryTotalUnbondingResponse defines the response structure for the + TotalUnbonding gRPC service handler. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: denom + description: >- + denom is an optional field which causes the query to return the + totals of only one uToken. + in: query + required: false + type: string + tags: + - Query definitions: cosmos.base.v1beta1.Coin: type: object @@ -2721,535 +4048,1414 @@ definitions: for the affected Token. - The time span covered by the historic median will be: - oracle.Params.median_stamp_period * oracle.Params.historic_stamp_period * historic_medians. - description: >- - Token defines a token, along with its metadata and parameters, in - the Umee + The time span covered by the historic median will be: + oracle.Params.median_stamp_period * oracle.Params.historic_stamp_period * historic_medians. + description: >- + Token defines a token, along with its metadata and parameters, in + the Umee + + capital facility that can be supplied and borrowed. + + See + https://github.com/umee-network/umee/blob/main/docs/design_docs/010-market-params.md + + for more details. + description: |- + QueryRegisteredTokensResponse defines the response structure for the + RegisteredTokens gRPC service handler. + umee.leverage.v1.Token: + type: object + properties: + base_denom: + type: string + description: >- + Base Denom is the denomination of the underlying base token. Must be + the base + + denom as registered in the Bank module (so IBC denom for IBC tokens). + reserve_factor: + type: string + description: >- + Reserve Factor defines what portion of accrued interest goes to + reserves + + when this token is borrowed. + + Valid values: 0-1. + collateral_weight: + type: string + description: >- + Collateral Weight defines what portion of the total value of the asset + + can contribute to a users borrowing power. If the collateral weight is + + zero, using this asset as collateral against borrowing will be + disabled. + + Must be smaller than `liquidation_threshold`. + + Valid values: 0-1. + liquidation_threshold: + type: string + description: |- + Liquidation Threshold defines what amount of the total value of the + asset as a collateral can contribute to a user's liquidation threshold + (above which they become eligible for liquidation). + Must be bigger than `collateral_weight`. + Valid values: 0-1. + See also: min_close_factor. + base_borrow_rate: + type: string + title: |- + Base Borrow Rate defines the minimum interest rate for borrowing this + asset. + Valid values: 0-∞ + kink_borrow_rate: + type: string + title: |- + Kink Borrow Rate defines the interest rate for borrowing this + asset when supply utilization is equal to 'kink_utilization'. + Valid values: 0-∞ + max_borrow_rate: + type: string + title: |- + Max Borrow Rate defines the interest rate for borrowing this + asset when supply utilization is at its maximum. + Valid values: 0-∞ + kink_utilization: + type: string + description: |- + Kink Utilization defines the supply utilization value where + the kink in the borrow interest rate function occurs. + Valid values: 0-1. + liquidation_incentive: + type: string + description: |- + Liquidation Incentive determines the portion of bonus collateral of + a token type liquidators receive as a liquidation reward. + Valid values: 0-1. + symbol_denom: + type: string + description: Symbol Denom is the human readable denomination of this token. + exponent: + type: integer + format: int64 + description: >- + Exponent is the power of ten by which to multiply, in order to convert + + an amount of the token denoted in its symbol denom to the actual + amount + + of its base denom. + enable_msg_supply: + type: boolean + description: >- + Enable Msg Supply allows supplying for lending or collateral using + this + + token. `false` means that a token can no longer be supplied. + + Note that withdrawing is always enabled. Disabling supply would + + be one step in phasing out an asset type. + enable_msg_borrow: + type: boolean + description: >- + Enable Msg Borrow allows borrowing of this token. Note that repaying + is + + always enabled. Disabling borrowing would be one step in phasing out + an + + asset type, but could also be used from the start for asset types + meant + + to be collateral only, like meTokens. + blacklist: + type: boolean + description: >- + Blacklist should only be used to eliminate an asset completely. A + blacklisted + + asset is treated as though its oracle price is zero, and thus ignored + by + + calculations such as collateral value and borrow limit. Can still be + repaid + + or withdrawn, but not liquidated. A blacklisted token must have + enable_msg_supply + + and enable_msg_borrow set to false. Such tokens can be safely removed + from the + + oracle and price feeder as well. + max_collateral_share: + type: string + description: >- + Max Collateral Share specifies how much of the system's overall + collateral + + can be provided by a given token. 1.0 means that the token has no + restriction. + + 0.1 means maximum 10% of system's total collateral value can be + provided by this token. + + Valid values: 0-1. + max_supply_utilization: + type: string + description: >- + Max Supply Utilization specifies the maximum supply utilization a + token is + + allowed to reach as a direct result of user borrowing. New borrows are + not allowed when + + the supply utilization is above `max_supply_utilization`. + supply_utilization(token) = total_borrowed(token) / total_supply(token) + Valid values: 0-1. + min_collateral_liquidity: + type: string + title: >- + Min Collateral Liquidity specifies min limit for the following + function: + collateral_liquidity(token) = available(token) / total_collateral(token) + Borrowing, collateralizing, or withdrawing assets is not allowed when + the + + result of such action invalidates min_collateral_liquidity. + + Liquidity can only drop below this value due to interest or + liquidations. + + The goal is to assure that there is enough available (not borrowed) + token to be available + + for withdraw when there is a collateral liquidation and the liquidator + needs to + + withdraw uToken. + + Valid values: 0 - inf + max_supply: + type: string + description: >- + Max Supply is the maximum amount of tokens the protocol can hold. + + Adding more supply of the given token to the protocol will return an + error. + + Must be a non negative value. 0 means that there is no limit. + + To mark a token as not valid for supply, `msg_supply` must be set to + false. + historic_medians: + type: integer + format: int64 + description: >- + Historic Medians is the number of median historic prices to request + from + + the oracle module when evaluating new borrow positions containing this + token. + + All MsgBorrow, MsgWithdraw, and MsgDecollateralize must result in + healthy + + borrow positions under both current and historic prices. The default + value of + + zero for this field causes current price to be used in those + calculations + + for the affected Token. + + The time span covered by the historic median will be: + oracle.Params.median_stamp_period * oracle.Params.historic_stamp_period * historic_medians. + description: >- + Token defines a token, along with its metadata and parameters, in the Umee + + capital facility that can be supplied and borrowed. - capital facility that can be supplied and borrowed. + See + https://github.com/umee-network/umee/blob/main/docs/design_docs/010-market-params.md - See - https://github.com/umee-network/umee/blob/main/docs/design_docs/010-market-params.md + for more details. + cosmos.base.v1beta1.DecCoin: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. - for more details. + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + umee.oracle.v1.AggregateExchangeRatePrevote: + type: object + properties: + hash: + type: string + voter: + type: string + submit_block: + type: string + format: uint64 + title: |- + AggregateExchangeRatePrevote - + struct for aggregate prevoting on the ExchangeRateVote. + The purpose of aggregate prevote is to hide vote exchange rates with hash + which is formatted as hex string in SHA256("{salt}:{exchange + rate}{denom},...,{exchange rate}{denom}:{voter}") + umee.oracle.v1.AggregateExchangeRateVote: + type: object + properties: + exchange_rate_tuples: + type: array + items: + type: object + properties: + denom: + type: string + exchange_rate: + type: string + title: >- + ExchangeRateTuple - struct to store interpreted exchange rates data + to store + voter: + type: string description: |- - QueryRegisteredTokensResponse defines the response structure for the - RegisteredTokens gRPC service handler. - umee.leverage.v1.Token: + AggregateExchangeRateVote - struct for voting on + the exchange rates of USD denominated in various assets. + umee.oracle.v1.Denom: type: object properties: base_denom: type: string - description: >- - Base Denom is the denomination of the underlying base token. Must be - the base - - denom as registered in the Bank module (so IBC denom for IBC tokens). - reserve_factor: + symbol_denom: type: string - description: >- - Reserve Factor defines what portion of accrued interest goes to - reserves - - when this token is borrowed. - - Valid values: 0-1. - collateral_weight: + exponent: + type: integer + format: int64 + title: Denom - the object to hold configurations of each denom + umee.oracle.v1.ExchangeRateTuple: + type: object + properties: + denom: type: string - description: >- - Collateral Weight defines what portion of the total value of the asset - - can contribute to a users borrowing power. If the collateral weight is - - zero, using this asset as collateral against borrowing will be - disabled. - - Must be smaller than `liquidation_threshold`. - - Valid values: 0-1. - liquidation_threshold: + exchange_rate: type: string - description: |- - Liquidation Threshold defines what amount of the total value of the - asset as a collateral can contribute to a user's liquidation threshold - (above which they become eligible for liquidation). - Must be bigger than `collateral_weight`. - Valid values: 0-1. - See also: min_close_factor. - base_borrow_rate: + title: >- + ExchangeRateTuple - struct to store interpreted exchange rates data to + store + umee.oracle.v1.Params: + type: object + properties: + vote_period: type: string - title: |- - Base Borrow Rate defines the minimum interest rate for borrowing this - asset. - Valid values: 0-∞ - kink_borrow_rate: + format: uint64 + vote_threshold: type: string - title: |- - Kink Borrow Rate defines the interest rate for borrowing this - asset when supply utilization is equal to 'kink_utilization'. - Valid values: 0-∞ - max_borrow_rate: + reward_band: type: string - title: |- - Max Borrow Rate defines the interest rate for borrowing this - asset when supply utilization is at its maximum. - Valid values: 0-∞ - kink_utilization: + reward_distribution_window: + type: string + format: uint64 + accept_list: + type: array + items: + type: object + properties: + base_denom: + type: string + symbol_denom: + type: string + exponent: + type: integer + format: int64 + title: Denom - the object to hold configurations of each denom + slash_fraction: + type: string + slash_window: type: string + format: uint64 + min_valid_per_window: + type: string + historic_stamp_period: + type: string + format: uint64 description: |- - Kink Utilization defines the supply utilization value where - the kink in the borrow interest rate function occurs. - Valid values: 0-1. - liquidation_incentive: + Historic Stamp Period represents the amount of blocks the oracle + module waits before recording a new historic price. + median_stamp_period: type: string + format: uint64 description: |- - Liquidation Incentive determines the portion of bonus collateral of - a token type liquidators receive as a liquidation reward. - Valid values: 0-1. - symbol_denom: + Median Stamp Period represents the amount blocks the oracle module + waits between calculating and stamping a new median and standard + deviation of that median. + maximum_price_stamps: type: string - description: Symbol Denom is the human readable denomination of this token. - exponent: - type: integer - format: int64 + format: uint64 + description: |- + Maximum Price Stamps represents the maximum amount of historic prices + the oracle module will store before pruning via FIFO. + maximum_median_stamps: + type: string + format: uint64 + description: |- + Maximum Median Stamps represents the maximum amount of medians the + oracle module will store before pruning via FIFO. + description: Params defines the parameters for the oracle module. + umee.oracle.v1.Price: + type: object + properties: + exchange_rate_tuple: + type: object + properties: + denom: + type: string + exchange_rate: + type: string + title: >- + ExchangeRateTuple - struct to store interpreted exchange rates data to + store + block_num: + type: string + format: uint64 + title: Price is an instance of a price "stamp" + umee.oracle.v1.QueryActiveExchangeRatesResponse: + type: object + properties: + active_rates: + type: array + items: + type: string description: >- - Exponent is the power of ten by which to multiply, in order to convert + activeRates defines a list of the denomination which oracle prices + agreed + + upon. + description: |- + QueryActiveExchangeRatesResponse is response type for the + Query/ActiveExchangeRates RPC method. + umee.oracle.v1.QueryAggregatePrevoteResponse: + type: object + properties: + aggregate_prevote: + type: object + properties: + hash: + type: string + voter: + type: string + submit_block: + type: string + format: uint64 + title: >- + AggregateExchangeRatePrevote - + + struct for aggregate prevoting on the ExchangeRateVote. + + The purpose of aggregate prevote is to hide vote exchange rates with + hash + + which is formatted as hex string in SHA256("{salt}:{exchange + + rate}{denom},...,{exchange rate}{denom}:{voter}") + description: |- + QueryAggregatePrevoteResponse is response type for the + Query/AggregatePrevote RPC method. + umee.oracle.v1.QueryAggregatePrevotesResponse: + type: object + properties: + aggregate_prevotes: + type: array + items: + type: object + properties: + hash: + type: string + voter: + type: string + submit_block: + type: string + format: uint64 + title: >- + AggregateExchangeRatePrevote - - an amount of the token denoted in its symbol denom to the actual - amount + struct for aggregate prevoting on the ExchangeRateVote. - of its base denom. - enable_msg_supply: - type: boolean - description: >- - Enable Msg Supply allows supplying for lending or collateral using - this + The purpose of aggregate prevote is to hide vote exchange rates with + hash - token. `false` means that a token can no longer be supplied. + which is formatted as hex string in SHA256("{salt}:{exchange - Note that withdrawing is always enabled. Disabling supply would + rate}{denom},...,{exchange rate}{denom}:{voter}") + title: >- + aggregate_prevotes defines all oracle aggregate prevotes submitted in + the - be one step in phasing out an asset type. - enable_msg_borrow: - type: boolean - description: >- - Enable Msg Borrow allows borrowing of this token. Note that repaying - is + current vote period + description: |- + QueryAggregatePrevotesResponse is response type for the + Query/AggregatePrevotes RPC method. + umee.oracle.v1.QueryAggregateVoteResponse: + type: object + properties: + aggregate_vote: + title: >- + aggregate_vote defines oracle aggregate vote submitted by a validator + in - always enabled. Disabling borrowing would be one step in phasing out - an + the current vote period + type: object + properties: + exchange_rate_tuples: + type: array + items: + type: object + properties: + denom: + type: string + exchange_rate: + type: string + title: >- + ExchangeRateTuple - struct to store interpreted exchange rates + data to store + voter: + type: string + description: |- + AggregateExchangeRateVote - struct for voting on + the exchange rates of USD denominated in various assets. + description: |- + QueryAggregateVoteResponse is response type for the + Query/AggregateVote RPC method. + umee.oracle.v1.QueryAggregateVotesResponse: + type: object + properties: + aggregate_votes: + type: array + items: + type: object + properties: + exchange_rate_tuples: + type: array + items: + type: object + properties: + denom: + type: string + exchange_rate: + type: string + title: >- + ExchangeRateTuple - struct to store interpreted exchange rates + data to store + voter: + type: string + description: |- + AggregateExchangeRateVote - struct for voting on + the exchange rates of USD denominated in various assets. + title: >- + aggregate_votes defines all oracle aggregate votes submitted in the + current - asset type, but could also be used from the start for asset types - meant + vote period + description: |- + QueryAggregateVotesResponse is response type for the + Query/AggregateVotes RPC method. + umee.oracle.v1.QueryAvgPriceResponse: + type: object + properties: + price: + type: string + title: QueryAvgPriceResponse is a response type for AvgPrice method + umee.oracle.v1.QueryExchangeRatesResponse: + type: object + properties: + exchange_rates: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. - to be collateral only, like meTokens. - blacklist: - type: boolean + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: |- + exchange_rates defines a list of the exchange rate for all whitelisted + denoms. + description: |- + QueryExchangeRatesResponse is response type for the + Query/ExchangeRates RPC method. + umee.oracle.v1.QueryFeederDelegationResponse: + type: object + properties: + feeder_addr: + type: string + title: feeder_addr defines the feeder delegation of a validator + description: |- + QueryFeederDelegationResponse is response type for the + Query/FeederDelegation RPC method. + umee.oracle.v1.QueryMedianDeviationsResponse: + type: object + properties: + medianDeviations: + type: array + items: + type: object + properties: + exchange_rate_tuple: + type: object + properties: + denom: + type: string + exchange_rate: + type: string + title: >- + ExchangeRateTuple - struct to store interpreted exchange rates + data to store + block_num: + type: string + format: uint64 + title: Price is an instance of a price "stamp" description: >- - Blacklist should only be used to eliminate an asset completely. A - blacklisted - - asset is treated as though its oracle price is zero, and thus ignored - by - - calculations such as collateral value and borrow limit. Can still be - repaid - - or withdrawn, but not liquidated. A blacklisted token must have - enable_msg_supply - - and enable_msg_borrow set to false. Such tokens can be safely removed - from the + medians defines a list of the median deviations for all stamped + denoms. + description: |- + QueryMedianDeviationsResponse is response type for the + Query/MedianDeviations RPC method. + umee.oracle.v1.QueryMediansResponse: + type: object + properties: + medians: + type: array + items: + type: object + properties: + exchange_rate_tuple: + type: object + properties: + denom: + type: string + exchange_rate: + type: string + title: >- + ExchangeRateTuple - struct to store interpreted exchange rates + data to store + block_num: + type: string + format: uint64 + title: Price is an instance of a price "stamp" + description: medians defines a list of the medians for all stamped denoms. + description: |- + QueryMediansResponse is response type for the + Query/Medians RPC method. + umee.oracle.v1.QueryMissCounterResponse: + type: object + properties: + miss_counter: + type: string + format: uint64 + title: miss_counter defines the oracle miss counter of a validator + description: |- + QueryMissCounterResponse is response type for the + Query/MissCounter RPC method. + umee.oracle.v1.QueryParamsResponse: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + vote_period: + type: string + format: uint64 + vote_threshold: + type: string + reward_band: + type: string + reward_distribution_window: + type: string + format: uint64 + accept_list: + type: array + items: + type: object + properties: + base_denom: + type: string + symbol_denom: + type: string + exponent: + type: integer + format: int64 + title: Denom - the object to hold configurations of each denom + slash_fraction: + type: string + slash_window: + type: string + format: uint64 + min_valid_per_window: + type: string + historic_stamp_period: + type: string + format: uint64 + description: |- + Historic Stamp Period represents the amount of blocks the oracle + module waits before recording a new historic price. + median_stamp_period: + type: string + format: uint64 + description: |- + Median Stamp Period represents the amount blocks the oracle module + waits between calculating and stamping a new median and standard + deviation of that median. + maximum_price_stamps: + type: string + format: uint64 + description: >- + Maximum Price Stamps represents the maximum amount of historic + prices - oracle and price feeder as well. - max_collateral_share: + the oracle module will store before pruning via FIFO. + maximum_median_stamps: + type: string + format: uint64 + description: |- + Maximum Median Stamps represents the maximum amount of medians the + oracle module will store before pruning via FIFO. + description: QueryParamsResponse is the response type for the Query/Params RPC method. + umee.oracle.v1.QuerySlashWindowResponse: + type: object + properties: + window_progress: type: string + format: uint64 + description: |- + window_progress defines the number of voting periods + since the last slashing event would have taken place. + description: |- + QuerySlashWindowResponse is response type for the + Query/SlashWindow RPC method. + umee.uibc.v1.IBCTransferStatus: + type: string + enum: + - IBC_TRANSFER_STATUS_UNSPECIFIED + - IBC_TRANSFER_STATUS_QUOTA_DISABLED + - IBC_TRANSFER_STATUS_QUOTA_ENABLED + - IBC_TRANSFER_STATUS_QUOTA_OUT_DISABLED + - IBC_TRANSFER_STATUS_QUOTA_IN_DISABLED + - IBC_TRANSFER_STATUS_TRANSFERS_PAUSED + default: IBC_TRANSFER_STATUS_UNSPECIFIED + description: |- + - IBC_TRANSFER_STATUS_UNSPECIFIED: UNSPECIFIED defines a no-op status. + - IBC_TRANSFER_STATUS_QUOTA_DISABLED: DISABLED: all inflow and outflow quota checks are disabled. + - IBC_TRANSFER_STATUS_QUOTA_ENABLED: ENABLED: all inflow and outflow quota checks are enabled. + - IBC_TRANSFER_STATUS_QUOTA_OUT_DISABLED: DISABLED OUT: outflow quota check is disabled, while the inflow quota check is enabled. + - IBC_TRANSFER_STATUS_QUOTA_IN_DISABLED: DISABLED IN: inflow quota check is disabled, while the outflow quota check is enabled. + - IBC_TRANSFER_STATUS_TRANSFERS_PAUSED: PAUSED: all IBC transfers are paused. + title: >- + IBCTransferStatus status of ibc-transfer quota check for inflow and + outflow + umee.uibc.v1.Params: + type: object + properties: + ibc_status: description: >- - Max Collateral Share specifies how much of the system's overall - collateral - - can be provided by a given token. 1.0 means that the token has no - restriction. - - 0.1 means maximum 10% of system's total collateral value can be - provided by this token. - - Valid values: 0-1. - max_supply_utilization: + ibc_status defines the IBC ICS20 status (transfer quota or transfers + disabled). type: string - description: >- - Max Supply Utilization specifies the maximum supply utilization a - token is - - allowed to reach as a direct result of user borrowing. New borrows are - not allowed when - - the supply utilization is above `max_supply_utilization`. - supply_utilization(token) = total_borrowed(token) / total_supply(token) - Valid values: 0-1. - min_collateral_liquidity: + enum: + - IBC_TRANSFER_STATUS_UNSPECIFIED + - IBC_TRANSFER_STATUS_QUOTA_DISABLED + - IBC_TRANSFER_STATUS_QUOTA_ENABLED + - IBC_TRANSFER_STATUS_QUOTA_OUT_DISABLED + - IBC_TRANSFER_STATUS_QUOTA_IN_DISABLED + - IBC_TRANSFER_STATUS_TRANSFERS_PAUSED + default: IBC_TRANSFER_STATUS_UNSPECIFIED + title: >- + IBCTransferStatus status of ibc-transfer quota check for inflow and + outflow + total_quota: + type: string + title: total_quota defines the total outflow limit of ibc-transfer in USD + token_quota: + type: string + title: token_quota defines the outflow limit per token in USD + quota_duration: type: string title: >- - Min Collateral Liquidity specifies min limit for the following - function: - collateral_liquidity(token) = available(token) / total_collateral(token) - Borrowing, collateralizing, or withdrawing assets is not allowed when - the - - result of such action invalidates min_collateral_liquidity. - - Liquidity can only drop below this value due to interest or - liquidations. + quota_duration defines quota expires for each ibc-transfer denom in + seconds + title: Params of x/uibc module + umee.uibc.v1.QueryAllOutflowsResponse: + type: object + properties: + outflows: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. - The goal is to assure that there is enough available (not borrowed) - token to be available + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + title: QueryOutflowResponse defines response type of Query/Outflow + umee.uibc.v1.QueryOutflowsResponse: + type: object + properties: + amount: + type: string + title: QueryOutflowResponse defines response type of Query/Outflow + umee.uibc.v1.QueryParamsResponse: + type: object + properties: + params: + type: object + properties: + ibc_status: + description: >- + ibc_status defines the IBC ICS20 status (transfer quota or + transfers disabled). + type: string + enum: + - IBC_TRANSFER_STATUS_UNSPECIFIED + - IBC_TRANSFER_STATUS_QUOTA_DISABLED + - IBC_TRANSFER_STATUS_QUOTA_ENABLED + - IBC_TRANSFER_STATUS_QUOTA_OUT_DISABLED + - IBC_TRANSFER_STATUS_QUOTA_IN_DISABLED + - IBC_TRANSFER_STATUS_TRANSFERS_PAUSED + default: IBC_TRANSFER_STATUS_UNSPECIFIED + title: >- + IBCTransferStatus status of ibc-transfer quota check for inflow + and outflow + total_quota: + type: string + title: total_quota defines the total outflow limit of ibc-transfer in USD + token_quota: + type: string + title: token_quota defines the outflow limit per token in USD + quota_duration: + type: string + title: >- + quota_duration defines quota expires for each ibc-transfer denom + in seconds + title: Params of x/uibc module + description: |- + QueryParamsResponse defines the response structure for the Params gRPC + service handler. + umee.ugov.v1.QueryMinGasPriceResponse: + type: object + properties: + min_gas_price: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. - for withdraw when there is a collateral liquidation and the liquidator - needs to + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: QueryMinGasPriceResponse response type. + umee.incentive.v1.IncentiveProgram: + type: object + properties: + ID: + type: integer + format: int64 + description: >- + ID uniquely identifies the incentive program after it has been + created. - withdraw uToken. + It is zero when the program is being proposed by governance, and is + set - Valid values: 0 - inf - max_supply: + to its final value when the proposal passes. + start_time: type: string + format: int64 description: >- - Max Supply is the maximum amount of tokens the protocol can hold. - - Adding more supply of the given token to the protocol will return an - error. + start_time is the unix time (in seconds) at which the incentives + begin. - Must be a non negative value. 0 means that there is no limit. + If a program is passed after its intended start time, its start time - To mark a token as not valid for supply, `msg_supply` must be set to - false. - historic_medians: - type: integer + will be increased to the current time, with program duration + unchanged. + duration: + type: string format: int64 + description: |- + duration is the length of the incentive program from start time to + completion in seconds. + uToken: + type: string description: >- - Historic Medians is the number of median historic prices to request - from - - the oracle module when evaluating new borrow positions containing this - token. - - All MsgBorrow, MsgWithdraw, and MsgDecollateralize must result in - healthy + uToken is the incentivized uToken collateral denom. Suppliers who + collateralize - borrow positions under both current and historic prices. The default - value of + this asset then bond it to the incentive module are eligible for this + program's - zero for this field causes current price to be used in those - calculations + rewards. + funded: + type: boolean + description: >- + funded indicates whether a program bas been funded. This can happen + when - for the affected Token. + a program passes if funding from community fund, or any time before + the - The time span covered by the historic median will be: - oracle.Params.median_stamp_period * oracle.Params.historic_stamp_period * historic_medians. - description: >- - Token defines a token, along with its metadata and parameters, in the Umee + program's start time if funding with MsgSponsor. A program that + reaches - capital facility that can be supplied and borrowed. + its start time without being funded is cancelled. + total_rewards: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. - See - https://github.com/umee-network/umee/blob/main/docs/design_docs/010-market-params.md + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + remaining_rewards: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. - for more details. - cosmos.base.v1beta1.DecCoin: - type: object - properties: - denom: - type: string - amount: - type: string + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - umee.oracle.v1.AggregateExchangeRatePrevote: + IncentiveProgram defines a liquidity mining incentive program on a single + locked uToken denom that will run for a set amount of time. + umee.incentive.v1.Params: type: object properties: - hash: - type: string - voter: + max_unbondings: + type: integer + format: int64 + description: >- + max_unbondings is the maximum amount of concurrent unbondings an + address can have + + of each bonded uToken denom. Zero is interpreted as no limit. + unbonding_duration: type: string - submit_block: + format: int64 + description: unbonding_duration is the unbonding duration (in seconds). + emergency_unbond_fee: type: string - format: uint64 - title: |- - AggregateExchangeRatePrevote - - struct for aggregate prevoting on the ExchangeRateVote. - The purpose of aggregate prevote is to hide vote exchange rates with hash - which is formatted as hex string in SHA256("{salt}:{exchange - rate}{denom},...,{exchange rate}{denom}:{voter}") - umee.oracle.v1.AggregateExchangeRateVote: + description: >- + emergency_unbond_fee is the portion of a bond that is paid when it is + instantly + + released using MsgEmergencyUnbond. For example, 0.01 is a 1% fee. + Ranges 0-1. + description: Params defines the parameters for the incentive module. + umee.incentive.v1.QueryAccountBondsResponse: type: object properties: - exchange_rate_tuples: + bonded: type: array items: type: object properties: denom: type: string - exchange_rate: + amount: type: string - title: >- - ExchangeRateTuple - struct to store interpreted exchange rates data - to store - voter: - type: string - description: |- - AggregateExchangeRateVote - struct for voting on - the exchange rates of USD denominated in various assets. - umee.oracle.v1.Denom: - type: object - properties: - base_denom: - type: string - symbol_denom: - type: string - exponent: - type: integer - format: int64 - title: Denom - the object to hold configurations of each denom - umee.oracle.v1.ExchangeRateTuple: + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + unbonding: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + unbondings: + type: array + items: + type: object + properties: + start: + type: string + format: int64 + end: + type: string + format: int64 + uToken: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: |- + Unbonding is a structure that tracks an in-progress token unbonding. + It tracks both its start time and end time, so that if the module's + unbonding time changes, the unbonding can complete at the earlier of + its original end time or its new one based on the new parameter. + description: >- + QueryAccountBondsResponse defines the response structure for the + AccountBonds gRPC service handler. + umee.incentive.v1.QueryActualRatesResponse: type: object properties: - denom: - type: string - exchange_rate: + APY: type: string - title: >- - ExchangeRateTuple - struct to store interpreted exchange rates data to - store - umee.oracle.v1.Params: + description: APY is the oracle price-adjusted APY of the bonded uToken. + description: >- + QueryActualRatesResponse defines the response structure for the + ActualRates gRPC service handler. + umee.incentive.v1.QueryCompletedIncentiveProgramsResponse: type: object properties: - vote_period: - type: string - format: uint64 - vote_threshold: - type: string - reward_band: - type: string - reward_distribution_window: - type: string - format: uint64 - accept_list: + programs: type: array items: type: object properties: - base_denom: + ID: + type: integer + format: int64 + description: >- + ID uniquely identifies the incentive program after it has been + created. + + It is zero when the program is being proposed by governance, and + is set + + to its final value when the proposal passes. + start_time: type: string - symbol_denom: + format: int64 + description: >- + start_time is the unix time (in seconds) at which the incentives + begin. + + If a program is passed after its intended start time, its start + time + + will be increased to the current time, with program duration + unchanged. + duration: type: string - exponent: - type: integer format: int64 - title: Denom - the object to hold configurations of each denom - slash_fraction: - type: string - slash_window: - type: string - format: uint64 - min_valid_per_window: - type: string - historic_stamp_period: - type: string - format: uint64 - description: |- - Historic Stamp Period represents the amount of blocks the oracle - module waits before recording a new historic price. - median_stamp_period: - type: string - format: uint64 - description: |- - Median Stamp Period represents the amount blocks the oracle module - waits between calculating and stamping a new median and standard - deviation of that median. - maximum_price_stamps: - type: string - format: uint64 - description: |- - Maximum Price Stamps represents the maximum amount of historic prices - the oracle module will store before pruning via FIFO. - maximum_median_stamps: - type: string - format: uint64 - description: |- - Maximum Median Stamps represents the maximum amount of medians the - oracle module will store before pruning via FIFO. - description: Params defines the parameters for the oracle module. - umee.oracle.v1.Price: + description: >- + duration is the length of the incentive program from start time + to + + completion in seconds. + uToken: + type: string + description: >- + uToken is the incentivized uToken collateral denom. Suppliers + who collateralize + + this asset then bond it to the incentive module are eligible for + this program's + + rewards. + funded: + type: boolean + description: >- + funded indicates whether a program bas been funded. This can + happen when + + a program passes if funding from community fund, or any time + before the + + program's start time if funding with MsgSponsor. A program that + reaches + + its start time without being funded is cancelled. + total_rewards: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + remaining_rewards: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: >- + IncentiveProgram defines a liquidity mining incentive program on a + single + + locked uToken denom that will run for a set amount of time. + description: >- + QueryCompletedIncentiveProgramsResponse defines the response structure for + the + + CompletedIncentivePrograms gRPC service handler. + umee.incentive.v1.QueryCurrentRatesResponse: type: object properties: - exchange_rate_tuple: + reference_bond: type: object properties: denom: type: string - exchange_rate: + amount: type: string - title: >- - ExchangeRateTuple - struct to store interpreted exchange rates data to - store - block_num: - type: string - format: uint64 - title: Price is an instance of a price "stamp" - umee.oracle.v1.QueryActiveExchangeRatesResponse: - type: object - properties: - active_rates: + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + rewards: type: array items: - type: string + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. description: >- - activeRates defines a list of the denomination which oracle prices - agreed + Rewards are the amount of base token rewards that the reference amount + of bonded uTokens would earn - upon. - description: |- - QueryActiveExchangeRatesResponse is response type for the - Query/ActiveExchangeRates RPC method. - umee.oracle.v1.QueryAggregatePrevoteResponse: + if current rates continued for a full year. + description: >- + QueryCurrentRatesResponse defines the response structure for the + CurrentRates gRPC service handler. + umee.incentive.v1.QueryIncentiveProgramResponse: type: object properties: - aggregate_prevote: + program: type: object properties: - hash: + ID: + type: integer + format: int64 + description: >- + ID uniquely identifies the incentive program after it has been + created. + + It is zero when the program is being proposed by governance, and + is set + + to its final value when the proposal passes. + start_time: type: string - voter: + format: int64 + description: >- + start_time is the unix time (in seconds) at which the incentives + begin. + + If a program is passed after its intended start time, its start + time + + will be increased to the current time, with program duration + unchanged. + duration: type: string - submit_block: + format: int64 + description: |- + duration is the length of the incentive program from start time to + completion in seconds. + uToken: type: string - format: uint64 - title: >- - AggregateExchangeRatePrevote - + description: >- + uToken is the incentivized uToken collateral denom. Suppliers who + collateralize - struct for aggregate prevoting on the ExchangeRateVote. + this asset then bond it to the incentive module are eligible for + this program's - The purpose of aggregate prevote is to hide vote exchange rates with - hash + rewards. + funded: + type: boolean + description: >- + funded indicates whether a program bas been funded. This can + happen when - which is formatted as hex string in SHA256("{salt}:{exchange + a program passes if funding from community fund, or any time + before the - rate}{denom},...,{exchange rate}{denom}:{voter}") + program's start time if funding with MsgSponsor. A program that + reaches + + its start time without being funded is cancelled. + total_rewards: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + remaining_rewards: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: >- + IncentiveProgram defines a liquidity mining incentive program on a + single + + locked uToken denom that will run for a set amount of time. description: |- - QueryAggregatePrevoteResponse is response type for the - Query/AggregatePrevote RPC method. - umee.oracle.v1.QueryAggregatePrevotesResponse: + QueryIncentivePrograResponse defines the response structure for the + IncentiveProgram gRPC service handler. + umee.incentive.v1.QueryLastRewardTimeResponse: type: object properties: - aggregate_prevotes: + time: + type: string + format: int64 + description: >- + QueryLastRewardTimeResponse defines the response structure for the + LastRewardTime gRPC + + service handler. + umee.incentive.v1.QueryOngoingIncentiveProgramsResponse: + type: object + properties: + programs: type: array items: type: object properties: - hash: + ID: + type: integer + format: int64 + description: >- + ID uniquely identifies the incentive program after it has been + created. + + It is zero when the program is being proposed by governance, and + is set + + to its final value when the proposal passes. + start_time: type: string - voter: + format: int64 + description: >- + start_time is the unix time (in seconds) at which the incentives + begin. + + If a program is passed after its intended start time, its start + time + + will be increased to the current time, with program duration + unchanged. + duration: type: string - submit_block: + format: int64 + description: >- + duration is the length of the incentive program from start time + to + + completion in seconds. + uToken: type: string - format: uint64 - title: >- - AggregateExchangeRatePrevote - + description: >- + uToken is the incentivized uToken collateral denom. Suppliers + who collateralize - struct for aggregate prevoting on the ExchangeRateVote. + this asset then bond it to the incentive module are eligible for + this program's - The purpose of aggregate prevote is to hide vote exchange rates with - hash + rewards. + funded: + type: boolean + description: >- + funded indicates whether a program bas been funded. This can + happen when - which is formatted as hex string in SHA256("{salt}:{exchange + a program passes if funding from community fund, or any time + before the - rate}{denom},...,{exchange rate}{denom}:{voter}") - title: >- - aggregate_prevotes defines all oracle aggregate prevotes submitted in - the + program's start time if funding with MsgSponsor. A program that + reaches - current vote period - description: |- - QueryAggregatePrevotesResponse is response type for the - Query/AggregatePrevotes RPC method. - umee.oracle.v1.QueryAggregateVoteResponse: - type: object - properties: - aggregate_vote: - title: >- - aggregate_vote defines oracle aggregate vote submitted by a validator - in + its start time without being funded is cancelled. + total_rewards: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - the current vote period - type: object - properties: - exchange_rate_tuples: - type: array - items: + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + remaining_rewards: type: object properties: denom: type: string - exchange_rate: + amount: type: string - title: >- - ExchangeRateTuple - struct to store interpreted exchange rates - data to store - voter: + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: >- + IncentiveProgram defines a liquidity mining incentive program on a + single + + locked uToken denom that will run for a set amount of time. + description: >- + QueryOngoingIncentiveProgramsResponse defines the response structure for + the + + OngoingIncentivePrograms and UpcomingIncentivePrograms gRPC service + handlers. + umee.incentive.v1.QueryParamsResponse: + type: object + properties: + params: + type: object + properties: + max_unbondings: + type: integer + format: int64 + description: >- + max_unbondings is the maximum amount of concurrent unbondings an + address can have + + of each bonded uToken denom. Zero is interpreted as no limit. + unbonding_duration: type: string - description: |- - AggregateExchangeRateVote - struct for voting on - the exchange rates of USD denominated in various assets. + format: int64 + description: unbonding_duration is the unbonding duration (in seconds). + emergency_unbond_fee: + type: string + description: >- + emergency_unbond_fee is the portion of a bond that is paid when it + is instantly + + released using MsgEmergencyUnbond. For example, 0.01 is a 1% fee. + Ranges 0-1. + description: Params defines the parameters for the incentive module. description: |- - QueryAggregateVoteResponse is response type for the - Query/AggregateVote RPC method. - umee.oracle.v1.QueryAggregateVotesResponse: + QueryParamsResponse defines the response structure for the Params gRPC + service handler. + umee.incentive.v1.QueryPendingRewardsResponse: type: object properties: - aggregate_votes: + rewards: type: array items: type: object properties: - exchange_rate_tuples: - type: array - items: - type: object - properties: - denom: - type: string - exchange_rate: - type: string - title: >- - ExchangeRateTuple - struct to store interpreted exchange rates - data to store - voter: + denom: + type: string + amount: type: string description: |- - AggregateExchangeRateVote - struct for voting on - the exchange rates of USD denominated in various assets. - title: >- - aggregate_votes defines all oracle aggregate votes submitted in the - current + Coin defines a token with a denomination and an amount. - vote period - description: |- - QueryAggregateVotesResponse is response type for the - Query/AggregateVotes RPC method. - umee.oracle.v1.QueryAvgPriceResponse: - type: object - properties: - price: - type: string - title: QueryAvgPriceResponse is a response type for AvgPrice method - umee.oracle.v1.QueryExchangeRatesResponse: + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: >- + QueryPendingRewardsResponse defines the response structure for the + PendingRewards gRPC service handler. + umee.incentive.v1.QueryTotalBondedResponse: type: object properties: - exchange_rates: + bonded: type: array items: type: object @@ -3259,163 +5465,159 @@ definitions: amount: type: string description: |- - DecCoin defines a token with a denomination and a decimal amount. + Coin defines a token with a denomination and an amount. - NOTE: The amount field is an Dec which implements the custom method + NOTE: The amount field is an Int which implements the custom method signatures required by gogoproto. - description: |- - exchange_rates defines a list of the exchange rate for all whitelisted - denoms. - description: |- - QueryExchangeRatesResponse is response type for the - Query/ExchangeRates RPC method. - umee.oracle.v1.QueryFeederDelegationResponse: - type: object - properties: - feeder_addr: - type: string - title: feeder_addr defines the feeder delegation of a validator - description: |- - QueryFeederDelegationResponse is response type for the - Query/FeederDelegation RPC method. - umee.oracle.v1.QueryMedianDeviationsResponse: + description: >- + QueryTotalBondedResponse defines the response structure for the + TotalBonded gRPC service handler. + umee.incentive.v1.QueryTotalUnbondingResponse: type: object properties: - medianDeviations: + unbonding: type: array items: type: object properties: - exchange_rate_tuple: - type: object - properties: - denom: - type: string - exchange_rate: - type: string - title: >- - ExchangeRateTuple - struct to store interpreted exchange rates - data to store - block_num: + denom: type: string - format: uint64 - title: Price is an instance of a price "stamp" - description: >- - medians defines a list of the median deviations for all stamped - denoms. - description: |- - QueryMedianDeviationsResponse is response type for the - Query/MedianDeviations RPC method. - umee.oracle.v1.QueryMediansResponse: + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: >- + QueryTotalUnbondingResponse defines the response structure for the + TotalUnbonding gRPC service handler. + umee.incentive.v1.QueryUpcomingIncentiveProgramsResponse: type: object properties: - medians: + programs: type: array items: type: object properties: - exchange_rate_tuple: + ID: + type: integer + format: int64 + description: >- + ID uniquely identifies the incentive program after it has been + created. + + It is zero when the program is being proposed by governance, and + is set + + to its final value when the proposal passes. + start_time: + type: string + format: int64 + description: >- + start_time is the unix time (in seconds) at which the incentives + begin. + + If a program is passed after its intended start time, its start + time + + will be increased to the current time, with program duration + unchanged. + duration: + type: string + format: int64 + description: >- + duration is the length of the incentive program from start time + to + + completion in seconds. + uToken: + type: string + description: >- + uToken is the incentivized uToken collateral denom. Suppliers + who collateralize + + this asset then bond it to the incentive module are eligible for + this program's + + rewards. + funded: + type: boolean + description: >- + funded indicates whether a program bas been funded. This can + happen when + + a program passes if funding from community fund, or any time + before the + + program's start time if funding with MsgSponsor. A program that + reaches + + its start time without being funded is cancelled. + total_rewards: type: object properties: denom: type: string - exchange_rate: + amount: type: string - title: >- - ExchangeRateTuple - struct to store interpreted exchange rates - data to store - block_num: - type: string - format: uint64 - title: Price is an instance of a price "stamp" - description: medians defines a list of the medians for all stamped denoms. - description: |- - QueryMediansResponse is response type for the - Query/Medians RPC method. - umee.oracle.v1.QueryMissCounterResponse: - type: object - properties: - miss_counter: - type: string - format: uint64 - title: miss_counter defines the oracle miss counter of a validator - description: |- - QueryMissCounterResponse is response type for the - Query/MissCounter RPC method. - umee.oracle.v1.QueryParamsResponse: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - vote_period: - type: string - format: uint64 - vote_threshold: - type: string - reward_band: - type: string - reward_distribution_window: - type: string - format: uint64 - accept_list: - type: array - items: + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + remaining_rewards: type: object properties: - base_denom: + denom: type: string - symbol_denom: + amount: type: string - exponent: - type: integer - format: int64 - title: Denom - the object to hold configurations of each denom - slash_fraction: - type: string - slash_window: - type: string - format: uint64 - min_valid_per_window: - type: string - historic_stamp_period: - type: string - format: uint64 - description: |- - Historic Stamp Period represents the amount of blocks the oracle - module waits before recording a new historic price. - median_stamp_period: - type: string - format: uint64 - description: |- - Median Stamp Period represents the amount blocks the oracle module - waits between calculating and stamping a new median and standard - deviation of that median. - maximum_price_stamps: - type: string - format: uint64 - description: >- - Maximum Price Stamps represents the maximum amount of historic - prices + description: >- + Coin defines a token with a denomination and an amount. - the oracle module will store before pruning via FIFO. - maximum_median_stamps: - type: string - format: uint64 - description: |- - Maximum Median Stamps represents the maximum amount of medians the - oracle module will store before pruning via FIFO. - description: QueryParamsResponse is the response type for the Query/Params RPC method. - umee.oracle.v1.QuerySlashWindowResponse: + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: >- + IncentiveProgram defines a liquidity mining incentive program on a + single + + locked uToken denom that will run for a set amount of time. + description: >- + QueryUpcomingIncentiveProgramsResponse defines the response structure for + the + + OngoingIncentivePrograms and UpcomingIncentivePrograms gRPC service + handlers. + umee.incentive.v1.Unbonding: type: object properties: - window_progress: + start: type: string - format: uint64 + format: int64 + end: + type: string + format: int64 + uToken: + type: object + properties: + denom: + type: string + amount: + type: string description: |- - window_progress defines the number of voting periods - since the last slashing event would have taken place. + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. description: |- - QuerySlashWindowResponse is response type for the - Query/SlashWindow RPC method. + Unbonding is a structure that tracks an in-progress token unbonding. + It tracks both its start time and end time, so that if the module's + unbonding time changes, the unbonding can complete at the earlier of + its original end time or its new one based on the new parameter. diff --git a/tests/artifacts/cw4_group-aarch64.wasm b/tests/artifacts/cw4_group-aarch64.wasm new file mode 100644 index 0000000000..c67f563189 Binary files /dev/null and b/tests/artifacts/cw4_group-aarch64.wasm differ diff --git a/tests/e2e/cw_test.go b/tests/e2e/cw_test.go new file mode 100644 index 0000000000..16b33d4624 --- /dev/null +++ b/tests/e2e/cw_test.go @@ -0,0 +1,40 @@ +package e2e + +import "github.com/umee-network/umee/v5/tests/util" + +type TestCosmwasm struct { + IntegrationTestSuite + util.Cosmwasm +} + +/* +// TODO : needs to setup live network with dockernet +func TestCosmwasmSuite(t *testing.T) { + suite.Run(t, new(TestCosmwasm)) +} + +// TODO: re-enable this tests when we do dockernet integration +func (cw *TestCosmwasm) TestCW20() { + // TODO: needs to add contracts + accAddr, err := cw.chain.validators[0].keyInfo.GetAddress() + cw.Require().NoError(err) + cw.Sender = accAddr.String() + + // path := "" + path := "/Users/gsk967/Projects/umee-network/umee-cosmwasm/artifacts/umee_cosmwasm-aarch64.wasm" + cw.DeployWasmContract(path) + + // InstantiateContract + cw.InstantiateContract() + + // execute contract + tx := "{\"umee\":{\"leverage\":{\"supply_collateral\":{\"supplier\":\"umee19ppq83qzzy3f0fftdp2p3t5eyp44nm33we37n3\",\"asset\":{\"amount\":\"1000\",\"denom\":\"uumee\"}}}}}" + cw.CWExecute(tx) + + // query the contract + query := "{\"chain\":{\"custom\":{\"leverage_params\":{},\"assigned_query\":\"0\"}}}" + cw.CWQuery(query) + cw.Require().False(true) +} + +*/ diff --git a/tests/e2e/e2e_setup_test.go b/tests/e2e/e2e_setup_test.go index 17d9dad174..e9ae62f936 100644 --- a/tests/e2e/e2e_setup_test.go +++ b/tests/e2e/e2e_setup_test.go @@ -58,21 +58,6 @@ var ( stakeAmountCoin2 = sdk.NewCoin(appparams.BondDenom, stakeAmount2) ) -type IntegrationTestSuite struct { - suite.Suite - - tmpDirs []string - chain *chain - gaiaRPC *rpchttp.HTTP - dkrPool *dockertest.Pool - dkrNet *dockertest.Network - gaiaResource *dockertest.Resource - hermesResource *dockertest.Resource - priceFeederResource *dockertest.Resource - valResources []*dockertest.Resource - umee client.Client -} - func TestIntegrationTestSuite(t *testing.T) { suite.Run(t, new(IntegrationTestSuite)) } diff --git a/tests/e2e/suite.go b/tests/e2e/suite.go new file mode 100644 index 0000000000..61304994dd --- /dev/null +++ b/tests/e2e/suite.go @@ -0,0 +1,23 @@ +package e2e + +import ( + "github.com/ory/dockertest/v3" + "github.com/stretchr/testify/suite" + rpchttp "github.com/tendermint/tendermint/rpc/client/http" + "github.com/umee-network/umee/v5/client" +) + +type IntegrationTestSuite struct { + suite.Suite + + tmpDirs []string + chain *chain + gaiaRPC *rpchttp.HTTP + dkrPool *dockertest.Pool + dkrNet *dockertest.Network + gaiaResource *dockertest.Resource + hermesResource *dockertest.Resource + priceFeederResource *dockertest.Resource + valResources []*dockertest.Resource + umee client.Client +} diff --git a/tests/qa/cw/config_example.yaml b/tests/qa/cw/config_example.yaml new file mode 100644 index 0000000000..a3633aef19 --- /dev/null +++ b/tests/qa/cw/config_example.yaml @@ -0,0 +1,13 @@ +api: "http://localhost:1317" +grpc: "localhost:9090" +rpc: "http://localhost:26657" +chain_id: "test-1" +mnemonics: + - "copper push brief egg scan entry inform record adjust fossil boss egg comic alien upon aspect dry avoid interest fury window hint race symptom" + - "maximum display century economy unlock van census kite error heart snow filter midnight usage egg venture cash kick motor survey drastic edge muffin visual" + - "banner spread envelope side kite person disagree path silver will brother under couch edit food venture squirrel civil budget number acquire point work mass" + - "veteran try aware erosion drink dance decade comic dawn museum release episode original list ability owner size tuition surface ceiling depth seminar capable only" + - "vacuum burst ordinary enact leaf rabbit gather lend left chase park action dish danger green jeans lucky dish mesh language collect acquire waste load" + - "open attitude harsh casino rent attitude midnight debris describe spare cancel crisp olive ride elite gallery leaf buffalo sheriff filter rotate path begin soldier" + - "alley afraid soup fall idea toss can goose become valve initial strong forward bright dish figure check leopard decide warfare hub unusual join cart" + - "record gift you once hip style during joke field prize dust unique length more pencil transfer quit train device arrive energy sort steak upset" diff --git a/tests/qa/cw/cw_group_types.go b/tests/qa/cw/cw_group_types.go new file mode 100644 index 0000000000..e69f1b10bf --- /dev/null +++ b/tests/qa/cw/cw_group_types.go @@ -0,0 +1,66 @@ +package cw + +import "encoding/json" + +type Member struct { + Addr string `json:"addr"` + Weight uint64 `json:"weight"` +} + +// init msg +type GroupInitMsg struct { + Admin string `json:"admin,omitempty"` + Members []Member `json:"members"` +} + +func (msg GroupInitMsg) Marshal() ([]byte, error) { + return json.Marshal(msg) +} + +// Queryies +type Admin struct{} +type AdminResp struct { + Admin string `json:"admin"` +} +type ListMembers struct { + StartAfter string `json:"start_after,omitempty"` + Limit uint64 `json:"limit,omitempty"` +} + +type ListMembersResponse struct { + Members []Member `json:"members"` +} + +type MemberResponse struct { + Weight uint64 `json:"weight"` +} + +type MemberRequest struct { + Addr string `json:"addr"` + AtHeight uint64 `json:"at_height,omitempty"` +} +type GroupQuery struct { + Admin *Admin `json:"admin,omitempty"` + Hooks *Admin `json:"hooks,omitempty"` + ListMembers *ListMembers `json:"list_members,omitempty"` + Member *MemberRequest `json:"member,omitempty"` +} + +// Transaction msgs +type GroupExecMsg struct { + UpdateAdmin *UpdateAdmin `json:"update_admin,omitempty"` + UpdateMembers *UpdateMembers `json:"update_members,omitempty"` +} + +func (msg GroupExecMsg) Marshal() ([]byte, error) { + return json.Marshal(msg) +} + +type UpdateAdmin struct { + Admin string `json:"admin,omitempty"` +} + +type UpdateMembers struct { + Remove []string `json:"remove"` + Add []Member `json:"add"` +} diff --git a/tests/qa/cw/cw_test.go b/tests/qa/cw/cw_test.go new file mode 100644 index 0000000000..3c0017e680 --- /dev/null +++ b/tests/qa/cw/cw_test.go @@ -0,0 +1,166 @@ +//go:build test_qa +// +build test_qa + +package cw + +import ( + "encoding/json" + "math/rand" + "os" + "strings" + "sync" + "testing" + "time" + + "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" + sdkparams "github.com/cosmos/cosmos-sdk/simapp/params" + sdk "github.com/cosmos/cosmos-sdk/types" + "gotest.tools/v3/assert" + + "github.com/umee-network/umee/v5/app" + "github.com/umee-network/umee/v5/client" + cwutil "github.com/umee-network/umee/v5/tests/util" +) + +const ( + cwGroupPath = "../../artifacts/cw4_group-aarch64.wasm" +) + +var ( + SucceessRespCode = uint32(0) + TotalAccs = 1000 + TotalTxsExec = 100 + cwGroupMsgExecFunc func(name string, msg GroupExecMsg, wg *sync.WaitGroup, accSeq uint64) +) + +func TestCWPlusGroup(t *testing.T) { + accAddrs := make([]sdk.AccAddress, 0) + for i := 0; i < TotalAccs; i++ { + privateKey := secp256k1.GenPrivKey() + pubKey := privateKey.PubKey() + accAddrs = append(accAddrs, sdk.AccAddress(pubKey.Address())) + } + + // remove if old keyring exists for testing + os.RemoveAll("./keyring-test") + encConfig := app.MakeEncodingConfig() + cc, err := ReadConfig("./config_example.yaml") + assert.NilError(t, err) + // umee client + client, err := UmeeClient(cc, encConfig) + assert.NilError(t, err) + + cw := cwutil.NewCosmwasmTestSuite(t, client) + cw.DeployWasmContract(cwGroupPath) + + // sender is intital account + admin := client.Tx.SenderAddr() + // instantiate Contract + initMsg := GroupInitMsg{ + Admin: admin.String(), + Members: make([]Member, 0), + } + + initMsg.Members = append(initMsg.Members, Member{Addr: admin.String(), Weight: 1}) + for i := 0; i < TotalAccs; i++ { + initMsg.Members = append(initMsg.Members, Member{ + Addr: accAddrs[i].String(), + Weight: 1, + }) + } + + msg, err := initMsg.Marshal() + assert.NilError(t, err) + + cw.InstantiateContract(msg) + + // query the contract + cwGroupQuery := GroupQuery{ + ListMembers: &ListMembers{Limit: 30}, + } + queryMsg, err := json.Marshal(cwGroupQuery) + assert.NilError(t, err) + + queryResp := cw.CWQuery(queryMsg) + var listResp ListMembersResponse + err = json.Unmarshal([]byte(queryResp.Data), &listResp) + assert.NilError(t, err) + assert.Equal(t, 30, len(listResp.Members)) + + // doing random txs to flood the cosmwasm network + wg := &sync.WaitGroup{} + accSeq, err := client.QueryAuthSeq(admin.String()) + assert.NilError(t, err) + total := 0 + + cwGroupMsgExecFunc = func(name string, msg GroupExecMsg, wg *sync.WaitGroup, accSeq uint64) { + execMsg, err := msg.Marshal() + assert.NilError(t, err) + txResp, err := cw.CWExecuteWithSeqAndAsyncResp(execMsg, accSeq) + if err != nil && strings.Contains(err.Error(), "account sequence") { + time.Sleep(time.Second * 1) + cwGroupMsgExecFunc(name, msg, wg, accSeq) + } + if txResp == nil || (txResp != nil && txResp.Code != SucceessRespCode) { + time.Sleep(time.Second * 1) + cwGroupMsgExecFunc(name, msg, wg, accSeq) + } + if txResp != nil && txResp.Code == SucceessRespCode { + total = total + 1 + t.Log(name, " total txs successfully executed =", total) + // TODO: needs to fix panic: sync: negative WaitGroup counter + wg.Done() + } + } + + for i := 0; i < TotalTxsExec; i++ { + index := rand.Intn(1000) + updateMembers := GroupExecMsg{ + UpdateMembers: &UpdateMembers{ + Remove: []string{}, + Add: []Member{ + { + Addr: accAddrs[index].String(), + Weight: 1, + }, + }, + }, + } + accSeq = accSeq + 1 + wg.Add(1) + go func(wg *sync.WaitGroup, accSeq uint64) { + cwGroupMsgExecFunc("update_members", updateMembers, wg, accSeq) + }(wg, accSeq) + } + + // updating the admin... + updateAdmin := GroupExecMsg{ + UpdateAdmin: &UpdateAdmin{ + Admin: accAddrs[1].String(), + }, + } + + wg.Add(1) + go func(wg *sync.WaitGroup, accSeq uint64) { + cwGroupMsgExecFunc("update_admin", updateAdmin, wg, accSeq) + }(wg, accSeq+1) + + // waiting for all go routines to finish + wg.Wait() + + // query the update admin info + cwGroupQuery = GroupQuery{ + Admin: &Admin{}, + } + queryMsg, err = json.Marshal(cwGroupQuery) + assert.NilError(t, err) + queryResp = cw.CWQuery(queryMsg) + var adminQuery AdminResp + err = json.Unmarshal([]byte(queryResp.Data), &adminQuery) + assert.NilError(t, err) + assert.Equal(t, updateAdmin.UpdateAdmin.Admin, adminQuery.Admin) +} + +func UmeeClient(cc *ChainConfig, encConfig sdkparams.EncodingConfig) (client.Client, error) { + return client.NewClient(cc.ChainID, cc.RPC, cc.GRPC, cc.Mnemonics, 1.5, encConfig) +} diff --git a/tests/qa/cw/cw_utils.go b/tests/qa/cw/cw_utils.go new file mode 100644 index 0000000000..0f7908df07 --- /dev/null +++ b/tests/qa/cw/cw_utils.go @@ -0,0 +1,19 @@ +package cw + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" +) + +func GetAttributeValue(resp sdk.TxResponse, eventName, attrKey string) string { + var attrVal string + for _, event := range resp.Logs[0].Events { + if event.Type == eventName { + for _, attribute := range event.Attributes { + if attribute.Key == attrKey { + attrVal = attribute.Value + } + } + } + } + return attrVal +} diff --git a/tests/qa/cw/network_config.go b/tests/qa/cw/network_config.go new file mode 100644 index 0000000000..3326789d90 --- /dev/null +++ b/tests/qa/cw/network_config.go @@ -0,0 +1,29 @@ +package cw + +import ( + "os" + + "gopkg.in/yaml.v3" +) + +type ChainConfig struct { + RPC string `yaml:"rpc"` + GRPC string `yaml:"grpc"` + API string `yaml:"api"` + ChainID string `yaml:"chain_id"` + Mnemonics []string `yaml:"mnemonics"` +} + +func ReadConfig(configFile string) (*ChainConfig, error) { + data, err := os.ReadFile(configFile) + if err != nil { + return nil, err + } + + cc := ChainConfig{} + err = yaml.Unmarshal(data, &cc) + if err != nil { + return nil, err + } + return &cc, nil +} diff --git a/tests/util/cw_util.go b/tests/util/cw_util.go new file mode 100644 index 0000000000..15f9511163 --- /dev/null +++ b/tests/util/cw_util.go @@ -0,0 +1,94 @@ +package util + +import ( + "encoding/json" + "strconv" + "testing" + + wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "gotest.tools/v3/assert" + + "github.com/umee-network/umee/v5/client" +) + +const ( + SucceessRespCode = uint32(0) +) + +type Cosmwasm struct { + StoreCode uint64 + ContractAddr string + Sender string + T *testing.T + umee client.Client +} + +func NewCosmwasmTestSuite(t *testing.T, umee client.Client) *Cosmwasm { + return &Cosmwasm{ + T: t, + umee: umee, + } +} + +func (cw *Cosmwasm) DeployWasmContract(path string) { + cw.T.Logf("ℹ️ deploying smart contract %s", path) + resp, err := cw.umee.Tx.TxSubmitWasmContract(path) + assert.NilError(cw.T, err) + storeCode := cw.GetAttributeValue(*resp, "store_code", "code_id") + cw.StoreCode, err = strconv.ParseUint(storeCode, 10, 64) + assert.NilError(cw.T, err) + cw.T.Logf("✅ smart contract is deployed and store code is %d", cw.StoreCode) +} + +func (cw *Cosmwasm) MarshalAny(any interface{}) []byte { + data, err := json.Marshal(any) + assert.NilError(cw.T, err) + return data +} + +func (cw *Cosmwasm) InstantiateContract(initMsg []byte) { + cw.T.Log("ℹ️ smart contract is instantiating...") + resp, err := cw.umee.Tx.TxWasmInstantiateContract(cw.StoreCode, initMsg) + assert.NilError(cw.T, err) + cw.ContractAddr = cw.GetAttributeValue(*resp, "instantiate", "_contract_address") + assert.Equal(cw.T, SucceessRespCode, resp.Code) + cw.T.Log("✅ smart contract is instantiating is done.") + cw.T.Logf("smart contract address is %s", cw.ContractAddr) +} + +func (cw *Cosmwasm) CWQuery(query []byte) wasmtypes.QuerySmartContractStateResponse { + resp, err := cw.umee.QueryContract(cw.ContractAddr, query) + assert.NilError(cw.T, err) + return *resp +} + +func (cw *Cosmwasm) CWExecute(execMsg []byte) { + resp, err := cw.umee.Tx.TxWasmExecuteContract(cw.ContractAddr, execMsg) + assert.NilError(cw.T, err) + assert.Equal(cw.T, SucceessRespCode, resp.Code) +} + +func (cw *Cosmwasm) CWExecuteWithSeqAndAsync(execMsg []byte, accSeq uint64) { + resp, err := cw.umee.Tx.TxWasmExecuteContractByAccSeq(cw.ContractAddr, execMsg, accSeq) + assert.NilError(cw.T, err) + assert.Equal(cw.T, SucceessRespCode, resp.Code) +} + +func (cw *Cosmwasm) CWExecuteWithSeqAndAsyncResp(execMsg []byte, accSeq uint64) (*sdk.TxResponse, error) { + return cw.umee.Tx.TxWasmExecuteContractByAccSeq(cw.ContractAddr, execMsg, accSeq) +} + +func (cw *Cosmwasm) GetAttributeValue(resp sdk.TxResponse, eventName, attrKey string) string { + var attrVal string + for _, event := range resp.Logs[0].Events { + if event.Type == eventName { + for _, attribute := range event.Attributes { + if attribute.Key == attrKey { + attrVal = attribute.Value + } + } + } + } + return attrVal +} diff --git a/tools/tools.go b/tools/tools.go index ed7e85ad23..ea6a417e45 100644 --- a/tools/tools.go +++ b/tools/tools.go @@ -11,4 +11,7 @@ import ( _ "github.com/golangci/golangci-lint/cmd/golangci-lint" _ "github.com/mgechev/revive" _ "mvdan.cc/gofumpt" + + // unnamed import of statik for swagger UI support + _ "github.com/umee-network/umee/v5/swagger/statik" ) diff --git a/x/leverage/keeper/msg_server.go b/x/leverage/keeper/msg_server.go index 99127443d9..a898a9cac4 100644 --- a/x/leverage/keeper/msg_server.go +++ b/x/leverage/keeper/msg_server.go @@ -241,11 +241,6 @@ func (s msgServer) SupplyCollateral( return nil, err } - // Fail here if collateral liquidity restrictions are violated - if err := s.keeper.checkCollateralLiquidity(ctx, msg.Asset.Denom); err != nil { - return nil, err - } - // Fail here if collateral share restrictions are violated, // based on only collateral with known oracle prices if err := s.keeper.checkCollateralShare(ctx, uToken.Denom); err != nil {